@deeksha2309/sunbird-collection-editor 8.0.7 → 8.0.8

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 (107) hide show
  1. package/deeksha2309-sunbird-collection-editor.d.ts.map +1 -0
  2. package/esm2022/deeksha2309-sunbird-collection-editor.mjs +5 -0
  3. package/esm2022/lib/collection-editor-library.module.mjs +30 -6
  4. package/esm2022/lib/components/answer/answer.component.mjs +6 -3
  5. package/esm2022/lib/components/app-loader/app-loader.component.mjs +30 -0
  6. package/esm2022/lib/components/asset-browser/asset-browser.component.mjs +30 -12
  7. package/esm2022/lib/components/assign-page-number/assign-page-number.component.mjs +1 -1
  8. package/esm2022/lib/components/bulk-upload/bulk-upload.component.mjs +447 -0
  9. package/esm2022/lib/components/ckeditor-tool/ckeditor-tool.component.mjs +30 -12
  10. package/esm2022/lib/components/collection-icon/collection-icon.component.mjs +3 -3
  11. package/esm2022/lib/components/csv-upload/csv-upload.component.mjs +2 -2
  12. package/esm2022/lib/components/editor/editor.component.mjs +143 -64
  13. package/esm2022/lib/components/fancy-tree/fancy-tree.component.mjs +91 -9
  14. package/esm2022/lib/components/header/header.component.mjs +27 -9
  15. package/esm2022/lib/components/library/library.component.mjs +4 -4
  16. package/esm2022/lib/components/library-list/library-list.component.mjs +4 -4
  17. package/esm2022/lib/components/library-player/library-player.component.mjs +4 -4
  18. package/esm2022/lib/components/meta-form/meta-form.component.mjs +10 -18
  19. package/esm2022/lib/components/options/options.component.mjs +40 -27
  20. package/esm2022/lib/components/progress-status/progress-status.component.mjs +1 -1
  21. package/esm2022/lib/components/publish-checklist/publish-checklist.component.mjs +6 -3
  22. package/esm2022/lib/components/question/question.component.mjs +185 -77
  23. package/esm2022/lib/components/question-option-sub-menu/question-option-sub-menu.component.mjs +36 -0
  24. package/esm2022/lib/components/quml-player/quml-player.component.mjs +2 -2
  25. package/esm2022/lib/components/qumlplayer-page/qumlplayer-page.component.mjs +3 -3
  26. package/esm2022/lib/components/relational-metadata/relational-metadata.component.mjs +80 -0
  27. package/esm2022/lib/components/resource-reorder/resource-reorder.component.mjs +3 -3
  28. package/esm2022/lib/components/slider/slider.component.mjs +46 -0
  29. package/esm2022/lib/components/template/template.component.mjs +3 -3
  30. package/esm2022/lib/components/translations/translations.component.mjs +132 -0
  31. package/esm2022/lib/directives/date-format/date-format.pipe.mjs +34 -0
  32. package/esm2022/lib/interfaces/CreationContext.mjs +2 -0
  33. package/esm2022/lib/interfaces/editor.mjs +1 -1
  34. package/esm2022/lib/interfaces/loader.mjs +2 -0
  35. package/esm2022/lib/pipes/interpolate.pipe.mjs +17 -0
  36. package/esm2022/lib/pipes/sanitize-html.pipe.mjs +6 -8
  37. package/esm2022/lib/services/bulk-job/bulk-job.service.mjs +67 -0
  38. package/esm2022/lib/services/config/category.config.json +1 -0
  39. package/esm2022/lib/services/config/editor.config.json +29 -2
  40. package/esm2022/lib/services/config/label.config.json +16 -3
  41. package/esm2022/lib/services/config/player.config.json +3 -0
  42. package/esm2022/lib/services/config/url.config.json +17 -1
  43. package/esm2022/lib/services/editor/editor.service.mjs +64 -26
  44. package/esm2022/lib/services/question/question.service.mjs +27 -35
  45. package/esm2022/lib/services/tree/tree.service.mjs +20 -5
  46. package/fesm2022/{project-sunbird-sunbird-collection-editor.mjs → deeksha2309-sunbird-collection-editor.mjs} +1779 -483
  47. package/fesm2022/deeksha2309-sunbird-collection-editor.mjs.map +1 -0
  48. package/index.d.ts +2 -2
  49. package/lib/collection-editor-library.module.d.ts +51 -43
  50. package/lib/collection-editor-library.module.d.ts.map +1 -1
  51. package/lib/components/answer/answer.component.d.ts +2 -1
  52. package/lib/components/answer/answer.component.d.ts.map +1 -1
  53. package/lib/components/app-loader/app-loader.component.d.ts +18 -0
  54. package/lib/components/app-loader/app-loader.component.d.ts.map +1 -0
  55. package/lib/components/asset-browser/asset-browser.component.d.ts.map +1 -1
  56. package/lib/components/bulk-upload/bulk-upload.component.d.ts +71 -0
  57. package/lib/components/bulk-upload/bulk-upload.component.d.ts.map +1 -0
  58. package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts +1 -1
  59. package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts.map +1 -1
  60. package/lib/components/editor/editor.component.d.ts +11 -7
  61. package/lib/components/editor/editor.component.d.ts.map +1 -1
  62. package/lib/components/fancy-tree/fancy-tree.component.d.ts +11 -3
  63. package/lib/components/fancy-tree/fancy-tree.component.d.ts.map +1 -1
  64. package/lib/components/header/header.component.d.ts +6 -2
  65. package/lib/components/header/header.component.d.ts.map +1 -1
  66. package/lib/components/library/library.component.d.ts +1 -1
  67. package/lib/components/library/library.component.d.ts.map +1 -1
  68. package/lib/components/meta-form/meta-form.component.d.ts +3 -4
  69. package/lib/components/meta-form/meta-form.component.d.ts.map +1 -1
  70. package/lib/components/options/options.component.d.ts +15 -7
  71. package/lib/components/options/options.component.d.ts.map +1 -1
  72. package/lib/components/publish-checklist/publish-checklist.component.d.ts +2 -1
  73. package/lib/components/publish-checklist/publish-checklist.component.d.ts.map +1 -1
  74. package/lib/components/question/question.component.d.ts +21 -28
  75. package/lib/components/question/question.component.d.ts.map +1 -1
  76. package/lib/components/question-option-sub-menu/question-option-sub-menu.component.d.ts +27 -0
  77. package/lib/components/question-option-sub-menu/question-option-sub-menu.component.d.ts.map +1 -0
  78. package/lib/components/relational-metadata/relational-metadata.component.d.ts +25 -0
  79. package/lib/components/relational-metadata/relational-metadata.component.d.ts.map +1 -0
  80. package/lib/components/slider/slider.component.d.ts +25 -0
  81. package/lib/components/slider/slider.component.d.ts.map +1 -0
  82. package/lib/components/translations/translations.component.d.ts +70 -0
  83. package/lib/components/translations/translations.component.d.ts.map +1 -0
  84. package/lib/directives/date-format/date-format.pipe.d.ts +20 -0
  85. package/lib/directives/date-format/date-format.pipe.d.ts.map +1 -0
  86. package/lib/interfaces/CreationContext.d.ts +11 -0
  87. package/lib/interfaces/CreationContext.d.ts.map +1 -0
  88. package/lib/interfaces/editor.d.ts +10 -5
  89. package/lib/interfaces/editor.d.ts.map +1 -1
  90. package/lib/interfaces/loader.d.ts +11 -0
  91. package/lib/interfaces/loader.d.ts.map +1 -0
  92. package/lib/pipes/interpolate.pipe.d.ts +8 -0
  93. package/lib/pipes/interpolate.pipe.d.ts.map +1 -0
  94. package/lib/pipes/sanitize-html.pipe.d.ts +4 -4
  95. package/lib/pipes/sanitize-html.pipe.d.ts.map +1 -1
  96. package/lib/services/bulk-job/bulk-job.service.d.ts +17 -0
  97. package/lib/services/bulk-job/bulk-job.service.d.ts.map +1 -0
  98. package/lib/services/editor/editor.service.d.ts +7 -4
  99. package/lib/services/editor/editor.service.d.ts.map +1 -1
  100. package/lib/services/question/question.service.d.ts +2 -2
  101. package/lib/services/question/question.service.d.ts.map +1 -1
  102. package/lib/services/tree/tree.service.d.ts +3 -1
  103. package/lib/services/tree/tree.service.d.ts.map +1 -1
  104. package/package.json +5 -5
  105. package/esm2022/project-sunbird-sunbird-collection-editor.mjs +0 -5
  106. package/fesm2022/project-sunbird-sunbird-collection-editor.mjs.map +0 -1
  107. package/project-sunbird-sunbird-collection-editor.d.ts.map +0 -1
@@ -3,29 +3,39 @@ import * as _ from 'lodash-es';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "../../services/telemetry/telemetry.service";
5
5
  import * as i2 from "../../services/config/config.service";
6
- import * as i3 from "@angular/common";
7
- import * as i4 from "@angular/forms";
8
- import * as i5 from "@project-sunbird/ng2-semantic-ui";
9
- import * as i6 from "../ckeditor-tool/ckeditor-tool.component";
10
- import * as i7 from "../../directives/telemetry-interact/telemetry-interact.directive";
11
- import * as i8 from "../../pipes/sanitize-html.pipe";
6
+ import * as i3 from "../../services/tree/tree.service";
7
+ import * as i4 from "../../services/editor/editor.service";
8
+ import * as i5 from "@angular/common";
9
+ import * as i6 from "@angular/forms";
10
+ import * as i7 from "@project-sunbird/ng2-semantic-ui";
11
+ import * as i8 from "../ckeditor-tool/ckeditor-tool.component";
12
+ import * as i9 from "../../directives/telemetry-interact/telemetry-interact.directive";
13
+ import * as i10 from "../question-option-sub-menu/question-option-sub-menu.component";
14
+ import * as i11 from "../../pipes/sanitize-html.pipe";
12
15
  export class OptionsComponent {
13
- constructor(telemetryService, configService) {
16
+ constructor(telemetryService, configService, treeService, editorService) {
14
17
  this.telemetryService = telemetryService;
15
18
  this.configService = configService;
16
- this.showSubMenu = false;
19
+ this.treeService = treeService;
20
+ this.editorService = editorService;
21
+ this.mapping = [];
17
22
  this.editorDataOutput = new EventEmitter();
18
23
  this.setCharacterLimit = 160;
19
24
  this.setImageLimit = 1;
20
25
  this.templateType = 'mcq-vertical';
21
- this.subMenus = [];
22
- this.mapping = {};
26
+ this.hints = [];
27
+ this.showSubMenu = false;
23
28
  }
24
29
  ngOnInit() {
25
30
  if (!_.isUndefined(this.editorState.templateId)) {
26
31
  this.templateType = this.editorState.templateId;
27
32
  }
28
33
  this.editorDataHandler();
34
+ this.mapping = _.get(this.editorState, 'responseDeclaration.response1.mapping') || [];
35
+ if (!_.isUndefined(this.editorService.editorConfig.config.renderTaxonomy)) {
36
+ this.parentMeta = this.treeService.getFirstChild().data.metadata;
37
+ this.showSubMenu = true;
38
+ }
29
39
  }
30
40
  editorDataHandler(event) {
31
41
  const body = this.prepareMcqBody(this.editorState);
@@ -46,15 +56,15 @@ export class OptionsComponent {
46
56
  });
47
57
  metadata = {
48
58
  templateId: this.templateType,
49
- name: 'Multiple Choice Question',
59
+ name: this.questionPrimaryCategory || 'Multiple Choice Question',
50
60
  responseDeclaration: this.getResponseDeclaration(editorState),
51
61
  interactionTypes: ['choice'],
52
62
  interactions: this.getInteractions(editorState.options),
53
63
  editorState: {
54
- options
64
+ options,
55
65
  },
56
66
  qType: 'MCQ',
57
- primaryCategory: 'Multiple Choice Question'
67
+ primaryCategory: this.questionPrimaryCategory || 'Multiple Choice Question',
58
68
  };
59
69
  return metadata;
60
70
  }
@@ -66,9 +76,10 @@ export class OptionsComponent {
66
76
  type: 'integer',
67
77
  correctResponse: {
68
78
  value: editorState.answer,
69
- outcomes: { SCORE: 1 }
70
- }
71
- }
79
+ outcomes: { SCORE: 1 },
80
+ },
81
+ mapping: this.mapping,
82
+ },
72
83
  };
73
84
  return responseDeclaration;
74
85
  }
@@ -76,13 +87,15 @@ export class OptionsComponent {
76
87
  let index;
77
88
  const interactOptions = _.map(options, (opt, key) => {
78
89
  index = Number(key);
79
- return { label: opt.body, value: index };
90
+ const hints = _.get(this.editorState, `interactions.response1.options[${index}].hints`);
91
+ return { label: opt.body, value: index, hints };
80
92
  });
93
+ this.subMenuConfig(options);
81
94
  const interactions = {
82
95
  response1: {
83
96
  type: 'choice',
84
- options: interactOptions
85
- }
97
+ options: interactOptions,
98
+ },
86
99
  };
87
100
  return interactions;
88
101
  }
@@ -120,25 +133,25 @@ export class OptionsComponent {
120
133
  this.mapping[scoreIndex] = obj;
121
134
  this.editorDataHandler();
122
135
  }
123
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OptionsComponent, deps: [{ token: i1.EditorTelemetryService }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
124
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OptionsComponent, selector: "lib-options", inputs: { editorState: "editorState", showFormError: "showFormError", sourcingSettings: "sourcingSettings", isReadOnlyMode: "isReadOnlyMode", showSubMenu: "showSubMenu", parentMeta: "parentMeta" }, outputs: { editorDataOutput: "editorDataOutput" }, ngImport: i0, template: "<ng-container *ngIf=\"!isReadOnlyMode; else readOnlyContainer\">\n <div class=\"pt-10 fs-0-92 sb-w-85\">\n <label class=\"fs-0-92 font-weight-bold\">{{configService.labelConfig?.lbl?.options}}<span class=\"sb-required\">*</span></label>\n <label class=\"fs-0-92 d-inline-block\">{{configService.labelConfig?.lbl?.selectLayout}}</label>\n <i class=\"icon info circle ml-8\" suiPopup popupDelay=\"500\" popupText={{configService.labelConfig?.lbl?.optionsPopupText}}></i>\n <span class=\"divider mr-8\"></span>\n <span><button class=\"sb-btn sb-btn-xs sb-btn-outline-gray mr-5 q-sb-layout-single\" [ngClass]=\"{active: 'mcq-vertical' === templateType}\" (click)=\"setTemplete('mcq-vertical')\"><i class=\"mr-10 h-7\"></i> {{configService.labelConfig?.lbl?.vertical}}</button></span>\n <span><button class=\"sb-btn sb-btn-xs sb-btn-outline-gray mr-5 q-sb-layout-two\" [ngClass]=\"{active: 'mcq-vertical-split' === templateType}\" (click)=\"setTemplete('mcq-vertical-split')\"><i class=\"mr-10 h-7 w-20\"></i>{{configService.labelConfig?.lbl?.grid}}</button></span>\n <span><button class=\"sb-btn sb-btn-xs sb-btn-outline-gray q-sb-layout-three\" [ngClass]=\"{active: 'mcq-horizontal' === templateType}\" (click)=\"setTemplete('mcq-horizontal')\"> <i class=\"mr-10 h-7\"></i> {{configService.labelConfig?.lbl?.horizontal}}</button></span>\n </div>\n <label *ngIf=\"showFormError && !editorState.answer && sourcingSettings?.enforceCorrectAnswer\" class=\"ui basic red error label pt-1 mt-10\">\n {{configService.labelConfig?.lbl?.selectOneAns}}</label>\n <div class=\"d-flex pt-10 flex-dc sb-mcq-form\">\n <div class=\"d-flex sb-mcq-item flex-w-wrap\" *ngFor=\"let option of editorState.options; let i = index\">\n <div class=\"sb-w-85 sb-ckeditor relative mb-15\">\n <button [disabled]=\"editorState.options.length < 3\" class=\"sb-btn sb-ckeditor-close absolute\"\n (click)=\"editorState.deleteOption(i);editorDataHandler($event);\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('delete_option','click','submit',telemetryService.telemetryPageId)\">\n <i class=\"icon close\"></i>\n </button>\n <lib-ckeditor-tool [setCharacterLimit]=\"setCharacterLimit\" (editorDataOutput)=\"option.body = $event.body; option.length = $event.length; editorDataHandler($event)\"\n [editorDataInput]=\"option.body\" class=\"ckeditor-tool__option mb-10\"\n [class.mb-5]=\"showFormError && ([undefined, ''].includes(option.body) || option.length > setCharacterLimit)\">\n </lib-ckeditor-tool>\n <label *ngIf=\"\n showFormError && (option.body === undefined || option.body === '')\n \" class=\"sb-color-error fs-0-785\">{{configService.labelConfig?.lbl?.fillThisOption}}</label>\n <label *ngIf=\"option.length > setCharacterLimit\" class=\"ui basic red error label pt-1\">\n {{configService.labelConfig?.lbl?.reduceSize}}</label>\n </div>\n <div class=\"sb-checkbox sb-checkbox-primary pl-10 mt-0 pt-0\" [class.selected]=\"editorState.answer === i.toString()\" *ngIf=\"sourcingSettings?.enforceCorrectAnswer !== false\">\n <input type=\"radio\" id=\"answer_{{ i + 1 }}\" name=\"example\" value=\"{{ i }}\" (change)=\"editorDataHandler($event);\"\n [(ngModel)]=\"editorState.answer\" [ngModelOptions]=\"{ standalone: true }\" [checked]=\"editorState.answer === i.toString()\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('mark_as_right_anwser','click',undefined,telemetryService.telemetryPageId,{answer:i.toString()})\" />\n <label for=\"answer_{{ i + 1 }}\" class=\"mr-0 fs-0-785\">{{configService.labelConfig?.lbl?.correctAns}}</label>\n </div>\n <div class=\"w-100\" *ngIf=\"showSubMenu\">\n <lib-question-option-sub-menu [subMenus]=\"subMenus[i]\" (onChange)=\"subMenuChange($event,i)\"></lib-question-option-sub-menu>\n <div *ngIf=\"parentMeta?.allowScoring === 'Yes'\">\n <label for=\"score\" class=\"d-block mt-10 optionLabel\">Score <span class=\"sb-required\">*</span></label>\n <input\n class=\"sb-textbox false mb-30\"\n [placeholder]=\"'Add score here'\"\n (change)=\"setScore($event.target.value,i)\"\n *ngIf=\"sourcingSettings.showAddScore\"\n type=\"number\"\n [value]=\"mapping[i]?.outcomes?.score\"\n />\n </div>\n </div>\n </div>\n <div class=\"d-flex\">\n <button *ngIf=\"editorState.options.length < editorState.maximumOptions\"\n class=\"sb-btn sb-btn-outline-primary sb-btn-xs sb-left-icon-btn text-inherit b-0 bg-none no-hover p-0 mb-10 mt-10\"\n (click)=\"editorState.addOptions();editorDataHandler($event);\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('add_option','click','submit',telemetryService.telemetryPageId)\" >\n <i class=\"plus circle icon fs-1-286 pull-left mr-0\" aria-hidden=\"true\"></i><span class=\"sb-line-height-24\">{{configService.labelConfig?.lbl?.addOption}}</span>\n </button>\n </div>\n </div>\n</ng-container>\n\n<ng-template #readOnlyContainer>\n <div class=\"row mb-0 p-0\" *ngFor=\"let option of editorState.options; let i=index\">\n <div class=\"twelve wide column p-0\">\n <div class=\"ckeditor-tool width-100\">\n <div class=\"ckeditor-tool__question-readonly mb-24\">\n <label class=\"px-16 py-8 fs-0-92 mb-0 ckeditor-tool__label width-100\">Option {{ i+1 }}</label>\n <div class=\"ckeditor-tool__solution__body\">\n <p class=\"fs-0-785 p-16\" [innerHTML]=\"option.body | sanitizeHtml\"></p>\n <div class=\"mcq-checkbox-answer\" *ngIf=\"editorState.answer === i.toString()\">\n <div class=\"sb-checkbox sb-checkbox-primary mr-auto selected\">\n <input type=\"checkbox\" id=\"check1\" name=\"example\" disabled checked>\n <label for=\"check1\">{{configService.labelConfig?.lbl?.correctAns}}</label>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"w-100\" *ngIf=\"showSubMenu\">\n <lib-question-option-sub-menu [subMenus]=\"subMenus[i]\" (onChange)=\"subMenuChange($event,i)\"></lib-question-option-sub-menu>\n <div *ngIf=\"parentMeta?.allowScoring === 'Yes'\">\n <label for=\"score\" class=\"d-block mt-10 optionLabel\">Score</label>\n <input\n class=\"sb-textbox false mb-30\"\n [placeholder]=\"'Add score here'\"\n (change)=\"setScore($event.target.value,i)\"\n *ngIf=\"sourcingSettings.showAddScore\"\n type=\"number\"\n [value]=\"mapping[i]?.outcomes?.score\" \n disabled\n />\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".q-sb-layout-single:before{content:url(/assets/images/layoutoneicon.svg)}.q-sb-layout-single.active,.q-sb-layout-single:hover{border-color:var(--primary-400);background-color:#fff;color:var(--primary-400)}.q-sb-layout-single.active:before,.q-sb-layout-single:hover:before{content:url(/assets/images/layoutoneicon_blue.svg)}.q-sb-layout-two:before{content:url(/assets/images/layouttwoicon.svg)}.q-sb-layout-two.active,.q-sb-layout-two:hover{border-color:var(--primary-400);background-color:#fff;color:var(--primary-400)}.q-sb-layout-two.active:before,.q-sb-layout-two:hover:before{content:url(/assets/images/layouttwoicon_blue.svg)}.q-sb-layout-three:before{content:url(/assets/images/layoutthreeicon.svg);top:-2px;position:relative}.q-sb-layout-three.active,.q-sb-layout-three:hover{border-color:var(--primary-400);background-color:#fff;color:var(--primary-400)}.q-sb-layout-three.active:before,.q-sb-layout-three:hover:before{content:url(/assets/images/layoutthreeicon_blue.svg)}.q-sb-layout-imgoption:before{content:url(/assets/images/imageicon.svg)}.q-sb-layout-imgoption.active:before,.q-sb-layout-imgoption:hover:before{content:url(/assets/images/imageicon_blue.svg)}.q-sb-layout-alignleft:before{content:url(/assets/images/leftalignicon.svg)}.q-sb-layout-alignleft.active:before,.q-sb-layout-alignleft:hover:before{content:url(/assets/images/leftalignicon_blue.svg)}.q-sb-layout-aligncenter:before{content:url(/assets/images/middlealignicon.svg)}.q-sb-layout-aligncenter.active:before,.q-sb-layout-aligncenter:hover:before{content:url(/assets/images/middlealignicon_blue.svg)}.q-sb-layout-alignright:before{content:url(/assets/images/rightalignicon.svg)}.q-sb-layout-alignright.active:before,.q-sb-layout-alignright:hover:before{content:url(/assets/images/rightalignicon_blue.svg)}.h-7{height:7px}.w-20{width:20px}.b-0{border:0!important}.sb-line-height-24{line-height:24px}.bg-none{background-color:transparent!important}.bg-none:hover,.bg-none:focus{background-color:transparent!important}.sb-w-85 div[data-title]:hover:before{left:0%;top:-122%!important;width:256px}.sb-field-group .sb-left-icon-btn.sb-btn-xs{padding:0!important;margin-top:-10px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.SuiPopupDirective, selector: "[suiPopup]", inputs: ["popupHeader", "popupText", "popupInverted", "popupBasic", "popupInline", "popupFlowing", "popupTransition", "popupTransitionDuration", "popupPlacement", "popupWidth", "popupSize", "popupDelay", "popupTrigger", "popupTemplate", "popupTemplateContext", "popupConfig"], exportAs: ["suiPopup"] }, { kind: "component", type: i6.CkeditorToolComponent, selector: "lib-ckeditor-tool", inputs: ["editorDataInput", "videoShow", "setCharacterLimit", "setImageLimit"], outputs: ["editorDataOutput", "hasError", "videoDataOutput"] }, { kind: "directive", type: i7.TelemetryInteractDirective, selector: "[libTelemetryInteract]", inputs: ["telemetryInteractEdata"] }, { kind: "pipe", type: i8.SanitizeHtmlPipe, name: "sanitizeHtml" }] }); }
136
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OptionsComponent, deps: [{ token: i1.EditorTelemetryService }, { token: i2.ConfigService }, { token: i3.TreeService }, { token: i4.EditorService }], target: i0.ɵɵFactoryTarget.Component }); }
137
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: OptionsComponent, selector: "lib-options", inputs: { editorState: "editorState", showFormError: "showFormError", sourcingSettings: "sourcingSettings", questionPrimaryCategory: "questionPrimaryCategory", mapping: "mapping", isReadOnlyMode: "isReadOnlyMode" }, outputs: { editorDataOutput: "editorDataOutput" }, ngImport: i0, template: "<ng-container *ngIf=\"!isReadOnlyMode; else readOnlyContainer\">\n <div class=\"pt-10 fs-0-92 sb-w-85\">\n <label class=\"fs-0-92 font-weight-bold\">{{configService.labelConfig?.lbl?.options}}<span class=\"sb-required\">*</span></label>\n <label class=\"fs-0-92 d-inline-block\">{{configService.labelConfig?.lbl?.selectLayout}}</label>\n <i class=\"icon info circle ml-8\" suiPopup popupDelay=\"500\" popupText={{configService.labelConfig?.lbl?.optionsPopupText}}></i>\n <span class=\"divider mr-8\"></span>\n <span><button class=\"sb-btn sb-btn-xs sb-btn-outline-gray mr-5 q-sb-layout-single\" [ngClass]=\"{active: 'mcq-vertical' === templateType}\" (click)=\"setTemplete('mcq-vertical')\"><i class=\"mr-10 h-7\"></i> {{configService.labelConfig?.lbl?.vertical}}</button></span>\n <span><button class=\"sb-btn sb-btn-xs sb-btn-outline-gray mr-5 q-sb-layout-two\" [ngClass]=\"{active: 'mcq-vertical-split' === templateType}\" (click)=\"setTemplete('mcq-vertical-split')\"><i class=\"mr-10 h-7 w-20\"></i>{{configService.labelConfig?.lbl?.grid}}</button></span>\n <span><button class=\"sb-btn sb-btn-xs sb-btn-outline-gray q-sb-layout-three\" [ngClass]=\"{active: 'mcq-horizontal' === templateType}\" (click)=\"setTemplete('mcq-horizontal')\"> <i class=\"mr-10 h-7\"></i> {{configService.labelConfig?.lbl?.horizontal}}</button></span>\n </div>\n <label *ngIf=\"showFormError && !editorState.answer && sourcingSettings?.enforceCorrectAnswer\" class=\"ui basic red error label pt-1 mt-10\">\n {{configService.labelConfig?.lbl?.selectOneAns}}</label>\n <div class=\"d-flex pt-10 flex-dc sb-mcq-form\">\n <div class=\"d-flex sb-mcq-item flex-w-wrap\" *ngFor=\"let option of editorState.options; let i = index\">\n <div class=\"sb-w-85 sb-ckeditor relative mb-15\">\n <button [disabled]=\"editorState.options.length < 3\" class=\"sb-btn sb-ckeditor-close absolute\"\n (click)=\"editorState.deleteOption(i);editorDataHandler($event);\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('delete_option','click','submit',telemetryService.telemetryPageId)\">\n <i class=\"icon close\"></i>\n </button>\n <lib-ckeditor-tool [setCharacterLimit]=\"setCharacterLimit\" (editorDataOutput)=\"option.body = $event.body; option.length = $event.length; editorDataHandler($event)\"\n [editorDataInput]=\"option.body\" class=\"ckeditor-tool__option mb-10\"\n [class.mb-5]=\"showFormError && ([undefined, ''].includes(option.body) || option.length > setCharacterLimit)\">\n </lib-ckeditor-tool>\n <label *ngIf=\"\n showFormError && (option.body === undefined || option.body === '')\n \" class=\"sb-color-error fs-0-785\">{{configService.labelConfig?.lbl?.fillThisOption}}</label>\n <label *ngIf=\"option.length > setCharacterLimit\" class=\"ui basic red error label pt-1\">\n {{configService.labelConfig?.lbl?.reduceSize}}</label>\n </div>\n <div class=\"sb-checkbox sb-checkbox-primary pl-10 mt-0 pt-0\" [class.selected]=\"editorState.answer === i.toString()\" *ngIf=\"sourcingSettings?.enforceCorrectAnswer !== false\">\n <input type=\"radio\" id=\"answer_{{ i + 1 }}\" name=\"example\" value=\"{{ i }}\" (change)=\"editorDataHandler($event);\"\n [(ngModel)]=\"editorState.answer\" [ngModelOptions]=\"{ standalone: true }\" [checked]=\"editorState.answer === i.toString()\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('mark_as_right_anwser','click',undefined,telemetryService.telemetryPageId,{answer:i.toString()})\" />\n <label for=\"answer_{{ i + 1 }}\" class=\"mr-0 fs-0-785\">{{configService.labelConfig?.lbl?.correctAns}}</label>\n </div>\n <div class=\"w-100\" *ngIf=\"showSubMenu\">\n <lib-question-option-sub-menu [subMenus]=\"subMenus[i]\" (onChange)=\"subMenuChange($event,i)\"></lib-question-option-sub-menu>\n <div *ngIf=\"parentMeta?.allowScoring === 'Yes'\">\n <label for=\"score\" class=\"d-block mt-10 optionLabel\">Score <span class=\"sb-required\">*</span></label>\n <input\n class=\"sb-textbox false mb-30\"\n [placeholder]=\"'Add score here'\"\n (change)=\"setScore($event.target.value,i)\"\n *ngIf=\"sourcingSettings.showAddScore\"\n type=\"number\"\n [value]=\"mapping[i]?.outcomes?.score\"\n />\n </div>\n </div>\n </div>\n <div class=\"d-flex\">\n <button *ngIf=\"editorState.options.length < editorState.maximumOptions\"\n class=\"sb-btn sb-btn-outline-primary sb-btn-xs sb-left-icon-btn text-inherit b-0 bg-none no-hover p-0 mb-10 mt-10\"\n (click)=\"editorState.addOptions();editorDataHandler($event);\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('add_option','click','submit',telemetryService.telemetryPageId)\" >\n <i class=\"plus circle icon fs-1-286 pull-left mr-0\" aria-hidden=\"true\"></i><span class=\"sb-line-height-24\">{{configService.labelConfig?.lbl?.addOption}}</span>\n </button>\n </div>\n </div>\n</ng-container>\n\n<ng-template #readOnlyContainer>\n <div class=\"row mb-0 p-0\" *ngFor=\"let option of editorState.options; let i=index\">\n <div class=\"twelve wide column p-0\">\n <div class=\"ckeditor-tool width-100\">\n <div class=\"ckeditor-tool__question-readonly mb-24\">\n <label class=\"px-16 py-8 fs-0-92 mb-0 ckeditor-tool__label width-100\">Option {{ i+1 }}</label>\n <div class=\"ckeditor-tool__solution__body\">\n <p class=\"fs-0-785 p-16\" [innerHTML]=\"option.body | sanitizeHtml\"></p>\n <div class=\"mcq-checkbox-answer\" *ngIf=\"editorState.answer === i.toString()\">\n <div class=\"sb-checkbox sb-checkbox-primary mr-auto selected\">\n <input type=\"checkbox\" id=\"check1\" name=\"example\" disabled checked>\n <label for=\"check1\">{{configService.labelConfig?.lbl?.correctAns}}</label>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"w-100\" *ngIf=\"showSubMenu\">\n <lib-question-option-sub-menu [subMenus]=\"subMenus[i]\" (onChange)=\"subMenuChange($event,i)\"></lib-question-option-sub-menu>\n <div *ngIf=\"parentMeta?.allowScoring === 'Yes'\">\n <label for=\"score\" class=\"d-block mt-10 optionLabel\">Score</label>\n <input\n class=\"sb-textbox false mb-30\"\n [placeholder]=\"'Add score here'\"\n (change)=\"setScore($event.target.value,i)\"\n *ngIf=\"sourcingSettings.showAddScore\"\n type=\"number\"\n [value]=\"mapping[i]?.outcomes?.score\" \n disabled\n />\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".q-sb-layout-single:before{content:url(/assets/images/layoutoneicon.svg)}.q-sb-layout-single.active,.q-sb-layout-single:hover{border-color:var(--primary-400);background-color:#fff;color:var(--primary-400)}.q-sb-layout-single.active:before,.q-sb-layout-single:hover:before{content:url(/assets/images/layoutoneicon_blue.svg)}.q-sb-layout-two:before{content:url(/assets/images/layouttwoicon.svg)}.q-sb-layout-two.active,.q-sb-layout-two:hover{border-color:var(--primary-400);background-color:#fff;color:var(--primary-400)}.q-sb-layout-two.active:before,.q-sb-layout-two:hover:before{content:url(/assets/images/layouttwoicon_blue.svg)}.q-sb-layout-three:before{content:url(/assets/images/layoutthreeicon.svg);top:-2px;position:relative}.q-sb-layout-three.active,.q-sb-layout-three:hover{border-color:var(--primary-400);background-color:#fff;color:var(--primary-400)}.q-sb-layout-three.active:before,.q-sb-layout-three:hover:before{content:url(/assets/images/layoutthreeicon_blue.svg)}.q-sb-layout-imgoption:before{content:url(/assets/images/imageicon.svg)}.q-sb-layout-imgoption.active:before,.q-sb-layout-imgoption:hover:before{content:url(/assets/images/imageicon_blue.svg)}.q-sb-layout-alignleft:before{content:url(/assets/images/leftalignicon.svg)}.q-sb-layout-alignleft.active:before,.q-sb-layout-alignleft:hover:before{content:url(/assets/images/leftalignicon_blue.svg)}.q-sb-layout-aligncenter:before{content:url(/assets/images/middlealignicon.svg)}.q-sb-layout-aligncenter.active:before,.q-sb-layout-aligncenter:hover:before{content:url(/assets/images/middlealignicon_blue.svg)}.q-sb-layout-alignright:before{content:url(/assets/images/rightalignicon.svg)}.q-sb-layout-alignright.active:before,.q-sb-layout-alignright:hover:before{content:url(/assets/images/rightalignicon_blue.svg)}.h-7{height:7px}.w-20{width:20px}.b-0{border:0!important}.sb-line-height-24{line-height:24px}.bg-none{background-color:transparent!important}.bg-none:hover,.bg-none:focus{background-color:transparent!important}.sb-w-85 div[data-title]:hover:before{left:0%;top:-122%!important;width:256px}.sb-field-group .sb-left-icon-btn.sb-btn-xs{padding:0!important;margin-top:-10px}.optionLabel{font-size:12px!important;margin-bottom:.5rem!important;color:#121213e0;font-weight:600}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i7.SuiPopupDirective, selector: "[suiPopup]", inputs: ["popupHeader", "popupText", "popupInverted", "popupBasic", "popupInline", "popupFlowing", "popupTransition", "popupTransitionDuration", "popupPlacement", "popupWidth", "popupSize", "popupDelay", "popupTrigger", "popupTemplate", "popupTemplateContext", "popupConfig"], exportAs: ["suiPopup"] }, { kind: "component", type: i8.CkeditorToolComponent, selector: "lib-ckeditor-tool", inputs: ["editorDataInput", "videoShow", "setCharacterLimit", "setImageLimit"], outputs: ["editorDataOutput", "hasError", "videoDataOutput"] }, { kind: "directive", type: i9.TelemetryInteractDirective, selector: "[libTelemetryInteract]", inputs: ["telemetryInteractEdata"] }, { kind: "component", type: i10.QuestionOptionSubMenuComponent, selector: "lib-question-option-sub-menu", inputs: ["subMenus"], outputs: ["onChange"] }, { kind: "pipe", type: i11.SanitizeHtmlPipe, name: "sanitizeHtml" }] }); }
125
138
  }
126
139
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: OptionsComponent, decorators: [{
127
140
  type: Component,
128
- args: [{ selector: 'lib-options', template: "<ng-container *ngIf=\"!isReadOnlyMode; else readOnlyContainer\">\n <div class=\"pt-10 fs-0-92 sb-w-85\">\n <label class=\"fs-0-92 font-weight-bold\">{{configService.labelConfig?.lbl?.options}}<span class=\"sb-required\">*</span></label>\n <label class=\"fs-0-92 d-inline-block\">{{configService.labelConfig?.lbl?.selectLayout}}</label>\n <i class=\"icon info circle ml-8\" suiPopup popupDelay=\"500\" popupText={{configService.labelConfig?.lbl?.optionsPopupText}}></i>\n <span class=\"divider mr-8\"></span>\n <span><button class=\"sb-btn sb-btn-xs sb-btn-outline-gray mr-5 q-sb-layout-single\" [ngClass]=\"{active: 'mcq-vertical' === templateType}\" (click)=\"setTemplete('mcq-vertical')\"><i class=\"mr-10 h-7\"></i> {{configService.labelConfig?.lbl?.vertical}}</button></span>\n <span><button class=\"sb-btn sb-btn-xs sb-btn-outline-gray mr-5 q-sb-layout-two\" [ngClass]=\"{active: 'mcq-vertical-split' === templateType}\" (click)=\"setTemplete('mcq-vertical-split')\"><i class=\"mr-10 h-7 w-20\"></i>{{configService.labelConfig?.lbl?.grid}}</button></span>\n <span><button class=\"sb-btn sb-btn-xs sb-btn-outline-gray q-sb-layout-three\" [ngClass]=\"{active: 'mcq-horizontal' === templateType}\" (click)=\"setTemplete('mcq-horizontal')\"> <i class=\"mr-10 h-7\"></i> {{configService.labelConfig?.lbl?.horizontal}}</button></span>\n </div>\n <label *ngIf=\"showFormError && !editorState.answer && sourcingSettings?.enforceCorrectAnswer\" class=\"ui basic red error label pt-1 mt-10\">\n {{configService.labelConfig?.lbl?.selectOneAns}}</label>\n <div class=\"d-flex pt-10 flex-dc sb-mcq-form\">\n <div class=\"d-flex sb-mcq-item flex-w-wrap\" *ngFor=\"let option of editorState.options; let i = index\">\n <div class=\"sb-w-85 sb-ckeditor relative mb-15\">\n <button [disabled]=\"editorState.options.length < 3\" class=\"sb-btn sb-ckeditor-close absolute\"\n (click)=\"editorState.deleteOption(i);editorDataHandler($event);\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('delete_option','click','submit',telemetryService.telemetryPageId)\">\n <i class=\"icon close\"></i>\n </button>\n <lib-ckeditor-tool [setCharacterLimit]=\"setCharacterLimit\" (editorDataOutput)=\"option.body = $event.body; option.length = $event.length; editorDataHandler($event)\"\n [editorDataInput]=\"option.body\" class=\"ckeditor-tool__option mb-10\"\n [class.mb-5]=\"showFormError && ([undefined, ''].includes(option.body) || option.length > setCharacterLimit)\">\n </lib-ckeditor-tool>\n <label *ngIf=\"\n showFormError && (option.body === undefined || option.body === '')\n \" class=\"sb-color-error fs-0-785\">{{configService.labelConfig?.lbl?.fillThisOption}}</label>\n <label *ngIf=\"option.length > setCharacterLimit\" class=\"ui basic red error label pt-1\">\n {{configService.labelConfig?.lbl?.reduceSize}}</label>\n </div>\n <div class=\"sb-checkbox sb-checkbox-primary pl-10 mt-0 pt-0\" [class.selected]=\"editorState.answer === i.toString()\" *ngIf=\"sourcingSettings?.enforceCorrectAnswer !== false\">\n <input type=\"radio\" id=\"answer_{{ i + 1 }}\" name=\"example\" value=\"{{ i }}\" (change)=\"editorDataHandler($event);\"\n [(ngModel)]=\"editorState.answer\" [ngModelOptions]=\"{ standalone: true }\" [checked]=\"editorState.answer === i.toString()\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('mark_as_right_anwser','click',undefined,telemetryService.telemetryPageId,{answer:i.toString()})\" />\n <label for=\"answer_{{ i + 1 }}\" class=\"mr-0 fs-0-785\">{{configService.labelConfig?.lbl?.correctAns}}</label>\n </div>\n <div class=\"w-100\" *ngIf=\"showSubMenu\">\n <lib-question-option-sub-menu [subMenus]=\"subMenus[i]\" (onChange)=\"subMenuChange($event,i)\"></lib-question-option-sub-menu>\n <div *ngIf=\"parentMeta?.allowScoring === 'Yes'\">\n <label for=\"score\" class=\"d-block mt-10 optionLabel\">Score <span class=\"sb-required\">*</span></label>\n <input\n class=\"sb-textbox false mb-30\"\n [placeholder]=\"'Add score here'\"\n (change)=\"setScore($event.target.value,i)\"\n *ngIf=\"sourcingSettings.showAddScore\"\n type=\"number\"\n [value]=\"mapping[i]?.outcomes?.score\"\n />\n </div>\n </div>\n </div>\n <div class=\"d-flex\">\n <button *ngIf=\"editorState.options.length < editorState.maximumOptions\"\n class=\"sb-btn sb-btn-outline-primary sb-btn-xs sb-left-icon-btn text-inherit b-0 bg-none no-hover p-0 mb-10 mt-10\"\n (click)=\"editorState.addOptions();editorDataHandler($event);\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('add_option','click','submit',telemetryService.telemetryPageId)\" >\n <i class=\"plus circle icon fs-1-286 pull-left mr-0\" aria-hidden=\"true\"></i><span class=\"sb-line-height-24\">{{configService.labelConfig?.lbl?.addOption}}</span>\n </button>\n </div>\n </div>\n</ng-container>\n\n<ng-template #readOnlyContainer>\n <div class=\"row mb-0 p-0\" *ngFor=\"let option of editorState.options; let i=index\">\n <div class=\"twelve wide column p-0\">\n <div class=\"ckeditor-tool width-100\">\n <div class=\"ckeditor-tool__question-readonly mb-24\">\n <label class=\"px-16 py-8 fs-0-92 mb-0 ckeditor-tool__label width-100\">Option {{ i+1 }}</label>\n <div class=\"ckeditor-tool__solution__body\">\n <p class=\"fs-0-785 p-16\" [innerHTML]=\"option.body | sanitizeHtml\"></p>\n <div class=\"mcq-checkbox-answer\" *ngIf=\"editorState.answer === i.toString()\">\n <div class=\"sb-checkbox sb-checkbox-primary mr-auto selected\">\n <input type=\"checkbox\" id=\"check1\" name=\"example\" disabled checked>\n <label for=\"check1\">{{configService.labelConfig?.lbl?.correctAns}}</label>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"w-100\" *ngIf=\"showSubMenu\">\n <lib-question-option-sub-menu [subMenus]=\"subMenus[i]\" (onChange)=\"subMenuChange($event,i)\"></lib-question-option-sub-menu>\n <div *ngIf=\"parentMeta?.allowScoring === 'Yes'\">\n <label for=\"score\" class=\"d-block mt-10 optionLabel\">Score</label>\n <input\n class=\"sb-textbox false mb-30\"\n [placeholder]=\"'Add score here'\"\n (change)=\"setScore($event.target.value,i)\"\n *ngIf=\"sourcingSettings.showAddScore\"\n type=\"number\"\n [value]=\"mapping[i]?.outcomes?.score\" \n disabled\n />\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".q-sb-layout-single:before{content:url(/assets/images/layoutoneicon.svg)}.q-sb-layout-single.active,.q-sb-layout-single:hover{border-color:var(--primary-400);background-color:#fff;color:var(--primary-400)}.q-sb-layout-single.active:before,.q-sb-layout-single:hover:before{content:url(/assets/images/layoutoneicon_blue.svg)}.q-sb-layout-two:before{content:url(/assets/images/layouttwoicon.svg)}.q-sb-layout-two.active,.q-sb-layout-two:hover{border-color:var(--primary-400);background-color:#fff;color:var(--primary-400)}.q-sb-layout-two.active:before,.q-sb-layout-two:hover:before{content:url(/assets/images/layouttwoicon_blue.svg)}.q-sb-layout-three:before{content:url(/assets/images/layoutthreeicon.svg);top:-2px;position:relative}.q-sb-layout-three.active,.q-sb-layout-three:hover{border-color:var(--primary-400);background-color:#fff;color:var(--primary-400)}.q-sb-layout-three.active:before,.q-sb-layout-three:hover:before{content:url(/assets/images/layoutthreeicon_blue.svg)}.q-sb-layout-imgoption:before{content:url(/assets/images/imageicon.svg)}.q-sb-layout-imgoption.active:before,.q-sb-layout-imgoption:hover:before{content:url(/assets/images/imageicon_blue.svg)}.q-sb-layout-alignleft:before{content:url(/assets/images/leftalignicon.svg)}.q-sb-layout-alignleft.active:before,.q-sb-layout-alignleft:hover:before{content:url(/assets/images/leftalignicon_blue.svg)}.q-sb-layout-aligncenter:before{content:url(/assets/images/middlealignicon.svg)}.q-sb-layout-aligncenter.active:before,.q-sb-layout-aligncenter:hover:before{content:url(/assets/images/middlealignicon_blue.svg)}.q-sb-layout-alignright:before{content:url(/assets/images/rightalignicon.svg)}.q-sb-layout-alignright.active:before,.q-sb-layout-alignright:hover:before{content:url(/assets/images/rightalignicon_blue.svg)}.h-7{height:7px}.w-20{width:20px}.b-0{border:0!important}.sb-line-height-24{line-height:24px}.bg-none{background-color:transparent!important}.bg-none:hover,.bg-none:focus{background-color:transparent!important}.sb-w-85 div[data-title]:hover:before{left:0%;top:-122%!important;width:256px}.sb-field-group .sb-left-icon-btn.sb-btn-xs{padding:0!important;margin-top:-10px}\n"] }]
129
- }], ctorParameters: function () { return [{ type: i1.EditorTelemetryService }, { type: i2.ConfigService }]; }, propDecorators: { editorState: [{
141
+ args: [{ selector: 'lib-options', template: "<ng-container *ngIf=\"!isReadOnlyMode; else readOnlyContainer\">\n <div class=\"pt-10 fs-0-92 sb-w-85\">\n <label class=\"fs-0-92 font-weight-bold\">{{configService.labelConfig?.lbl?.options}}<span class=\"sb-required\">*</span></label>\n <label class=\"fs-0-92 d-inline-block\">{{configService.labelConfig?.lbl?.selectLayout}}</label>\n <i class=\"icon info circle ml-8\" suiPopup popupDelay=\"500\" popupText={{configService.labelConfig?.lbl?.optionsPopupText}}></i>\n <span class=\"divider mr-8\"></span>\n <span><button class=\"sb-btn sb-btn-xs sb-btn-outline-gray mr-5 q-sb-layout-single\" [ngClass]=\"{active: 'mcq-vertical' === templateType}\" (click)=\"setTemplete('mcq-vertical')\"><i class=\"mr-10 h-7\"></i> {{configService.labelConfig?.lbl?.vertical}}</button></span>\n <span><button class=\"sb-btn sb-btn-xs sb-btn-outline-gray mr-5 q-sb-layout-two\" [ngClass]=\"{active: 'mcq-vertical-split' === templateType}\" (click)=\"setTemplete('mcq-vertical-split')\"><i class=\"mr-10 h-7 w-20\"></i>{{configService.labelConfig?.lbl?.grid}}</button></span>\n <span><button class=\"sb-btn sb-btn-xs sb-btn-outline-gray q-sb-layout-three\" [ngClass]=\"{active: 'mcq-horizontal' === templateType}\" (click)=\"setTemplete('mcq-horizontal')\"> <i class=\"mr-10 h-7\"></i> {{configService.labelConfig?.lbl?.horizontal}}</button></span>\n </div>\n <label *ngIf=\"showFormError && !editorState.answer && sourcingSettings?.enforceCorrectAnswer\" class=\"ui basic red error label pt-1 mt-10\">\n {{configService.labelConfig?.lbl?.selectOneAns}}</label>\n <div class=\"d-flex pt-10 flex-dc sb-mcq-form\">\n <div class=\"d-flex sb-mcq-item flex-w-wrap\" *ngFor=\"let option of editorState.options; let i = index\">\n <div class=\"sb-w-85 sb-ckeditor relative mb-15\">\n <button [disabled]=\"editorState.options.length < 3\" class=\"sb-btn sb-ckeditor-close absolute\"\n (click)=\"editorState.deleteOption(i);editorDataHandler($event);\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('delete_option','click','submit',telemetryService.telemetryPageId)\">\n <i class=\"icon close\"></i>\n </button>\n <lib-ckeditor-tool [setCharacterLimit]=\"setCharacterLimit\" (editorDataOutput)=\"option.body = $event.body; option.length = $event.length; editorDataHandler($event)\"\n [editorDataInput]=\"option.body\" class=\"ckeditor-tool__option mb-10\"\n [class.mb-5]=\"showFormError && ([undefined, ''].includes(option.body) || option.length > setCharacterLimit)\">\n </lib-ckeditor-tool>\n <label *ngIf=\"\n showFormError && (option.body === undefined || option.body === '')\n \" class=\"sb-color-error fs-0-785\">{{configService.labelConfig?.lbl?.fillThisOption}}</label>\n <label *ngIf=\"option.length > setCharacterLimit\" class=\"ui basic red error label pt-1\">\n {{configService.labelConfig?.lbl?.reduceSize}}</label>\n </div>\n <div class=\"sb-checkbox sb-checkbox-primary pl-10 mt-0 pt-0\" [class.selected]=\"editorState.answer === i.toString()\" *ngIf=\"sourcingSettings?.enforceCorrectAnswer !== false\">\n <input type=\"radio\" id=\"answer_{{ i + 1 }}\" name=\"example\" value=\"{{ i }}\" (change)=\"editorDataHandler($event);\"\n [(ngModel)]=\"editorState.answer\" [ngModelOptions]=\"{ standalone: true }\" [checked]=\"editorState.answer === i.toString()\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('mark_as_right_anwser','click',undefined,telemetryService.telemetryPageId,{answer:i.toString()})\" />\n <label for=\"answer_{{ i + 1 }}\" class=\"mr-0 fs-0-785\">{{configService.labelConfig?.lbl?.correctAns}}</label>\n </div>\n <div class=\"w-100\" *ngIf=\"showSubMenu\">\n <lib-question-option-sub-menu [subMenus]=\"subMenus[i]\" (onChange)=\"subMenuChange($event,i)\"></lib-question-option-sub-menu>\n <div *ngIf=\"parentMeta?.allowScoring === 'Yes'\">\n <label for=\"score\" class=\"d-block mt-10 optionLabel\">Score <span class=\"sb-required\">*</span></label>\n <input\n class=\"sb-textbox false mb-30\"\n [placeholder]=\"'Add score here'\"\n (change)=\"setScore($event.target.value,i)\"\n *ngIf=\"sourcingSettings.showAddScore\"\n type=\"number\"\n [value]=\"mapping[i]?.outcomes?.score\"\n />\n </div>\n </div>\n </div>\n <div class=\"d-flex\">\n <button *ngIf=\"editorState.options.length < editorState.maximumOptions\"\n class=\"sb-btn sb-btn-outline-primary sb-btn-xs sb-left-icon-btn text-inherit b-0 bg-none no-hover p-0 mb-10 mt-10\"\n (click)=\"editorState.addOptions();editorDataHandler($event);\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('add_option','click','submit',telemetryService.telemetryPageId)\" >\n <i class=\"plus circle icon fs-1-286 pull-left mr-0\" aria-hidden=\"true\"></i><span class=\"sb-line-height-24\">{{configService.labelConfig?.lbl?.addOption}}</span>\n </button>\n </div>\n </div>\n</ng-container>\n\n<ng-template #readOnlyContainer>\n <div class=\"row mb-0 p-0\" *ngFor=\"let option of editorState.options; let i=index\">\n <div class=\"twelve wide column p-0\">\n <div class=\"ckeditor-tool width-100\">\n <div class=\"ckeditor-tool__question-readonly mb-24\">\n <label class=\"px-16 py-8 fs-0-92 mb-0 ckeditor-tool__label width-100\">Option {{ i+1 }}</label>\n <div class=\"ckeditor-tool__solution__body\">\n <p class=\"fs-0-785 p-16\" [innerHTML]=\"option.body | sanitizeHtml\"></p>\n <div class=\"mcq-checkbox-answer\" *ngIf=\"editorState.answer === i.toString()\">\n <div class=\"sb-checkbox sb-checkbox-primary mr-auto selected\">\n <input type=\"checkbox\" id=\"check1\" name=\"example\" disabled checked>\n <label for=\"check1\">{{configService.labelConfig?.lbl?.correctAns}}</label>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"w-100\" *ngIf=\"showSubMenu\">\n <lib-question-option-sub-menu [subMenus]=\"subMenus[i]\" (onChange)=\"subMenuChange($event,i)\"></lib-question-option-sub-menu>\n <div *ngIf=\"parentMeta?.allowScoring === 'Yes'\">\n <label for=\"score\" class=\"d-block mt-10 optionLabel\">Score</label>\n <input\n class=\"sb-textbox false mb-30\"\n [placeholder]=\"'Add score here'\"\n (change)=\"setScore($event.target.value,i)\"\n *ngIf=\"sourcingSettings.showAddScore\"\n type=\"number\"\n [value]=\"mapping[i]?.outcomes?.score\" \n disabled\n />\n </div>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [".q-sb-layout-single:before{content:url(/assets/images/layoutoneicon.svg)}.q-sb-layout-single.active,.q-sb-layout-single:hover{border-color:var(--primary-400);background-color:#fff;color:var(--primary-400)}.q-sb-layout-single.active:before,.q-sb-layout-single:hover:before{content:url(/assets/images/layoutoneicon_blue.svg)}.q-sb-layout-two:before{content:url(/assets/images/layouttwoicon.svg)}.q-sb-layout-two.active,.q-sb-layout-two:hover{border-color:var(--primary-400);background-color:#fff;color:var(--primary-400)}.q-sb-layout-two.active:before,.q-sb-layout-two:hover:before{content:url(/assets/images/layouttwoicon_blue.svg)}.q-sb-layout-three:before{content:url(/assets/images/layoutthreeicon.svg);top:-2px;position:relative}.q-sb-layout-three.active,.q-sb-layout-three:hover{border-color:var(--primary-400);background-color:#fff;color:var(--primary-400)}.q-sb-layout-three.active:before,.q-sb-layout-three:hover:before{content:url(/assets/images/layoutthreeicon_blue.svg)}.q-sb-layout-imgoption:before{content:url(/assets/images/imageicon.svg)}.q-sb-layout-imgoption.active:before,.q-sb-layout-imgoption:hover:before{content:url(/assets/images/imageicon_blue.svg)}.q-sb-layout-alignleft:before{content:url(/assets/images/leftalignicon.svg)}.q-sb-layout-alignleft.active:before,.q-sb-layout-alignleft:hover:before{content:url(/assets/images/leftalignicon_blue.svg)}.q-sb-layout-aligncenter:before{content:url(/assets/images/middlealignicon.svg)}.q-sb-layout-aligncenter.active:before,.q-sb-layout-aligncenter:hover:before{content:url(/assets/images/middlealignicon_blue.svg)}.q-sb-layout-alignright:before{content:url(/assets/images/rightalignicon.svg)}.q-sb-layout-alignright.active:before,.q-sb-layout-alignright:hover:before{content:url(/assets/images/rightalignicon_blue.svg)}.h-7{height:7px}.w-20{width:20px}.b-0{border:0!important}.sb-line-height-24{line-height:24px}.bg-none{background-color:transparent!important}.bg-none:hover,.bg-none:focus{background-color:transparent!important}.sb-w-85 div[data-title]:hover:before{left:0%;top:-122%!important;width:256px}.sb-field-group .sb-left-icon-btn.sb-btn-xs{padding:0!important;margin-top:-10px}.optionLabel{font-size:12px!important;margin-bottom:.5rem!important;color:#121213e0;font-weight:600}\n"] }]
142
+ }], ctorParameters: function () { return [{ type: i1.EditorTelemetryService }, { type: i2.ConfigService }, { type: i3.TreeService }, { type: i4.EditorService }]; }, propDecorators: { editorState: [{
130
143
  type: Input
131
144
  }], showFormError: [{
132
145
  type: Input
133
146
  }], sourcingSettings: [{
134
147
  type: Input
135
- }], isReadOnlyMode: [{
148
+ }], questionPrimaryCategory: [{
136
149
  type: Input
137
- }], showSubMenu: [{
150
+ }], mapping: [{
138
151
  type: Input
139
- }], parentMeta: [{
152
+ }], isReadOnlyMode: [{
140
153
  type: Input
141
154
  }], editorDataOutput: [{
142
155
  type: Output
143
156
  }] } });
144
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2xsZWN0aW9uLWVkaXRvci1saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9vcHRpb25zL29wdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvb3B0aW9ucy9vcHRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sS0FBSyxDQUFDLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7O0FBUS9CLE1BQU0sT0FBTyxnQkFBZ0I7SUFhM0IsWUFBbUIsZ0JBQXdDLEVBQVMsYUFBNEI7UUFBN0UscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF3QjtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBUnZGLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRTVCLHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2pFLHNCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUN4QixrQkFBYSxHQUFHLENBQUMsQ0FBQztRQUNsQixpQkFBWSxHQUFHLGNBQWMsQ0FBQztRQUM5QixhQUFRLEdBQVUsRUFBRSxDQUFDO1FBQ3JCLFlBQU8sR0FBUSxFQUFFLENBQUM7SUFDMkUsQ0FBQztJQUVyRyxRQUFRO1FBQ04sSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUMvQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1NBQ2pEO1FBQ0QsSUFBSSxDQUFDLGlC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QUcsQ0FBQztRQUMvQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUMzQixDQUFDOytHQXhIVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQiw0U0NUN0IsNDFOQW9HQTs7NEZEM0ZhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxhQUFhO3lJQUtkLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksZ0JBQWdCO3NCQUF6QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IEVkaXRvclRlbGVtZXRyeVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90ZWxlbWV0cnkvdGVsZW1ldHJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZy9jb25maWcuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItb3B0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9vcHRpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb3B0aW9ucy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBPcHRpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZWRpdG9yU3RhdGU6IGFueTtcbiAgQElucHV0KCkgc2hvd0Zvcm1FcnJvcjtcbiAgQElucHV0KCkgc291cmNpbmdTZXR0aW5nczogYW55O1xuICBASW5wdXQoKSBpc1JlYWRPbmx5TW9kZTogYm9vbGVhbjtcbiAgQElucHV0KCkgc2hvd1N1Yk1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgcGFyZW50TWV0YTogYW55O1xuICBAT3V0cHV0KCkgZWRpdG9yRGF0YU91dHB1dDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIHNldENoYXJhY3RlckxpbWl0ID0gMTYwO1xuICBwdWJsaWMgc2V0SW1hZ2VMaW1pdCA9IDE7XG4gIHB1YmxpYyB0ZW1wbGF0ZVR5cGUgPSAnbWNxLXZlcnRpY2FsJztcbiAgcHVibGljIHN1Yk1lbnVzOiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgbWFwcGluZzogYW55ID0ge307XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0ZWxlbWV0cnlTZXJ2aWNlOiBFZGl0b3JUZWxlbWV0cnlTZXJ2aWNlLCBwdWJsaWMgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSkgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHRoaXMuZWRpdG9yU3RhdGUudGVtcGxhdGVJZCkpIHtcbiAgICAgIHRoaXMudGVtcGxhdGVUeXBlID0gdGhpcy5lZGl0b3JTdGF0ZS50ZW1wbGF0ZUlkO1xuICAgIH1cbiAgICB0aGlzLmVkaXRvckRhdGFIYW5kbGVyKCk7XG4gIH1cblxuICBlZGl0b3JEYXRhSGFuZGxlcihldmVudD8pIHtcbiAgICBjb25zdCBib2R5ID0gdGhpcy5wcmVwYXJlTWNxQm9keSh0aGlzLmVkaXRvclN0YXRlKTtcbiAgICB0aGlzLmVkaXRvckRhdGFPdXRwdXQuZW1pdCh7IGJvZHksIG1lZGlhb2JqOiBldmVudCA/IGV2ZW50Lm1lZGlhb2JqIDogdW5kZWZpbmVkIH0pO1xuICB9XG5cbiAgcHJlcGFyZU1jcUJvZHkoZWRpdG9yU3RhdGUpIHtcbiAgICBsZXQgbWV0YWRhdGE6IGFueTtcbiAgICBjb25zdCBjb3JyZWN0QW5zd2VyID0gZWRpdG9yU3RhdGUuYW5zd2VyO1xuICAgIGxldCByZXNpbmRleDtcbiAgICBjb25zdCBvcHRpb25zID0gXy5tYXAoZWRpdG9yU3RhdGUub3B0aW9ucywgKG9wdCwga2V5KSA9PiB7XG4gICAgICByZXNpbmRleCA9IE51bWJlcihrZXkpO1xuICAgICAgaWYgKE51bWJlcihjb3JyZWN0QW5zd2VyKSA9PT0ga2V5KSB7XG4gICAgICAgIHJldHVybiB7IGFuc3dlcjogdHJ1ZSwgdmFsdWU6IHsgYm9keTogb3B0LmJvZHksIHZhbHVlOiByZXNpbmRleCB9IH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4geyBhbnN3ZXI6IGZhbHNlLCB2YWx1ZTogeyBib2R5OiBvcHQuYm9keSwgdmFsdWU6IHJlc2luZGV4IH0gfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBtZXRhZGF0YSA9IHtcbiAgICAgIHRlbXBsYXRlSWQ6IHRoaXMudGVtcGxhdGVUeXBlLFxuICAgICAgbmFtZTogJ011bHRpcGxlIENob2ljZSBRdWVzdGlvbicsXG4gICAgICByZXNwb25zZURlY2xhcmF0aW9uOiB0aGlzLmdldFJlc3BvbnNlRGVjbGFyYXRpb24oZWRpdG9yU3RhdGUpLFxuICAgICAgaW50ZXJhY3Rpb25UeXBlczogWydjaG9pY2UnXSxcbiAgICAgIGludGVyYWN0aW9uczogdGhpcy5nZXRJbnRlcmFjdGlvbnMoZWRpdG9yU3RhdGUub3B0aW9ucyksXG4gICAgICBlZGl0b3JTdGF0ZToge1xuICAgICAgICBvcHRpb25zXG4gICAgICB9LFxuICAgICAgcVR5cGU6ICdNQ1EnLFxuICAgICAgcHJpbWFyeUNhdGVnb3J5OiAnTXVsdGlwbGUgQ2hvaWNlIFF1ZXN0aW9uJ1xuICAgIH07XG4gICAgcmV0dXJuIG1ldGFkYXRhO1xuICB9XG5cbiAgZ2V0UmVzcG9uc2VEZWNsYXJhdGlvbihlZGl0b3JTdGF0ZSkge1xuICAgIGNvbnN0IHJlc3BvbnNlRGVjbGFyYXRpb24gPSB7XG4gICAgICByZXNwb25zZTE6IHtcbiAgICAgICAgbWF4U2NvcmU6IDEsXG4gICAgICAgIGNhcmRpbmFsaXR5OiAnc2luZ2xlJyxcbiAgICAgICAgdHlwZTogJ2ludGVnZXInLFxuICAgICAgICBjb3JyZWN0UmVzcG9uc2U6IHtcbiAgICAgICAgICB2YWx1ZTogZWRpdG9yU3RhdGUuYW5zd2VyLFxuICAgICAgICAgIG91dGNvbWVzOiB7IFNDT1JFOiAxIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIHJlc3BvbnNlRGVjbGFyYXRpb247XG4gIH1cblxuICBnZXRJbnRlcmFjdGlvbnMob3B0aW9ucykge1xuICAgIGxldCBpbmRleDtcbiAgICBjb25zdCBpbnRlcmFjdE9wdGlvbnMgPSBfLm1hcChvcHRpb25zLCAob3B0LCBrZXkpID0+IHtcbiAgICAgIGluZGV4ID0gTnVtYmVyKGtleSk7XG4gICAgICByZXR1cm4geyBsYWJlbDogb3B0LmJvZHksIHZhbHVlOiBpbmRleCB9O1xuICAgIH0pO1xuICAgIGNvbnN0IGludGVyYWN0aW9ucyA9IHtcbiAgICAgIHJlc3BvbnNlMToge1xuICAgICAgICB0eXBlOiAnY2hvaWNlJyxcbiAgICAgICAgb3B0aW9uczogaW50ZXJhY3RPcHRpb25zXG4gICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gaW50ZXJhY3Rpb25zO1xuICB9XG5cbiAgc2V0VGVtcGxldGUodGVtcGxhdGUpIHtcbiAgICB0aGlzLnRlbXBsYXRlVHlwZSA9IHRlbXBsYXRlO1xuICAgIHRoaXMuZWRpdG9yRGF0YUhhbmRsZXIoKTtcbiAgfVxuXG4gIHN1Yk1lbnVDaGFuZ2UoeyBpbmRleCwgdmFsdWUgfSwgb3B0aW9uSW5kZXgpIHtcbiAgICBfLnNldCh0aGlzLmVkaXRvclN0YXRlLCBgaW50ZXJhY3Rpb25zLnJlc3BvbnNlMS5vcHRpb25zWyR7b3B0aW9uSW5kZXh9XS5oaW50cy5lbmAsIHZhbHVlKVxuICB9XG5cbiAgc3ViTWVudUNvbmZpZyhvcHRpb25zKSB7XG4gICAgdGhpcy5zdWJNZW51cyA9IFtdXG4gICAgb3B0aW9ucy5tYXAoKG9wdCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gXy5nZXQodGhpcy5lZGl0b3JTdGF0ZSwgYGludGVyYWN0aW9ucy5yZXNwb25zZTEub3B0aW9uc1ske2luZGV4fV0uaGludHMuZW5gKVxuICAgICAgdGhpcy5zdWJNZW51c1tpbmRleF0gPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBpZDogJ2FkZEhpbnQnLFxuICAgICAgICAgIG5hbWU6ICdBZGQgSGludCcsXG4gICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgbGFiZWw6ICdIaW50JyxcbiAgICAgICAgICBlbmFibGVkOiB2YWx1ZSA/IHRydWUgOiBmYWxzZSxcbiAgICAgICAgICB0eXBlOiAnaW5wdXQnLFxuICAgICAgICAgIHNob3c6IF8uZ2V0KHRoaXMuc291cmNpbmdTZXR0aW5ncywgJ3Nob3dBZGRIaW50cycpLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9KTtcbiAgfVxuXG4gIHNldFNjb3JlKHZhbHVlLCBzY29yZUluZGV4KSB7XG4gICAgY29uc3Qgb2JqID0ge1xuICAgICAgcmVzcG9uc2U6IHNjb3JlSW5kZXgsXG4gICAgICBvdXRjb21lczoge1xuICAgICAgICBzY29yZTogdmFsdWUsXG4gICAgICB9LFxuICAgIH07XG4gICAgdGhpcy5tYXBwaW5nW3Njb3JlSW5kZXhdID0gb2JqO1xuICAgIHRoaXMuZWRpdG9yRGF0YUhhbmRsZXIoKTtcbiAgfVxufVxuXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzUmVhZE9ubHlNb2RlOyBlbHNlIHJlYWRPbmx5Q29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJwdC0xMCBmcy0wLTkyIHNiLXctODVcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJmcy0wLTkyIGZvbnQtd2VpZ2h0LWJvbGRcIj57e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8ub3B0aW9uc319PHNwYW4gY2xhc3M9XCJzYi1yZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cbiAgICA8bGFiZWwgY2xhc3M9XCJmcy0wLTkyIGQtaW5saW5lLWJsb2NrXCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LnNlbGVjdExheW91dH19PC9sYWJlbD5cbiAgICA8aSBjbGFzcz1cImljb24gaW5mbyBjaXJjbGUgbWwtOFwiIHN1aVBvcHVwIHBvcHVwRGVsYXk9XCI1MDBcIiBwb3B1cFRleHQ9e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/Lm9wdGlvbnNQb3B1cFRleHR9fT48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyIG1yLThcIj48L3NwYW4+XG4gICAgPHNwYW4+PGJ1dHRvbiBjbGFzcz1cInNiLWJ0biBzYi1idG4teHMgc2ItYnRuLW91dGxpbmUtZ3JheSBtci01IHEtc2ItbGF5b3V0LXNpbmdsZVwiIFtuZ0NsYXNzXT1cInthY3RpdmU6ICdtY3EtdmVydGljYWwnID09PSB0ZW1wbGF0ZVR5cGV9XCIgKGNsaWNrKT1cInNldFRlbXBsZXRlKCdtY3EtdmVydGljYWwnKVwiPjxpIGNsYXNzPVwibXItMTAgaC03XCI+PC9pPiB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8udmVydGljYWx9fTwvYnV0dG9uPjwvc3Bhbj5cbiAgICA8c3Bhbj48YnV0dG9uIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi14cyBzYi1idG4tb3V0bGluZS1ncmF5IG1yLTUgcS1zYi1sYXlvdXQtdHdvXCIgW25nQ2xhc3NdPVwie2FjdGl2ZTogJ21jcS12ZXJ0aWNhbC1zcGxpdCcgPT09IHRlbXBsYXRlVHlwZX1cIiAoY2xpY2spPVwic2V0VGVtcGxldGUoJ21jcS12ZXJ0aWNhbC1zcGxpdCcpXCI+PGkgY2xhc3M9XCJtci0xMCBoLTcgdy0yMFwiPjwvaT57e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uZ3JpZH19PC9idXR0b24+PC9zcGFuPlxuICAgIDxzcGFuPjxidXR0b24gY2xhc3M9XCJzYi1idG4gc2ItYnRuLXhzIHNiLWJ0bi1vdXRsaW5lLWdyYXkgcS1zYi1sYXlvdXQtdGhyZWVcIiBbbmdDbGFzc109XCJ7YWN0aXZlOiAnbWNxLWhvcml6b250YWwnID09PSB0ZW1wbGF0ZVR5cGV9XCIgKGNsaWNrKT1cInNldFRlbXBsZXRlKCdtY3EtaG9yaXpvbnRhbCcpXCI+IDxpIGNsYXNzPVwibXItMTAgaC03XCI+PC9pPiB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uaG9yaXpvbnRhbH19PC9idXR0b24+PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGxhYmVsICpuZ0lmPVwic2hvd0Zvcm1FcnJvciAmJiAhZWRpdG9yU3RhdGUuYW5zd2VyICYmIHNvdXJjaW5nU2V0dGluZ3M/LmVuZm9yY2VDb3JyZWN0QW5zd2VyXCIgY2xhc3M9XCJ1aSBiYXNpYyByZWQgZXJyb3IgbGFiZWwgcHQtMSBtdC0xMFwiPlxuICAgIHt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5zZWxlY3RPbmVBbnN9fTwvbGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggcHQtMTAgZmxleC1kYyBzYi1tY3EtZm9ybVwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggc2ItbWNxLWl0ZW0gZmxleC13LXdyYXBcIiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGVkaXRvclN0YXRlLm9wdGlvbnM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYi13LTg1IHNiLWNrZWRpdG9yIHJlbGF0aXZlIG1iLTE1XCI+XG4gICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImVkaXRvclN0YXRlLm9wdGlvbnMubGVuZ3RoIDwgM1wiIGNsYXNzPVwic2ItYnRuIHNiLWNrZWRpdG9yLWNsb3NlIGFic29sdXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwiZWRpdG9yU3RhdGUuZGVsZXRlT3B0aW9uKGkpO2VkaXRvckRhdGFIYW5kbGVyKCRldmVudCk7XCJcbiAgICAgICAgICBsaWJUZWxlbWV0cnlJbnRlcmFjdFxuICAgICAgICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnZGVsZXRlX29wdGlvbicsJ2NsaWNrJywnc3VibWl0Jyx0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZClcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImljb24gY2xvc2VcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bGliLWNrZWRpdG9yLXRvb2wgW3NldENoYXJhY3RlckxpbWl0XT1cInNldENoYXJhY3RlckxpbWl0XCIgKGVkaXRvckRhdGFPdXRwdXQpPVwib3B0aW9uLmJvZHkgPSAkZXZlbnQuYm9keTsgb3B0aW9uLmxlbmd0aCA9ICRldmVudC5sZW5ndGg7IGVkaXRvckRhdGFIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgIFtlZGl0b3JEYXRhSW5wdXRdPVwib3B0aW9uLmJvZHlcIiBjbGFzcz1cImNrZWRpdG9yLXRvb2xfX29wdGlvbiBtYi0xMFwiXG4gICAgICAgICAgW2NsYXNzLm1iLTVdPVwic2hvd0Zvcm1FcnJvciAmJiAoW3VuZGVmaW5lZCwgJyddLmluY2x1ZGVzKG9wdGlvbi5ib2R5KSB8fCBvcHRpb24ubGVuZ3RoID4gc2V0Q2hhcmFjdGVyTGltaXQpXCI+XG4gICAgICAgIDwvbGliLWNrZWRpdG9yLXRvb2w+XG4gICAgICAgIDxsYWJlbCAqbmdJZj1cIlxuICAgICAgICAgICAgc2hvd0Zvcm1FcnJvciAmJiAob3B0aW9uLmJvZHkgPT09IHVuZGVmaW5lZCB8fCBvcHRpb24uYm9keSA9PT0gJycpXG4gICAgICAgICAgXCIgY2xhc3M9XCJzYi1jb2xvci1lcnJvciBmcy0wLTc4NVwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5maWxsVGhpc09wdGlvbn19PC9sYWJlbD5cbiAgICAgICAgPGxhYmVsICpuZ0lmPVwib3B0aW9uLmxlbmd0aCA+IHNldENoYXJhY3RlckxpbWl0XCIgY2xhc3M9XCJ1aSBiYXNpYyByZWQgZXJyb3IgbGFiZWwgcHQtMVwiPlxuICAgICAgICAgIHt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5yZWR1Y2VTaXplfX08L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2ItY2hlY2tib3ggc2ItY2hlY2tib3gtcHJpbWFyeSBwbC0xMCBtdC0wIHB0LTBcIiBbY2xhc3Muc2VsZWN0ZWRdPVwiZWRpdG9yU3RhdGUuYW5zd2VyID09PSBpLnRvU3RyaW5nKClcIiAqbmdJZj1cInNvdXJjaW5nU2V0dGluZ3M/LmVuZm9yY2VDb3JyZWN0QW5zd2VyICE9PSBmYWxzZVwiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInJhZGlvXCIgaWQ9XCJhbnN3ZXJfe3sgaSArIDEgfX1cIiBuYW1lPVwiZXhhbXBsZVwiIHZhbHVlPVwie3sgaSB9fVwiICAoY2hhbmdlKT1cImVkaXRvckRhdGFIYW5kbGVyKCRldmVudCk7XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0b3JTdGF0ZS5hbnN3ZXJcIiBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIiBbY2hlY2tlZF09XCJlZGl0b3JTdGF0ZS5hbnN3ZXIgPT09IGkudG9TdHJpbmcoKVwiXG4gICAgICAgIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnbWFya19hc19yaWdodF9hbndzZXInLCdjbGljaycsdW5kZWZpbmVkLHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkLHthbnN3ZXI6aS50b1N0cmluZygpfSlcIiAvPlxuICAgICAgICA8bGFiZWwgZm9yPVwiYW5zd2VyX3t7IGkgKyAxIH19XCIgY2xhc3M9XCJtci0wIGZzLTAtNzg1XCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LmNvcnJlY3RBbnN9fTwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMFwiICpuZ0lmPVwic2hvd1N1Yk1lbnVcIj5cbiAgICAgICAgPGxpYi1xdWVzdGlvbi1vcHRpb24tc3ViLW1lbnUgW3N1Yk1lbnVzXT1cInN1Yk1lbnVzW2ldXCIgKG9uQ2hhbmdlKT1cInN1Yk1lbnVDaGFuZ2UoJGV2ZW50LGkpXCI+PC9saWItcXVlc3Rpb24tb3B0aW9uLXN1Yi1tZW51PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicGFyZW50TWV0YT8uYWxsb3dTY29yaW5nID09PSAnWWVzJ1wiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJzY29yZVwiIGNsYXNzPVwiZC1ibG9jayBtdC0xMCBvcHRpb25MYWJlbFwiPlNjb3JlIDxzcGFuIGNsYXNzPVwic2ItcmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cInNiLXRleHRib3ggZmFsc2UgbWItMzBcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBZGQgc2NvcmUgaGVyZSdcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRTY29yZSgkZXZlbnQudGFyZ2V0LnZhbHVlLGkpXCJcbiAgICAgICAgICAgICpuZ0lmPVwic291cmNpbmdTZXR0aW5ncy5zaG93QWRkU2NvcmVcIlxuICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICBbdmFsdWVdPVwibWFwcGluZ1tpXT8ub3V0Y29tZXM/LnNjb3JlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJlZGl0b3JTdGF0ZS5vcHRpb25zLmxlbmd0aCA8IGVkaXRvclN0YXRlLm1heGltdW1PcHRpb25zXCJcbiAgICAgICAgY2xhc3M9XCJzYi1idG4gc2ItYnRuLW91dGxpbmUtcHJpbWFyeSBzYi1idG4teHMgc2ItbGVmdC1pY29uLWJ0biB0ZXh0LWluaGVyaXQgYi0wIGJnLW5vbmUgbm8taG92ZXIgcC0wIG1iLTEwIG10LTEwXCJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvclN0YXRlLmFkZE9wdGlvbnMoKTtlZGl0b3JEYXRhSGFuZGxlcigkZXZlbnQpO1wiXG4gICAgICAgIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnYWRkX29wdGlvbicsJ2NsaWNrJywnc3VibWl0Jyx0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZClcIiA+XG4gICAgICAgIDxpIGNsYXNzPVwicGx1cyBjaXJjbGUgaWNvbiBmcy0xLTI4NiBwdWxsLWxlZnQgbXItMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48c3BhbiBjbGFzcz1cInNiLWxpbmUtaGVpZ2h0LTI0XCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LmFkZE9wdGlvbn19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjcmVhZE9ubHlDb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJyb3cgbWItMCBwLTBcIiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGVkaXRvclN0YXRlLm9wdGlvbnM7IGxldCBpPWluZGV4XCI+XG4gICAgPGRpdiBjbGFzcz1cInR3ZWx2ZSB3aWRlIGNvbHVtbiBwLTBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJja2VkaXRvci10b29sIHdpZHRoLTEwMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2tlZGl0b3ItdG9vbF9fcXVlc3Rpb24tcmVhZG9ubHkgbWItMjRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJweC0xNiBweS04IGZzLTAtOTIgbWItMCBja2VkaXRvci10b29sX19sYWJlbCB3aWR0aC0xMDBcIj5PcHRpb24ge3sgaSsxIH19PC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2tlZGl0b3ItdG9vbF9fc29sdXRpb25fX2JvZHlcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiZnMtMC03ODUgcC0xNlwiIFtpbm5lckhUTUxdPVwib3B0aW9uLmJvZHkgIHwgc2FuaXRpemVIdG1sXCI+PC9wPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1jcS1jaGVja2JveC1hbnN3ZXJcIiAqbmdJZj1cImVkaXRvclN0YXRlLmFuc3dlciA9PT0gaS50b1N0cmluZygpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYi1jaGVja2JveCBzYi1jaGVja2JveC1wcmltYXJ5IG1yLWF1dG8gc2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVjazFcIiBuYW1lPVwiZXhhbXBsZVwiIGRpc2FibGVkIGNoZWNrZWQ+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNoZWNrMVwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5jb3JyZWN0QW5zfX08L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInctMTAwXCIgKm5nSWY9XCJzaG93U3ViTWVudVwiPlxuICAgICAgICA8bGliLXF1ZXN0aW9uLW9wdGlvbi1zdWItbWVudSBbc3ViTWVudXNdPVwic3ViTWVudXNbaV1cIiAob25DaGFuZ2UpPVwic3ViTWVudUNoYW5nZSgkZXZlbnQsaSlcIj48L2xpYi1xdWVzdGlvbi1vcHRpb24tc3ViLW1lbnU+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJwYXJlbnRNZXRhPy5hbGxvd1Njb3JpbmcgPT09ICdZZXMnXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cInNjb3JlXCIgY2xhc3M9XCJkLWJsb2NrIG10LTEwIG9wdGlvbkxhYmVsXCI+U2NvcmU8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJzYi10ZXh0Ym94IGZhbHNlIG1iLTMwXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQWRkIHNjb3JlIGhlcmUnXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0U2NvcmUoJGV2ZW50LnRhcmdldC52YWx1ZSxpKVwiXG4gICAgICAgICAgICAqbmdJZj1cInNvdXJjaW5nU2V0dGluZ3Muc2hvd0FkZFNjb3JlXCJcbiAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm1hcHBpbmdbaV0/Lm91dGNvbWVzPy5zY29yZVwiIFxuICAgICAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2xsZWN0aW9uLWVkaXRvci1saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9vcHRpb25zL29wdGlvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvb3B0aW9ucy9vcHRpb25zLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQ2xHLE9BQU8sS0FBSyxDQUFDLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBVy9CLE1BQU0sT0FBTyxnQkFBZ0I7SUFlM0IsWUFDUyxnQkFBd0MsRUFDeEMsYUFBNEIsRUFDNUIsV0FBd0IsRUFDdkIsYUFBNEI7UUFIN0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF3QjtRQUN4QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQWQ3QixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBRVoscUJBQWdCLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFDakUsc0JBQWlCLEdBQUcsR0FBRyxDQUFDO1FBQ3hCLGtCQUFhLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLGlCQUFZLEdBQUcsY0FBYyxDQUFDO1FBRXJDLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxnQkFBVyxHQUFTLEtBQUssQ0FBQztJQU92QixDQUFDO0lBRUosUUFBUTtRQUNOLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLEVBQUU7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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBFZGl0b3JUZWxlbWV0cnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGVsZW1ldHJ5L3RlbGVtZXRyeS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25maWcvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ViTWVudSB9IGZyb20gJy4uL3F1ZXN0aW9uLW9wdGlvbi1zdWItbWVudS9xdWVzdGlvbi1vcHRpb24tc3ViLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCB7IFRyZWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJlZS90cmVlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRWRpdG9yU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2VkaXRvci9lZGl0b3Iuc2VydmljZSc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItb3B0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9vcHRpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vb3B0aW9ucy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBPcHRpb25zQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgZWRpdG9yU3RhdGU6IGFueTtcbiAgQElucHV0KCkgc2hvd0Zvcm1FcnJvcjtcbiAgQElucHV0KCkgc291cmNpbmdTZXR0aW5ncztcbiAgQElucHV0KCkgcXVlc3Rpb25QcmltYXJ5Q2F0ZWdvcnk7XG4gIEBJbnB1dCgpIG1hcHBpbmcgPSBbXTtcbiAgQElucHV0KCkgaXNSZWFkT25seU1vZGU7XG4gIEBPdXRwdXQoKSBlZGl0b3JEYXRhT3V0cHV0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBwdWJsaWMgc2V0Q2hhcmFjdGVyTGltaXQgPSAxNjA7XG4gIHB1YmxpYyBzZXRJbWFnZUxpbWl0ID0gMTtcbiAgcHVibGljIHRlbXBsYXRlVHlwZSA9ICdtY3EtdmVydGljYWwnO1xuICBzdWJNZW51czogU3ViTWVudVtdW107XG4gIGhpbnRzID0gW107XG4gIHNob3dTdWJNZW51OmJvb2xlYW49ZmFsc2U7XG4gIHBhcmVudE1ldGE6IGFueTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRlbGVtZXRyeVNlcnZpY2U6IEVkaXRvclRlbGVtZXRyeVNlcnZpY2UsXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UsXG4gICAgcHVibGljIHRyZWVTZXJ2aWNlOiBUcmVlU2VydmljZSxcbiAgICBwcml2YXRlIGVkaXRvclNlcnZpY2U6IEVkaXRvclNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGlmICghXy5pc1VuZGVmaW5lZCh0aGlzLmVkaXRvclN0YXRlLnRlbXBsYXRlSWQpKSB7XG4gICAgICB0aGlzLnRlbXBsYXRlVHlwZSA9IHRoaXMuZWRpdG9yU3RhdGUudGVtcGxhdGVJZDtcbiAgICB9XG4gICAgdGhpcy5lZGl0b3JEYXRhSGFuZGxlcigpO1xuICAgIHRoaXMubWFwcGluZyA9IF8uZ2V0KHRoaXMuZWRpdG9yU3RhdGUsICdyZXNwb25zZURlY2xhcmF0aW9uLnJlc3BvbnNlMS5tYXBwaW5nJykgfHwgW107XG4gICAgaWYoIV8uaXNVbmRlZmluZWQodGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvckNvbmZpZy5jb25maWcucmVuZGVyVGF4b25vbXkpKXtcbiAgICAgIHRoaXMucGFyZW50TWV0YSA9IHRoaXMudHJlZVNlcnZpY2UuZ2V0Rmlyc3RDaGlsZCgpLmRhdGEubWV0YWRhdGE7XG4gICAgICB0aGlzLnNob3dTdWJNZW51PXRydWU7XG4gICAgfVxuICB9XG5cbiAgZWRpdG9yRGF0YUhhbmRsZXIoZXZlbnQ/KSB7XG4gICAgY29uc3QgYm9keSA9IHRoaXMucHJlcGFyZU1jcUJvZHkodGhpcy5lZGl0b3JTdGF0ZSk7XG4gICAgdGhpcy5lZGl0b3JEYXRhT3V0cHV0LmVtaXQoeyBib2R5LCBtZWRpYW9iajogZXZlbnQgPyBldmVudC5tZWRpYW9iaiA6IHVuZGVmaW5lZCB9KTtcbiAgfVxuXG4gIHByZXBhcmVNY3FCb2R5KGVkaXRvclN0YXRlKSB7XG4gICAgbGV0IG1ldGFkYXRhOiBhbnk7XG4gICAgY29uc3QgY29ycmVjdEFuc3dlciA9IGVkaXRvclN0YXRlLmFuc3dlcjtcbiAgICBsZXQgcmVzaW5kZXg7XG4gICAgY29uc3Qgb3B0aW9ucyA9IF8ubWFwKGVkaXRvclN0YXRlLm9wdGlvbnMsIChvcHQsIGtleSkgPT4ge1xuICAgICAgcmVzaW5kZXggPSBOdW1iZXIoa2V5KTtcbiAgICAgIGlmIChOdW1iZXIoY29ycmVjdEFuc3dlcikgPT09IGtleSkge1xuICAgICAgICByZXR1cm4geyBhbnN3ZXI6IHRydWUsIHZhbHVlOiB7IGJvZHk6IG9wdC5ib2R5LCB2YWx1ZTogcmVzaW5kZXggfSB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHsgYW5zd2VyOiBmYWxzZSwgdmFsdWU6IHsgYm9keTogb3B0LmJvZHksIHZhbHVlOiByZXNpbmRleCB9IH07XG4gICAgICB9XG4gICAgfSk7XG4gICAgbWV0YWRhdGEgPSB7XG4gICAgICB0ZW1wbGF0ZUlkOiB0aGlzLnRlbXBsYXRlVHlwZSxcbiAgICAgIG5hbWU6IHRoaXMucXVlc3Rpb25QcmltYXJ5Q2F0ZWdvcnkgfHwgJ011bHRpcGxlIENob2ljZSBRdWVzdGlvbicsXG4gICAgICByZXNwb25zZURlY2xhcmF0aW9uOiB0aGlzLmdldFJlc3BvbnNlRGVjbGFyYXRpb24oZWRpdG9yU3RhdGUpLFxuICAgICAgaW50ZXJhY3Rpb25UeXBlczogWydjaG9pY2UnXSxcbiAgICAgIGludGVyYWN0aW9uczogdGhpcy5nZXRJbnRlcmFjdGlvbnMoZWRpdG9yU3RhdGUub3B0aW9ucyksXG4gICAgICBlZGl0b3JTdGF0ZToge1xuICAgICAgICBvcHRpb25zLFxuICAgICAgfSxcbiAgICAgIHFUeXBlOiAnTUNRJyxcbiAgICAgIHByaW1hcnlDYXRlZ29yeTogdGhpcy5xdWVzdGlvblByaW1hcnlDYXRlZ29yeSB8fCAnTXVsdGlwbGUgQ2hvaWNlIFF1ZXN0aW9uJyxcbiAgICB9O1xuICAgIHJldHVybiBtZXRhZGF0YTtcbiAgfVxuXG4gIGdldFJlc3BvbnNlRGVjbGFyYXRpb24oZWRpdG9yU3RhdGUpIHtcbiAgICBjb25zdCByZXNwb25zZURlY2xhcmF0aW9uID0ge1xuICAgICAgcmVzcG9uc2UxOiB7XG4gICAgICAgIG1heFNjb3JlOiAxLFxuICAgICAgICBjYXJkaW5hbGl0eTogJ3NpbmdsZScsXG4gICAgICAgIHR5cGU6ICdpbnRlZ2VyJyxcbiAgICAgICAgY29ycmVjdFJlc3BvbnNlOiB7XG4gICAgICAgICAgdmFsdWU6IGVkaXRvclN0YXRlLmFuc3dlcixcbiAgICAgICAgICBvdXRjb21lczogeyBTQ09SRTogMSB9LFxuICAgICAgICB9LFxuICAgICAgICBtYXBwaW5nOiB0aGlzLm1hcHBpbmcsXG4gICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIHJlc3BvbnNlRGVjbGFyYXRpb247XG4gIH1cblxuICBnZXRJbnRlcmFjdGlvbnMob3B0aW9ucykge1xuICAgIGxldCBpbmRleDtcbiAgICBjb25zdCBpbnRlcmFjdE9wdGlvbnMgPSBfLm1hcChvcHRpb25zLCAob3B0LCBrZXkpID0+IHtcbiAgICAgIGluZGV4ID0gTnVtYmVyKGtleSk7XG4gICAgICBjb25zdCBoaW50cyAgPSBfLmdldCh0aGlzLmVkaXRvclN0YXRlLCBgaW50ZXJhY3Rpb25zLnJlc3BvbnNlMS5vcHRpb25zWyR7aW5kZXh9XS5oaW50c2ApXG4gICAgICByZXR1cm4geyBsYWJlbDogb3B0LmJvZHksIHZhbHVlOiBpbmRleCwgaGludHMgfTtcbiAgICB9KTtcbiAgICB0aGlzLnN1Yk1lbnVDb25maWcob3B0aW9ucyk7XG4gICAgY29uc3QgaW50ZXJhY3Rpb25zID0ge1xuICAgICAgcmVzcG9uc2UxOiB7XG4gICAgICAgIHR5cGU6ICdjaG9pY2UnLFxuICAgICAgICBvcHRpb25zOiBpbnRlcmFjdE9wdGlvbnMsXG4gICAgICB9LFxuICAgIH07XG4gICAgcmV0dXJuIGludGVyYWN0aW9ucztcbiAgfVxuXG4gIHNldFRlbXBsZXRlKHRlbXBsYXRlKSB7XG4gICAgdGhpcy50ZW1wbGF0ZVR5cGUgPSB0ZW1wbGF0ZTtcbiAgICB0aGlzLmVkaXRvckRhdGFIYW5kbGVyKCk7XG4gIH1cblxuICBzdWJNZW51Q2hhbmdlKHsgaW5kZXgsIHZhbHVlIH0sIG9wdGlvbkluZGV4KSB7XG4gICAgXy5zZXQodGhpcy5lZGl0b3JTdGF0ZSwgYGludGVyYWN0aW9ucy5yZXNwb25zZTEub3B0aW9uc1ske29wdGlvbkluZGV4fV0uaGludHMuZW5gLCB2YWx1ZSlcbiAgfVxuXG4gIHN1Yk1lbnVDb25maWcob3B0aW9ucykge1xuICAgIHRoaXMuc3ViTWVudXMgPSBbXVxuICAgIG9wdGlvbnMubWFwKChvcHQsIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSAgPSBfLmdldCh0aGlzLmVkaXRvclN0YXRlLCBgaW50ZXJhY3Rpb25zLnJlc3BvbnNlMS5vcHRpb25zWyR7aW5kZXh9XS5oaW50cy5lbmApXG4gICAgICB0aGlzLnN1Yk1lbnVzW2luZGV4XSA9IFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiAnYWRkSGludCcsXG4gICAgICAgICAgbmFtZTogJ0FkZCBIaW50JyxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBsYWJlbDogJ0hpbnQnLFxuICAgICAgICAgIGVuYWJsZWQ6IHZhbHVlID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgICAgIHR5cGU6ICdpbnB1dCcsXG4gICAgICAgICAgc2hvdzogXy5nZXQodGhpcy5zb3VyY2luZ1NldHRpbmdzLCAnc2hvd0FkZEhpbnRzJyksXG4gICAgICAgIH0sXG4gICAgICBdO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0U2NvcmUodmFsdWUsIHNjb3JlSW5kZXgpIHtcbiAgICBjb25zdCBvYmogPSB7XG4gICAgICByZXNwb25zZTogc2NvcmVJbmRleCxcbiAgICAgIG91dGNvbWVzOiB7XG4gICAgICAgIHNjb3JlOiB2YWx1ZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgICB0aGlzLm1hcHBpbmdbc2NvcmVJbmRleF0gPSBvYmo7XG4gICAgdGhpcy5lZGl0b3JEYXRhSGFuZGxlcigpO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzUmVhZE9ubHlNb2RlOyBlbHNlIHJlYWRPbmx5Q29udGFpbmVyXCI+XG4gIDxkaXYgY2xhc3M9XCJwdC0xMCBmcy0wLTkyIHNiLXctODVcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJmcy0wLTkyIGZvbnQtd2VpZ2h0LWJvbGRcIj57e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8ub3B0aW9uc319PHNwYW4gY2xhc3M9XCJzYi1yZXF1aXJlZFwiPio8L3NwYW4+PC9sYWJlbD5cbiAgICA8bGFiZWwgY2xhc3M9XCJmcy0wLTkyIGQtaW5saW5lLWJsb2NrXCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LnNlbGVjdExheW91dH19PC9sYWJlbD5cbiAgICA8aSBjbGFzcz1cImljb24gaW5mbyBjaXJjbGUgbWwtOFwiIHN1aVBvcHVwIHBvcHVwRGVsYXk9XCI1MDBcIiBwb3B1cFRleHQ9e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/Lm9wdGlvbnNQb3B1cFRleHR9fT48L2k+XG4gICAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyIG1yLThcIj48L3NwYW4+XG4gICAgPHNwYW4+PGJ1dHRvbiBjbGFzcz1cInNiLWJ0biBzYi1idG4teHMgc2ItYnRuLW91dGxpbmUtZ3JheSBtci01IHEtc2ItbGF5b3V0LXNpbmdsZVwiIFtuZ0NsYXNzXT1cInthY3RpdmU6ICdtY3EtdmVydGljYWwnID09PSB0ZW1wbGF0ZVR5cGV9XCIgKGNsaWNrKT1cInNldFRlbXBsZXRlKCdtY3EtdmVydGljYWwnKVwiPjxpIGNsYXNzPVwibXItMTAgaC03XCI+PC9pPiB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8udmVydGljYWx9fTwvYnV0dG9uPjwvc3Bhbj5cbiAgICA8c3Bhbj48YnV0dG9uIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi14cyBzYi1idG4tb3V0bGluZS1ncmF5IG1yLTUgcS1zYi1sYXlvdXQtdHdvXCIgW25nQ2xhc3NdPVwie2FjdGl2ZTogJ21jcS12ZXJ0aWNhbC1zcGxpdCcgPT09IHRlbXBsYXRlVHlwZX1cIiAoY2xpY2spPVwic2V0VGVtcGxldGUoJ21jcS12ZXJ0aWNhbC1zcGxpdCcpXCI+PGkgY2xhc3M9XCJtci0xMCBoLTcgdy0yMFwiPjwvaT57e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uZ3JpZH19PC9idXR0b24+PC9zcGFuPlxuICAgIDxzcGFuPjxidXR0b24gY2xhc3M9XCJzYi1idG4gc2ItYnRuLXhzIHNiLWJ0bi1vdXRsaW5lLWdyYXkgcS1zYi1sYXlvdXQtdGhyZWVcIiBbbmdDbGFzc109XCJ7YWN0aXZlOiAnbWNxLWhvcml6b250YWwnID09PSB0ZW1wbGF0ZVR5cGV9XCIgKGNsaWNrKT1cInNldFRlbXBsZXRlKCdtY3EtaG9yaXpvbnRhbCcpXCI+IDxpIGNsYXNzPVwibXItMTAgaC03XCI+PC9pPiB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uaG9yaXpvbnRhbH19PC9idXR0b24+PC9zcGFuPlxuICA8L2Rpdj5cbiAgPGxhYmVsICpuZ0lmPVwic2hvd0Zvcm1FcnJvciAmJiAhZWRpdG9yU3RhdGUuYW5zd2VyICYmIHNvdXJjaW5nU2V0dGluZ3M/LmVuZm9yY2VDb3JyZWN0QW5zd2VyXCIgY2xhc3M9XCJ1aSBiYXNpYyByZWQgZXJyb3IgbGFiZWwgcHQtMSBtdC0xMFwiPlxuICAgIHt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5zZWxlY3RPbmVBbnN9fTwvbGFiZWw+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXggcHQtMTAgZmxleC1kYyBzYi1tY3EtZm9ybVwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggc2ItbWNxLWl0ZW0gZmxleC13LXdyYXBcIiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGVkaXRvclN0YXRlLm9wdGlvbnM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzYi13LTg1IHNiLWNrZWRpdG9yIHJlbGF0aXZlIG1iLTE1XCI+XG4gICAgICAgIDxidXR0b24gW2Rpc2FibGVkXT1cImVkaXRvclN0YXRlLm9wdGlvbnMubGVuZ3RoIDwgM1wiIGNsYXNzPVwic2ItYnRuIHNiLWNrZWRpdG9yLWNsb3NlIGFic29sdXRlXCJcbiAgICAgICAgICAoY2xpY2spPVwiZWRpdG9yU3RhdGUuZGVsZXRlT3B0aW9uKGkpO2VkaXRvckRhdGFIYW5kbGVyKCRldmVudCk7XCJcbiAgICAgICAgICBsaWJUZWxlbWV0cnlJbnRlcmFjdFxuICAgICAgICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnZGVsZXRlX29wdGlvbicsJ2NsaWNrJywnc3VibWl0Jyx0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZClcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImljb24gY2xvc2VcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8bGliLWNrZWRpdG9yLXRvb2wgW3NldENoYXJhY3RlckxpbWl0XT1cInNldENoYXJhY3RlckxpbWl0XCIgKGVkaXRvckRhdGFPdXRwdXQpPVwib3B0aW9uLmJvZHkgPSAkZXZlbnQuYm9keTsgb3B0aW9uLmxlbmd0aCA9ICRldmVudC5sZW5ndGg7IGVkaXRvckRhdGFIYW5kbGVyKCRldmVudClcIlxuICAgICAgICAgIFtlZGl0b3JEYXRhSW5wdXRdPVwib3B0aW9uLmJvZHlcIiBjbGFzcz1cImNrZWRpdG9yLXRvb2xfX29wdGlvbiBtYi0xMFwiXG4gICAgICAgICAgW2NsYXNzLm1iLTVdPVwic2hvd0Zvcm1FcnJvciAmJiAoW3VuZGVmaW5lZCwgJyddLmluY2x1ZGVzKG9wdGlvbi5ib2R5KSB8fCBvcHRpb24ubGVuZ3RoID4gc2V0Q2hhcmFjdGVyTGltaXQpXCI+XG4gICAgICAgIDwvbGliLWNrZWRpdG9yLXRvb2w+XG4gICAgICAgIDxsYWJlbCAqbmdJZj1cIlxuICAgICAgICAgICAgc2hvd0Zvcm1FcnJvciAmJiAob3B0aW9uLmJvZHkgPT09IHVuZGVmaW5lZCB8fCBvcHRpb24uYm9keSA9PT0gJycpXG4gICAgICAgICAgXCIgY2xhc3M9XCJzYi1jb2xvci1lcnJvciBmcy0wLTc4NVwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5maWxsVGhpc09wdGlvbn19PC9sYWJlbD5cbiAgICAgICAgPGxhYmVsICpuZ0lmPVwib3B0aW9uLmxlbmd0aCA+IHNldENoYXJhY3RlckxpbWl0XCIgY2xhc3M9XCJ1aSBiYXNpYyByZWQgZXJyb3IgbGFiZWwgcHQtMVwiPlxuICAgICAgICAgIHt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5yZWR1Y2VTaXplfX08L2xhYmVsPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2ItY2hlY2tib3ggc2ItY2hlY2tib3gtcHJpbWFyeSBwbC0xMCBtdC0wIHB0LTBcIiBbY2xhc3Muc2VsZWN0ZWRdPVwiZWRpdG9yU3RhdGUuYW5zd2VyID09PSBpLnRvU3RyaW5nKClcIiAqbmdJZj1cInNvdXJjaW5nU2V0dGluZ3M/LmVuZm9yY2VDb3JyZWN0QW5zd2VyICE9PSBmYWxzZVwiPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInJhZGlvXCIgaWQ9XCJhbnN3ZXJfe3sgaSArIDEgfX1cIiBuYW1lPVwiZXhhbXBsZVwiIHZhbHVlPVwie3sgaSB9fVwiICAoY2hhbmdlKT1cImVkaXRvckRhdGFIYW5kbGVyKCRldmVudCk7XCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJlZGl0b3JTdGF0ZS5hbnN3ZXJcIiBbbmdNb2RlbE9wdGlvbnNdPVwieyBzdGFuZGFsb25lOiB0cnVlIH1cIiBbY2hlY2tlZF09XCJlZGl0b3JTdGF0ZS5hbnN3ZXIgPT09IGkudG9TdHJpbmcoKVwiXG4gICAgICAgIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnbWFya19hc19yaWdodF9hbndzZXInLCdjbGljaycsdW5kZWZpbmVkLHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkLHthbnN3ZXI6aS50b1N0cmluZygpfSlcIiAvPlxuICAgICAgICA8bGFiZWwgZm9yPVwiYW5zd2VyX3t7IGkgKyAxIH19XCIgY2xhc3M9XCJtci0wIGZzLTAtNzg1XCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LmNvcnJlY3RBbnN9fTwvbGFiZWw+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3LTEwMFwiICpuZ0lmPVwic2hvd1N1Yk1lbnVcIj5cbiAgICAgICAgPGxpYi1xdWVzdGlvbi1vcHRpb24tc3ViLW1lbnUgW3N1Yk1lbnVzXT1cInN1Yk1lbnVzW2ldXCIgKG9uQ2hhbmdlKT1cInN1Yk1lbnVDaGFuZ2UoJGV2ZW50LGkpXCI+PC9saWItcXVlc3Rpb24tb3B0aW9uLXN1Yi1tZW51PlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicGFyZW50TWV0YT8uYWxsb3dTY29yaW5nID09PSAnWWVzJ1wiPlxuICAgICAgICAgIDxsYWJlbCBmb3I9XCJzY29yZVwiIGNsYXNzPVwiZC1ibG9jayBtdC0xMCBvcHRpb25MYWJlbFwiPlNjb3JlIDxzcGFuIGNsYXNzPVwic2ItcmVxdWlyZWRcIj4qPC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzcz1cInNiLXRleHRib3ggZmFsc2UgbWItMzBcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidBZGQgc2NvcmUgaGVyZSdcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJzZXRTY29yZSgkZXZlbnQudGFyZ2V0LnZhbHVlLGkpXCJcbiAgICAgICAgICAgICpuZ0lmPVwic291cmNpbmdTZXR0aW5ncy5zaG93QWRkU2NvcmVcIlxuICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICBbdmFsdWVdPVwibWFwcGluZ1tpXT8ub3V0Y29tZXM/LnNjb3JlXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgIDxidXR0b24gKm5nSWY9XCJlZGl0b3JTdGF0ZS5vcHRpb25zLmxlbmd0aCA8IGVkaXRvclN0YXRlLm1heGltdW1PcHRpb25zXCJcbiAgICAgICAgY2xhc3M9XCJzYi1idG4gc2ItYnRuLW91dGxpbmUtcHJpbWFyeSBzYi1idG4teHMgc2ItbGVmdC1pY29uLWJ0biB0ZXh0LWluaGVyaXQgYi0wIGJnLW5vbmUgbm8taG92ZXIgcC0wIG1iLTEwIG10LTEwXCJcbiAgICAgICAgKGNsaWNrKT1cImVkaXRvclN0YXRlLmFkZE9wdGlvbnMoKTtlZGl0b3JEYXRhSGFuZGxlcigkZXZlbnQpO1wiXG4gICAgICAgIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnYWRkX29wdGlvbicsJ2NsaWNrJywnc3VibWl0Jyx0ZWxlbWV0cnlTZXJ2aWNlLnRlbGVtZXRyeVBhZ2VJZClcIiA+XG4gICAgICAgIDxpIGNsYXNzPVwicGx1cyBjaXJjbGUgaWNvbiBmcy0xLTI4NiBwdWxsLWxlZnQgbXItMFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48c3BhbiBjbGFzcz1cInNiLWxpbmUtaGVpZ2h0LTI0XCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LmFkZE9wdGlvbn19PC9zcGFuPlxuICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjcmVhZE9ubHlDb250YWluZXI+XG4gIDxkaXYgY2xhc3M9XCJyb3cgbWItMCBwLTBcIiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGVkaXRvclN0YXRlLm9wdGlvbnM7IGxldCBpPWluZGV4XCI+XG4gICAgPGRpdiBjbGFzcz1cInR3ZWx2ZSB3aWRlIGNvbHVtbiBwLTBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJja2VkaXRvci10b29sIHdpZHRoLTEwMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2tlZGl0b3ItdG9vbF9fcXVlc3Rpb24tcmVhZG9ubHkgbWItMjRcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJweC0xNiBweS04IGZzLTAtOTIgbWItMCBja2VkaXRvci10b29sX19sYWJlbCB3aWR0aC0xMDBcIj5PcHRpb24ge3sgaSsxIH19PC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2tlZGl0b3ItdG9vbF9fc29sdXRpb25fX2JvZHlcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwiZnMtMC03ODUgcC0xNlwiIFtpbm5lckhUTUxdPVwib3B0aW9uLmJvZHkgIHwgc2FuaXRpemVIdG1sXCI+PC9wPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1jcS1jaGVja2JveC1hbnN3ZXJcIiAqbmdJZj1cImVkaXRvclN0YXRlLmFuc3dlciA9PT0gaS50b1N0cmluZygpXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzYi1jaGVja2JveCBzYi1jaGVja2JveC1wcmltYXJ5IG1yLWF1dG8gc2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgaWQ9XCJjaGVjazFcIiBuYW1lPVwiZXhhbXBsZVwiIGRpc2FibGVkIGNoZWNrZWQ+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNoZWNrMVwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5jb3JyZWN0QW5zfX08L2xhYmVsPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInctMTAwXCIgKm5nSWY9XCJzaG93U3ViTWVudVwiPlxuICAgICAgICA8bGliLXF1ZXN0aW9uLW9wdGlvbi1zdWItbWVudSBbc3ViTWVudXNdPVwic3ViTWVudXNbaV1cIiAob25DaGFuZ2UpPVwic3ViTWVudUNoYW5nZSgkZXZlbnQsaSlcIj48L2xpYi1xdWVzdGlvbi1vcHRpb24tc3ViLW1lbnU+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJwYXJlbnRNZXRhPy5hbGxvd1Njb3JpbmcgPT09ICdZZXMnXCI+XG4gICAgICAgICAgPGxhYmVsIGZvcj1cInNjb3JlXCIgY2xhc3M9XCJkLWJsb2NrIG10LTEwIG9wdGlvbkxhYmVsXCI+U2NvcmU8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgY2xhc3M9XCJzYi10ZXh0Ym94IGZhbHNlIG1iLTMwXCJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQWRkIHNjb3JlIGhlcmUnXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwic2V0U2NvcmUoJGV2ZW50LnRhcmdldC52YWx1ZSxpKVwiXG4gICAgICAgICAgICAqbmdJZj1cInNvdXJjaW5nU2V0dGluZ3Muc2hvd0FkZFNjb3JlXCJcbiAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm1hcHBpbmdbaV0/Lm91dGNvbWVzPy5zY29yZVwiIFxuICAgICAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -35,7 +35,7 @@ export class ProgressStatusComponent {
35
35
  this.expandedElement = (this.expandedElement == event.criteria) ? "" : event.criteria;
36
36
  }
37
37
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgressStatusComponent, deps: [{ token: i1.EditorService }], target: i0.ɵɵFactoryTarget.Component }); }
38
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ProgressStatusComponent, selector: "lib-progress-status", outputs: { assignPageEmitter: "assignPageEmitter" }, ngImport: i0, template: "<div class=\"sb-editor-container mb-0\">\n <lib-header [labelConfigData]=\"toolbarConfig\" [pageId]=\"pageId\" (toolbarEmitter)=\"toolbarEventListener($event)\">\n </lib-header>\n <div class=\"add-to-library mb-0\">\n <div class=\"h-100vh sb-bg-white\">\n <div class=\"ui\">\n <div class=\"ui twelve column grid m-0\">\n <div class=\"three wide column p-0 overflow-y mb-40 h-100vh\">\n </div>\n <!-- Right Player Sections -->\n <div class=\"eight wide column bg-white pl-40 mb-10 w-73\">\n <table aria-describedby=\"progress\">\n <thead>\n <tr>\n <th class=\"width-40\">Criteria</th>\n <th class=\"width-13\">Max Score</th>\n <th class=\"width-13\">Min Score</th>\n <th class=\"width-24\">Questions Created</th>\n <th class=\"width-10\"></th>\n </tr>\n </thead>\n <tbody *ngFor=\"let item of data;let i=index\">\n <tr>\n <td class=\"padding-x-25 font-blue font-bold\">{{item.criteria}}</td>\n <td><input type=\"number\" value=\"{{item.maxScore}}\" disabled></td>\n <td><input type=\"number\" value=\"{{item.minScore}}\" disabled></td>\n <td><input type=\"number\" value=\"{{item.questionsCreated}}\" disabled></td>\n <td class=\"border flex\" (click)=\"expand(item)\"><i [class]=\"expandedElement==item?.criteria ? 'chevron up icon font-blue' : 'chevron down icon font-blue'\"></i></td>\n </tr>\n <tr *ngIf=\"expandedElement==item?.criteria\" class=\"hidden-block\">\n <td class=\"padding-x-20\"></td>\n <td><div><label class=\"label\">Level 1</label></div><input class=\"hidden-input\" type=\"number\" value=\"{{item.maxScore}}\" disabled></td>\n <td><div><label class=\"label\">Level 2</label></div><input class=\"hidden-input\" type=\"number\" value=\"{{item.minScore}}\" disabled></td>\n <td><div><label class=\"label\">Level 3</label></div><input class=\"hidden-input\" type=\"number\" value=\"{{item.questionsCreated}}\" disabled></td>\n <td class=\"flex\"></td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: ["table{font-family:arial,sans-serif;width:97%;border-collapse:collapse}table thead tr .width-40{width:40%}table thead tr .width-13{width:13%}table thead tr .width-24{width:24%}table thead tr .width-10{width:10%}table tbody{border-top:15px solid white;font-family:arial,sans-serif}table tbody tr{height:60px;background:#e9e8e8}table tbody tr td input{max-width:37%;box-sizing:border-box;height:43px;border-radius:6px;text-align:center;background:#fff}table tbody tr td .hidden-input{margin-bottom:10px}table tbody tr td .label{font-size:18px!important;margin-top:5px}table tbody tr .padding-x-25{padding:0 25px}table tbody tr .font-blue{color:#2f2fb0}table tbody tr .font-bold{font-weight:700}.border{border-left:1px solid rgb(126,126,126)}.flex{display:flex;justify-content:center;height:inherit;align-items:center}.hidden-block{display:table-row;background:#fff!important}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.HeaderComponent, selector: "lib-header", inputs: ["pageId", "labelConfigData", "buttonLoaders", "showComment", "publishchecklist", "requestChange"], outputs: ["toolbarEmitter", "qualityParamEmitter"] }] }); }
38
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ProgressStatusComponent, selector: "lib-progress-status", outputs: { assignPageEmitter: "assignPageEmitter" }, ngImport: i0, template: "<div class=\"sb-editor-container mb-0\">\n <lib-header [labelConfigData]=\"toolbarConfig\" [pageId]=\"pageId\" (toolbarEmitter)=\"toolbarEventListener($event)\">\n </lib-header>\n <div class=\"add-to-library mb-0\">\n <div class=\"h-100vh sb-bg-white\">\n <div class=\"ui\">\n <div class=\"ui twelve column grid m-0\">\n <div class=\"three wide column p-0 overflow-y mb-40 h-100vh\">\n </div>\n <!-- Right Player Sections -->\n <div class=\"eight wide column bg-white pl-40 mb-10 w-73\">\n <table aria-describedby=\"progress\">\n <thead>\n <tr>\n <th class=\"width-40\">Criteria</th>\n <th class=\"width-13\">Max Score</th>\n <th class=\"width-13\">Min Score</th>\n <th class=\"width-24\">Questions Created</th>\n <th class=\"width-10\"></th>\n </tr>\n </thead>\n <tbody *ngFor=\"let item of data;let i=index\">\n <tr>\n <td class=\"padding-x-25 font-blue font-bold\">{{item.criteria}}</td>\n <td><input type=\"number\" value=\"{{item.maxScore}}\" disabled></td>\n <td><input type=\"number\" value=\"{{item.minScore}}\" disabled></td>\n <td><input type=\"number\" value=\"{{item.questionsCreated}}\" disabled></td>\n <td class=\"border flex\" (click)=\"expand(item)\"><i [class]=\"expandedElement==item?.criteria ? 'chevron up icon font-blue' : 'chevron down icon font-blue'\"></i></td>\n </tr>\n <tr *ngIf=\"expandedElement==item?.criteria\" class=\"hidden-block\">\n <td class=\"padding-x-20\"></td>\n <td><div><label class=\"label\">Level 1</label></div><input class=\"hidden-input\" type=\"number\" value=\"{{item.maxScore}}\" disabled></td>\n <td><div><label class=\"label\">Level 2</label></div><input class=\"hidden-input\" type=\"number\" value=\"{{item.minScore}}\" disabled></td>\n <td><div><label class=\"label\">Level 3</label></div><input class=\"hidden-input\" type=\"number\" value=\"{{item.questionsCreated}}\" disabled></td>\n <td class=\"flex\"></td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: ["table{font-family:arial,sans-serif;width:97%;border-collapse:collapse}table thead tr .width-40{width:40%}table thead tr .width-13{width:13%}table thead tr .width-24{width:24%}table thead tr .width-10{width:10%}table tbody{border-top:15px solid white;font-family:arial,sans-serif}table tbody tr{height:60px;background:#e9e8e8}table tbody tr td input{max-width:37%;box-sizing:border-box;height:43px;border-radius:6px;text-align:center;background:#fff}table tbody tr td .hidden-input{margin-bottom:10px}table tbody tr td .label{font-size:18px!important;margin-top:5px}table tbody tr .padding-x-25{padding:0 25px}table tbody tr .font-blue{color:#2f2fb0}table tbody tr .font-bold{font-weight:700}.border{border-left:1px solid rgb(126,126,126)}.flex{display:flex;justify-content:center;height:inherit;align-items:center}.hidden-block{display:table-row;background:#fff!important}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.HeaderComponent, selector: "lib-header", inputs: ["pageId", "labelConfigData", "buttonLoaders", "showComment", "publishchecklist", "requestChange"], outputs: ["toolbarEmitter", "bulkUploadEmitter", "qualityParamEmitter"] }] }); }
39
39
  }
40
40
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ProgressStatusComponent, decorators: [{
41
41
  type: Component,
@@ -7,6 +7,7 @@ import * as i3 from "@angular/common";
7
7
  import * as i4 from "@project-sunbird/ng2-semantic-ui";
8
8
  import * as i5 from "@project-sunbird/common-form-elements-full";
9
9
  import * as i6 from "../../directives/telemetry-interact/telemetry-interact.directive";
10
+ import * as i7 from "../../pipes/interpolate.pipe";
10
11
  export class PublishChecklistComponent {
11
12
  constructor(telemetryService, configService) {
12
13
  this.telemetryService = telemetryService;
@@ -52,16 +53,18 @@ export class PublishChecklistComponent {
52
53
  this.fieldsAvailable = event;
53
54
  }
54
55
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PublishChecklistComponent, deps: [{ token: i1.EditorTelemetryService }, { token: i2.ConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
55
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PublishChecklistComponent, selector: "lib-publish-checklist", inputs: { publishchecklist: "publishchecklist", actionType: "actionType" }, outputs: { publishEmitter: "publishEmitter" }, ngImport: i0, template: "<sui-modal [mustScroll]=\"true\" [isClosable]=\"isClosable\" [transitionDuration]=\"0\" [size]=\"'normal'\"\n class=\"sb-modal bx-none overflow-modal publish-checklist\" appBodyScroll (dismissed)=\"isClosable = false\" #modal>\n <div class=\"sb-modal-header\">\n {{configService.labelConfig?.lbl?.publishCollection}}\n </div>\n <div class=\"sb-modal-content\">\n <span *ngIf=\"!publishchecklist?.length\"> {{configService.labelConfig?.lbl?.confirmPublishCollection}} </span>\n <div class=\"sectionTitle\" *ngIf=\"publishchecklist?.length\">{{configService.labelConfig?.lbl?.publishchecklistTitle}}</div>\n <sb-dynamic-form *ngIf=\"publishchecklist?.length\" [config]=\"publishchecklist\"\n (initialize)=\"outputData($event)\" (statusChanges)=\"onStatusChanges($event)\" (valueChanges)=\"valueChanges($event)\">\n </sb-dynamic-form>\n </div>\n <div class=\"sb-modal-actions\">\n <button class=\"sb-btn sb-btn-normal\"\n [ngClass]=\"{'sb-btn-primary': isButtonEnable, 'sb-btn-disabled': !isButtonEnable}\" [disabled]=\"!isButtonEnable\"\n (click)=\"handlePopUpEvents('submit', modal)\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('yes','click','submit', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'publish_collection'})\">\n {{configService.labelConfig?.button_labels?.yes_btn_label}}\n </button>\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary\" (click)=\"handlePopUpEvents('closeModal', modal)\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('no','click','cancel', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'add_review_comments'})\">\n {{configService.labelConfig?.button_labels?.no_btn_label}}\n </button>\n </div>\n</sui-modal>", styles: [".sb-modal-content sb-dynamic-checkbox{margin:0!important}.sb-modal-content .sb-checkbox{padding:0!important;margin:0!important}.sectionTitle{font-size:1rem;font-weight:600;line-height:1.4;padding:7px 0 20px}.formSection{padding:0!important}.display-sectionName .sectionName{display:block}.hidden-sectionName .sectionName,.two-column-grid .sectionName{display:none}.sectionName{font-size:1rem!important;font-weight:600}.d-grid{display:grid;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-2{display:grid;grid-template-columns:auto auto;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-3{display:grid;grid-template-columns:auto auto auto;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-1{display:inline-grid;width:100%;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-2{display:inline-grid;width:50%;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-3{display:inline-grid;width:33.3%;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-4{display:inline-grid;width:25%;grid-column-gap:1rem;grid-row-gap:1rem}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.SuiModal, selector: "sui-modal", inputs: ["isClosable", "closeResult", "size", "isCentered", "isFullScreen", "isBasic", "mustScroll", "isInverted", "transition", "transitionDuration"], outputs: ["approved", "denied", "dismissed"] }, { kind: "component", type: i5.DynamicFormComponent, selector: "sb-dynamic-form", inputs: ["config", "dataLoadStatusDelegate"], outputs: ["initialize", "finalize", "valueChanges", "statusChanges"] }, { kind: "directive", type: i6.TelemetryInteractDirective, selector: "[libTelemetryInteract]", inputs: ["telemetryInteractEdata"] }], encapsulation: i0.ViewEncapsulation.None }); }
56
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: PublishChecklistComponent, selector: "lib-publish-checklist", inputs: { publishchecklist: "publishchecklist", actionType: "actionType", objectType: "objectType" }, outputs: { publishEmitter: "publishEmitter" }, ngImport: i0, template: "<sui-modal [mustScroll]=\"true\" [isClosable]=\"isClosable\" [transitionDuration]=\"0\" [size]=\"'normal'\"\n class=\"sb-modal bx-none overflow-modal publish-checklist\" appBodyScroll (dismissed)=\"isClosable = false\" #modal>\n <div class=\"sb-modal-header\">\n {{ configService.labelConfig?.lbl?.publishCollection | interpolate: '${objectType}': objectType }}\n </div>\n <div class=\"sb-modal-content\">\n <span *ngIf=\"!publishchecklist?.length\"> {{configService.labelConfig?.lbl?.confirmPublishCollection | interpolate: '${objectType}': objectType}} </span>\n <div class=\"sectionTitle\" *ngIf=\"publishchecklist?.length\">{{configService.labelConfig?.lbl?.publishchecklistTitle}}</div>\n <sb-dynamic-form *ngIf=\"publishchecklist?.length\" [config]=\"publishchecklist\"\n (initialize)=\"outputData($event)\" (statusChanges)=\"onStatusChanges($event)\" (valueChanges)=\"valueChanges($event)\">\n </sb-dynamic-form>\n </div>\n <div class=\"sb-modal-actions\">\n <button class=\"sb-btn sb-btn-normal\"\n [ngClass]=\"{'sb-btn-primary': isButtonEnable, 'sb-btn-disabled': !isButtonEnable}\" [disabled]=\"!isButtonEnable\"\n (click)=\"handlePopUpEvents('submit', modal)\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('yes','click','submit', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'publish_collection'})\">\n {{configService.labelConfig?.button_labels?.yes_btn_label}}\n </button>\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary\" (click)=\"handlePopUpEvents('closeModal', modal)\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('no','click','cancel', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'add_review_comments'})\">\n {{configService.labelConfig?.button_labels?.no_btn_label}}\n </button>\n </div>\n</sui-modal>\n", styles: [".sb-modal-content sb-dynamic-checkbox{margin:0!important}.sb-modal-content .sb-checkbox{padding:0!important;margin:0!important}.sectionTitle{font-size:1rem;font-weight:600;line-height:1.4;padding:7px 0 20px}.formSection{padding:0!important}.display-sectionName .sectionName{display:block}.hidden-sectionName .sectionName,.two-column-grid .sectionName{display:none}.sectionName{font-size:1rem!important;font-weight:600}.d-grid{display:grid;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-2{display:grid;grid-template-columns:auto auto;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-3{display:grid;grid-template-columns:auto auto auto;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-1{display:inline-grid;width:100%;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-2{display:inline-grid;width:50%;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-3{display:inline-grid;width:33.3%;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-4{display:inline-grid;width:25%;grid-column-gap:1rem;grid-row-gap:1rem}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.SuiModal, selector: "sui-modal", inputs: ["isClosable", "closeResult", "size", "isCentered", "isFullScreen", "isBasic", "mustScroll", "isInverted", "transition", "transitionDuration"], outputs: ["approved", "denied", "dismissed"] }, { kind: "component", type: i5.DynamicFormComponent, selector: "sb-dynamic-form", inputs: ["config", "dataLoadStatusDelegate"], outputs: ["initialize", "finalize", "valueChanges", "statusChanges"] }, { kind: "directive", type: i6.TelemetryInteractDirective, selector: "[libTelemetryInteract]", inputs: ["telemetryInteractEdata"] }, { kind: "pipe", type: i7.InterpolatePipe, name: "interpolate" }], encapsulation: i0.ViewEncapsulation.None }); }
56
57
  }
57
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: PublishChecklistComponent, decorators: [{
58
59
  type: Component,
59
- args: [{ selector: 'lib-publish-checklist', encapsulation: ViewEncapsulation.None, template: "<sui-modal [mustScroll]=\"true\" [isClosable]=\"isClosable\" [transitionDuration]=\"0\" [size]=\"'normal'\"\n class=\"sb-modal bx-none overflow-modal publish-checklist\" appBodyScroll (dismissed)=\"isClosable = false\" #modal>\n <div class=\"sb-modal-header\">\n {{configService.labelConfig?.lbl?.publishCollection}}\n </div>\n <div class=\"sb-modal-content\">\n <span *ngIf=\"!publishchecklist?.length\"> {{configService.labelConfig?.lbl?.confirmPublishCollection}} </span>\n <div class=\"sectionTitle\" *ngIf=\"publishchecklist?.length\">{{configService.labelConfig?.lbl?.publishchecklistTitle}}</div>\n <sb-dynamic-form *ngIf=\"publishchecklist?.length\" [config]=\"publishchecklist\"\n (initialize)=\"outputData($event)\" (statusChanges)=\"onStatusChanges($event)\" (valueChanges)=\"valueChanges($event)\">\n </sb-dynamic-form>\n </div>\n <div class=\"sb-modal-actions\">\n <button class=\"sb-btn sb-btn-normal\"\n [ngClass]=\"{'sb-btn-primary': isButtonEnable, 'sb-btn-disabled': !isButtonEnable}\" [disabled]=\"!isButtonEnable\"\n (click)=\"handlePopUpEvents('submit', modal)\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('yes','click','submit', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'publish_collection'})\">\n {{configService.labelConfig?.button_labels?.yes_btn_label}}\n </button>\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary\" (click)=\"handlePopUpEvents('closeModal', modal)\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('no','click','cancel', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'add_review_comments'})\">\n {{configService.labelConfig?.button_labels?.no_btn_label}}\n </button>\n </div>\n</sui-modal>", styles: [".sb-modal-content sb-dynamic-checkbox{margin:0!important}.sb-modal-content .sb-checkbox{padding:0!important;margin:0!important}.sectionTitle{font-size:1rem;font-weight:600;line-height:1.4;padding:7px 0 20px}.formSection{padding:0!important}.display-sectionName .sectionName{display:block}.hidden-sectionName .sectionName,.two-column-grid .sectionName{display:none}.sectionName{font-size:1rem!important;font-weight:600}.d-grid{display:grid;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-2{display:grid;grid-template-columns:auto auto;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-3{display:grid;grid-template-columns:auto auto auto;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-1{display:inline-grid;width:100%;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-2{display:inline-grid;width:50%;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-3{display:inline-grid;width:33.3%;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-4{display:inline-grid;width:25%;grid-column-gap:1rem;grid-row-gap:1rem}\n"] }]
60
+ args: [{ selector: 'lib-publish-checklist', encapsulation: ViewEncapsulation.None, template: "<sui-modal [mustScroll]=\"true\" [isClosable]=\"isClosable\" [transitionDuration]=\"0\" [size]=\"'normal'\"\n class=\"sb-modal bx-none overflow-modal publish-checklist\" appBodyScroll (dismissed)=\"isClosable = false\" #modal>\n <div class=\"sb-modal-header\">\n {{ configService.labelConfig?.lbl?.publishCollection | interpolate: '${objectType}': objectType }}\n </div>\n <div class=\"sb-modal-content\">\n <span *ngIf=\"!publishchecklist?.length\"> {{configService.labelConfig?.lbl?.confirmPublishCollection | interpolate: '${objectType}': objectType}} </span>\n <div class=\"sectionTitle\" *ngIf=\"publishchecklist?.length\">{{configService.labelConfig?.lbl?.publishchecklistTitle}}</div>\n <sb-dynamic-form *ngIf=\"publishchecklist?.length\" [config]=\"publishchecklist\"\n (initialize)=\"outputData($event)\" (statusChanges)=\"onStatusChanges($event)\" (valueChanges)=\"valueChanges($event)\">\n </sb-dynamic-form>\n </div>\n <div class=\"sb-modal-actions\">\n <button class=\"sb-btn sb-btn-normal\"\n [ngClass]=\"{'sb-btn-primary': isButtonEnable, 'sb-btn-disabled': !isButtonEnable}\" [disabled]=\"!isButtonEnable\"\n (click)=\"handlePopUpEvents('submit', modal)\" libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('yes','click','submit', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'publish_collection'})\">\n {{configService.labelConfig?.button_labels?.yes_btn_label}}\n </button>\n <button class=\"sb-btn sb-btn-normal sb-btn-outline-primary\" (click)=\"handlePopUpEvents('closeModal', modal)\"\n libTelemetryInteract\n [telemetryInteractEdata]=\"telemetryService.getTelemetryInteractEdata('no','click','cancel', telemetryService.telemetryPageId, {key: 'dialog_id', value: 'add_review_comments'})\">\n {{configService.labelConfig?.button_labels?.no_btn_label}}\n </button>\n </div>\n</sui-modal>\n", styles: [".sb-modal-content sb-dynamic-checkbox{margin:0!important}.sb-modal-content .sb-checkbox{padding:0!important;margin:0!important}.sectionTitle{font-size:1rem;font-weight:600;line-height:1.4;padding:7px 0 20px}.formSection{padding:0!important}.display-sectionName .sectionName{display:block}.hidden-sectionName .sectionName,.two-column-grid .sectionName{display:none}.sectionName{font-size:1rem!important;font-weight:600}.d-grid{display:grid;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-2{display:grid;grid-template-columns:auto auto;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-3{display:grid;grid-template-columns:auto auto auto;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-1{display:inline-grid;width:100%;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-2{display:inline-grid;width:50%;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-3{display:inline-grid;width:33.3%;grid-column-gap:1rem;grid-row-gap:1rem}.d-grid-inline-4{display:inline-grid;width:25%;grid-column-gap:1rem;grid-row-gap:1rem}\n"] }]
60
61
  }], ctorParameters: function () { return [{ type: i1.EditorTelemetryService }, { type: i2.ConfigService }]; }, propDecorators: { publishchecklist: [{
61
62
  type: Input
62
63
  }], actionType: [{
63
64
  type: Input
65
+ }], objectType: [{
66
+ type: Input
64
67
  }], publishEmitter: [{
65
68
  type: Output
66
69
  }] } });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaC1jaGVja2xpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvcHVibGlzaC1jaGVja2xpc3QvcHVibGlzaC1jaGVja2xpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvcHVibGlzaC1jaGVja2xpc3QvcHVibGlzaC1jaGVja2xpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdsRyxPQUFPLEtBQUssQ0FBQyxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7QUFPL0IsTUFBTSxPQUFPLHlCQUF5QjtJQU9wQyxZQUNTLGdCQUF3QyxFQUN4QyxhQUE0QjtRQUQ1QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXdCO1FBQ3hDLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBTjNCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUM1QyxtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUV2QixlQUFVLEdBQUcsS0FBSyxDQUFDO0lBR2UsQ0FBQztJQUUxQyxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUN4RSxDQUFDO0lBRUQsaUJBQWlCLENBQUMsSUFBSSxFQUFFLEtBQUs7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDdkIsSUFBSSxJQUFJLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7WUFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7U0FDdkQ7YUFBTSxJQUFJLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxDQUFDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtZQUMxRixJQUFJLFlBQVksR0FBRyxFQUFFLENBQUE7WUFDckIsSUFBSSxXQUFXLEdBQUcsRUFBRSxDQUFBO1lBQ3BCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUN2RSxJQUFJLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxTQUFTLEtBQUssVUFBVSxFQUFFO29CQUN2RyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDL0I7cUJBQU07b0JBQ0wsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLHFGQUFxRjtpQkFDbEo7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUU7Z0JBQ3ZDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLFlBQVksQ0FBQzthQUNoRDtZQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBQyxDQUFDLENBQUM7U0FDaEY7YUFBTSxJQUFJLElBQUksS0FBSyxZQUFZLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztTQUM1QztRQUNELEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFDRCxVQUFVLENBQUMsU0FBYyxJQUFJLENBQUM7SUFFOUIsZUFBZSxDQUFDLEtBQUs7UUFDbkIsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBVTtRQUNyQixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDOytHQTlDVSx5QkFBeUI7bUdBQXpCLHlCQUF5Qix3TENWdEMsOHpEQXlCWTs7NEZEZkMseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNFLHVCQUF1QixpQkFHbEIsaUJBQWlCLENBQUMsSUFBSTt5SUFHNUIsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBFZGl0b3JUZWxlbWV0cnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGVsZW1ldHJ5L3RlbGVtZXRyeS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jb25maWcvY29uZmlnLnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gtZXMnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXB1Ymxpc2gtY2hlY2tsaXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3B1Ymxpc2gtY2hlY2tsaXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcHVibGlzaC1jaGVja2xpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgUHVibGlzaENoZWNrbGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHB1Ymxpc2hjaGVja2xpc3Q6IGFueTtcbiAgQElucHV0KCkgYWN0aW9uVHlwZTogYW55O1xuICBAT3V0cHV0KCkgcHVibGlzaEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIGlzQnV0dG9uRW5hYmxlID0gZmFsc2U7XG4gIHB1YmxpYyBmaWVsZHNBdmFpbGFibGU6IGFueTtcbiAgcHVibGljIGlzQ2xvc2FibGUgPSBmYWxzZTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRlbGVtZXRyeVNlcnZpY2U6IEVkaXRvclRlbGVtZXRyeVNlcnZpY2UsXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNCdXR0b25FbmFibGUgPSBfLmlzRW1wdHkodGhpcy5wdWJsaXNoY2hlY2tsaXN0KSA/IHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIGhhbmRsZVBvcFVwRXZlbnRzKHR5cGUsIG1vZGFsKSB7XG4gICAgdGhpcy5pc0Nsb3NhYmxlID0gdHJ1ZTtcbiAgICBpZiAodHlwZSA9PT0gJ3N1Ym1pdCcgJiYgXy5pc0VtcHR5KHRoaXMucHVibGlzaGNoZWNrbGlzdCkpIHtcbiAgICAgIHRoaXMucHVibGlzaEVtaXR0ZXIuZW1pdCh7IGJ1dHRvbjogdGhpcy5hY3Rpb25UeXBlIH0pO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3N1Ym1pdCcgJiYgdGhpcy5wdWJsaXNoY2hlY2tsaXN0ICYmICFfLmlzRW1wdHkodGhpcy5wdWJsaXNoY2hlY2tsaXN0KSkge1xuICAgICAgbGV0IGNoZWNrQm94RGF0YSA9IFtdXG4gICAgICBsZXQgcHVibGlzaERhdGEgPSB7fVxuICAgICAgXy5mb3JFYWNoKF8uZmxhdHRlbkRlZXAoXy5tYXAodGhpcy5wdWJsaXNoY2hlY2tsaXN0LCAnZmllbGRzJykpLCBmaWVsZCA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZpZWxkc0F2YWlsYWJsZSAmJiB0aGlzLmZpZWxkc0F2YWlsYWJsZVtmaWVsZC5jb2RlXSA9PT0gdHJ1ZSAmJiBmaWVsZC5pbnB1dFR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgICBjaGVja0JveERhdGEucHVzaChmaWVsZC5uYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwdWJsaXNoRGF0YVtmaWVsZC5jb2RlXSA9IHRoaXMuZmllbGRzQXZhaWxhYmxlW2ZpZWxkLmNvZGVdOyAvLyBhc2lnbiB2YWx1ZSB0byBmaWVsZCBvdGhlciB0aGFuIGNoZWNrYm94J3MgZXhhbXBsZSBwdWJsaXNoQ29tbWVudCA9ICdzb21lIGNvbW1lbnQnXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKGNoZWNrQm94RGF0YSAmJiBjaGVja0JveERhdGEubGVuZ3RoKSB7XG4gICAgICAgIHB1Ymxpc2hEYXRhWydwdWJsaXNoQ2hlY2tsaXN0J10gPSBjaGVja0JveERhdGE7XG4gICAgICB9XG4gICAgICB0aGlzLnB1Ymxpc2hFbWl0dGVyLmVtaXQoeyBidXR0b246IHRoaXMuYWN0aW9uVHlwZSwgcHVibGlzaERhdGE6IHB1Ymxpc2hEYXRhfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnY2xvc2VNb2RhbCcpIHtcbiAgICAgIHRoaXMucHVibGlzaEVtaXR0ZXIuZW1pdCh7IGJ1dHRvbjogdHlwZSB9KTtcbiAgICB9XG4gICAgbW9kYWwuZGVueSgpO1xuICB9XG4gIG91dHB1dERhdGEoZXZlbnREYXRhOiBhbnkpIHsgfVxuXG4gIG9uU3RhdHVzQ2hhbmdlcyhldmVudCkge1xuICAgIHRoaXMuaXNCdXR0b25FbmFibGUgPSBldmVudC5pc1ZhbGlkO1xuICB9XG5cbiAgdmFsdWVDaGFuZ2VzKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZpZWxkc0F2YWlsYWJsZSA9IGV2ZW50O1xuICB9XG59IiwiPHN1aS1tb2RhbCBbbXVzdFNjcm9sbF09XCJ0cnVlXCIgW2lzQ2xvc2FibGVdPVwiaXNDbG9zYWJsZVwiIFt0cmFuc2l0aW9uRHVyYXRpb25dPVwiMFwiIFtzaXplXT1cIidub3JtYWwnXCJcbiAgY2xhc3M9XCJzYi1tb2RhbCBieC1ub25lIG92ZXJmbG93LW1vZGFsIHB1Ymxpc2gtY2hlY2tsaXN0XCIgYXBwQm9keVNjcm9sbCAoZGlzbWlzc2VkKT1cImlzQ2xvc2FibGUgPSBmYWxzZVwiICNtb2RhbD5cbiAgPGRpdiBjbGFzcz1cInNiLW1vZGFsLWhlYWRlclwiPlxuICAgIHt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5wdWJsaXNoQ29sbGVjdGlvbn19XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtY29udGVudFwiPlxuICAgIDxzcGFuICpuZ0lmPVwiIXB1Ymxpc2hjaGVja2xpc3Q/Lmxlbmd0aFwiPiB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uY29uZmlybVB1Ymxpc2hDb2xsZWN0aW9ufX0gPC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uVGl0bGVcIiAqbmdJZj1cInB1Ymxpc2hjaGVja2xpc3Q/Lmxlbmd0aFwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5wdWJsaXNoY2hlY2tsaXN0VGl0bGV9fTwvZGl2PlxuICAgIDxzYi1keW5hbWljLWZvcm0gKm5nSWY9XCJwdWJsaXNoY2hlY2tsaXN0Py5sZW5ndGhcIiBbY29uZmlnXT1cInB1Ymxpc2hjaGVja2xpc3RcIlxuICAgICAgKGluaXRpYWxpemUpPVwib3V0cHV0RGF0YSgkZXZlbnQpXCIgKHN0YXR1c0NoYW5nZXMpPVwib25TdGF0dXNDaGFuZ2VzKCRldmVudClcIiAodmFsdWVDaGFuZ2VzKT1cInZhbHVlQ2hhbmdlcygkZXZlbnQpXCI+XG4gICAgPC9zYi1keW5hbWljLWZvcm0+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtYWN0aW9uc1wiPlxuICAgIDxidXR0b24gY2xhc3M9XCJzYi1idG4gc2ItYnRuLW5vcm1hbFwiXG4gICAgICBbbmdDbGFzc109XCJ7J3NiLWJ0bi1wcmltYXJ5JzogaXNCdXR0b25FbmFibGUsICdzYi1idG4tZGlzYWJsZWQnOiAhaXNCdXR0b25FbmFibGV9XCIgW2Rpc2FibGVkXT1cIiFpc0J1dHRvbkVuYWJsZVwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlUG9wVXBFdmVudHMoJ3N1Ym1pdCcsIG1vZGFsKVwiIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ3llcycsJ2NsaWNrJywnc3VibWl0JywgdGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQsICB7a2V5OiAnZGlhbG9nX2lkJywgdmFsdWU6ICdwdWJsaXNoX2NvbGxlY3Rpb24nfSlcIj5cbiAgICAgIHt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8uYnV0dG9uX2xhYmVscz8ueWVzX2J0bl9sYWJlbH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInNiLWJ0biBzYi1idG4tbm9ybWFsIHNiLWJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwiaGFuZGxlUG9wVXBFdmVudHMoJ2Nsb3NlTW9kYWwnLCBtb2RhbClcIlxuICAgICAgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnbm8nLCdjbGljaycsJ2NhbmNlbCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkLCAge2tleTogJ2RpYWxvZ19pZCcsIHZhbHVlOiAnYWRkX3Jldmlld19jb21tZW50cyd9KVwiPlxuICAgICAge3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5idXR0b25fbGFiZWxzPy5ub19idG5fbGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvc3VpLW1vZGFsPiJdfQ==
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaC1jaGVja2xpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvcHVibGlzaC1jaGVja2xpc3QvcHVibGlzaC1jaGVja2xpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvcHVibGlzaC1jaGVja2xpc3QvcHVibGlzaC1jaGVja2xpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUdsRyxPQUFPLEtBQUssQ0FBQyxNQUFNLFdBQVcsQ0FBQzs7Ozs7Ozs7O0FBTy9CLE1BQU0sT0FBTyx5QkFBeUI7SUFRcEMsWUFDUyxnQkFBd0MsRUFDeEMsYUFBNEI7UUFENUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF3QjtRQUN4QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQU4zQixtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDNUMsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFFdkIsZUFBVSxHQUFHLEtBQUssQ0FBQztJQUdlLENBQUM7SUFFMUMsUUFBUTtRQUNOLElBQUksQ0FBQyxjQUFjLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDeEUsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQUksRUFBRSxLQUFLO1FBQzNCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLElBQUksSUFBSSxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1lBQ3pELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZEO2FBQU0sSUFBSSxJQUFJLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7WUFDMUYsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFBO1lBQ3JCLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQTtZQUNwQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDdkUsSUFBSSxJQUFJLENBQUMsZUFBZSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLFVBQVUsRUFBRTtvQkFDdkcsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQy9CO3FCQUFNO29CQUNMLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxxRkFBcUY7aUJBQ2xKO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLFlBQVksSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFO2dCQUN2QyxXQUFXLENBQUMsa0JBQWtCLENBQUMsR0FBRyxZQUFZLENBQUM7YUFDaEQ7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUMsQ0FBQyxDQUFDO1NBQ2hGO2FBQU0sSUFBSSxJQUFJLEtBQUssWUFBWSxFQUFFO1lBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDNUM7UUFDRCxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZixDQUFDO0lBQ0QsVUFBVSxDQUFDLFNBQWMsSUFBSSxDQUFDO0lBRTlCLGVBQWUsQ0FBQyxLQUFLO1FBQ25CLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUN0QyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQzsrR0EvQ1UseUJBQXlCO21HQUF6Qix5QkFBeUIsa05DVnRDLHc1REEwQkE7OzRGRGhCYSx5QkFBeUI7a0JBTnJDLFNBQVM7K0JBQ0UsdUJBQXVCLGlCQUdsQixpQkFBaUIsQ0FBQyxJQUFJO3lJQUc1QixnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRWRpdG9yVGVsZW1ldHJ5U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RlbGVtZXRyeS90ZWxlbWV0cnkuc2VydmljZSc7XG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvY29uZmlnL2NvbmZpZy5zZXJ2aWNlJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1wdWJsaXNoLWNoZWNrbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wdWJsaXNoLWNoZWNrbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3B1Ymxpc2gtY2hlY2tsaXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFB1Ymxpc2hDaGVja2xpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBwdWJsaXNoY2hlY2tsaXN0OiBhbnk7XG4gIEBJbnB1dCgpIGFjdGlvblR5cGU6IGFueTtcbiAgQElucHV0KCkgb2JqZWN0VHlwZTogc3RyaW5nO1xuICBAT3V0cHV0KCkgcHVibGlzaEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgcHVibGljIGlzQnV0dG9uRW5hYmxlID0gZmFsc2U7XG4gIHB1YmxpYyBmaWVsZHNBdmFpbGFibGU6IGFueTtcbiAgcHVibGljIGlzQ2xvc2FibGUgPSBmYWxzZTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHRlbGVtZXRyeVNlcnZpY2U6IEVkaXRvclRlbGVtZXRyeVNlcnZpY2UsXG4gICAgcHVibGljIGNvbmZpZ1NlcnZpY2U6IENvbmZpZ1NlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNCdXR0b25FbmFibGUgPSBfLmlzRW1wdHkodGhpcy5wdWJsaXNoY2hlY2tsaXN0KSA/IHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIGhhbmRsZVBvcFVwRXZlbnRzKHR5cGUsIG1vZGFsKSB7XG4gICAgdGhpcy5pc0Nsb3NhYmxlID0gdHJ1ZTtcbiAgICBpZiAodHlwZSA9PT0gJ3N1Ym1pdCcgJiYgXy5pc0VtcHR5KHRoaXMucHVibGlzaGNoZWNrbGlzdCkpIHtcbiAgICAgIHRoaXMucHVibGlzaEVtaXR0ZXIuZW1pdCh7IGJ1dHRvbjogdGhpcy5hY3Rpb25UeXBlIH0pO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3N1Ym1pdCcgJiYgdGhpcy5wdWJsaXNoY2hlY2tsaXN0ICYmICFfLmlzRW1wdHkodGhpcy5wdWJsaXNoY2hlY2tsaXN0KSkge1xuICAgICAgbGV0IGNoZWNrQm94RGF0YSA9IFtdXG4gICAgICBsZXQgcHVibGlzaERhdGEgPSB7fVxuICAgICAgXy5mb3JFYWNoKF8uZmxhdHRlbkRlZXAoXy5tYXAodGhpcy5wdWJsaXNoY2hlY2tsaXN0LCAnZmllbGRzJykpLCBmaWVsZCA9PiB7XG4gICAgICAgIGlmICh0aGlzLmZpZWxkc0F2YWlsYWJsZSAmJiB0aGlzLmZpZWxkc0F2YWlsYWJsZVtmaWVsZC5jb2RlXSA9PT0gdHJ1ZSAmJiBmaWVsZC5pbnB1dFR5cGUgPT09ICdjaGVja2JveCcpIHtcbiAgICAgICAgICBjaGVja0JveERhdGEucHVzaChmaWVsZC5uYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwdWJsaXNoRGF0YVtmaWVsZC5jb2RlXSA9IHRoaXMuZmllbGRzQXZhaWxhYmxlW2ZpZWxkLmNvZGVdOyAvLyBhc2lnbiB2YWx1ZSB0byBmaWVsZCBvdGhlciB0aGFuIGNoZWNrYm94J3MgZXhhbXBsZSBwdWJsaXNoQ29tbWVudCA9ICdzb21lIGNvbW1lbnQnXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgaWYgKGNoZWNrQm94RGF0YSAmJiBjaGVja0JveERhdGEubGVuZ3RoKSB7XG4gICAgICAgIHB1Ymxpc2hEYXRhWydwdWJsaXNoQ2hlY2tsaXN0J10gPSBjaGVja0JveERhdGE7XG4gICAgICB9XG4gICAgICB0aGlzLnB1Ymxpc2hFbWl0dGVyLmVtaXQoeyBidXR0b246IHRoaXMuYWN0aW9uVHlwZSwgcHVibGlzaERhdGE6IHB1Ymxpc2hEYXRhfSk7XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnY2xvc2VNb2RhbCcpIHtcbiAgICAgIHRoaXMucHVibGlzaEVtaXR0ZXIuZW1pdCh7IGJ1dHRvbjogdHlwZSB9KTtcbiAgICB9XG4gICAgbW9kYWwuZGVueSgpO1xuICB9XG4gIG91dHB1dERhdGEoZXZlbnREYXRhOiBhbnkpIHsgfVxuXG4gIG9uU3RhdHVzQ2hhbmdlcyhldmVudCkge1xuICAgIHRoaXMuaXNCdXR0b25FbmFibGUgPSBldmVudC5pc1ZhbGlkO1xuICB9XG5cbiAgdmFsdWVDaGFuZ2VzKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmZpZWxkc0F2YWlsYWJsZSA9IGV2ZW50O1xuICB9XG59XG4iLCI8c3VpLW1vZGFsIFttdXN0U2Nyb2xsXT1cInRydWVcIiBbaXNDbG9zYWJsZV09XCJpc0Nsb3NhYmxlXCIgW3RyYW5zaXRpb25EdXJhdGlvbl09XCIwXCIgW3NpemVdPVwiJ25vcm1hbCdcIlxuICBjbGFzcz1cInNiLW1vZGFsIGJ4LW5vbmUgb3ZlcmZsb3ctbW9kYWwgcHVibGlzaC1jaGVja2xpc3RcIiBhcHBCb2R5U2Nyb2xsIChkaXNtaXNzZWQpPVwiaXNDbG9zYWJsZSA9IGZhbHNlXCIgI21vZGFsPlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtaGVhZGVyXCI+XG4gICAge3sgY29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5wdWJsaXNoQ29sbGVjdGlvbiB8IGludGVycG9sYXRlOiAnJHtvYmplY3RUeXBlfSc6IG9iamVjdFR5cGUgfX1cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzYi1tb2RhbC1jb250ZW50XCI+XG4gICAgPHNwYW4gKm5nSWY9XCIhcHVibGlzaGNoZWNrbGlzdD8ubGVuZ3RoXCI+IHt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5jb25maXJtUHVibGlzaENvbGxlY3Rpb24gfCBpbnRlcnBvbGF0ZTogJyR7b2JqZWN0VHlwZX0nOiBvYmplY3RUeXBlfX0gPC9zcGFuPlxuICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uVGl0bGVcIiAqbmdJZj1cInB1Ymxpc2hjaGVja2xpc3Q/Lmxlbmd0aFwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5wdWJsaXNoY2hlY2tsaXN0VGl0bGV9fTwvZGl2PlxuICAgIDxzYi1keW5hbWljLWZvcm0gKm5nSWY9XCJwdWJsaXNoY2hlY2tsaXN0Py5sZW5ndGhcIiBbY29uZmlnXT1cInB1Ymxpc2hjaGVja2xpc3RcIlxuICAgICAgKGluaXRpYWxpemUpPVwib3V0cHV0RGF0YSgkZXZlbnQpXCIgKHN0YXR1c0NoYW5nZXMpPVwib25TdGF0dXNDaGFuZ2VzKCRldmVudClcIiAodmFsdWVDaGFuZ2VzKT1cInZhbHVlQ2hhbmdlcygkZXZlbnQpXCI+XG4gICAgPC9zYi1keW5hbWljLWZvcm0+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtYWN0aW9uc1wiPlxuICAgIDxidXR0b24gY2xhc3M9XCJzYi1idG4gc2ItYnRuLW5vcm1hbFwiXG4gICAgICBbbmdDbGFzc109XCJ7J3NiLWJ0bi1wcmltYXJ5JzogaXNCdXR0b25FbmFibGUsICdzYi1idG4tZGlzYWJsZWQnOiAhaXNCdXR0b25FbmFibGV9XCIgW2Rpc2FibGVkXT1cIiFpc0J1dHRvbkVuYWJsZVwiXG4gICAgICAoY2xpY2spPVwiaGFuZGxlUG9wVXBFdmVudHMoJ3N1Ym1pdCcsIG1vZGFsKVwiIGxpYlRlbGVtZXRyeUludGVyYWN0XG4gICAgICBbdGVsZW1ldHJ5SW50ZXJhY3RFZGF0YV09XCJ0ZWxlbWV0cnlTZXJ2aWNlLmdldFRlbGVtZXRyeUludGVyYWN0RWRhdGEoJ3llcycsJ2NsaWNrJywnc3VibWl0JywgdGVsZW1ldHJ5U2VydmljZS50ZWxlbWV0cnlQYWdlSWQsICB7a2V5OiAnZGlhbG9nX2lkJywgdmFsdWU6ICdwdWJsaXNoX2NvbGxlY3Rpb24nfSlcIj5cbiAgICAgIHt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8uYnV0dG9uX2xhYmVscz8ueWVzX2J0bl9sYWJlbH19XG4gICAgPC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cInNiLWJ0biBzYi1idG4tbm9ybWFsIHNiLWJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwiaGFuZGxlUG9wVXBFdmVudHMoJ2Nsb3NlTW9kYWwnLCBtb2RhbClcIlxuICAgICAgbGliVGVsZW1ldHJ5SW50ZXJhY3RcbiAgICAgIFt0ZWxlbWV0cnlJbnRlcmFjdEVkYXRhXT1cInRlbGVtZXRyeVNlcnZpY2UuZ2V0VGVsZW1ldHJ5SW50ZXJhY3RFZGF0YSgnbm8nLCdjbGljaycsJ2NhbmNlbCcsIHRlbGVtZXRyeVNlcnZpY2UudGVsZW1ldHJ5UGFnZUlkLCAge2tleTogJ2RpYWxvZ19pZCcsIHZhbHVlOiAnYWRkX3Jldmlld19jb21tZW50cyd9KVwiPlxuICAgICAge3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5idXR0b25fbGFiZWxzPy5ub19idG5fbGFiZWx9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvc3VpLW1vZGFsPlxuIl19