@sd-angular/core 1.2.91 → 1.2.94

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.
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"SdEditorAction":{"__symbolic":"interface"},"IEditorConfiguration":{"__symbolic":"interface"},"EDITOR_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":19,"character":33},"arguments":["editor.configuration"]},"SdEditorModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"SdEditor"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":14,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":15,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-quill","name":"QuillModule","line":16,"character":4},"member":"forRoot"}},{"__symbolic":"reference","module":"@sd-angular/core/translate","name":"SdTranslateModule","line":17,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/button","name":"SdButtonModule","line":18,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/textarea","name":"SdTextareaModule","line":19,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/api","name":"SdApiModule","line":20,"character":4}],"exports":[{"__symbolic":"reference","name":"SdEditor"}],"providers":[]}]}],"members":{}},"Constants":{"ARE_YOU_WANT_TO_DELETE":"Are you sure you want to delete?","ACTIVE":"active","IN_ACTIVE":"inactive","APPROVE":"approve","UN_APPROVE":"unapprove","ACCEPT_SIZE_IMAGE":"Logo only accept image with size <= 2MB","ACCEPT_TYPE_IMAGE":"image/png, image/gif, image/jpeg, image/bmp, image/x-icon","PAGE_TYPE_NEW":"new","PAGE_TYPE_EDIT":"edit","SAVE":"saveOb","SAVE_AND_CONTINUE":"saveAndContOb","IMAGE_SIZE":2048000,"SUCCESS":"Success","IMPORT_SUCCESSFULLY":"Import successfully!","ERROR":"Error","FAILED":"fail","FILE":"file","NONE":"none","NOT_EXIST_ID_OR_LINK":"This ID/Link is not existing","FEATURE_IS_PENDING":"This feature is pending","NOT_SUPPORT_FILE_IMAGE":"File upload is not supported.","NOT_SUPPORT_FILE_IMPORT":"File import is not supported.","NETWORK_ERROR":"Network Error","SORT_BY":[{"value":0,"name":"Created Date"},{"value":1,"name":"Title"}],"DESC":[{"value":true,"name":"Descending"},{"value":false,"name":"Ascending"}],"FORM_ERRORS":{"Id":"","textSearch":"","ImportLogId":"","SortBy":"","Reverse":""},"VALIDATION_MESSAGES":{}},"PROMOTION_PERMISSIONS":["ListPromotion","AddNewPromotion","EditPromotion","ActiveOrInactivePromotion","RemovePromotion","ImportPromotion","ExportPromotion"],"ValidateMessageConstants":{"TITLE_REQUIRED":"Title is required","TITLE_MAXLENGTH":"Title is not more than 55 characters","TITLE_PATTERN":"Title is required","CREATED_AT_REQUIRED":"Created At is required","SHOW_ON_HOME_REQUIRED":"Show On Home is required","DISPLAY_NUMBER_REQUIRED":"Display Number is required","CONTENT_TYPE_REQUIRED":"Content Type is required","DISCOUNT_PERCENT_REQUIRED":"Discount percent is required","DISCOUNT_PERCENT_MAX":"Max discount percent is 100, cannot input greater","DISCOUNT_PERCENT_MIN":"Min discount percent is 0, cannot input lower"},"PROMOTION_FORM":{"FORM_ERRORS":{"title":"","createdAt":"","displayNumber":"","showOnHome":"","discountPercent":"","isActive":"","ctaLabelName":"","ctaDeepLink":"","tags":""},"VALIDATION_MESSAGES":{"title":{"required":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"TITLE_REQUIRED"},"maxlength":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"TITLE_MAXLENGTH"},"pattern":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"TITLE_PATTERN"}},"createdAt":{"required":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"CREATED_AT_REQUIRED"}},"showOnHome":{"required":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"SHOW_ON_HOME_REQUIRED"}},"displayNumber":{"required":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"DISPLAY_NUMBER_REQUIRED"}},"discountPercent":{"required":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"DISCOUNT_PERCENT_REQUIRED"},"max":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"DISCOUNT_PERCENT_MAX"},"min":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"DISCOUNT_PERCENT_MIN"}},"tags":{"required":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"CONTENT_TYPE_REQUIRED"}}}},"SdEditor":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":28,"character":1},"arguments":[{"selector":"sd-editor","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":32,"character":19},"member":"OnPush"},"template":"<div id=\"box-{{id}}\">\r\n <label *ngIf=\"label && !sdLabelDef?.templateRef\" class=\"d-block T14M\">{{label}} <span class=\"text-danger mb-2\"\r\n *ngIf=\"required\">*</span></label>\r\n <ng-container *ngIf=\"sdLabelDef?.templateRef\" matSuffix>\r\n <ng-container *ngTemplateOutlet=\"sdLabelDef.templateRef\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!formControl.disabled && !showHtmlEditor\">\r\n <quill-editor #editor [styles]=\"styles\" (onEditorCreated)=\"editorInit($event)\" [ngModel]=\"formControl.value\"\r\n (onSelectionChanged)=\"onSelectionChanged($event)\"\r\n (onContentChanged)=\"onContentChanged($event)\"\r\n (ngModelChange)=\"onModelChange($event)\" [id]=\"id\" [modules]=\"quillConfig\" [placeholder]=\"placeholder\"\r\n [maxLength]=\"maxlength\">\r\n </quill-editor>\r\n <span class=\"d-block text-danger mt-5\" *ngIf=\"formControl.errors?.required\">\r\n {{'This field is required' | sdTranslate}}\r\n </span>\r\n <span class=\"d-block text-danger mt-5\" *ngIf=\"formControl.errors?.minlength\">\r\n {{'Max length' | sdTranslate}} <strong>{{minlength}}</strong>\r\n </span>\r\n <span class=\"d-block text-danger mt-5\" *ngIf=\"formControl.errors?.maxlength\">\r\n {{'Max length' | sdTranslate}} <strong>{{maxlength}}</strong>\r\n </span>\r\n </ng-container>\r\n <ng-container *ngIf=\"formControl.disabled\">\r\n <div [innerHtml]=\"formControl.value\"></div>\r\n </ng-container>\r\n <ng-container *ngIf=\"enableHTMLButton\">\r\n <sd-textarea [(model)]=\"modelHTML\" *ngIf=\"showHtmlEditor\" rows=\"20\"\r\n (modelChange)=\"onModelChange($event)\"></sd-textarea>\r\n <sd-button\r\n title=\"{{showHtmlEditor?'Ẩn':'Hiện'}} mã HTML\"\r\n class=\"mr-8\"\r\n fontSet=\"material-icons-outlined\"\r\n (action)=\"onClickShowHtmlEditor()\"\r\n type=\"light\"\r\n ></sd-button>\r\n </ng-container>\r\n</div>\r\n","styles":["::ng-deep img[alt=c-image-editor-quill]{max-width:80%}::ng-deep .ql-toolbar input.ql-customFile[type=file]{display:none}"]}]}],"members":{"editor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":38,"character":3},"arguments":["editor"]}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"model":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"pRequired":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"_minlength":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":68,"character":3},"arguments":["minlength"]}]}],"_maxlength":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3},"arguments":["maxlength"]}]}],"modelChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":80,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":3}}]}],"styles":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"args":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"domain":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":90,"character":3}}]}],"form":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":92,"character":3}}]}],"toolbar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":102,"character":3}}]}],"enableHTMLButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":103,"character":3}}]}],"mentionValues":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":108,"character":3}}]}],"hashTagValues":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":109,"character":3}}]}],"sdLabelDef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":110,"character":3},"arguments":[{"__symbolic":"reference","module":"@sd-angular/core/common","name":"SdLabelDefDirective","line":110,"character":16}]}]}],"sdChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":178,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":185,"character":5},"arguments":[{"__symbolic":"reference","name":"EDITOR_CONFIG"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":185,"character":28}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":181,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":182,"character":17},{"__symbolic":"reference","module":"@sd-angular/core/api","name":"SdApiService","line":183,"character":26},{"__symbolic":"reference","module":"@sd-angular/core/loading","name":"SdLoadingService","line":184,"character":28},{"__symbolic":"reference","name":"IEditorConfiguration"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onSelectionChanged":[{"__symbolic":"method"}],"onContentChanged":[{"__symbolic":"method"}]}}},"origins":{"SdEditorAction":"./src/lib/editor.model","IEditorConfiguration":"./src/lib/editor.model","EDITOR_CONFIG":"./src/lib/editor.model","SdEditorModule":"./src/lib/editor.module","Constants":"./src/lib/constant","PROMOTION_PERMISSIONS":"./src/lib/constant","ValidateMessageConstants":"./src/lib/constant","PROMOTION_FORM":"./src/lib/constant","SdEditor":"./src/lib/editor.component"},"importAs":"@sd-angular/core/editor"}
1
+ {"__symbolic":"module","version":4,"metadata":{"SdEditorAction":{"__symbolic":"interface"},"SdEditorActionArgs":{"__symbolic":"interface"},"IEditorConfiguration":{"__symbolic":"interface"},"EDITOR_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":22,"character":33},"arguments":["editor.configuration"]},"SdEditorModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"SdEditor"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":14,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":15,"character":4},{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"ngx-quill","name":"QuillModule","line":16,"character":4},"member":"forRoot"}},{"__symbolic":"reference","module":"@sd-angular/core/translate","name":"SdTranslateModule","line":17,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/button","name":"SdButtonModule","line":18,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/textarea","name":"SdTextareaModule","line":19,"character":4},{"__symbolic":"reference","module":"@sd-angular/core/api","name":"SdApiModule","line":20,"character":4}],"exports":[{"__symbolic":"reference","name":"SdEditor"}],"providers":[]}]}],"members":{}},"Constants":{"ARE_YOU_WANT_TO_DELETE":"Are you sure you want to delete?","ACTIVE":"active","IN_ACTIVE":"inactive","APPROVE":"approve","UN_APPROVE":"unapprove","ACCEPT_SIZE_IMAGE":"Logo only accept image with size <= 2MB","ACCEPT_TYPE_IMAGE":"image/png, image/gif, image/jpeg, image/bmp, image/x-icon","PAGE_TYPE_NEW":"new","PAGE_TYPE_EDIT":"edit","SAVE":"saveOb","SAVE_AND_CONTINUE":"saveAndContOb","IMAGE_SIZE":2048000,"SUCCESS":"Success","IMPORT_SUCCESSFULLY":"Import successfully!","ERROR":"Error","FAILED":"fail","FILE":"file","NONE":"none","NOT_EXIST_ID_OR_LINK":"This ID/Link is not existing","FEATURE_IS_PENDING":"This feature is pending","NOT_SUPPORT_FILE_IMAGE":"File upload is not supported.","NOT_SUPPORT_FILE_IMPORT":"File import is not supported.","NETWORK_ERROR":"Network Error","SORT_BY":[{"value":0,"name":"Created Date"},{"value":1,"name":"Title"}],"DESC":[{"value":true,"name":"Descending"},{"value":false,"name":"Ascending"}],"FORM_ERRORS":{"Id":"","textSearch":"","ImportLogId":"","SortBy":"","Reverse":""},"VALIDATION_MESSAGES":{}},"PROMOTION_PERMISSIONS":["ListPromotion","AddNewPromotion","EditPromotion","ActiveOrInactivePromotion","RemovePromotion","ImportPromotion","ExportPromotion"],"ValidateMessageConstants":{"TITLE_REQUIRED":"Title is required","TITLE_MAXLENGTH":"Title is not more than 55 characters","TITLE_PATTERN":"Title is required","CREATED_AT_REQUIRED":"Created At is required","SHOW_ON_HOME_REQUIRED":"Show On Home is required","DISPLAY_NUMBER_REQUIRED":"Display Number is required","CONTENT_TYPE_REQUIRED":"Content Type is required","DISCOUNT_PERCENT_REQUIRED":"Discount percent is required","DISCOUNT_PERCENT_MAX":"Max discount percent is 100, cannot input greater","DISCOUNT_PERCENT_MIN":"Min discount percent is 0, cannot input lower"},"PROMOTION_FORM":{"FORM_ERRORS":{"title":"","createdAt":"","displayNumber":"","showOnHome":"","discountPercent":"","isActive":"","ctaLabelName":"","ctaDeepLink":"","tags":""},"VALIDATION_MESSAGES":{"title":{"required":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"TITLE_REQUIRED"},"maxlength":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"TITLE_MAXLENGTH"},"pattern":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"TITLE_PATTERN"}},"createdAt":{"required":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"CREATED_AT_REQUIRED"}},"showOnHome":{"required":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"SHOW_ON_HOME_REQUIRED"}},"displayNumber":{"required":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"DISPLAY_NUMBER_REQUIRED"}},"discountPercent":{"required":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"DISCOUNT_PERCENT_REQUIRED"},"max":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"DISCOUNT_PERCENT_MAX"},"min":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"DISCOUNT_PERCENT_MIN"}},"tags":{"required":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"ValidateMessageConstants"},"member":"CONTENT_TYPE_REQUIRED"}}}},"SdEditor":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":28,"character":1},"arguments":[{"selector":"sd-editor","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":32,"character":19},"member":"OnPush"},"template":"<div id=\"box-{{id}}\">\r\n <label *ngIf=\"label && !sdLabelDef?.templateRef\" class=\"d-block T14M\">{{label}} <span class=\"text-danger mb-2\"\r\n *ngIf=\"required\">*</span></label>\r\n <ng-container *ngIf=\"sdLabelDef?.templateRef\" matSuffix>\r\n <ng-container *ngTemplateOutlet=\"sdLabelDef.templateRef\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-container *ngIf=\"!formControl.disabled && !showHtmlEditor\">\r\n <quill-editor #editor [styles]=\"styles\" (onEditorCreated)=\"editorInit($event)\" [ngModel]=\"formControl.value\"\r\n (onSelectionChanged)=\"onSelectionChanged($event)\"\r\n (onContentChanged)=\"onContentChanged($event)\"\r\n (ngModelChange)=\"onModelChange($event)\" [id]=\"id\" [modules]=\"quillConfig\" [placeholder]=\"placeholder\"\r\n [maxLength]=\"maxlength\">\r\n </quill-editor>\r\n <span class=\"d-block text-danger mt-5\" *ngIf=\"formControl.errors?.required\">\r\n {{'This field is required' | sdTranslate}}\r\n </span>\r\n <span class=\"d-block text-danger mt-5\" *ngIf=\"formControl.errors?.minlength\">\r\n {{'Max length' | sdTranslate}} <strong>{{minlength}}</strong>\r\n </span>\r\n <span class=\"d-block text-danger mt-5\" *ngIf=\"formControl.errors?.maxlength\">\r\n {{'Max length' | sdTranslate}} <strong>{{maxlength}}</strong>\r\n </span>\r\n </ng-container>\r\n <ng-container *ngIf=\"formControl.disabled\">\r\n <div [innerHtml]=\"formControl.value\"></div>\r\n </ng-container>\r\n <ng-container *ngIf=\"enableHTMLButton\">\r\n <sd-textarea [(model)]=\"modelHTML\" *ngIf=\"showHtmlEditor\" rows=\"20\"\r\n (modelChange)=\"onModelChange($event)\"></sd-textarea>\r\n <sd-button\r\n title=\"{{showHtmlEditor?'Ẩn':'Hiện'}} mã HTML\"\r\n class=\"mr-8\"\r\n fontSet=\"material-icons-outlined\"\r\n (action)=\"onClickShowHtmlEditor()\"\r\n type=\"light\"\r\n ></sd-button>\r\n </ng-container>\r\n</div>\r\n","styles":["::ng-deep img[alt=c-image-editor-quill]{max-width:80%}::ng-deep .ql-toolbar input.ql-customFile[type=file]{display:none}"]}]}],"members":{"editor":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":38,"character":3},"arguments":["editor"]}]}],"label":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"model":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":50,"character":3}}]}],"pRequired":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":61,"character":3}}]}],"_minlength":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":68,"character":3},"arguments":["minlength"]}]}],"_maxlength":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3},"arguments":["maxlength"]}]}],"modelChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":80,"character":3}}]}],"placeholder":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":82,"character":3}}]}],"styles":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"args":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":86,"character":3}}]}],"domain":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":90,"character":3}}]}],"form":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":92,"character":3}}]}],"toolbar":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":102,"character":3}}]}],"enableHTMLButton":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":103,"character":3}}]}],"mentionValues":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":108,"character":3}}]}],"hashTagValues":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":109,"character":3}}]}],"sdLabelDef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChild","line":110,"character":3},"arguments":[{"__symbolic":"reference","module":"@sd-angular/core/common","name":"SdLabelDefDirective","line":110,"character":16}]}]}],"sdChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":178,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":185,"character":5},"arguments":[{"__symbolic":"reference","name":"EDITOR_CONFIG"}]},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":185,"character":28}}]],"parameters":[{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":181,"character":20},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":182,"character":17},{"__symbolic":"reference","module":"@sd-angular/core/api","name":"SdApiService","line":183,"character":26},{"__symbolic":"reference","module":"@sd-angular/core/loading","name":"SdLoadingService","line":184,"character":28},{"__symbolic":"reference","name":"IEditorConfiguration"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"onSelectionChanged":[{"__symbolic":"method"}],"onContentChanged":[{"__symbolic":"method"}]}}},"origins":{"SdEditorAction":"./src/lib/editor.model","SdEditorActionArgs":"./src/lib/editor.model","IEditorConfiguration":"./src/lib/editor.model","EDITOR_CONFIG":"./src/lib/editor.model","SdEditorModule":"./src/lib/editor.module","Constants":"./src/lib/constant","PROMOTION_PERMISSIONS":"./src/lib/constant","ValidateMessageConstants":"./src/lib/constant","PROMOTION_FORM":"./src/lib/constant","SdEditor":"./src/lib/editor.component"},"importAs":"@sd-angular/core/editor"}
@@ -3,14 +3,17 @@ import Quill from "quill";
3
3
  export interface SdEditorAction {
4
4
  key: string;
5
5
  icon: string;
6
- click: (event: any, args?: {
7
- quill: Quill;
8
- cursorPosition: {
9
- index: number;
10
- length: number;
11
- };
12
- args?: any;
13
- }) => void;
6
+ click: (event: any, args: SdEditorActionArgs) => void | Promise<void>;
7
+ }
8
+ export interface SdEditorActionArgs {
9
+ qlKey: string;
10
+ element: HTMLElement;
11
+ quill: Quill;
12
+ cursorPosition: {
13
+ index: number;
14
+ length: number;
15
+ };
16
+ args?: any;
14
17
  }
15
18
  export interface IEditorConfiguration {
16
19
  uploadImage?: (formData: FormData, args?: any) => Promise<string>;
@@ -266,16 +266,30 @@ export class SdEditor {
266
266
  if (document.querySelector(qlKey)) {
267
267
  clearInterval(interval);
268
268
  document.querySelector(qlKey).innerHTML = this.customButtonFileSVG;
269
- const customButton = document.querySelector(qlKey);
270
- if (customButton.getAttribute('listener') !== '1') {
271
- customButton.setAttribute('listener', '1');
272
- customButton.addEventListener('click', (e) => {
269
+ const customAction = document.querySelector(qlKey);
270
+ if (customAction.getAttribute('listener') !== '1') {
271
+ customAction.setAttribute('listener', '1');
272
+ customAction.addEventListener('click', (e) => {
273
273
  const cursorPosition = localStorage.getItem('quillRange');
274
- action.click(e, {
274
+ const element = e.currentTarget; // Lấy element của action được click
275
+ const toolbar = element.closest('.ql-formats').closest('.ql-toolbar'); // Lấy toolbar element
276
+ const id = toolbar.closest('quill-editor').id; // Lấy id của editor để phục vụ loading
277
+ const loadingId = `#box-${id}`; // id của editor;
278
+ const func = action.click(e, {
279
+ qlKey,
280
+ element,
275
281
  cursorPosition: JSON.parse(cursorPosition),
276
282
  quill: __classPrivateFieldGet(this, _quill),
277
283
  args: this.args
278
284
  });
285
+ if (func instanceof Promise) {
286
+ __classPrivateFieldGet(this, _quill).enable(false);
287
+ this.loadingService.start(loadingId);
288
+ func.finally(() => {
289
+ __classPrivateFieldGet(this, _quill).enable(true);
290
+ this.loadingService.stop(loadingId);
291
+ });
292
+ }
279
293
  });
280
294
  }
281
295
  }
@@ -428,4 +442,4 @@ SdEditor.propDecorators = {
428
442
  sdLabelDef: [{ type: ContentChild, args: [SdLabelDefDirective,] }],
429
443
  sdChange: [{ type: Output }]
430
444
  };
431
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZWRpdG9yLyIsInNvdXJjZXMiOlsic3JjL2xpYi9lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBR04sUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBU3JFLE1BQU0sT0FBTyxRQUFRO0lBa0puQixZQUNVLE1BQWMsRUFDZCxHQUFzQixFQUN0QixZQUEwQixFQUMxQixjQUFnQyxFQUNHLGFBQW1DO1FBSnRFLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixtQkFBYyxH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Q0FBQztTQUNWLENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQzs7OztZQXBiRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLFdBQVc7Z0JBQ3JCLDRrRUFBc0M7Z0JBRXRDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOzthQUNoRDs7O1lBeEJDLE1BQU07WUFOTixpQkFBaUI7WUFrQlYsWUFBWTtZQUdaLGdCQUFnQjs0Q0FpS3BCLE1BQU0sU0FBQyxhQUFhLGNBQUcsUUFBUTs7O3FCQW5KakMsU0FBUyxTQUFDLFFBQVE7b0JBQ2xCLEtBQUs7b0JBRUwsS0FBSzt1QkFTTCxLQUFLO3dCQVdMLEtBQUs7eUJBT0wsS0FBSyxTQUFDLFdBQVc7eUJBT2pCLEtBQUssU0FBQyxXQUFXOzBCQUtqQixNQUFNOzBCQUVOLEtBQUs7cUJBRUwsS0FBSzttQkFFTCxLQUFLO3FCQUlMLEtBQUs7bUJBRUwsS0FBSztzQkFVTCxLQUFLOytCQUNMLEtBQUs7NEJBS0wsS0FBSzs0QkFDTCxLQUFLO3lCQUNMLFlBQVksU0FBQyxtQkFBbUI7dUJBb0VoQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBDb250ZW50Q2hpbGQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdCxcclxuICBJbnB1dCxcclxuICBOZ1pvbmUsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPcHRpb25hbCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRlbnRDaGFuZ2UsIFF1aWxsRWRpdG9yQ29tcG9uZW50LCBTZWxlY3Rpb25DaGFuZ2UgfSBmcm9tICduZ3gtcXVpbGwnO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBOZ0Zvcm0sIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuL2NvbnN0YW50JztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFNkQXBpU2VydmljZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvYXBpJztcclxuaW1wb3J0ICdxdWlsbC1tZW50aW9uJztcclxuaW1wb3J0IHsgU2RMYWJlbERlZkRpcmVjdGl2ZSB9IGZyb20gJ0BzZC1hbmd1bGFyL2NvcmUvY29tbW9uJztcclxuaW1wb3J0IHsgU2RMb2FkaW5nU2VydmljZSB9IGZyb20gXCJAc2QtYW5ndWxhci9jb3JlL2xvYWRpbmdcIjtcclxuaW1wb3J0IHsgRURJVE9SX0NPTkZJRywgSUVkaXRvckNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL2VkaXRvci5tb2RlbCc7XHJcbmltcG9ydCBRdWlsbCBmcm9tICdxdWlsbCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ3NkLWVkaXRvcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2VkaXRvci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vZWRpdG9yLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkRWRpdG9yIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gICNuYW1lID0gYE4ke3V1aWQudjQoKX1gO1xyXG4gIGlkOiBzdHJpbmcgPSBgSSR7dXVpZC52NCgpfWA7XHJcbiAgI3N1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICBAVmlld0NoaWxkKCdlZGl0b3InKSBlZGl0b3I6IFF1aWxsRWRpdG9yQ29tcG9uZW50O1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XHJcbiAgI21vZGVsOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgc2V0IG1vZGVsKHZhbDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLiNtb2RlbCA9IHZhbDtcclxuICAgIHRoaXMubW9kZWxIVE1MID0gdmFsO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZSh0aGlzLiNtb2RlbCwge1xyXG4gICAgICBlbWl0RXZlbnQ6IGZhbHNlXHJcbiAgICB9KTtcclxuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIHNldCBkaXNhYmxlZCh2YWw6IGJvb2xlYW4gfCAnJykge1xyXG4gICAgdmFsID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgdGhpcy5mb3JtQ29udHJvbC5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVxdWlyZWQgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgc2V0IHBSZXF1aXJlZCh2YWw6IGJvb2xlYW4gfCAnJykge1xyXG4gICAgdGhpcy5yZXF1aXJlZCA9ICh2YWwgPT09ICcnKSB8fCB2YWw7XHJcbiAgICB0aGlzLiN1cGRhdGVWYWxpZGF0b3IoKTtcclxuICB9XHJcblxyXG4gIG1pbmxlbmd0aDogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoJ21pbmxlbmd0aCcpIHNldCBfbWlubGVuZ3RoKHZhbDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm1pbmxlbmd0aCA9ICt2YWw7XHJcbiAgICB0aGlzLiN1cGRhdGVWYWxpZGF0b3IoKTtcclxuICB9XHJcblxyXG4gIG1heGxlbmd0aDogbnVtYmVyO1xyXG5cclxuICBASW5wdXQoJ21heGxlbmd0aCcpIHNldCBfbWF4bGVuZ3RoKHZhbDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLm1heGxlbmd0aCA9ICt2YWw7XHJcbiAgICB0aGlzLiN1cGRhdGVWYWxpZGF0b3IoKTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBtb2RlbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpIHN0eWxlczogYW55ID0geyBoZWlnaHQ6ICcyNTBweCcgfTtcclxuXHJcbiAgQElucHV0KCkgYXJnczogYW55O1xyXG5cclxuICBmb3JtQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xyXG5cclxuICBASW5wdXQoKSBkb21haW4gPSAnJztcclxuICAjZm9ybTogRm9ybUdyb3VwO1xyXG4gIEBJbnB1dCgpIHNldCBmb3JtKHZhbDogTmdGb3JtIHwgRm9ybUdyb3VwKSB7XHJcbiAgICBpZiAodmFsKSB7XHJcbiAgICAgIGlmICh2YWwgaW5zdGFuY2VvZiBOZ0Zvcm0pIHtcclxuICAgICAgICB0aGlzLiNmb3JtID0gdmFsLmZvcm07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy4jZm9ybSA9IHZhbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgdG9vbGJhcjogYW55O1xyXG4gIEBJbnB1dCgpIGVuYWJsZUhUTUxCdXR0b24gPSBmYWxzZTtcclxuICBzaG93SHRtbEVkaXRvciA9IGZhbHNlO1xyXG4gIG1vZGVsSFRNTDogc3RyaW5nO1xyXG5cclxuICBxdWlsbEV2ZW50OiBhbnk7XHJcbiAgQElucHV0KCkgbWVudGlvblZhbHVlczogeyBpZDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBsaW5rPzogc3RyaW5nIH1bXTtcclxuICBASW5wdXQoKSBoYXNoVGFnVmFsdWVzOiB7IGlkOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGxpbms/OiBzdHJpbmcgfVtdO1xyXG4gIEBDb250ZW50Q2hpbGQoU2RMYWJlbERlZkRpcmVjdGl2ZSkgc2RMYWJlbERlZjogU2RMYWJlbERlZkRpcmVjdGl2ZTtcclxuICBxdWlsbENvbmZpZyA9IHtcclxuICAgIC8vIHRvb2xiYXI6ICcudG9vbGJhcicsXHJcbiAgICB0b29sYmFyOiB7XHJcbiAgICAgIGNvbnRhaW5lcjogW1xyXG4gICAgICAgIFsnYm9sZCcsICdpdGFsaWMnLCAndW5kZXJsaW5lJywgJ3N0cmlrZSddLCAgICAgICAgLy8gdG9nZ2xlZCBidXR0b25zXHJcbiAgICAgICAgWydibG9ja3F1b3RlJywgJ2NvZGUtYmxvY2snXSxcclxuXHJcbiAgICAgICAgW3sgJ2hlYWRlcic6IDEgfSwgeyAnaGVhZGVyJzogMiB9XSwgICAgICAgICAgICAgICAvLyBjdXN0b20gYnV0dG9uIHZhbHVlc1xyXG4gICAgICAgIFt7ICdsaXN0JzogJ29yZGVyZWQnIH0sIHsgJ2xpc3QnOiAnYnVsbGV0JyB9XSxcclxuICAgICAgICBbeyAnc2NyaXB0JzogJ3N1YicgfSwgeyAnc2NyaXB0JzogJ3N1cGVyJyB9XSwgICAgICAvLyBzdXBlcnNjcmlwdC9zdWJzY3JpcHRcclxuICAgICAgICBbeyAnaW5kZW50JzogJy0xJyB9LCB7ICdpbmRlbnQnOiAnKzEnIH1dLCAgICAgICAgICAvLyBvdXRkZW50L2luZGVudFxyXG4gICAgICAgIFt7ICdkaXJlY3Rpb24nOiAncnRsJyB9XSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGV4dCBkaXJlY3Rpb25cclxuXHJcbiAgICAgICAgW3sgJ3NpemUnOiBbJ3NtYWxsJywgZmFsc2UsICdsYXJnZScsICdodWdlJ10gfV0sICAvLyBjdXN0b20gZHJvcGRvd25cclxuICAgICAgICBbeyAnaGVhZGVyJzogWzEsIDIsIDMsIDQsIDUsIDYsIGZhbHNlXSB9XSxcclxuXHJcbiAgICAgICAgW3sgJ2NvbG9yJzogW10gfSwgeyAnYmFja2dyb3VuZCc6IFtdIH1dLCAgICAgICAgICAvLyBkcm9wZG93biB3aXRoIGRlZmF1bHRzIGZyb20gdGhlbWVcclxuICAgICAgICBbeyAnZm9udCc6IFtdIH1dLFxyXG4gICAgICAgIFt7ICdhbGlnbic6IFtdIH1dLFxyXG5cclxuICAgICAgICBbJ2NsZWFuJ10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgZm9ybWF0dGluZyBidXR0b25cclxuXHJcbiAgICAgICAgWydsaW5rJywgJ2ltYWdlJywgJ3ZpZGVvJ10gICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGluayBhbmQgaW1hZ2UsIHZpZGVvXHJcbiAgICAgIF1cclxuICAgIH0sXHJcbiAgICBtZW50aW9uOiB7XHJcbiAgICAgIGFsbG93ZWRDaGFyczogL15bQS1aYS16MC05XFxzw4XDhMOWw6XDpMO2Ll8tXSokLyxcclxuICAgICAgbWVudGlvbkRlbm90YXRpb25DaGFyczogWydAJywgJyMnXSxcclxuICAgICAgc291cmNlOiAoc2VhcmNoVGVybSwgcmVuZGVyTGlzdCwgbWVudGlvbkNoYXIpID0+IHtcclxuICAgICAgICBpZiAoKHRoaXMubWVudGlvblZhbHVlcyAmJiBtZW50aW9uQ2hhciA9PT0gJ0AnKSB8fCAodGhpcy5oYXNoVGFnVmFsdWVzICYmIG1lbnRpb25DaGFyID09PSAnIycpKSB7XHJcbiAgICAgICAgICBsZXQgdmFsdWVzO1xyXG4gICAgICAgICAgaWYgKG1lbnRpb25DaGFyID09PSAnQCcpIHtcclxuICAgICAgICAgICAgdmFsdWVzID0gdGhpcy5tZW50aW9uVmFsdWVzO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChtZW50aW9uQ2hhciA9PT0gJyMnKSB7XHJcbiAgICAgICAgICAgIHZhbHVlcyA9IHRoaXMuaGFzaFRhZ1ZhbHVlcztcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhbHVlcyA9IFtdO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChzZWFyY2hUZXJtLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICByZW5kZXJMaXN0KHZhbHVlcywgc2VhcmNoVGVybSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBtYXRjaGVzID0gW107XHJcbiAgICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpwcmVmZXItZm9yLW9mXHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWJpdHdpc2VcclxuICAgICAgICAgICAgICBpZiAofnZhbHVlc1tpXS52YWx1ZS50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoc2VhcmNoVGVybS50b0xvd2VyQ2FzZSgpKSkge1xyXG4gICAgICAgICAgICAgICAgbWF0Y2hlcy5wdXNoKHZhbHVlc1tpXSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlbmRlckxpc3QobWF0Y2hlcywgc2VhcmNoVGVybSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGtleWJvYXJkOiB7XHJcbiAgICAgIGJpbmRpbmdzOiB7XHJcbiAgICAgICAgZW50ZXI6IHtcclxuICAgICAgICAgIGtleTogMTMsXHJcbiAgICAgICAgICBoYW5kbGVyOiAocmFuZ2UsIGNvbnRleHQpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuICBjdXN0b21CdXR0b25GaWxlU1ZHID0gJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGVuYWJsZS1iYWNrZ3JvdW5kPVwibmV3IDAgMCAyNCAyNFwiIGhlaWdodD1cIjI0cHhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNHB4XCIgZmlsbD1cIiMwMDAwMDBcIj48Zz48cmVjdCBmaWxsPVwibm9uZVwiIGhlaWdodD1cIjI0XCIgd2lkdGg9XCIyNFwiLz48cGF0aCBkPVwiTTIwLjQxLDguNDFsLTQuODMtNC44M0MxNS4yMSwzLjIxLDE0LjcsMywxNC4xNywzSDVDMy45LDMsMywzLjksMyw1djE0YzAsMS4xLDAuOSwyLDIsMmgxNGMxLjEsMCwyLTAuOSwyLTJWOS44MyBDMjEsOS4zLDIwLjc5LDguNzksMjAuNDEsOC40MXogTTcsN2g3djJIN1Y3eiBNMTcsMTdIN3YtMmgxMFYxN3ogTTE3LDEzSDd2LTJoMTBWMTN6XCIvPjwvZz48L3N2Zz4nO1xyXG4gIEBPdXRwdXQoKSBzZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIHRpbWVyTG9hZFF1aWxsVG9vbGJhciA9IG51bGw7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxyXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBzZEFwaVNlcnZpY2U6IFNkQXBpU2VydmljZSxcclxuICAgIHByaXZhdGUgbG9hZGluZ1NlcnZpY2U6IFNkTG9hZGluZ1NlcnZpY2UsXHJcbiAgICBASW5qZWN0KEVESVRPUl9DT05GSUcpIEBPcHRpb25hbCgpIHByaXZhdGUgY29uZmlndXJhdGlvbjogSUVkaXRvckNvbmZpZ3VyYXRpb24sXHJcbiAgKSB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLiNmb3JtPy5hZGRDb250cm9sKHRoaXMuI25hbWUsIHRoaXMuZm9ybUNvbnRyb2wpO1xyXG5cclxuICAgIGlmICh0aGlzLnRvb2xiYXIpIHtcclxuICAgICAgdGhpcy5xdWlsbENvbmZpZy50b29sYmFyLmNvbnRhaW5lciA9IHRoaXMudG9vbGJhcjtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiAodGhpcy5jb25maWd1cmF0aW9uPy5hY3Rpb25zIHx8IFtdKSkge1xyXG4gICAgICBpZiAodGhpcy5xdWlsbENvbmZpZy50b29sYmFyLmNvbnRhaW5lci50b1N0cmluZygpLmluY2x1ZGVzKGFjdGlvbi5rZXkpKSB7XHJcbiAgICAgICAgY29uc3QgcWxLZXkgPSBgYnV0dG9uLnFsLSR7YWN0aW9uLmtleX1gXHJcbiAgICAgICAgY29uc3QgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihxbEtleSkpIHtcclxuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbCk7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IocWxLZXkpLmlubmVySFRNTCA9IHRoaXMuY3VzdG9tQnV0dG9uRmlsZVNWRztcclxuICAgICAgICAgICAgY29uc3QgY3VzdG9tQnV0dG9uID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihxbEtleSk7XHJcbiAgICAgICAgICAgIGlmIChjdXN0b21CdXR0b24uZ2V0QXR0cmlidXRlKCdsaXN0ZW5lcicpICE9PSAnMScpIHtcclxuICAgICAgICAgICAgICBjdXN0b21CdXR0b24uc2V0QXR0cmlidXRlKCdsaXN0ZW5lcicsICcxJyk7XHJcbiAgICAgICAgICAgICAgY3VzdG9tQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnNvclBvc2l0aW9uID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3F1aWxsUmFuZ2UnKTtcclxuICAgICAgICAgICAgICAgIGFjdGlvbi5jbGljayhlLCB7XHJcbiAgICAgICAgICAgICAgICAgIGN1cnNvclBvc2l0aW9uOiBKU09OLnBhcnNlKGN1cnNvclBvc2l0aW9uKSxcclxuICAgICAgICAgICAgICAgICAgcXVpbGw6IHRoaXMuI3F1aWxsLFxyXG4gICAgICAgICAgICAgICAgICBhcmdzOiB0aGlzLmFyZ3NcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiAodGhpcy5xdWlsbENvbmZpZy50b29sYmFyLmNvbnRhaW5lci50b1N0cmluZygpLmluY2x1ZGVzKCdjdXN0b21GaWxlJykpIHtcclxuICAgIC8vICAgdGhpcy50aW1lckxvYWRRdWlsbFRvb2xiYXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAvLyAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbi5xbC1jdXN0b21GaWxlJykpIHtcclxuICAgIC8vICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lckxvYWRRdWlsbFRvb2xiYXIpO1xyXG4gICAgLy8gICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uLnFsLWN1c3RvbUZpbGUnKS5pbm5lckhUTUwgPSB0aGlzLmN1c3RvbUJ1dHRvbkZpbGVTVkc7XHJcbiAgICAvLyAgICAgICBjb25zdCBjdXN0b21CdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdidXR0b24ucWwtY3VzdG9tRmlsZScpO1xyXG4gICAgLy8gICAgICAgaWYgKGN1c3RvbUJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ2xpc3RlbmVyJykgIT09ICcxJykge1xyXG4gICAgLy8gICAgICAgICBjdXN0b21CdXR0b24uc2V0QXR0cmlidXRlKCdsaXN0ZW5lcicsICcxJyk7XHJcbiAgICAvLyAgICAgICAgIGN1c3RvbUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuY3VzdG9tRmlsZUhhbmRsZXIpO1xyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfSwgMTAwMCk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAvLyBjdXN0b21GaWxlSGFuZGxlciA9IChlKSA9PiB7XHJcbiAgLy8gICBjb25zdCBjdXN0b21CdXR0b24gPSBlLmN1cnJlbnRUYXJnZXQ7XHJcbiAgLy8gICBjb25zdCBxdWlsbFRvb2xiYXIgPSBjdXN0b21CdXR0b24uY2xvc2VzdCgnLnFsLWZvcm1hdHMnKS5jbG9zZXN0KCcucWwtdG9vbGJhcicpO1xyXG4gIC8vICAgY29uc3QgcXVpbGxCb3ggPSBxdWlsbFRvb2xiYXIuY2xvc2VzdCgnLnFsLWZvcm1hdHMnKVxyXG4gIC8vICAgbGV0IGZpbGVJbnB1dDogSFRNTElucHV0RWxlbWVudCA9IHF1aWxsVG9vbGJhci5xdWVyeVNlbGVjdG9yKCdpbnB1dC5xbC1jdXN0b21GaWxlW3R5cGU9ZmlsZV0nKTtcclxuICAvLyAgIGlmIChmaWxlSW5wdXQgPT0gbnVsbCkge1xyXG4gIC8vICAgICBmaWxlSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgQ29uc3RhbnRzLkZJTEUpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCdhY2NlcHQnLCAnKicpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuY2xhc3NMaXN0LmFkZCgncWwtY3VzdG9tRmlsZScpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4ge1xyXG4gIC8vICAgICAgIGNvbnN0IGZpbGVzID0gZmlsZUlucHV0LmZpbGVzO1xyXG4gIC8vICAgICAgIGlmICghZmlsZXMgfHwgIWZpbGVzLmxlbmd0aCkge1xyXG4gIC8vICAgICAgICAgcmV0dXJuO1xyXG4gIC8vICAgICAgIH1cclxuXHJcbiAgLy8gICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAvLyAgICAgICBmb3JtRGF0YS5hcHBlbmQoQ29uc3RhbnRzLkZJTEUsIGZpbGVzWzBdKTtcclxuICAvLyAgICAgICBsZXQgcmFuZ2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncXVpbGxSYW5nZScpO1xyXG4gIC8vICAgICAgIGlmIChyYW5nZSkge1xyXG4gIC8vICAgICAgICAgcmFuZ2UgPSBKU09OLnBhcnNlKHJhbmdlKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgdGhpcy5xdWlsbEV2ZW50LmVuYWJsZShmYWxzZSk7XHJcbiAgLy8gICAgICAgdGhpcy4jdXBsb2FkRmlsZShmb3JtRGF0YSwgdGhpcy5xdWlsbEV2ZW50LCByYW5nZSwgZmlsZUlucHV0LCBxdWlsbFRvb2xiYXIuY2xvc2VzdCgncXVpbGwtZWRpdG9yJykuaWQpO1xyXG4gIC8vICAgICB9KTtcclxuICAvLyAgICAgcXVpbGxUb29sYmFyLmFwcGVuZENoaWxkKGZpbGVJbnB1dCk7XHJcbiAgLy8gICB9XHJcbiAgLy8gICBmaWxlSW5wdXQuY2xpY2soKTtcclxuICAvLyB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHZhbCk7XHJcbiAgICAgIHRoaXMuc2RDaGFuZ2UuZW1pdCh2YWwpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLiNmb3JtPy5yZW1vdmVDb250cm9sKHRoaXMuI25hbWUpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAjdXBkYXRlVmFsaWRhdG9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuY2xlYXJBc3luY1ZhbGlkYXRvcnMoKTtcclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1pbmxlbmd0aCA+IDApIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMubWlubGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tYXhsZW5ndGggPiAwKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm1heGxlbmd0aCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcbiAgI3F1aWxsOiBRdWlsbDtcclxuICBlZGl0b3JJbml0ID0gKHF1aWxsOiBRdWlsbCkgPT4ge1xyXG4gICAgdGhpcy4jcXVpbGwgPSBxdWlsbDtcclxuICAgIHRoaXMucXVpbGxFdmVudCA9IHF1aWxsO1xyXG4gICAgLy8gY29uc3QgdHh0QXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XHJcbiAgICAvLyB0eHRBcmVhLnN0eWxlLmNzc1RleHQgPVxyXG4gICAgLy8gICAnd2lkdGg6IDEwMCU7bWFyZ2luOiAwcHg7YmFja2dyb3VuZDogcmdiKDI5LCAyOSwgMjkpOycgK1xyXG4gICAgLy8gICAnYm94LXNpemluZzogYm9yZGVyLWJveDtjb2xvcjogcmdiKDIwNCwgMjA0LCAyMDQpOycgK1xyXG4gICAgLy8gICAnZm9udC1zaXplOiAxNXB4O291dGxpbmU6IG5vbmU7cGFkZGluZzogMjBweDsnICtcclxuICAgIC8vICAgJ2xpbmUtaGVpZ2h0OiAyNHB4O2ZvbnQtZmFtaWx5OiBDb25zb2xhcywgTWVubG8sIE1vbmFjbywgJnF1b3Q7Q291cmllciBOZXcmcXVvdDssIG1vbm9zcGFjZTsnICtcclxuICAgIC8vICAgJ3Bvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6IDA7Ym90dG9tOiAwO2JvcmRlcjogbm9uZTtkaXNwbGF5Om5vbmUnO1xyXG5cclxuICAgIC8vIGNvbnN0IGh0bWxFZGl0b3IgPSBxdWlsbC5hZGRDb250YWluZXIoJ3FsLWN1c3RvbScpO1xyXG4gICAgLy8gaHRtbEVkaXRvci5hcHBlbmRDaGlsZCh0eHRBcmVhKTtcclxuXHJcbiAgICAvLyBjb25zdCBteUVkaXRvciA9IHF1aWxsLmNvbnRhaW5lcjtcclxuICAgIC8vIHF1aWxsLm9uKCd0ZXh0LWNoYW5nZScsIChkZWx0YSwgb2xkRGVsdGEsIHNvdXJjZSkgPT4ge1xyXG4gICAgLy8gICBjb25zdCBodG1sID0gbXlFZGl0b3IuY2hpbGRyZW5bMF0uaW5uZXJIVE1MO1xyXG4gICAgLy8gICB0eHRBcmVhLnZhbHVlID0gaHRtbDtcclxuICAgIC8vICAgLy8gaWYgKHF1aWxsLmdldExlbmd0aCgpID4gdGhpcy5tYXhsZW5ndGgpIHtcclxuICAgIC8vICAgLy8gICBxdWlsbC5kZWxldGVUZXh0KHRoaXMubWF4bGVuZ3RoLCBxdWlsbC5nZXRMZW5ndGgoKSk7XHJcbiAgICAvLyAgIC8vIH1cclxuICAgIC8vICAgLy8gdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShodG1sKTtcclxuICAgIC8vIH0pO1xyXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICB0aGlzLiNpbml0VXBsb2FkSW1hZ2UocXVpbGwpO1xyXG4gICAgLy8gdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgLy8gICBxdWlsbC5nZXRNb2R1bGUoJ3Rvb2xiYXInKS5hZGRIYW5kbGVyKCdpbWFnZScsIGZ1bmN0aW9uICgpIHtcclxuICAgIC8vICAgICBsZXQgZmlsZUlucHV0ID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQucWwtaW1hZ2VbdHlwZT1maWxlXScpO1xyXG5cclxuICAgIC8vICAgICBpZiAoZmlsZUlucHV0ID09IG51bGwpIHtcclxuICAgIC8vICAgICAgIGZpbGVJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XHJcbiAgICAvLyAgICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgQ29uc3RhbnRzLkZJTEUpO1xyXG4gICAgLy8gICAgICAgZmlsZUlucHV0LnNldEF0dHJpYnV0ZSgnYWNjZXB0JywgJ2ltYWdlL3BuZywgaW1hZ2UvZ2lmLCBpbWFnZS9qcGVnLCBpbWFnZS9ibXAsIGltYWdlL3gtaWNvbicpO1xyXG4gICAgLy8gICAgICAgZmlsZUlucHV0LmNsYXNzTGlzdC5hZGQoJ3FsLWltYWdlJyk7XHJcbiAgICAvLyAgICAgICBmaWxlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4ge1xyXG4gICAgLy8gICAgICAgICBjb25zdCBmaWxlcyA9IGZpbGVJbnB1dC5maWxlcztcclxuICAgIC8vICAgICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLnF1aWxsLmdldFNlbGVjdGlvbih0cnVlKTtcclxuICAgIC8vICAgICAgICAgaWYgKCFmaWxlcyB8fCAhZmlsZXMubGVuZ3RoKSB7XHJcbiAgICAvLyAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgLy8gICAgICAgICB9XHJcblxyXG4gICAgLy8gICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgLy8gICAgICAgICBmb3JtRGF0YS5hcHBlbmQoQ29uc3RhbnRzLkZJTEUsIGZpbGVzWzBdKTtcclxuXHJcbiAgICAvLyAgICAgICAgIHRoaXMucXVpbGwuZW5hYmxlKGZhbHNlKTtcclxuXHJcbiAgICAvLyAgICAgICAgIHNlbGYuI3VwbG9hZEltYWdlKGZvcm1EYXRhLCBxdWlsbCwgcmFuZ2UsIGZpbGVJbnB1dCk7XHJcbiAgICAvLyAgICAgICB9KTtcclxuICAgIC8vICAgICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKGZpbGVJbnB1dCk7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGZpbGVJbnB1dC5jbGljaygpO1xyXG4gICAgLy8gICB9KTtcclxuXHJcbiAgICAvLyB9KTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgI2luaXRVcGxvYWRJbWFnZSA9IChxdWlsbDogUXVpbGwpID0+IHtcclxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICBxdWlsbC5nZXRNb2R1bGUoJ3Rvb2xiYXInKS5hZGRIYW5kbGVyKCdpbWFnZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBsZXQgZmlsZUlucHV0ID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQucWwtaW1hZ2VbdHlwZT1maWxlXScpO1xyXG4gICAgICAgIGlmIChmaWxlSW5wdXQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgZmlsZUlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcclxuICAgICAgICAgIGZpbGVJbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCBDb25zdGFudHMuRklMRSk7XHJcbiAgICAgICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCdhY2NlcHQnLCAnaW1hZ2UvcG5nLCBpbWFnZS9naWYsIGltYWdlL2pwZWcsIGltYWdlL2JtcCwgaW1hZ2UveC1pY29uJyk7XHJcbiAgICAgICAgICBmaWxlSW5wdXQuY2xhc3NMaXN0LmFkZCgncWwtaW1hZ2UnKTtcclxuICAgICAgICAgIGZpbGVJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gZmlsZUlucHV0LmZpbGVzO1xyXG4gICAgICAgICAgICBjb25zdCByYW5nZSA9IHRoaXMucXVpbGwuZ2V0U2VsZWN0aW9uKHRydWUpO1xyXG4gICAgICAgICAgICBpZiAoIWZpbGVzIHx8ICFmaWxlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKENvbnN0YW50cy5GSUxFLCBmaWxlc1swXSk7XHJcbiAgICAgICAgICAgIHRoaXMucXVpbGwuZW5hYmxlKGZhbHNlKTtcclxuICAgICAgICAgICAgLy8gc2VsZi4jdXBsb2FkSW1hZ2UoZm9ybURhdGEsIHF1aWxsLCByYW5nZSwgZmlsZUlucHV0KTtcclxuICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uPy51cGxvYWRJbWFnZShmb3JtRGF0YSwgc2VsZi5hcmdzKS50aGVuKHVybCA9PiB7XHJcbiAgICAgICAgICAgICAgc2VsZi5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcXVpbGwuZW5hYmxlKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgLy8gcXVpbGwuZWRpdG9yLmluc2VydEVtYmVkKHJhbmdlLmluZGV4LCAnaW1hZ2UnLCByZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpO1xyXG4gICAgICAgICAgICAgICAgcXVpbGwuZ2V0TW9kdWxlKCdjbGlwYm9hcmQnKS5kYW5nZXJvdXNseVBhc3RlSFRNTChyYW5nZS5pbmRleCwgJzxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCInICsgKHVybCB8fCAnJylcclxuICAgICAgICAgICAgICAgICAgKyAnXCI+PGltZyBzcmM9XCInICsgKHVybCB8fCAnJykgKyAnXCIgYWx0PVwiYy1pbWFnZS1lZGl0b3ItcXVpbGxcIj48L2E+JywgJ3VzZXInKTtcclxuICAgICAgICAgICAgICAgIC8vIHF1aWxsLmluc2VydFRleHQoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBxdWlsbC5nZXRDb250ZW50cygpO1xyXG4gICAgICAgICAgICAgICAgcXVpbGwuc2V0Q29udGVudHMoY29udGVudCk7XHJcbiAgICAgICAgICAgICAgICBxdWlsbC5zZXRTZWxlY3Rpb24ocmFuZ2UuaW5kZXggKyAxLCAndXNlcicpO1xyXG4gICAgICAgICAgICAgICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZChmaWxlSW5wdXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaWxlSW5wdXQuY2xpY2soKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbk1vZGVsQ2hhbmdlID0gKHZhbDogc3RyaW5nKSA9PiB7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbCk7XHJcbiAgICB0aGlzLm1vZGVsSFRNTCA9IHZhbDtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgb25DbGlja1Nob3dIdG1sRWRpdG9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5zaG93SHRtbEVkaXRvciA9ICF0aGlzLnNob3dIdG1sRWRpdG9yO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAvLyAjdXBsb2FkSW1hZ2UgPSAoZm9ybURhdGEsIHF1aWxsLCByYW5nZSwgZmlsZUlucHV0KSA9PiB7XHJcbiAgLy8gICBpZiAoIXRoaXMudXJsVXBsb2FkSW1hZ2UpIHtcclxuICAvLyAgICAgdGhpcy51cmxVcGxvYWRJbWFnZSA9ICcvcGFydG5lci92Mi9tZXJjaGFuZGlzZS9maWxlL3VwbG9hZHVzZXJmaWxlJztcclxuICAvLyAgIH1cclxuICAvLyAgIC8vIHRoaXMuZG9tYWluID0gJ2h0dHBzOi8vYXBpLWNvbW1lcmNlLXFjLnZpbmlkLmRldic7XHJcbiAgLy8gICB0aGlzLnNkQXBpU2VydmljZS5wb3N0KHRoaXMudXJsVXBsb2FkSW1hZ2UsIGZvcm1EYXRhKS50aGVuKChyZXNwOiBhbnkpID0+IHtcclxuICAvLyAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gIC8vICAgICAgIHF1aWxsLmVuYWJsZSh0cnVlKTtcclxuICAvLyAgICAgICAvLyBxdWlsbC5lZGl0b3IuaW5zZXJ0RW1iZWQocmFuZ2UuaW5kZXgsICdpbWFnZScsIHJlc3A/LmRhdGE/LmltYWdlVXJsIHx8IHJlc3A/LmRhdGE/LnB1Ymxpc2hfdXJsIHx8IHJlc3A/LnVybCB8fCAnJyk7XHJcbiAgLy8gICAgICAgcXVpbGwuZ2V0TW9kdWxlKCdjbGlwYm9hcmQnKS5kYW5nZXJvdXNseVBhc3RlSFRNTChyYW5nZS5pbmRleCwgJzxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCInICsgKHJlc3A/LmRhdGE/LmltYWdlVXJsIHx8IHJlc3A/LmRhdGE/LnB1Ymxpc2hfdXJsIHx8IHJlc3A/LnVybCB8fCAnJylcclxuICAvLyAgICAgICAgICsgJ1wiPjxpbWcgc3JjPVwiJyArIChyZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpICsgJ1wiIGFsdD1cImMtaW1hZ2UtZWRpdG9yLXF1aWxsXCI+PC9hPicsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgLy8gcXVpbGwuaW5zZXJ0VGV4dCgpO1xyXG4gIC8vICAgICAgIGNvbnN0IGNvbnRlbnQgPSBxdWlsbC5nZXRDb250ZW50cygpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldENvbnRlbnRzKGNvbnRlbnQpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldFNlbGVjdGlvbihyYW5nZS5pbmRleCArIDEsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAvLyB9XHJcblxyXG4gIC8vICN1cGxvYWRGaWxlID0gKGZvcm1EYXRhLCBxdWlsbCwgcmFuZ2UsIGZpbGVJbnB1dCwgbG9hZGluZ0lEKSA9PiB7XHJcbiAgLy8gICBpZiAoIXRoaXMudXJsVXBsb2FkRmlsZSkge1xyXG4gIC8vICAgICB0aGlzLnVybFVwbG9hZEZpbGUgPSAnL3BhcnRuZXIvdjIvbWVyY2hhbmRpc2UvZmlsZS91cGxvYWR1c2VyZmlsZSc7XHJcbiAgLy8gICB9XHJcbiAgLy8gICAvLyB0aGlzLmRvbWFpbiA9ICdodHRwczovL2FwaS1jb21tZXJjZS1xYy52aW5pZC5kZXYnO1xyXG4gIC8vICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdGFydCgnI2JveC0nICsgbG9hZGluZ0lEKTtcclxuICAvLyAgIHRoaXMuc2RBcGlTZXJ2aWNlLnBvc3QodGhpcy51cmxVcGxvYWRGaWxlLCBmb3JtRGF0YSkudGhlbigocmVzcDogYW55KSA9PiB7XHJcbiAgLy8gICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAvLyAgICAgICBxdWlsbC5lbmFibGUodHJ1ZSk7XHJcbiAgLy8gICAgICAgLy8gcXVpbGwuZWRpdG9yLmluc2VydEVtYmVkKHJhbmdlLmluZGV4LCAnaW1hZ2UnLCByZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpO1xyXG4gIC8vICAgICAgIHF1aWxsLmdldE1vZHVsZSgnY2xpcGJvYXJkJykuZGFuZ2Vyb3VzbHlQYXN0ZUhUTUwocmFuZ2UuaW5kZXgsICc8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiJyArIChyZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpXHJcbiAgLy8gICAgICAgICArICdcIj4nICsgKHJlc3A/LmRhdGE/LmltYWdlVXJsIHx8IHJlc3A/LmRhdGE/LnB1Ymxpc2hfdXJsIHx8IHJlc3A/LnVybCB8fCAnJykgKyAnPC9hPicsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgLy8gcXVpbGwuaW5zZXJ0VGV4dCgpO1xyXG4gIC8vICAgICAgIGNvbnN0IGNvbnRlbnQgPSBxdWlsbC5nZXRDb250ZW50cygpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldENvbnRlbnRzKGNvbnRlbnQpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldFNlbGVjdGlvbihyYW5nZS5pbmRleCArIDEsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0b3AoJyNib3gtJyArIGxvYWRpbmdJRCk7XHJcbiAgLy8gICB9KS5jYXRjaCgoZXIpID0+IHtcclxuICAvLyAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKCcjYm94LScgKyBsb2FkaW5nSUQpO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAvLyB9XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZChlOiBTZWxlY3Rpb25DaGFuZ2UpIHtcclxuICAgIC8vIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdxdWlsbFJhbmdlJywgZS5yYW5nZSA/IEpTT04uc3RyaW5naWZ5KGUucmFuZ2UpIDogKGUub2xkUmFuZ2UgPyBKU09OLnN0cmluZ2lmeShlLm9sZFJhbmdlKSA6IG51bGwpKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdxdWlsbFJhbmdlJywgZS5lZGl0b3IuZ2V0U2VsZWN0aW9uKCkgPyBKU09OLnN0cmluZ2lmeShlLmVkaXRvci5nZXRTZWxlY3Rpb24oKSkgOiBudWxsKTtcclxuICB9XHJcblxyXG4gIG9uQ29udGVudENoYW5nZWQoZTogQ29udGVudENoYW5nZSkge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3F1aWxsUmFuZ2UnLCBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgIGluZGV4OiAoZS5lZGl0b3IuZ2V0TGVuZ3RoKCkgPyBlLmVkaXRvci5nZXRMZW5ndGgoKSAtIDEgOiAwKSxcclxuICAgICAgbGVuZ3RoOiAwXHJcbiAgICB9KSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
445
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZWRpdG9yLyIsInNvdXJjZXMiOlsic3JjL2xpYi9lZGl0b3IuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEVBR04sUUFBUSxFQUNSLE1BQU0sRUFDTixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekYsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN2QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUF3QixNQUFNLGdCQUFnQixDQUFDO0FBU3JFLE1BQU0sT0FBTyxRQUFRO0lBa0puQixZQUNVLE1BQWMsRUFDZCxHQUFzQixFQUN0QixZQUEwQixFQUMxQixjQUFnQyxFQUNHLGFBQW1DO1FBSnRFLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixtQkFBYyxH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QkFPakIsS0FBSyxTQUFDLFdBQVc7MEJBS2pCLE1BQU07MEJBRU4sS0FBSztxQkFFTCxLQUFLO21CQUVMLEtBQUs7cUJBSUwsS0FBSzttQkFFTCxLQUFLO3NCQVVMLEtBQUs7K0JBQ0wsS0FBSzs0QkFLTCxLQUFLOzRCQUNMLEtBQUs7eUJBQ0wsWUFBWSxTQUFDLG1CQUFtQjt1QkFvRWhDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEFmdGVyVmlld0luaXQsXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE5nWm9uZSxcclxuICBPbkRlc3Ryb3ksXHJcbiAgT25Jbml0LFxyXG4gIE9wdGlvbmFsLFxyXG4gIE91dHB1dCxcclxuICBWaWV3Q2hpbGRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udGVudENoYW5nZSwgUXVpbGxFZGl0b3JDb21wb25lbnQsIFNlbGVjdGlvbkNoYW5nZSB9IGZyb20gJ25neC1xdWlsbCc7XHJcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIE5nRm9ybSwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4vY29uc3RhbnQnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU2RBcGlTZXJ2aWNlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9hcGknO1xyXG5pbXBvcnQgJ3F1aWxsLW1lbnRpb24nO1xyXG5pbXBvcnQgeyBTZExhYmVsRGVmRGlyZWN0aXZlIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9jb21tb24nO1xyXG5pbXBvcnQgeyBTZExvYWRpbmdTZXJ2aWNlIH0gZnJvbSBcIkBzZC1hbmd1bGFyL2NvcmUvbG9hZGluZ1wiO1xyXG5pbXBvcnQgeyBFRElUT1JfQ09ORklHLCBJRWRpdG9yQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vZWRpdG9yLm1vZGVsJztcclxuaW1wb3J0IFF1aWxsIGZyb20gJ3F1aWxsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc2QtZWRpdG9yJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZWRpdG9yLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9lZGl0b3IuY29tcG9uZW50LnNjc3MnXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RFZGl0b3IgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgI25hbWUgPSBgTiR7dXVpZC52NCgpfWA7XHJcbiAgaWQ6IHN0cmluZyA9IGBJJHt1dWlkLnY0KCl9YDtcclxuICAjc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gIEBWaWV3Q2hpbGQoJ2VkaXRvcicpIGVkaXRvcjogUXVpbGxFZGl0b3JDb21wb25lbnQ7XHJcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcclxuICAjbW9kZWw6IHN0cmluZztcclxuICBASW5wdXQoKSBzZXQgbW9kZWwodmFsOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuI21vZGVsID0gdmFsO1xyXG4gICAgdGhpcy5tb2RlbEhUTUwgPSB2YWw7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHRoaXMuI21vZGVsLCB7XHJcbiAgICAgIGVtaXRFdmVudDogZmFsc2VcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KCkgc2V0IGRpc2FibGVkKHZhbDogYm9vbGVhbiB8ICcnKSB7XHJcbiAgICB2YWwgPSAodmFsID09PSAnJykgfHwgdmFsO1xyXG4gICAgaWYgKHZhbCkge1xyXG4gICAgICB0aGlzLmZvcm1Db250cm9sLmRpc2FibGUoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXF1aXJlZCA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBzZXQgcFJlcXVpcmVkKHZhbDogYm9vbGVhbiB8ICcnKSB7XHJcbiAgICB0aGlzLnJlcXVpcmVkID0gKHZhbCA9PT0gJycpIHx8IHZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgbWlubGVuZ3RoOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgnbWlubGVuZ3RoJykgc2V0IF9taW5sZW5ndGgodmFsOiBudW1iZXIpIHtcclxuICAgIHRoaXMubWlubGVuZ3RoID0gK3ZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgbWF4bGVuZ3RoOiBudW1iZXI7XHJcblxyXG4gIEBJbnB1dCgnbWF4bGVuZ3RoJykgc2V0IF9tYXhsZW5ndGgodmFsOiBudW1iZXIpIHtcclxuICAgIHRoaXMubWF4bGVuZ3RoID0gK3ZhbDtcclxuICAgIHRoaXMuI3VwZGF0ZVZhbGlkYXRvcigpO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpIG1vZGVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQElucHV0KCkgc3R5bGVzOiBhbnkgPSB7IGhlaWdodDogJzI1MHB4JyB9O1xyXG5cclxuICBASW5wdXQoKSBhcmdzOiBhbnk7XHJcblxyXG4gIGZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XHJcblxyXG4gIEBJbnB1dCgpIGRvbWFpbiA9ICcnO1xyXG4gICNmb3JtOiBGb3JtR3JvdXA7XHJcbiAgQElucHV0KCkgc2V0IGZvcm0odmFsOiBOZ0Zvcm0gfCBGb3JtR3JvdXApIHtcclxuICAgIGlmICh2YWwpIHtcclxuICAgICAgaWYgKHZhbCBpbnN0YW5jZW9mIE5nRm9ybSkge1xyXG4gICAgICAgIHRoaXMuI2Zvcm0gPSB2YWwuZm9ybTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLiNmb3JtID0gdmFsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKSB0b29sYmFyOiBhbnk7XHJcbiAgQElucHV0KCkgZW5hYmxlSFRNTEJ1dHRvbiA9IGZhbHNlO1xyXG4gIHNob3dIdG1sRWRpdG9yID0gZmFsc2U7XHJcbiAgbW9kZWxIVE1MOiBzdHJpbmc7XHJcblxyXG4gIHF1aWxsRXZlbnQ6IGFueTtcclxuICBASW5wdXQoKSBtZW50aW9uVmFsdWVzOiB7IGlkOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcsIGxpbms/OiBzdHJpbmcgfVtdO1xyXG4gIEBJbnB1dCgpIGhhc2hUYWdWYWx1ZXM6IHsgaWQ6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbGluaz86IHN0cmluZyB9W107XHJcbiAgQENvbnRlbnRDaGlsZChTZExhYmVsRGVmRGlyZWN0aXZlKSBzZExhYmVsRGVmOiBTZExhYmVsRGVmRGlyZWN0aXZlO1xyXG4gIHF1aWxsQ29uZmlnID0ge1xyXG4gICAgLy8gdG9vbGJhcjogJy50b29sYmFyJyxcclxuICAgIHRvb2xiYXI6IHtcclxuICAgICAgY29udGFpbmVyOiBbXHJcbiAgICAgICAgWydib2xkJywgJ2l0YWxpYycsICd1bmRlcmxpbmUnLCAnc3RyaWtlJ10sICAgICAgICAvLyB0b2dnbGVkIGJ1dHRvbnNcclxuICAgICAgICBbJ2Jsb2NrcXVvdGUnLCAnY29kZS1ibG9jayddLFxyXG5cclxuICAgICAgICBbeyAnaGVhZGVyJzogMSB9LCB7ICdoZWFkZXInOiAyIH1dLCAgICAgICAgICAgICAgIC8vIGN1c3RvbSBidXR0b24gdmFsdWVzXHJcbiAgICAgICAgW3sgJ2xpc3QnOiAnb3JkZXJlZCcgfSwgeyAnbGlzdCc6ICdidWxsZXQnIH1dLFxyXG4gICAgICAgIFt7ICdzY3JpcHQnOiAnc3ViJyB9LCB7ICdzY3JpcHQnOiAnc3VwZXInIH1dLCAgICAgIC8vIHN1cGVyc2NyaXB0L3N1YnNjcmlwdFxyXG4gICAgICAgIFt7ICdpbmRlbnQnOiAnLTEnIH0sIHsgJ2luZGVudCc6ICcrMScgfV0sICAgICAgICAgIC8vIG91dGRlbnQvaW5kZW50XHJcbiAgICAgICAgW3sgJ2RpcmVjdGlvbic6ICdydGwnIH1dLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0ZXh0IGRpcmVjdGlvblxyXG5cclxuICAgICAgICBbeyAnc2l6ZSc6IFsnc21hbGwnLCBmYWxzZSwgJ2xhcmdlJywgJ2h1Z2UnXSB9XSwgIC8vIGN1c3RvbSBkcm9wZG93blxyXG4gICAgICAgIFt7ICdoZWFkZXInOiBbMSwgMiwgMywgNCwgNSwgNiwgZmFsc2VdIH1dLFxyXG5cclxuICAgICAgICBbeyAnY29sb3InOiBbXSB9LCB7ICdiYWNrZ3JvdW5kJzogW10gfV0sICAgICAgICAgIC8vIGRyb3Bkb3duIHdpdGggZGVmYXVsdHMgZnJvbSB0aGVtZVxyXG4gICAgICAgIFt7ICdmb250JzogW10gfV0sXHJcbiAgICAgICAgW3sgJ2FsaWduJzogW10gfV0sXHJcblxyXG4gICAgICAgIFsnY2xlYW4nXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBmb3JtYXR0aW5nIGJ1dHRvblxyXG5cclxuICAgICAgICBbJ2xpbmsnLCAnaW1hZ2UnLCAndmlkZW8nXSAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaW5rIGFuZCBpbWFnZSwgdmlkZW9cclxuICAgICAgXVxyXG4gICAgfSxcclxuICAgIG1lbnRpb246IHtcclxuICAgICAgYWxsb3dlZENoYXJzOiAvXltBLVphLXowLTlcXHPDhcOEw5bDpcOkw7YuXy1dKiQvLFxyXG4gICAgICBtZW50aW9uRGVub3RhdGlvbkNoYXJzOiBbJ0AnLCAnIyddLFxyXG4gICAgICBzb3VyY2U6IChzZWFyY2hUZXJtLCByZW5kZXJMaXN0LCBtZW50aW9uQ2hhcikgPT4ge1xyXG4gICAgICAgIGlmICgodGhpcy5tZW50aW9uVmFsdWVzICYmIG1lbnRpb25DaGFyID09PSAnQCcpIHx8ICh0aGlzLmhhc2hUYWdWYWx1ZXMgJiYgbWVudGlvbkNoYXIgPT09ICcjJykpIHtcclxuICAgICAgICAgIGxldCB2YWx1ZXM7XHJcbiAgICAgICAgICBpZiAobWVudGlvbkNoYXIgPT09ICdAJykge1xyXG4gICAgICAgICAgICB2YWx1ZXMgPSB0aGlzLm1lbnRpb25WYWx1ZXM7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKG1lbnRpb25DaGFyID09PSAnIycpIHtcclxuICAgICAgICAgICAgdmFsdWVzID0gdGhpcy5oYXNoVGFnVmFsdWVzO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFsdWVzID0gW107XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKHNlYXJjaFRlcm0ubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJlbmRlckxpc3QodmFsdWVzLCBzZWFyY2hUZXJtKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZXMgPSBbXTtcclxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnByZWZlci1mb3Itb2ZcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYml0d2lzZVxyXG4gICAgICAgICAgICAgIGlmICh+dmFsdWVzW2ldLnZhbHVlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCkpKSB7XHJcbiAgICAgICAgICAgICAgICBtYXRjaGVzLnB1c2godmFsdWVzW2ldKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVuZGVyTGlzdChtYXRjaGVzLCBzZWFyY2hUZXJtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAga2V5Ym9hcmQ6IHtcclxuICAgICAgYmluZGluZ3M6IHtcclxuICAgICAgICBlbnRlcjoge1xyXG4gICAgICAgICAga2V5OiAxMyxcclxuICAgICAgICAgIGhhbmRsZXI6IChyYW5nZSwgY29udGV4dCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIGN1c3RvbUJ1dHRvbkZpbGVTVkcgPSAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZW5hYmxlLWJhY2tncm91bmQ9XCJuZXcgMCAwIDI0IDI0XCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0cHhcIiBmaWxsPVwiIzAwMDAwMFwiPjxnPjxyZWN0IGZpbGw9XCJub25lXCIgaGVpZ2h0PVwiMjRcIiB3aWR0aD1cIjI0XCIvPjxwYXRoIGQ9XCJNMjAuNDEsOC40MWwtNC44My00LjgzQzE1LjIxLDMuMjEsMTQuNywzLDE0LjE3LDNINUMzLjksMywzLDMuOSwzLDV2MTRjMCwxLjEsMC45LDIsMiwyaDE0YzEuMSwwLDItMC45LDItMlY5LjgzIEMyMSw5LjMsMjAuNzksOC43OSwyMC40MSw4LjQxeiBNNyw3aDd2Mkg3Vjd6IE0xNywxN0g3di0yaDEwVjE3eiBNMTcsMTNIN3YtMmgxMFYxM3pcIi8+PC9nPjwvc3ZnPic7XHJcbiAgQE91dHB1dCgpIHNkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgdGltZXJMb2FkUXVpbGxUb29sYmFyID0gbnVsbDtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBwcml2YXRlIHNkQXBpU2VydmljZTogU2RBcGlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsb2FkaW5nU2VydmljZTogU2RMb2FkaW5nU2VydmljZSxcclxuICAgIEBJbmplY3QoRURJVE9SX0NPTkZJRykgQE9wdGlvbmFsKCkgcHJpdmF0ZSBjb25maWd1cmF0aW9uOiBJRWRpdG9yQ29uZmlndXJhdGlvbixcclxuICApIHtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuI2Zvcm0/LmFkZENvbnRyb2wodGhpcy4jbmFtZSwgdGhpcy5mb3JtQ29udHJvbCk7XHJcblxyXG4gICAgaWYgKHRoaXMudG9vbGJhcikge1xyXG4gICAgICB0aGlzLnF1aWxsQ29uZmlnLnRvb2xiYXIuY29udGFpbmVyID0gdGhpcy50b29sYmFyO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAoY29uc3QgYWN0aW9uIG9mICh0aGlzLmNvbmZpZ3VyYXRpb24/LmFjdGlvbnMgfHwgW10pKSB7XHJcbiAgICAgIGlmICh0aGlzLnF1aWxsQ29uZmlnLnRvb2xiYXIuY29udGFpbmVyLnRvU3RyaW5nKCkuaW5jbHVkZXMoYWN0aW9uLmtleSkpIHtcclxuICAgICAgICBjb25zdCBxbEtleSA9IGBidXR0b24ucWwtJHthY3Rpb24ua2V5fWBcclxuICAgICAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHFsS2V5KSkge1xyXG4gICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTtcclxuICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcihxbEtleSkuaW5uZXJIVE1MID0gdGhpcy5jdXN0b21CdXR0b25GaWxlU1ZHO1xyXG4gICAgICAgICAgICBjb25zdCBjdXN0b21BY3Rpb24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHFsS2V5KTtcclxuICAgICAgICAgICAgaWYgKGN1c3RvbUFjdGlvbi5nZXRBdHRyaWJ1dGUoJ2xpc3RlbmVyJykgIT09ICcxJykge1xyXG4gICAgICAgICAgICAgIGN1c3RvbUFjdGlvbi5zZXRBdHRyaWJ1dGUoJ2xpc3RlbmVyJywgJzEnKTtcclxuICAgICAgICAgICAgICBjdXN0b21BY3Rpb24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY3Vyc29yUG9zaXRpb24gPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncXVpbGxSYW5nZScpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IGUuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDsgLy8gTOG6pXkgZWxlbWVudCBj4bunYSBhY3Rpb24gxJHGsOG7o2MgY2xpY2tcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRvb2xiYXIgPSBlbGVtZW50LmNsb3Nlc3QoJy5xbC1mb3JtYXRzJykuY2xvc2VzdCgnLnFsLXRvb2xiYXInKTsgLy8gTOG6pXkgdG9vbGJhciBlbGVtZW50XHJcbiAgICAgICAgICAgICAgICBjb25zdCBpZCA9IHRvb2xiYXIuY2xvc2VzdCgncXVpbGwtZWRpdG9yJykuaWQ7IC8vIEzhuqV5IGlkIGPhu6dhIGVkaXRvciDEkeG7gyBwaOG7pWMgduG7pSBsb2FkaW5nXHJcbiAgICAgICAgICAgICAgICBjb25zdCBsb2FkaW5nSWQgPSBgI2JveC0ke2lkfWA7IC8vIGlkIGPhu6dhIGVkaXRvcjtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSBhY3Rpb24uY2xpY2soZSwge1xyXG4gICAgICAgICAgICAgICAgICBxbEtleSxcclxuICAgICAgICAgICAgICAgICAgZWxlbWVudCxcclxuICAgICAgICAgICAgICAgICAgY3Vyc29yUG9zaXRpb246IEpTT04ucGFyc2UoY3Vyc29yUG9zaXRpb24pLFxyXG4gICAgICAgICAgICAgICAgICBxdWlsbDogdGhpcy4jcXVpbGwsXHJcbiAgICAgICAgICAgICAgICAgIGFyZ3M6IHRoaXMuYXJnc1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmKGZ1bmMgaW5zdGFuY2VvZiBQcm9taXNlKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuI3F1aWxsLmVuYWJsZShmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RhcnQobG9hZGluZ0lkKTtcclxuICAgICAgICAgICAgICAgICAgZnVuYy5maW5hbGx5KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLiNxdWlsbC5lbmFibGUodHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKGxvYWRpbmdJZCk7XHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBpZiAodGhpcy5xdWlsbENvbmZpZy50b29sYmFyLmNvbnRhaW5lci50b1N0cmluZygpLmluY2x1ZGVzKCdjdXN0b21GaWxlJykpIHtcclxuICAgIC8vICAgdGhpcy50aW1lckxvYWRRdWlsbFRvb2xiYXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAvLyAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbi5xbC1jdXN0b21GaWxlJykpIHtcclxuICAgIC8vICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy50aW1lckxvYWRRdWlsbFRvb2xiYXIpO1xyXG4gICAgLy8gICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYnV0dG9uLnFsLWN1c3RvbUZpbGUnKS5pbm5lckhUTUwgPSB0aGlzLmN1c3RvbUJ1dHRvbkZpbGVTVkc7XHJcbiAgICAvLyAgICAgICBjb25zdCBjdXN0b21CdXR0b24gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdidXR0b24ucWwtY3VzdG9tRmlsZScpO1xyXG4gICAgLy8gICAgICAgaWYgKGN1c3RvbUJ1dHRvbi5nZXRBdHRyaWJ1dGUoJ2xpc3RlbmVyJykgIT09ICcxJykge1xyXG4gICAgLy8gICAgICAgICBjdXN0b21CdXR0b24uc2V0QXR0cmlidXRlKCdsaXN0ZW5lcicsICcxJyk7XHJcbiAgICAvLyAgICAgICAgIGN1c3RvbUJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuY3VzdG9tRmlsZUhhbmRsZXIpO1xyXG4gICAgLy8gICAgICAgfVxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgfSwgMTAwMCk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAvLyBjdXN0b21GaWxlSGFuZGxlciA9IChlKSA9PiB7XHJcbiAgLy8gICBjb25zdCBjdXN0b21CdXR0b24gPSBlLmN1cnJlbnRUYXJnZXQ7XHJcbiAgLy8gICBjb25zdCBxdWlsbFRvb2xiYXIgPSBjdXN0b21CdXR0b24uY2xvc2VzdCgnLnFsLWZvcm1hdHMnKS5jbG9zZXN0KCcucWwtdG9vbGJhcicpO1xyXG4gIC8vICAgY29uc3QgcXVpbGxCb3ggPSBxdWlsbFRvb2xiYXIuY2xvc2VzdCgnLnFsLWZvcm1hdHMnKVxyXG4gIC8vICAgbGV0IGZpbGVJbnB1dDogSFRNTElucHV0RWxlbWVudCA9IHF1aWxsVG9vbGJhci5xdWVyeVNlbGVjdG9yKCdpbnB1dC5xbC1jdXN0b21GaWxlW3R5cGU9ZmlsZV0nKTtcclxuICAvLyAgIGlmIChmaWxlSW5wdXQgPT0gbnVsbCkge1xyXG4gIC8vICAgICBmaWxlSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgQ29uc3RhbnRzLkZJTEUpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCdhY2NlcHQnLCAnKicpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuY2xhc3NMaXN0LmFkZCgncWwtY3VzdG9tRmlsZScpO1xyXG4gIC8vICAgICBmaWxlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4ge1xyXG4gIC8vICAgICAgIGNvbnN0IGZpbGVzID0gZmlsZUlucHV0LmZpbGVzO1xyXG4gIC8vICAgICAgIGlmICghZmlsZXMgfHwgIWZpbGVzLmxlbmd0aCkge1xyXG4gIC8vICAgICAgICAgcmV0dXJuO1xyXG4gIC8vICAgICAgIH1cclxuXHJcbiAgLy8gICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAvLyAgICAgICBmb3JtRGF0YS5hcHBlbmQoQ29uc3RhbnRzLkZJTEUsIGZpbGVzWzBdKTtcclxuICAvLyAgICAgICBsZXQgcmFuZ2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncXVpbGxSYW5nZScpO1xyXG4gIC8vICAgICAgIGlmIChyYW5nZSkge1xyXG4gIC8vICAgICAgICAgcmFuZ2UgPSBKU09OLnBhcnNlKHJhbmdlKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgdGhpcy5xdWlsbEV2ZW50LmVuYWJsZShmYWxzZSk7XHJcbiAgLy8gICAgICAgdGhpcy4jdXBsb2FkRmlsZShmb3JtRGF0YSwgdGhpcy5xdWlsbEV2ZW50LCByYW5nZSwgZmlsZUlucHV0LCBxdWlsbFRvb2xiYXIuY2xvc2VzdCgncXVpbGwtZWRpdG9yJykuaWQpO1xyXG4gIC8vICAgICB9KTtcclxuICAvLyAgICAgcXVpbGxUb29sYmFyLmFwcGVuZENoaWxkKGZpbGVJbnB1dCk7XHJcbiAgLy8gICB9XHJcbiAgLy8gICBmaWxlSW5wdXQuY2xpY2soKTtcclxuICAvLyB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuI3N1YnNjcmlwdGlvbi5hZGQodGhpcy5mb3JtQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWwpID0+IHtcclxuICAgICAgdGhpcy5tb2RlbENoYW5nZS5lbWl0KHZhbCk7XHJcbiAgICAgIHRoaXMuc2RDaGFuZ2UuZW1pdCh2YWwpO1xyXG4gICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLiNmb3JtPy5yZW1vdmVDb250cm9sKHRoaXMuI25hbWUpO1xyXG4gICAgdGhpcy4jc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICAjdXBkYXRlVmFsaWRhdG9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5jbGVhclZhbGlkYXRvcnMoKTtcclxuICAgIHRoaXMuZm9ybUNvbnRyb2wuY2xlYXJBc3luY1ZhbGlkYXRvcnMoKTtcclxuICAgIGNvbnN0IHZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW10gPSBbXTtcclxuICAgIGlmICh0aGlzLnJlcXVpcmVkKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLnJlcXVpcmVkKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm1pbmxlbmd0aCA+IDApIHtcclxuICAgICAgdmFsaWRhdG9ycy5wdXNoKFZhbGlkYXRvcnMubWluTGVuZ3RoKHRoaXMubWlubGVuZ3RoKSk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5tYXhsZW5ndGggPiAwKSB7XHJcbiAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm1heGxlbmd0aCkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHZhbGlkYXRvcnMpO1xyXG4gICAgdGhpcy5mb3JtQ29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcbiAgI3F1aWxsOiBRdWlsbDtcclxuICBlZGl0b3JJbml0ID0gKHF1aWxsOiBRdWlsbCkgPT4ge1xyXG4gICAgdGhpcy4jcXVpbGwgPSBxdWlsbDtcclxuICAgIHRoaXMucXVpbGxFdmVudCA9IHF1aWxsO1xyXG4gICAgLy8gY29uc3QgdHh0QXJlYSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RleHRhcmVhJyk7XHJcbiAgICAvLyB0eHRBcmVhLnN0eWxlLmNzc1RleHQgPVxyXG4gICAgLy8gICAnd2lkdGg6IDEwMCU7bWFyZ2luOiAwcHg7YmFja2dyb3VuZDogcmdiKDI5LCAyOSwgMjkpOycgK1xyXG4gICAgLy8gICAnYm94LXNpemluZzogYm9yZGVyLWJveDtjb2xvcjogcmdiKDIwNCwgMjA0LCAyMDQpOycgK1xyXG4gICAgLy8gICAnZm9udC1zaXplOiAxNXB4O291dGxpbmU6IG5vbmU7cGFkZGluZzogMjBweDsnICtcclxuICAgIC8vICAgJ2xpbmUtaGVpZ2h0OiAyNHB4O2ZvbnQtZmFtaWx5OiBDb25zb2xhcywgTWVubG8sIE1vbmFjbywgJnF1b3Q7Q291cmllciBOZXcmcXVvdDssIG1vbm9zcGFjZTsnICtcclxuICAgIC8vICAgJ3Bvc2l0aW9uOiBhYnNvbHV0ZTt0b3A6IDA7Ym90dG9tOiAwO2JvcmRlcjogbm9uZTtkaXNwbGF5Om5vbmUnO1xyXG5cclxuICAgIC8vIGNvbnN0IGh0bWxFZGl0b3IgPSBxdWlsbC5hZGRDb250YWluZXIoJ3FsLWN1c3RvbScpO1xyXG4gICAgLy8gaHRtbEVkaXRvci5hcHBlbmRDaGlsZCh0eHRBcmVhKTtcclxuXHJcbiAgICAvLyBjb25zdCBteUVkaXRvciA9IHF1aWxsLmNvbnRhaW5lcjtcclxuICAgIC8vIHF1aWxsLm9uKCd0ZXh0LWNoYW5nZScsIChkZWx0YSwgb2xkRGVsdGEsIHNvdXJjZSkgPT4ge1xyXG4gICAgLy8gICBjb25zdCBodG1sID0gbXlFZGl0b3IuY2hpbGRyZW5bMF0uaW5uZXJIVE1MO1xyXG4gICAgLy8gICB0eHRBcmVhLnZhbHVlID0gaHRtbDtcclxuICAgIC8vICAgLy8gaWYgKHF1aWxsLmdldExlbmd0aCgpID4gdGhpcy5tYXhsZW5ndGgpIHtcclxuICAgIC8vICAgLy8gICBxdWlsbC5kZWxldGVUZXh0KHRoaXMubWF4bGVuZ3RoLCBxdWlsbC5nZXRMZW5ndGgoKSk7XHJcbiAgICAvLyAgIC8vIH1cclxuICAgIC8vICAgLy8gdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShodG1sKTtcclxuICAgIC8vIH0pO1xyXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XHJcbiAgICB0aGlzLiNpbml0VXBsb2FkSW1hZ2UocXVpbGwpO1xyXG4gICAgLy8gdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgLy8gICBxdWlsbC5nZXRNb2R1bGUoJ3Rvb2xiYXInKS5hZGRIYW5kbGVyKCdpbWFnZScsIGZ1bmN0aW9uICgpIHtcclxuICAgIC8vICAgICBsZXQgZmlsZUlucHV0ID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQucWwtaW1hZ2VbdHlwZT1maWxlXScpO1xyXG5cclxuICAgIC8vICAgICBpZiAoZmlsZUlucHV0ID09IG51bGwpIHtcclxuICAgIC8vICAgICAgIGZpbGVJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XHJcbiAgICAvLyAgICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgQ29uc3RhbnRzLkZJTEUpO1xyXG4gICAgLy8gICAgICAgZmlsZUlucHV0LnNldEF0dHJpYnV0ZSgnYWNjZXB0JywgJ2ltYWdlL3BuZywgaW1hZ2UvZ2lmLCBpbWFnZS9qcGVnLCBpbWFnZS9ibXAsIGltYWdlL3gtaWNvbicpO1xyXG4gICAgLy8gICAgICAgZmlsZUlucHV0LmNsYXNzTGlzdC5hZGQoJ3FsLWltYWdlJyk7XHJcbiAgICAvLyAgICAgICBmaWxlSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgKCkgPT4ge1xyXG4gICAgLy8gICAgICAgICBjb25zdCBmaWxlcyA9IGZpbGVJbnB1dC5maWxlcztcclxuICAgIC8vICAgICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLnF1aWxsLmdldFNlbGVjdGlvbih0cnVlKTtcclxuICAgIC8vICAgICAgICAgaWYgKCFmaWxlcyB8fCAhZmlsZXMubGVuZ3RoKSB7XHJcbiAgICAvLyAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgLy8gICAgICAgICB9XHJcblxyXG4gICAgLy8gICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgLy8gICAgICAgICBmb3JtRGF0YS5hcHBlbmQoQ29uc3RhbnRzLkZJTEUsIGZpbGVzWzBdKTtcclxuXHJcbiAgICAvLyAgICAgICAgIHRoaXMucXVpbGwuZW5hYmxlKGZhbHNlKTtcclxuXHJcbiAgICAvLyAgICAgICAgIHNlbGYuI3VwbG9hZEltYWdlKGZvcm1EYXRhLCBxdWlsbCwgcmFuZ2UsIGZpbGVJbnB1dCk7XHJcbiAgICAvLyAgICAgICB9KTtcclxuICAgIC8vICAgICAgIHRoaXMuY29udGFpbmVyLmFwcGVuZENoaWxkKGZpbGVJbnB1dCk7XHJcbiAgICAvLyAgICAgfVxyXG4gICAgLy8gICAgIGZpbGVJbnB1dC5jbGljaygpO1xyXG4gICAgLy8gICB9KTtcclxuXHJcbiAgICAvLyB9KTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgI2luaXRVcGxvYWRJbWFnZSA9IChxdWlsbDogUXVpbGwpID0+IHtcclxuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICBxdWlsbC5nZXRNb2R1bGUoJ3Rvb2xiYXInKS5hZGRIYW5kbGVyKCdpbWFnZScsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBsZXQgZmlsZUlucHV0ID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvcignaW5wdXQucWwtaW1hZ2VbdHlwZT1maWxlXScpO1xyXG4gICAgICAgIGlmIChmaWxlSW5wdXQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgZmlsZUlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTtcclxuICAgICAgICAgIGZpbGVJbnB1dC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCBDb25zdGFudHMuRklMRSk7XHJcbiAgICAgICAgICBmaWxlSW5wdXQuc2V0QXR0cmlidXRlKCdhY2NlcHQnLCAnaW1hZ2UvcG5nLCBpbWFnZS9naWYsIGltYWdlL2pwZWcsIGltYWdlL2JtcCwgaW1hZ2UveC1pY29uJyk7XHJcbiAgICAgICAgICBmaWxlSW5wdXQuY2xhc3NMaXN0LmFkZCgncWwtaW1hZ2UnKTtcclxuICAgICAgICAgIGZpbGVJbnB1dC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gZmlsZUlucHV0LmZpbGVzO1xyXG4gICAgICAgICAgICBjb25zdCByYW5nZSA9IHRoaXMucXVpbGwuZ2V0U2VsZWN0aW9uKHRydWUpO1xyXG4gICAgICAgICAgICBpZiAoIWZpbGVzIHx8ICFmaWxlcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKENvbnN0YW50cy5GSUxFLCBmaWxlc1swXSk7XHJcbiAgICAgICAgICAgIHRoaXMucXVpbGwuZW5hYmxlKGZhbHNlKTtcclxuICAgICAgICAgICAgLy8gc2VsZi4jdXBsb2FkSW1hZ2UoZm9ybURhdGEsIHF1aWxsLCByYW5nZSwgZmlsZUlucHV0KTtcclxuICAgICAgICAgICAgc2VsZi5jb25maWd1cmF0aW9uPy51cGxvYWRJbWFnZShmb3JtRGF0YSwgc2VsZi5hcmdzKS50aGVuKHVybCA9PiB7XHJcbiAgICAgICAgICAgICAgc2VsZi5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcXVpbGwuZW5hYmxlKHRydWUpO1xyXG4gICAgICAgICAgICAgICAgLy8gcXVpbGwuZWRpdG9yLmluc2VydEVtYmVkKHJhbmdlLmluZGV4LCAnaW1hZ2UnLCByZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpO1xyXG4gICAgICAgICAgICAgICAgcXVpbGwuZ2V0TW9kdWxlKCdjbGlwYm9hcmQnKS5kYW5nZXJvdXNseVBhc3RlSFRNTChyYW5nZS5pbmRleCwgJzxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCInICsgKHVybCB8fCAnJylcclxuICAgICAgICAgICAgICAgICAgKyAnXCI+PGltZyBzcmM9XCInICsgKHVybCB8fCAnJykgKyAnXCIgYWx0PVwiYy1pbWFnZS1lZGl0b3ItcXVpbGxcIj48L2E+JywgJ3VzZXInKTtcclxuICAgICAgICAgICAgICAgIC8vIHF1aWxsLmluc2VydFRleHQoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBxdWlsbC5nZXRDb250ZW50cygpO1xyXG4gICAgICAgICAgICAgICAgcXVpbGwuc2V0Q29udGVudHMoY29udGVudCk7XHJcbiAgICAgICAgICAgICAgICBxdWlsbC5zZXRTZWxlY3Rpb24ocmFuZ2UuaW5kZXggKyAxLCAndXNlcicpO1xyXG4gICAgICAgICAgICAgICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5hcHBlbmRDaGlsZChmaWxlSW5wdXQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaWxlSW5wdXQuY2xpY2soKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbk1vZGVsQ2hhbmdlID0gKHZhbDogc3RyaW5nKSA9PiB7XHJcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKHZhbCk7XHJcbiAgICB0aGlzLm1vZGVsSFRNTCA9IHZhbDtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgb25DbGlja1Nob3dIdG1sRWRpdG9yID0gKCkgPT4ge1xyXG4gICAgdGhpcy5zaG93SHRtbEVkaXRvciA9ICF0aGlzLnNob3dIdG1sRWRpdG9yO1xyXG4gICAgdGhpcy5yZWYubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICAvLyAjdXBsb2FkSW1hZ2UgPSAoZm9ybURhdGEsIHF1aWxsLCByYW5nZSwgZmlsZUlucHV0KSA9PiB7XHJcbiAgLy8gICBpZiAoIXRoaXMudXJsVXBsb2FkSW1hZ2UpIHtcclxuICAvLyAgICAgdGhpcy51cmxVcGxvYWRJbWFnZSA9ICcvcGFydG5lci92Mi9tZXJjaGFuZGlzZS9maWxlL3VwbG9hZHVzZXJmaWxlJztcclxuICAvLyAgIH1cclxuICAvLyAgIC8vIHRoaXMuZG9tYWluID0gJ2h0dHBzOi8vYXBpLWNvbW1lcmNlLXFjLnZpbmlkLmRldic7XHJcbiAgLy8gICB0aGlzLnNkQXBpU2VydmljZS5wb3N0KHRoaXMudXJsVXBsb2FkSW1hZ2UsIGZvcm1EYXRhKS50aGVuKChyZXNwOiBhbnkpID0+IHtcclxuICAvLyAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gIC8vICAgICAgIHF1aWxsLmVuYWJsZSh0cnVlKTtcclxuICAvLyAgICAgICAvLyBxdWlsbC5lZGl0b3IuaW5zZXJ0RW1iZWQocmFuZ2UuaW5kZXgsICdpbWFnZScsIHJlc3A/LmRhdGE/LmltYWdlVXJsIHx8IHJlc3A/LmRhdGE/LnB1Ymxpc2hfdXJsIHx8IHJlc3A/LnVybCB8fCAnJyk7XHJcbiAgLy8gICAgICAgcXVpbGwuZ2V0TW9kdWxlKCdjbGlwYm9hcmQnKS5kYW5nZXJvdXNseVBhc3RlSFRNTChyYW5nZS5pbmRleCwgJzxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCInICsgKHJlc3A/LmRhdGE/LmltYWdlVXJsIHx8IHJlc3A/LmRhdGE/LnB1Ymxpc2hfdXJsIHx8IHJlc3A/LnVybCB8fCAnJylcclxuICAvLyAgICAgICAgICsgJ1wiPjxpbWcgc3JjPVwiJyArIChyZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpICsgJ1wiIGFsdD1cImMtaW1hZ2UtZWRpdG9yLXF1aWxsXCI+PC9hPicsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgLy8gcXVpbGwuaW5zZXJ0VGV4dCgpO1xyXG4gIC8vICAgICAgIGNvbnN0IGNvbnRlbnQgPSBxdWlsbC5nZXRDb250ZW50cygpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldENvbnRlbnRzKGNvbnRlbnQpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldFNlbGVjdGlvbihyYW5nZS5pbmRleCArIDEsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAvLyB9XHJcblxyXG4gIC8vICN1cGxvYWRGaWxlID0gKGZvcm1EYXRhLCBxdWlsbCwgcmFuZ2UsIGZpbGVJbnB1dCwgbG9hZGluZ0lEKSA9PiB7XHJcbiAgLy8gICBpZiAoIXRoaXMudXJsVXBsb2FkRmlsZSkge1xyXG4gIC8vICAgICB0aGlzLnVybFVwbG9hZEZpbGUgPSAnL3BhcnRuZXIvdjIvbWVyY2hhbmRpc2UvZmlsZS91cGxvYWR1c2VyZmlsZSc7XHJcbiAgLy8gICB9XHJcbiAgLy8gICAvLyB0aGlzLmRvbWFpbiA9ICdodHRwczovL2FwaS1jb21tZXJjZS1xYy52aW5pZC5kZXYnO1xyXG4gIC8vICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdGFydCgnI2JveC0nICsgbG9hZGluZ0lEKTtcclxuICAvLyAgIHRoaXMuc2RBcGlTZXJ2aWNlLnBvc3QodGhpcy51cmxVcGxvYWRGaWxlLCBmb3JtRGF0YSkudGhlbigocmVzcDogYW55KSA9PiB7XHJcbiAgLy8gICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAvLyAgICAgICBxdWlsbC5lbmFibGUodHJ1ZSk7XHJcbiAgLy8gICAgICAgLy8gcXVpbGwuZWRpdG9yLmluc2VydEVtYmVkKHJhbmdlLmluZGV4LCAnaW1hZ2UnLCByZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpO1xyXG4gIC8vICAgICAgIHF1aWxsLmdldE1vZHVsZSgnY2xpcGJvYXJkJykuZGFuZ2Vyb3VzbHlQYXN0ZUhUTUwocmFuZ2UuaW5kZXgsICc8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiJyArIChyZXNwPy5kYXRhPy5pbWFnZVVybCB8fCByZXNwPy5kYXRhPy5wdWJsaXNoX3VybCB8fCByZXNwPy51cmwgfHwgJycpXHJcbiAgLy8gICAgICAgICArICdcIj4nICsgKHJlc3A/LmRhdGE/LmltYWdlVXJsIHx8IHJlc3A/LmRhdGE/LnB1Ymxpc2hfdXJsIHx8IHJlc3A/LnVybCB8fCAnJykgKyAnPC9hPicsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgLy8gcXVpbGwuaW5zZXJ0VGV4dCgpO1xyXG4gIC8vICAgICAgIGNvbnN0IGNvbnRlbnQgPSBxdWlsbC5nZXRDb250ZW50cygpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldENvbnRlbnRzKGNvbnRlbnQpO1xyXG4gIC8vICAgICAgIHF1aWxsLnNldFNlbGVjdGlvbihyYW5nZS5pbmRleCArIDEsICd1c2VyJyk7XHJcbiAgLy8gICAgICAgZmlsZUlucHV0LnZhbHVlID0gJyc7XHJcbiAgLy8gICAgIH0pO1xyXG4gIC8vICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0b3AoJyNib3gtJyArIGxvYWRpbmdJRCk7XHJcbiAgLy8gICB9KS5jYXRjaCgoZXIpID0+IHtcclxuICAvLyAgICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdG9wKCcjYm94LScgKyBsb2FkaW5nSUQpO1xyXG4gIC8vICAgfSk7XHJcbiAgLy8gICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICAvLyB9XHJcblxyXG4gIG9uU2VsZWN0aW9uQ2hhbmdlZChlOiBTZWxlY3Rpb25DaGFuZ2UpIHtcclxuICAgIC8vIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdxdWlsbFJhbmdlJywgZS5yYW5nZSA/IEpTT04uc3RyaW5naWZ5KGUucmFuZ2UpIDogKGUub2xkUmFuZ2UgPyBKU09OLnN0cmluZ2lmeShlLm9sZFJhbmdlKSA6IG51bGwpKTtcclxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdxdWlsbFJhbmdlJywgZS5lZGl0b3IuZ2V0U2VsZWN0aW9uKCkgPyBKU09OLnN0cmluZ2lmeShlLmVkaXRvci5nZXRTZWxlY3Rpb24oKSkgOiBudWxsKTtcclxuICB9XHJcblxyXG4gIG9uQ29udGVudENoYW5nZWQoZTogQ29udGVudENoYW5nZSkge1xyXG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3F1aWxsUmFuZ2UnLCBKU09OLnN0cmluZ2lmeSh7XHJcbiAgICAgIGluZGV4OiAoZS5lZGl0b3IuZ2V0TGVuZ3RoKCkgPyBlLmVkaXRvci5nZXRMZW5ndGgoKSAtIDEgOiAwKSxcclxuICAgICAgbGVuZ3RoOiAwXHJcbiAgICB9KSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,3 +1,3 @@
1
1
  import { InjectionToken } from "@angular/core";
2
2
  export const EDITOR_CONFIG = new InjectionToken('editor.configuration');
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9lZGl0b3IvIiwic291cmNlcyI6WyJzcmMvbGliL2VkaXRvci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBbUIvQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQXVCLHNCQUFzQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCBRdWlsbCBmcm9tIFwicXVpbGxcIjtcclxuZXhwb3J0IGludGVyZmFjZSBTZEVkaXRvckFjdGlvbiB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgaWNvbjogc3RyaW5nO1xyXG4gIGNsaWNrOiAoZXZlbnQ6IGFueSwgYXJncz86IHtcclxuICAgIHF1aWxsOiBRdWlsbDtcclxuICAgIGN1cnNvclBvc2l0aW9uOiB7XHJcbiAgICAgIGluZGV4OiBudW1iZXI7XHJcbiAgICAgIGxlbmd0aDogbnVtYmVyO1xyXG4gICAgfSxcclxuICAgIGFyZ3M/OiBhbnlcclxuICB9KSA9PiB2b2lkXHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBJRWRpdG9yQ29uZmlndXJhdGlvbiB7XHJcbiAgdXBsb2FkSW1hZ2U/OiAoZm9ybURhdGE6IEZvcm1EYXRhLCBhcmdzPzogYW55KSA9PiBQcm9taXNlPHN0cmluZz47XHJcbiAgYWN0aW9ucz86IFNkRWRpdG9yQWN0aW9uW107XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBFRElUT1JfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPElFZGl0b3JDb25maWd1cmF0aW9uPignZWRpdG9yLmNvbmZpZ3VyYXRpb24nKTsiXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNV9vbmVtb3VudC9Eb2N1bWVudHMvbGliLWNvcmUtdWkvcHJvamVjdHMvc2QtY29yZS9lZGl0b3IvIiwic291cmNlcyI6WyJzcmMvbGliL2VkaXRvci5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBc0IvQyxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxjQUFjLENBQXVCLHNCQUFzQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCBRdWlsbCBmcm9tIFwicXVpbGxcIjtcclxuZXhwb3J0IGludGVyZmFjZSBTZEVkaXRvckFjdGlvbiB7XHJcbiAga2V5OiBzdHJpbmc7XHJcbiAgaWNvbjogc3RyaW5nO1xyXG4gIGNsaWNrOiAoZXZlbnQ6IGFueSwgYXJnczogU2RFZGl0b3JBY3Rpb25BcmdzKSA9PiB2b2lkIHwgUHJvbWlzZTx2b2lkPlxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgU2RFZGl0b3JBY3Rpb25BcmdzIHtcclxuICBxbEtleTogc3RyaW5nO1xyXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50O1xyXG4gIHF1aWxsOiBRdWlsbDtcclxuICBjdXJzb3JQb3NpdGlvbjoge1xyXG4gICAgaW5kZXg6IG51bWJlcjtcclxuICAgIGxlbmd0aDogbnVtYmVyO1xyXG4gIH0sXHJcbiAgYXJncz86IGFueVxyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgSUVkaXRvckNvbmZpZ3VyYXRpb24ge1xyXG4gIHVwbG9hZEltYWdlPzogKGZvcm1EYXRhOiBGb3JtRGF0YSwgYXJncz86IGFueSkgPT4gUHJvbWlzZTxzdHJpbmc+O1xyXG4gIGFjdGlvbnM/OiBTZEVkaXRvckFjdGlvbltdO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgRURJVE9SX0NPTkZJRyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxJRWRpdG9yQ29uZmlndXJhdGlvbj4oJ2VkaXRvci5jb25maWd1cmF0aW9uJyk7Il19
@@ -59,7 +59,7 @@ export class SdPopupExport {
59
59
  if (!column) {
60
60
  return first;
61
61
  }
62
- if (column.type !== 'children') {
62
+ if (column.type !== 'children' && column.type !== 'children-col') {
63
63
  return [...first, column];
64
64
  }
65
65
  const children = column.children.filter(e1 => e1.type !== 'image');
@@ -342,4 +342,4 @@ SdPopupExport.propDecorators = {
342
342
  _gridOption: [{ type: Input, args: ['gridOption',] }],
343
343
  configuration: [{ type: Input }]
344
344
  };
345
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAtZXhwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZ3JpZC1tYXRlcmlhbC8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy9wb3B1cC1leHBvcnQvcG9wdXAtZXhwb3J0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlCLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlySixPQUFPLEVBQ0wsZUFBZSxFQUNoQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDakIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ25CLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDO0FBSS9CLE9BQU8sRUFBZ0IsZUFBZSxFQUFrQixNQUFNLHlCQUF5QixDQUFDO0FBRXhGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVUzQyxNQUFNLE9BQU8sYUFBYTtJQTJGeEIsWUFDVSxHQUFzQixFQUN0QixjQUFnQyxFQUNoQyxhQUE4QixFQUM5QixhQUE4QixFQUM5QixnQkFBb0M7UUFKcEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBQ2hDLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQTlGOUMsWUFBTyxHQUFxQixFQUFFLENBQUM7UUFDL0IsV0FBTSxHQUFvQixFQUFFLENBQUM7UUFFN0IsbUJBQWMs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LFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBVztZQUMxQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7U0FDZixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUF3QkQsUUFBUTtJQUNSLENBQUM7SUFFRCxlQUFlO0lBQ2YsQ0FBQzs7OztZQTdHRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IseXpMQUE0QztnQkFFNUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUE5QmtGLGlCQUFpQjtZQVNsRyxnQkFBZ0I7WUFVSyxlQUFlO1lBZHBDLGVBQWU7WUFRZixrQkFBa0I7OztvQkF3QmpCLFNBQVMsU0FBQyxPQUFPO3lCQUNqQixTQUFTLFNBQUMsWUFBWTtxQkFRdEIsTUFBTTswQkFHTixLQUFLLFNBQUMsWUFBWTs0QkFLbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZE5vdGlmeVNlcnZpY2VcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL25vdGlmeSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIFNkTG9hZGluZ1NlcnZpY2VcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2xvYWRpbmcnO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZFRyYW5zbGF0ZVNlcnZpY2VcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL3RyYW5zbGF0ZSc7XHJcbmltcG9ydCBoYXNoIGZyb20gJ29iamVjdC1oYXNoJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0aW9uTGlzdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xyXG5pbXBvcnQgeyBTZEdyaWRNYXRlcmlhbE9wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9ncmlkLW9wdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFNkTW9kYWwgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL21vZGFsJztcclxuaW1wb3J0IHsgU2RFeHBvcnRGaWxlLCBTZEV4cG9ydFNlcnZpY2UsIFNkRXhwb3J0Q29sdW1uIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9leHBvcnQnO1xyXG5pbXBvcnQgeyBTZEdyb3VwRXhwb3J0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtZXhwb3J0Lm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTZEdyaWRDb25maWd1cmF0aW9uUmVzdWx0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgU2RHcmlkTWF0ZXJpYWxDb2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1jb2x1bW4ubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC1wb3B1cC1leHBvcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wb3B1cC1leHBvcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3BvcHVwLWV4cG9ydC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZFBvcHVwRXhwb3J0IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBncmlkT3B0aW9uOiBTZEdyaWRNYXRlcmlhbE9wdGlvbjtcclxuICBjb2x1bW5zOiBTZEV4cG9ydENvbHVtbltdID0gW107XHJcbiAgZ3JvdXBzOiBTZEdyb3VwRXhwb3J0W10gPSBbXTtcclxuICB0ZW1wbGF0ZU5hbWU6IHN0cmluZztcclxuICBlbmFibGVDcmVhdGluZyA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ21vZGFsJykgbW9kYWw6IFNkTW9kYWw7XHJcbiAgQFZpZXdDaGlsZCgnbGlzdEdyb3VwcycpIGxpc3RHcm91cHM6IE1hdFNlbGVjdGlvbkxpc3Q7XHJcblxyXG4gIHNlbGVjdGVkOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuXHJcbiAgfSA9IHt9O1xyXG4gIGZpbGVzOiBTZEV4cG9ydEZpbGVbXSA9IFtdO1xyXG4gIHNlbGVjdGVkR3JvdXA6IFNkR3JvdXBFeHBvcnQ7XHJcblxyXG4gIEBPdXRwdXQoKSBleHBvcnQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmlsZTogU2RFeHBvcnRGaWxlLCBjb2x1bW5zOiBTZEV4cG9ydENvbHVtbltdLCBpc0NTVj86IGJvb2xlYW4sIGlzUmF3PzogYm9vbGVhbiB9PigpO1xyXG4gIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuXHJcbiAgQElucHV0KCdncmlkT3B0aW9uJykgc2V0IF9ncmlkT3B0aW9uKG9wdGlvbjogU2RHcmlkTWF0ZXJpYWxPcHRpb24pIHtcclxuICAgIHRoaXMuZ3JpZE9wdGlvbiA9IG9wdGlvbjtcclxuICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuI2dldEV4cG9ydGFibGVDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmdyb3VwcyA9IHRoaXMuI2dldEV4cG9ydGFibGVHcm91cHMoKTtcclxuICB9XHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbjogU2RHcmlkQ29uZmlndXJhdGlvblJlc3VsdDtcclxuICBwcml2YXRlIGdldCBrZXkoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHByZWZpeCA9ICc5Mzg4OWU3OC1mOTcxLTRhMWQtOGM3My1mZTIzMjFhZjkyMzMnO1xyXG4gICAgaWYgKCF0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8ua2V5KSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGhhc2goe1xyXG4gICAgICBwcmVmaXgsXHJcbiAgICAgIGtleTogdGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/LmtleVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBncmlkQ29sdW1ucygpIHtcclxuICAgIGNvbnN0IGNvbHVtbnM6IFNkRXhwb3J0Q29sdW1uW10gPSBbXTtcclxuICAgIHRoaXMuZ3JpZE9wdGlvbi5jb2x1bW5zLmZpbHRlcihlID0+ICFlLmV4cG9ydD8uZGlzYWJsZWQpLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2NoaWxkcmVuJykge1xyXG4gICAgICAgIGNvbHVtbi5jaGlsZHJlbj8uZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZCkuZm9yRWFjaChjaGlsZENvbHVtbiA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hpbGRDb2x1bW4udHlwZSA9PT0gJ2ltYWdlJykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb2x1bW5zLnB1c2goY2hpbGRDb2x1bW4pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbi1jb2wnKSB7XHJcbiAgICAgICAgY29sdW1uLmNoaWxkcmVuPy5maWx0ZXIoZSA9PiAhZS5leHBvcnQ/LmRpc2FibGVkKS5mb3JFYWNoKGNoaWxkQ29sdW1uID0+IHtcclxuICAgICAgICAgIGlmIChjaGlsZENvbHVtbi50eXBlID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbHVtbnMucHVzaChjaGlsZENvbHVtbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbHVtbnMucHVzaChjb2x1bW4pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY29sdW1ucy5tYXAoZSA9PiAoe1xyXG4gICAgICBmaWVsZDogZS5maWVsZCxcclxuICAgICAgdGl0bGU6IGUudGl0bGUsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBlLmRlc2NyaXB0aW9uLFxyXG4gICAgICB3aWR0aDogZS53aWR0aFxyXG4gICAgfSkpO1xyXG4gIH1cclxuICBwcml2YXRlIGdldCBhZGRpdGlvbmFsQ29sdW1ucygpIHtcclxuICAgIHJldHVybiAodGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8uY29sdW1ucz8uZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZCkgfHwgW10pLm1hcChlID0+ICh7XHJcbiAgICAgIGZpZWxkOiBlLmZpZWxkLFxyXG4gICAgICB0aXRsZTogZS50aXRsZSxcclxuICAgICAgZGVzY3JpcHRpb246IGUuZGVzY3JpcHRpb24sXHJcbiAgICAgIHdpZHRoOiBlLndpZHRoXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAjZ2V0RXhwb3J0YWJsZUNvbHVtbnMgPSAoKTogU2RFeHBvcnRDb2x1bW5bXSA9PiB7XHJcbiAgICByZXR1cm4gWy4uLnRoaXMuZ3JpZENvbHVtbnMsIC4uLnRoaXMuYWRkaXRpb25hbENvbHVtbnNdO1xyXG4gIH1cclxuXHJcbiAgI2dldEV4cG9ydGFibGVHcm91cHMgPSAoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/Lmdyb3Vwcz8uZmlsdGVyKGUgPT4ge1xyXG4gICAgICBjb25zdCBwZXJtaXNzaW9uID0gZS5wZXJtaXNzaW9uO1xyXG4gICAgICBpZiAodHlwZW9mIChwZXJtaXNzaW9uKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIHJldHVybiBwZXJtaXNzaW9uKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHBlcm1pc3Npb247XHJcbiAgICB9KSB8fCBbXTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBsb2FkaW5nU2VydmljZTogU2RMb2FkaW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogU2RFeHBvcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFNkVHJhbnNsYXRlU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gIH1cclxuXHJcbiAgb3BlbiA9IGFzeW5jICgpID0+IHtcclxuICAgIGlmICghdGhpcy5rZXkpIHtcclxuICAgICAgdGhpcy5leHBvcnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmdyb3Vwcy5sZW5ndGggPT09IDEgJiYgdGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/LmhpZGVNeVRlbXBsYXRlcykge1xyXG4gICAgICB0aGlzLmxvYWRGaWxlcyh0aGlzLmdyb3Vwc1swXS5jb2RlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubG9hZEZpbGVzKG51bGwpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZCA9IHt9O1xyXG4gICAgdGhpcy5tb2RhbC5vcGVuKCk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAjZ2V0RXhwb3J0Q29sdW1ucyA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgY29uc3QgY29sdW1ucyA9IFsuLi50aGlzLmdyaWRDb2x1bW5zXTtcclxuICAgICAgY29uc3QgeyBmaXJzdENvbHVtbnMsIHNlY29uZENvbHVtbnMgfSA9IHRoaXMuY29uZmlndXJhdGlvbjtcclxuICAgICAgY29uc3QgZGlzcGxheUNvbHVtbnM6IFNkR3JpZE1hdGVyaWFsQ29sdW1uPGFueT5bXSA9IFsuLi5maXJzdENvbHVtbnMsIC4uLnNlY29uZENvbHVtbnNdLnJlZHVjZSgoZmlyc3QsIG5leHQpID0+IHtcclxuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdyaWRPcHRpb24uY29sdW1ucy5maW5kKGUgPT4gZS5maWVsZCA9PT0gbmV4dC5maWVsZCk7XHJcbiAgICAgICAgaWYgKCFjb2x1bW4pIHtcclxuICAgICAgICAgIHJldHVybiBmaXJzdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbHVtbi50eXBlICE9PSAnY2hpbGRyZW4nKSB7XHJcbiAgICAgICAgICByZXR1cm4gWy4uLmZpcnN0LCBjb2x1bW5dO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGNvbHVtbi5jaGlsZHJlbi5maWx0ZXIoZTEgPT4gZTEudHlwZSAhPT0gJ2ltYWdlJyk7XHJcbiAgICAgICAgcmV0dXJuIFsuLi5maXJzdCwgLi4uY2hpbGRyZW5dO1xyXG4gICAgICB9LCBbXSk7XHJcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBkaXNwbGF5Q29sdW1ucy5tYXAoZSA9PiAoe1xyXG4gICAgICAgIC4uLmUsXHJcbiAgICAgICAgZGF0YTogY29sdW1ucy5maW5kKGUxID0+IGUxLmZpZWxkID09PSBlLmZpZWxkKVxyXG4gICAgICB9KSkuZmlsdGVyKGUgPT4gISFlLmRhdGEpXHJcbiAgICAgICAgLm1hcChlID0+IGUuZGF0YSk7XHJcbiAgICAgIHJldHVybiBbLi4ucmVzdWx0cywgLi4udGhpcy5hZGRpdGlvbmFsQ29sdW1uc107XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5jb2x1bW5zO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgZXhwb3J0RGVmYXVsdCA9ICgpID0+IHtcclxuICAgIHRoaXMuZXhwb3J0LmVtaXQoe1xyXG4gICAgICBmaWxlOiBudWxsLFxyXG4gICAgICBjb2x1bW5zOiB0aGlzLiNnZXRFeHBvcnRDb2x1bW5zKCksXHJcbiAgICAgIGlzQ1NWOiBmYWxzZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRDU1YgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmV4cG9ydC5lbWl0KHtcclxuICAgICAgZmlsZTogbnVsbCxcclxuICAgICAgY29sdW1uczogdGhpcy4jZ2V0RXhwb3J0Q29sdW1ucygpLFxyXG4gICAgICBpc0NTVjogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBleHBvcnRSYXcgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmV4cG9ydC5lbWl0KHtcclxuICAgICAgZmlsZTogbnVsbCxcclxuICAgICAgY29sdW1uczogdGhpcy4jZ2V0RXhwb3J0Q29sdW1ucygpLFxyXG4gICAgICBpc1JhdzogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBsb2FkRmlsZXMgPSBhc3luYyAoZ3JvdXA6IHN0cmluZyA9IG51bGwpID0+IHtcclxuICAgIHRoaXMuc2VsZWN0ZWRHcm91cCA9IHRoaXMuZ3JvdXBzLmZpbmQoZSA9PiBlLmNvZGUgPT09IGdyb3VwKTtcclxuICAgIHRoaXMuZmlsZXMgPSBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZmlsZXNJbkZvbGRlcih7XHJcbiAgICAgIGtleTogdGhpcy5rZXksXHJcbiAgICAgIGdyb3VwXHJcbiAgICB9KTtcclxuICAgIHRoaXMucmVmLm1hcmtGb3JDaGVjaygpO1xyXG4gIH1cclxuXHJcbiAgI2luaXRUZW1wbGF0ZSA9IGFzeW5jIChmaWxlTmFtZT86IHN0cmluZykgPT4ge1xyXG4gICAgY29uc3Qgc2hlZXRzOiB7XHJcbiAgICAgIG5hbWU6IHN0cmluZyxcclxuICAgICAgaXRlbXM6IGFueVtdLFxyXG4gICAgICBmaWVsZHM6IHN0cmluZ1tdXHJcbiAgICB9W10gPSBbXTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5zaGVldHMpKSB7XHJcbiAgICAgIGZvciAoY29uc3Qgc2hlZXQgb2YgdGhpcy5ncmlkT3B0aW9uLmV4cG9ydC5zaGVldHMpIHtcclxuICAgICAgICBpZiAoc2hlZXQubmFtZSAmJiBzaGVldC5pdGVtcyAmJiBzaGVldC5maWVsZHMpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHNoZWV0Lml0ZW1zKSkge1xyXG4gICAgICAgICAgICBzaGVldHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogc2hlZXQubmFtZSxcclxuICAgICAgICAgICAgICBpdGVtczogc2hlZXQuaXRlbXMsXHJcbiAgICAgICAgICAgICAgZmllbGRzOiBzaGVldC5maWVsZHNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBzaGVldHMucHVzaCh7XHJcbiAgICAgICAgICAgICAgbmFtZTogc2hlZXQubmFtZSxcclxuICAgICAgICAgICAgICBpdGVtczogYXdhaXQgc2hlZXQuaXRlbXMoKSxcclxuICAgICAgICAgICAgICBmaWVsZHM6IHNoZWV0LmZpZWxkc1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UuZ2VuZXJhdGVUZW1wbGF0ZSh7XHJcbiAgICAgIGZpbGVOYW1lOiBmaWxlTmFtZSB8fCB0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8uZmlsZU5hbWUsXHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY29sdW1ucyxcclxuICAgICAgc2hlZXRzXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdlbmVyYXRlVGVtcGxhdGUgPSBhc3luYyAoKSA9PiB7XHJcbiAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0YXJ0KCk7XHJcbiAgICBhd2FpdCB0aGlzLiNpbml0VGVtcGxhdGUoKS5maW5hbGx5KHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RvcCk7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZUFuZFVwbG9hZFRlbXBsYXRlID0gYXN5bmMgKGZpbGVOYW1lPzogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCBzaGVldHM6IHtcclxuICAgICAgbmFtZTogc3RyaW5nLFxyXG4gICAgICBpdGVtczogYW55W10sXHJcbiAgICAgIGZpZWxkczogc3RyaW5nW11cclxuICAgIH1bXSA9IFtdO1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/LnNoZWV0cykpIHtcclxuICAgICAgZm9yIChjb25zdCBzaGVldCBvZiB0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8uc2hlZXRzKSB7XHJcbiAgICAgICAgaWYgKHNoZWV0Lm5hbWUgJiYgc2hlZXQuaXRlbXMgJiYgc2hlZXQuZmllbGRzKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzaGVldC5pdGVtcykpIHtcclxuICAgICAgICAgICAgc2hlZXRzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbXM6IHNoZWV0Lml0ZW1zLFxyXG4gICAgICAgICAgICAgIGZpZWxkczogc2hlZXQuZmllbGRzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2hlZXRzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbXM6IGF3YWl0IHNoZWV0Lml0ZW1zKCksXHJcbiAgICAgICAgICAgICAgZmllbGRzOiBzaGVldC5maWVsZHNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leHBvcnRTZXJ2aWNlLmdlbmVyYXRlVXBsb2FkVGVtcGxhdGUoe1xyXG4gICAgICBrZXk6IHRoaXMua2V5LFxyXG4gICAgICB0ZW1wbGF0ZToge1xyXG4gICAgICAgIGZpbGVOYW1lOiBmaWxlTmFtZSB8fCB0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8uZmlsZU5hbWUsXHJcbiAgICAgICAgY29sdW1uczogdGhpcy5jb2x1bW5zLmZpbHRlcihlID0+IHRoaXMuc2VsZWN0ZWRbZS5maWVsZF0pLFxyXG4gICAgICAgIHNoZWV0c1xyXG4gICAgICB9LFxyXG4gICAgICBncm91cDogdGhpcy5zZWxlY3RlZEdyb3VwPy5jb2RlXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uRXhwb3J0ID0gKGZpbGU6IFNkRXhwb3J0RmlsZSkgPT4ge1xyXG4gICAgdGhpcy5leHBvcnQuZW1pdCh7XHJcbiAgICAgIGZpbGUsXHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuY29sdW1uc1xyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICB1cGxvYWRUZW1wbGF0ZSA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IGZpbGUgPSBhd2FpdCB0aGlzLmV4cG9ydFNlcnZpY2UudXBsb2FkVGVtcGxhdGUoe1xyXG4gICAgICBrZXk6IHRoaXMua2V5LFxyXG4gICAgICBncm91cDogdGhpcy5zZWxlY3RlZEdyb3VwPy5jb2RlLFxyXG4gICAgICB2YWxpZGF0b3I6IHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py52YWxpZGF0b3JzXHJcbiAgICB9KTtcclxuICAgIGlmIChmaWxlKSB7XHJcbiAgICAgIHRoaXMuZmlsZXMgPSBbLi4udGhpcy5maWxlcywgZmlsZV07XHJcbiAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZUZpbGUgPSAoZmlsZTogU2RFeHBvcnRGaWxlKSA9PiB7XHJcbiAgICB0aGlzLm5vdGlmeVNlcnZpY2UuY29uZmlybSh0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudHJhbnNsYXRlKCdSZW1vdmUgdGVtcGxhdGUnKSkudGhlbigoKSA9PiB7XHJcbiAgICAgIHRoaXMuZXhwb3J0U2VydmljZS5yZW1vdmVGaWxlKHtcclxuICAgICAgICBrZXk6IHRoaXMua2V5LFxyXG4gICAgICAgIGZpbGVOYW1lOiBmaWxlLmZpbGVOYW1lLFxyXG4gICAgICAgIGdyb3VwOiB0aGlzLnNlbGVjdGVkR3JvdXA/LmNvZGUgfHwgbnVsbFxyXG4gICAgICB9KTtcclxuICAgICAgY29uc3QgaWR4ID0gdGhpcy5maWxlcy5pbmRleE9mKGZpbGUpO1xyXG4gICAgICB0aGlzLmZpbGVzLnNwbGljZShpZHgsIDEpO1xyXG4gICAgICB0aGlzLmZpbGVzID0gWy4uLnRoaXMuZmlsZXNdO1xyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZVRlbXBsYXRlID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgY29uc3QgeyB0cmFuc2xhdGUgfSA9IHRoaXMudHJhbnNsYXRlU2VydmljZTtcclxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xyXG4gICAgICB0aGlzLmZvcm0ubWFya0FsbEFzVG91Y2hlZCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuY29sdW1ucy5zb21lKGUgPT4gdGhpcy5zZWxlY3RlZFtlLmZpZWxkXSkpIHtcclxuICAgICAgdGhpcy5ub3RpZnlTZXJ2aWNlLm5vdGlmeS53YXJuaW5nKHRyYW5zbGF0ZSgnUGxlYXNlIHNlbGVjdCBjb2x1bW5zJykpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0YXJ0KCk7XHJcbiAgICBjb25zdCBmaWxlTmFtZSA9IHRoaXMudGVtcGxhdGVOYW1lICsgJy54bHN4JztcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8udmFsaWRhdG9ycz8uKGZpbGVOYW1lKSkge1xyXG4gICAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyh0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8udmFsaWRhdG9ycyhmaWxlTmFtZSkpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmdlbmVyYXRlQW5kVXBsb2FkVGVtcGxhdGUoZmlsZU5hbWUpO1xyXG4gICAgICBpZiAocmVzdWx0Py5maWxlUGF0aCkge1xyXG4gICAgICAgIGNvbnN0IGZpbGU6IFNkRXhwb3J0RmlsZSA9IHtcclxuICAgICAgICAgIGZpbGVQYXRoOiByZXN1bHQuZmlsZVBhdGgsXHJcbiAgICAgICAgICBmaWxlTmFtZTogcmVzdWx0LmZpbGVOYW1lXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLm9uRXhwb3J0KGZpbGUpO1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVOYW1lID0gbnVsbDtcclxuICAgICAgICB0aGlzLmVuYWJsZUNyZWF0aW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5maWxlcyA9IFsuLi50aGlzLmZpbGVzLCBmaWxlXTtcclxuICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMubG9hZGluZ1NlcnZpY2Uuc3RvcCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VHcm91cCA9ICgpID0+IHtcclxuICAgIHRoaXMubG9hZEZpbGVzKHRoaXMubGlzdEdyb3Vwcz8uc2VsZWN0ZWRPcHRpb25zPy5zZWxlY3RlZFswXT8udmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdG9yVGVtcGxhdGVOYW1lID0gKHZhbDogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCB7IHRyYW5zbGF0ZSB9ID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlO1xyXG4gICAgY29uc3QgcmVnZXggPSAvXltBLVphLXowLTkgX10qW0EtWmEtejAtOV1bQS1aYS16MC05IF9dKiQvO1xyXG4gICAgaWYgKCF2YWwpIHtcclxuICAgICAgcmV0dXJuIHRyYW5zbGF0ZSgnUGxlYXNlIGVudGVyIHlvdXIgdGVtcGxhdGUgbmFtZScpO1xyXG4gICAgfVxyXG4gICAgaWYgKHZhbC5sZW5ndGggPiA1MCkge1xyXG4gICAgICByZXR1cm4gdHJhbnNsYXRlKCdUZW1wbGF0ZSBuYW1lIGlzIHRvbyBsb25nJyk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXJlZ2V4LnRlc3QodmFsKSkge1xyXG4gICAgICByZXR1cm4gdHJhbnNsYXRlKCdUZW1wbGF0ZSBuYW1lIG9ubHkgY29udGFpbnMgbGV0dGVycywgbnVtYmVycyBhbmQgc3BhY2VzJyk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbn1cclxuIl19
345
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wdXAtZXhwb3J0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJDOi9Vc2Vycy9uZ2hpYXR0MTVfb25lbW91bnQvRG9jdW1lbnRzL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvZ3JpZC1tYXRlcmlhbC8iLCJzb3VyY2VzIjpbInNyYy9saWIvY29tcG9uZW50cy9wb3B1cC1leHBvcnQvcG9wdXAtZXhwb3J0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlCLFNBQVMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUlySixPQUFPLEVBQ0wsZUFBZSxFQUNoQixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFDTCxnQkFBZ0IsRUFDakIsTUFBTSwwQkFBMEIsQ0FBQztBQUVsQyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ25CLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxJQUFJLE1BQU0sYUFBYSxDQUFDO0FBSS9CLE9BQU8sRUFBZ0IsZUFBZSxFQUFrQixNQUFNLHlCQUF5QixDQUFDO0FBRXhGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQVUzQyxNQUFNLE9BQU8sYUFBYTtJQTJGeEIsWUFDVSxHQUFzQixFQUN0QixjQUFnQyxFQUNoQyxhQUE4QixFQUM5QixhQUE4QixFQUM5QixnQkFBb0M7UUFKcEMsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBQ2hDLGtCQUFhLEdBQWIsYUFBYSxDQUFpQjtRQUM5QixrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFDOUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQTlGOUMsWUFBTyxHQUFxQixFQUFFLENBQUM7UUFDL0IsV0FBTSxHQUFvQixFQUFFLENBQUM7UUFFN0IsbUJBQWMs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LEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSztZQUNkLFdBQVcsRUFBRSxDQUFDLENBQUMsV0FBVztZQUMxQixLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUs7U0FDZixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUF3QkQsUUFBUTtJQUNSLENBQUM7SUFFRCxlQUFlO0lBQ2YsQ0FBQzs7OztZQTdHRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IseXpMQUE0QztnQkFFNUMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07O2FBQ2hEOzs7WUE5QmtGLGlCQUFpQjtZQVNsRyxnQkFBZ0I7WUFVSyxlQUFlO1lBZHBDLGVBQWU7WUFRZixrQkFBa0I7OztvQkF3QmpCLFNBQVMsU0FBQyxPQUFPO3lCQUNqQixTQUFTLFNBQUMsWUFBWTtxQkFRdEIsTUFBTTswQkFHTixLQUFLLFNBQUMsWUFBWTs0QkFLbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBWaWV3Q2hpbGQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZE5vdGlmeVNlcnZpY2VcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL25vdGlmeSc7XHJcblxyXG5pbXBvcnQge1xyXG4gIFNkTG9hZGluZ1NlcnZpY2VcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL2xvYWRpbmcnO1xyXG5cclxuaW1wb3J0IHtcclxuICBTZFRyYW5zbGF0ZVNlcnZpY2VcclxufSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL3RyYW5zbGF0ZSc7XHJcbmltcG9ydCBoYXNoIGZyb20gJ29iamVjdC1oYXNoJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0aW9uTGlzdCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2xpc3QnO1xyXG5pbXBvcnQgeyBTZEdyaWRNYXRlcmlhbE9wdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9ncmlkLW9wdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IFNkTW9kYWwgfSBmcm9tICdAc2QtYW5ndWxhci9jb3JlL21vZGFsJztcclxuaW1wb3J0IHsgU2RFeHBvcnRGaWxlLCBTZEV4cG9ydFNlcnZpY2UsIFNkRXhwb3J0Q29sdW1uIH0gZnJvbSAnQHNkLWFuZ3VsYXIvY29yZS9leHBvcnQnO1xyXG5pbXBvcnQgeyBTZEdyb3VwRXhwb3J0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtZXhwb3J0Lm1vZGVsJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTZEdyaWRDb25maWd1cmF0aW9uUmVzdWx0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyaWQtY29uZmlnLm1vZGVsJztcclxuaW1wb3J0IHsgU2RHcmlkTWF0ZXJpYWxDb2x1bW4gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JpZC1jb2x1bW4ubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdzZC1wb3B1cC1leHBvcnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wb3B1cC1leHBvcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3BvcHVwLWV4cG9ydC5jb21wb25lbnQuc2NzcyddLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZFBvcHVwRXhwb3J0IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcclxuICBncmlkT3B0aW9uOiBTZEdyaWRNYXRlcmlhbE9wdGlvbjtcclxuICBjb2x1bW5zOiBTZEV4cG9ydENvbHVtbltdID0gW107XHJcbiAgZ3JvdXBzOiBTZEdyb3VwRXhwb3J0W10gPSBbXTtcclxuICB0ZW1wbGF0ZU5hbWU6IHN0cmluZztcclxuICBlbmFibGVDcmVhdGluZyA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ21vZGFsJykgbW9kYWw6IFNkTW9kYWw7XHJcbiAgQFZpZXdDaGlsZCgnbGlzdEdyb3VwcycpIGxpc3RHcm91cHM6IE1hdFNlbGVjdGlvbkxpc3Q7XHJcblxyXG4gIHNlbGVjdGVkOiB7XHJcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuXHJcbiAgfSA9IHt9O1xyXG4gIGZpbGVzOiBTZEV4cG9ydEZpbGVbXSA9IFtdO1xyXG4gIHNlbGVjdGVkR3JvdXA6IFNkR3JvdXBFeHBvcnQ7XHJcblxyXG4gIEBPdXRwdXQoKSBleHBvcnQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmlsZTogU2RFeHBvcnRGaWxlLCBjb2x1bW5zOiBTZEV4cG9ydENvbHVtbltdLCBpc0NTVj86IGJvb2xlYW4sIGlzUmF3PzogYm9vbGVhbiB9PigpO1xyXG4gIGZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuXHJcbiAgQElucHV0KCdncmlkT3B0aW9uJykgc2V0IF9ncmlkT3B0aW9uKG9wdGlvbjogU2RHcmlkTWF0ZXJpYWxPcHRpb24pIHtcclxuICAgIHRoaXMuZ3JpZE9wdGlvbiA9IG9wdGlvbjtcclxuICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuI2dldEV4cG9ydGFibGVDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmdyb3VwcyA9IHRoaXMuI2dldEV4cG9ydGFibGVHcm91cHMoKTtcclxuICB9XHJcbiAgQElucHV0KCkgY29uZmlndXJhdGlvbjogU2RHcmlkQ29uZmlndXJhdGlvblJlc3VsdDtcclxuICBwcml2YXRlIGdldCBrZXkoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHByZWZpeCA9ICc5Mzg4OWU3OC1mOTcxLTRhMWQtOGM3My1mZTIzMjFhZjkyMzMnO1xyXG4gICAgaWYgKCF0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8ua2V5KSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGhhc2goe1xyXG4gICAgICBwcmVmaXgsXHJcbiAgICAgIGtleTogdGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/LmtleVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBncmlkQ29sdW1ucygpIHtcclxuICAgIGNvbnN0IGNvbHVtbnM6IFNkRXhwb3J0Q29sdW1uW10gPSBbXTtcclxuICAgIHRoaXMuZ3JpZE9wdGlvbi5jb2x1bW5zLmZpbHRlcihlID0+ICFlLmV4cG9ydD8uZGlzYWJsZWQpLmZvckVhY2goY29sdW1uID0+IHtcclxuICAgICAgaWYgKGNvbHVtbi50eXBlID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChjb2x1bW4udHlwZSA9PT0gJ2NoaWxkcmVuJykge1xyXG4gICAgICAgIGNvbHVtbi5jaGlsZHJlbj8uZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZCkuZm9yRWFjaChjaGlsZENvbHVtbiA9PiB7XHJcbiAgICAgICAgICBpZiAoY2hpbGRDb2x1bW4udHlwZSA9PT0gJ2ltYWdlJykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb2x1bW5zLnB1c2goY2hpbGRDb2x1bW4pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sdW1uLnR5cGUgPT09ICdjaGlsZHJlbi1jb2wnKSB7XHJcbiAgICAgICAgY29sdW1uLmNoaWxkcmVuPy5maWx0ZXIoZSA9PiAhZS5leHBvcnQ/LmRpc2FibGVkKS5mb3JFYWNoKGNoaWxkQ29sdW1uID0+IHtcclxuICAgICAgICAgIGlmIChjaGlsZENvbHVtbi50eXBlID09PSAnaW1hZ2UnKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbHVtbnMucHVzaChjaGlsZENvbHVtbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbHVtbnMucHVzaChjb2x1bW4pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY29sdW1ucy5tYXAoZSA9PiAoe1xyXG4gICAgICBmaWVsZDogZS5maWVsZCxcclxuICAgICAgdGl0bGU6IGUudGl0bGUsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiBlLmRlc2NyaXB0aW9uLFxyXG4gICAgICB3aWR0aDogZS53aWR0aFxyXG4gICAgfSkpO1xyXG4gIH1cclxuICBwcml2YXRlIGdldCBhZGRpdGlvbmFsQ29sdW1ucygpIHtcclxuICAgIHJldHVybiAodGhpcy5ncmlkT3B0aW9uLmV4cG9ydD8uY29sdW1ucz8uZmlsdGVyKGUgPT4gIWUuZXhwb3J0Py5kaXNhYmxlZCkgfHwgW10pLm1hcChlID0+ICh7XHJcbiAgICAgIGZpZWxkOiBlLmZpZWxkLFxyXG4gICAgICB0aXRsZTogZS50aXRsZSxcclxuICAgICAgZGVzY3JpcHRpb246IGUuZGVzY3JpcHRpb24sXHJcbiAgICAgIHdpZHRoOiBlLndpZHRoXHJcbiAgICB9KSk7XHJcbiAgfVxyXG5cclxuICAjZ2V0RXhwb3J0YWJsZUNvbHVtbnMgPSAoKTogU2RFeHBvcnRDb2x1bW5bXSA9PiB7XHJcbiAgICByZXR1cm4gWy4uLnRoaXMuZ3JpZENvbHVtbnMsIC4uLnRoaXMuYWRkaXRpb25hbENvbHVtbnNdO1xyXG4gIH1cclxuXHJcbiAgI2dldEV4cG9ydGFibGVHcm91cHMgPSAoKSA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/Lmdyb3Vwcz8uZmlsdGVyKGUgPT4ge1xyXG4gICAgICBjb25zdCBwZXJtaXNzaW9uID0gZS5wZXJtaXNzaW9uO1xyXG4gICAgICBpZiAodHlwZW9mIChwZXJtaXNzaW9uKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIHJldHVybiBwZXJtaXNzaW9uKCk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHBlcm1pc3Npb247XHJcbiAgICB9KSB8fCBbXTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBsb2FkaW5nU2VydmljZTogU2RMb2FkaW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogU2RFeHBvcnRTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBub3RpZnlTZXJ2aWNlOiBTZE5vdGlmeVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFNkVHJhbnNsYXRlU2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gIH1cclxuXHJcbiAgb3BlbiA9IGFzeW5jICgpID0+IHtcclxuICAgIGlmICghdGhpcy5rZXkpIHtcclxuICAgICAgdGhpcy5leHBvcnREZWZhdWx0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmdyb3Vwcy5sZW5ndGggPT09IDEgJiYgdGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/LmhpZGVNeVRlbXBsYXRlcykge1xyXG4gICAgICB0aGlzLmxvYWRGaWxlcyh0aGlzLmdyb3Vwc1swXS5jb2RlKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubG9hZEZpbGVzKG51bGwpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZWxlY3RlZCA9IHt9O1xyXG4gICAgdGhpcy5tb2RhbC5vcGVuKCk7XHJcbiAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG5cclxuICAjZ2V0RXhwb3J0Q29sdW1ucyA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLmNvbmZpZ3VyYXRpb24pIHtcclxuICAgICAgY29uc3QgY29sdW1ucyA9IFsuLi50aGlzLmdyaWRDb2x1bW5zXTtcclxuICAgICAgY29uc3QgeyBmaXJzdENvbHVtbnMsIHNlY29uZENvbHVtbnMgfSA9IHRoaXMuY29uZmlndXJhdGlvbjtcclxuICAgICAgY29uc3QgZGlzcGxheUNvbHVtbnM6IFNkR3JpZE1hdGVyaWFsQ29sdW1uPGFueT5bXSA9IFsuLi5maXJzdENvbHVtbnMsIC4uLnNlY29uZENvbHVtbnNdLnJlZHVjZSgoZmlyc3QsIG5leHQpID0+IHtcclxuICAgICAgICBjb25zdCBjb2x1bW4gPSB0aGlzLmdyaWRPcHRpb24uY29sdW1ucy5maW5kKGUgPT4gZS5maWVsZCA9PT0gbmV4dC5maWVsZCk7XHJcbiAgICAgICAgaWYgKCFjb2x1bW4pIHtcclxuICAgICAgICAgIHJldHVybiBmaXJzdDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNvbHVtbi50eXBlICE9PSAnY2hpbGRyZW4nICYmIGNvbHVtbi50eXBlICE9PSAnY2hpbGRyZW4tY29sJykge1xyXG4gICAgICAgICAgcmV0dXJuIFsuLi5maXJzdCwgY29sdW1uXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSBjb2x1bW4uY2hpbGRyZW4uZmlsdGVyKGUxID0+IGUxLnR5cGUgIT09ICdpbWFnZScpO1xyXG4gICAgICAgIHJldHVybiBbLi4uZmlyc3QsIC4uLmNoaWxkcmVuXTtcclxuICAgICAgfSwgW10pO1xyXG4gICAgICBjb25zdCByZXN1bHRzID0gZGlzcGxheUNvbHVtbnMubWFwKGUgPT4gKHtcclxuICAgICAgICAuLi5lLFxyXG4gICAgICAgIGRhdGE6IGNvbHVtbnMuZmluZChlMSA9PiBlMS5maWVsZCA9PT0gZS5maWVsZClcclxuICAgICAgfSkpLmZpbHRlcihlID0+ICEhZS5kYXRhKVxyXG4gICAgICAgIC5tYXAoZSA9PiBlLmRhdGEpO1xyXG4gICAgICByZXR1cm4gWy4uLnJlc3VsdHMsIC4uLnRoaXMuYWRkaXRpb25hbENvbHVtbnNdO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29sdW1ucztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGV4cG9ydERlZmF1bHQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmV4cG9ydC5lbWl0KHtcclxuICAgICAgZmlsZTogbnVsbCxcclxuICAgICAgY29sdW1uczogdGhpcy4jZ2V0RXhwb3J0Q29sdW1ucygpLFxyXG4gICAgICBpc0NTVjogZmFsc2VcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0Q1NWID0gKCkgPT4ge1xyXG4gICAgdGhpcy5leHBvcnQuZW1pdCh7XHJcbiAgICAgIGZpbGU6IG51bGwsXHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuI2dldEV4cG9ydENvbHVtbnMoKSxcclxuICAgICAgaXNDU1Y6IHRydWVcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZXhwb3J0UmF3ID0gKCkgPT4ge1xyXG4gICAgdGhpcy5leHBvcnQuZW1pdCh7XHJcbiAgICAgIGZpbGU6IG51bGwsXHJcbiAgICAgIGNvbHVtbnM6IHRoaXMuI2dldEV4cG9ydENvbHVtbnMoKSxcclxuICAgICAgaXNSYXc6IHRydWVcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZEZpbGVzID0gYXN5bmMgKGdyb3VwOiBzdHJpbmcgPSBudWxsKSA9PiB7XHJcbiAgICB0aGlzLnNlbGVjdGVkR3JvdXAgPSB0aGlzLmdyb3Vwcy5maW5kKGUgPT4gZS5jb2RlID09PSBncm91cCk7XHJcbiAgICB0aGlzLmZpbGVzID0gYXdhaXQgdGhpcy5leHBvcnRTZXJ2aWNlLmZpbGVzSW5Gb2xkZXIoe1xyXG4gICAgICBrZXk6IHRoaXMua2V5LFxyXG4gICAgICBncm91cFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnJlZi5tYXJrRm9yQ2hlY2soKTtcclxuICB9XHJcblxyXG4gICNpbml0VGVtcGxhdGUgPSBhc3luYyAoZmlsZU5hbWU/OiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IHNoZWV0czoge1xyXG4gICAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICAgIGl0ZW1zOiBhbnlbXSxcclxuICAgICAgZmllbGRzOiBzdHJpbmdbXVxyXG4gICAgfVtdID0gW107XHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8uc2hlZXRzKSkge1xyXG4gICAgICBmb3IgKGNvbnN0IHNoZWV0IG9mIHRoaXMuZ3JpZE9wdGlvbi5leHBvcnQuc2hlZXRzKSB7XHJcbiAgICAgICAgaWYgKHNoZWV0Lm5hbWUgJiYgc2hlZXQuaXRlbXMgJiYgc2hlZXQuZmllbGRzKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzaGVldC5pdGVtcykpIHtcclxuICAgICAgICAgICAgc2hlZXRzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbXM6IHNoZWV0Lml0ZW1zLFxyXG4gICAgICAgICAgICAgIGZpZWxkczogc2hlZXQuZmllbGRzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgc2hlZXRzLnB1c2goe1xyXG4gICAgICAgICAgICAgIG5hbWU6IHNoZWV0Lm5hbWUsXHJcbiAgICAgICAgICAgICAgaXRlbXM6IGF3YWl0IHNoZWV0Lml0ZW1zKCksXHJcbiAgICAgICAgICAgICAgZmllbGRzOiBzaGVldC5maWVsZHNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leHBvcnRTZXJ2aWNlLmdlbmVyYXRlVGVtcGxhdGUoe1xyXG4gICAgICBmaWxlTmFtZTogZmlsZU5hbWUgfHwgdGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/LmZpbGVOYW1lLFxyXG4gICAgICBjb2x1bW5zOiB0aGlzLmNvbHVtbnMsXHJcbiAgICAgIHNoZWV0c1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZW5lcmF0ZVRlbXBsYXRlID0gYXN5bmMgKCkgPT4ge1xyXG4gICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdGFydCgpO1xyXG4gICAgYXdhaXQgdGhpcy4jaW5pdFRlbXBsYXRlKCkuZmluYWxseSh0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0b3ApO1xyXG4gIH1cclxuXHJcbiAgZ2VuZXJhdGVBbmRVcGxvYWRUZW1wbGF0ZSA9IGFzeW5jIChmaWxlTmFtZT86IHN0cmluZykgPT4ge1xyXG4gICAgY29uc3Qgc2hlZXRzOiB7XHJcbiAgICAgIG5hbWU6IHN0cmluZyxcclxuICAgICAgaXRlbXM6IGFueVtdLFxyXG4gICAgICBmaWVsZHM6IHN0cmluZ1tdXHJcbiAgICB9W10gPSBbXTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuZ3JpZE9wdGlvbj8uZXhwb3J0Py5zaGVldHMpKSB7XHJcbiAgICAgIGZvciAoY29uc3Qgc2hlZXQgb2YgdGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/LnNoZWV0cykge1xyXG4gICAgICAgIGlmIChzaGVldC5uYW1lICYmIHNoZWV0Lml0ZW1zICYmIHNoZWV0LmZpZWxkcykge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoc2hlZXQuaXRlbXMpKSB7XHJcbiAgICAgICAgICAgIHNoZWV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiBzaGVldC5uYW1lLFxyXG4gICAgICAgICAgICAgIGl0ZW1zOiBzaGVldC5pdGVtcyxcclxuICAgICAgICAgICAgICBmaWVsZHM6IHNoZWV0LmZpZWxkc1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHNoZWV0cy5wdXNoKHtcclxuICAgICAgICAgICAgICBuYW1lOiBzaGVldC5uYW1lLFxyXG4gICAgICAgICAgICAgIGl0ZW1zOiBhd2FpdCBzaGVldC5pdGVtcygpLFxyXG4gICAgICAgICAgICAgIGZpZWxkczogc2hlZXQuZmllbGRzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhwb3J0U2VydmljZS5nZW5lcmF0ZVVwbG9hZFRlbXBsYXRlKHtcclxuICAgICAga2V5OiB0aGlzLmtleSxcclxuICAgICAgdGVtcGxhdGU6IHtcclxuICAgICAgICBmaWxlTmFtZTogZmlsZU5hbWUgfHwgdGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/LmZpbGVOYW1lLFxyXG4gICAgICAgIGNvbHVtbnM6IHRoaXMuY29sdW1ucy5maWx0ZXIoZSA9PiB0aGlzLnNlbGVjdGVkW2UuZmllbGRdKSxcclxuICAgICAgICBzaGVldHNcclxuICAgICAgfSxcclxuICAgICAgZ3JvdXA6IHRoaXMuc2VsZWN0ZWRHcm91cD8uY29kZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkV4cG9ydCA9IChmaWxlOiBTZEV4cG9ydEZpbGUpID0+IHtcclxuICAgIHRoaXMuZXhwb3J0LmVtaXQoe1xyXG4gICAgICBmaWxlLFxyXG4gICAgICBjb2x1bW5zOiB0aGlzLmNvbHVtbnNcclxuICAgIH0pO1xyXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgdXBsb2FkVGVtcGxhdGUgPSBhc3luYyAoKSA9PiB7XHJcbiAgICBjb25zdCBmaWxlID0gYXdhaXQgdGhpcy5leHBvcnRTZXJ2aWNlLnVwbG9hZFRlbXBsYXRlKHtcclxuICAgICAga2V5OiB0aGlzLmtleSxcclxuICAgICAgZ3JvdXA6IHRoaXMuc2VsZWN0ZWRHcm91cD8uY29kZSxcclxuICAgICAgdmFsaWRhdG9yOiB0aGlzLmdyaWRPcHRpb24/LmV4cG9ydD8udmFsaWRhdG9yc1xyXG4gICAgfSk7XHJcbiAgICBpZiAoZmlsZSkge1xyXG4gICAgICB0aGlzLmZpbGVzID0gWy4uLnRoaXMuZmlsZXMsIGZpbGVdO1xyXG4gICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW1vdmVGaWxlID0gKGZpbGU6IFNkRXhwb3J0RmlsZSkgPT4ge1xyXG4gICAgdGhpcy5ub3RpZnlTZXJ2aWNlLmNvbmZpcm0odGhpcy50cmFuc2xhdGVTZXJ2aWNlLnRyYW5zbGF0ZSgnUmVtb3ZlIHRlbXBsYXRlJykpLnRoZW4oKCkgPT4ge1xyXG4gICAgICB0aGlzLmV4cG9ydFNlcnZpY2UucmVtb3ZlRmlsZSh7XHJcbiAgICAgICAga2V5OiB0aGlzLmtleSxcclxuICAgICAgICBmaWxlTmFtZTogZmlsZS5maWxlTmFtZSxcclxuICAgICAgICBncm91cDogdGhpcy5zZWxlY3RlZEdyb3VwPy5jb2RlIHx8IG51bGxcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IGlkeCA9IHRoaXMuZmlsZXMuaW5kZXhPZihmaWxlKTtcclxuICAgICAgdGhpcy5maWxlcy5zcGxpY2UoaWR4LCAxKTtcclxuICAgICAgdGhpcy5maWxlcyA9IFsuLi50aGlzLmZpbGVzXTtcclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBjcmVhdGVUZW1wbGF0ZSA9IGFzeW5jICgpID0+IHtcclxuICAgIGNvbnN0IHsgdHJhbnNsYXRlIH0gPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2U7XHJcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcclxuICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmNvbHVtbnMuc29tZShlID0+IHRoaXMuc2VsZWN0ZWRbZS5maWVsZF0pKSB7XHJcbiAgICAgIHRoaXMubm90aWZ5U2VydmljZS5ub3RpZnkud2FybmluZyh0cmFuc2xhdGUoJ1BsZWFzZSBzZWxlY3QgY29sdW1ucycpKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2FkaW5nU2VydmljZS5zdGFydCgpO1xyXG4gICAgY29uc3QgZmlsZU5hbWUgPSB0aGlzLnRlbXBsYXRlTmFtZSArICcueGxzeCc7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAodGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/LnZhbGlkYXRvcnM/LihmaWxlTmFtZSkpIHtcclxuICAgICAgICB0aGlzLm5vdGlmeVNlcnZpY2Uubm90aWZ5Lndhcm5pbmcodGhpcy5ncmlkT3B0aW9uPy5leHBvcnQ/LnZhbGlkYXRvcnMoZmlsZU5hbWUpKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5nZW5lcmF0ZUFuZFVwbG9hZFRlbXBsYXRlKGZpbGVOYW1lKTtcclxuICAgICAgaWYgKHJlc3VsdD8uZmlsZVBhdGgpIHtcclxuICAgICAgICBjb25zdCBmaWxlOiBTZEV4cG9ydEZpbGUgPSB7XHJcbiAgICAgICAgICBmaWxlUGF0aDogcmVzdWx0LmZpbGVQYXRoLFxyXG4gICAgICAgICAgZmlsZU5hbWU6IHJlc3VsdC5maWxlTmFtZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5vbkV4cG9ydChmaWxlKTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlTmFtZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5lbmFibGVDcmVhdGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZmlsZXMgPSBbLi4udGhpcy5maWxlcywgZmlsZV07XHJcbiAgICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdTZXJ2aWNlLnN0b3AoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlR3JvdXAgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmxvYWRGaWxlcyh0aGlzLmxpc3RHcm91cHM/LnNlbGVjdGVkT3B0aW9ucz8uc2VsZWN0ZWRbMF0/LnZhbHVlKTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRvclRlbXBsYXRlTmFtZSA9ICh2YWw6IHN0cmluZykgPT4ge1xyXG4gICAgY29uc3QgeyB0cmFuc2xhdGUgfSA9IHRoaXMudHJhbnNsYXRlU2VydmljZTtcclxuICAgIGNvbnN0IHJlZ2V4ID0gL15bQS1aYS16MC05IF9dKltBLVphLXowLTldW0EtWmEtejAtOSBfXSokLztcclxuICAgIGlmICghdmFsKSB7XHJcbiAgICAgIHJldHVybiB0cmFuc2xhdGUoJ1BsZWFzZSBlbnRlciB5b3VyIHRlbXBsYXRlIG5hbWUnKTtcclxuICAgIH1cclxuICAgIGlmICh2YWwubGVuZ3RoID4gNTApIHtcclxuICAgICAgcmV0dXJuIHRyYW5zbGF0ZSgnVGVtcGxhdGUgbmFtZSBpcyB0b28gbG9uZycpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFyZWdleC50ZXN0KHZhbCkpIHtcclxuICAgICAgcmV0dXJuIHRyYW5zbGF0ZSgnVGVtcGxhdGUgbmFtZSBvbmx5IGNvbnRhaW5zIGxldHRlcnMsIG51bWJlcnMgYW5kIHNwYWNlcycpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -377,16 +377,30 @@ class SdEditor {
377
377
  if (document.querySelector(qlKey)) {
378
378
  clearInterval(interval);
379
379
  document.querySelector(qlKey).innerHTML = this.customButtonFileSVG;
380
- const customButton = document.querySelector(qlKey);
381
- if (customButton.getAttribute('listener') !== '1') {
382
- customButton.setAttribute('listener', '1');
383
- customButton.addEventListener('click', (e) => {
380
+ const customAction = document.querySelector(qlKey);
381
+ if (customAction.getAttribute('listener') !== '1') {
382
+ customAction.setAttribute('listener', '1');
383
+ customAction.addEventListener('click', (e) => {
384
384
  const cursorPosition = localStorage.getItem('quillRange');
385
- action.click(e, {
385
+ const element = e.currentTarget; // Lấy element của action được click
386
+ const toolbar = element.closest('.ql-formats').closest('.ql-toolbar'); // Lấy toolbar element
387
+ const id = toolbar.closest('quill-editor').id; // Lấy id của editor để phục vụ loading
388
+ const loadingId = `#box-${id}`; // id của editor;
389
+ const func = action.click(e, {
390
+ qlKey,
391
+ element,
386
392
  cursorPosition: JSON.parse(cursorPosition),
387
393
  quill: __classPrivateFieldGet(this, _quill),
388
394
  args: this.args
389
395
  });
396
+ if (func instanceof Promise) {
397
+ __classPrivateFieldGet(this, _quill).enable(false);
398
+ this.loadingService.start(loadingId);
399
+ func.finally(() => {
400
+ __classPrivateFieldGet(this, _quill).enable(true);
401
+ this.loadingService.stop(loadingId);
402
+ });
403
+ }
390
404
  });
391
405
  }
392
406
  }