@deeksha2309/sunbird-collection-editor 8.0.7 → 8.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/deeksha2309-sunbird-collection-editor.d.ts.map +1 -0
- package/esm2022/deeksha2309-sunbird-collection-editor.mjs +5 -0
- package/esm2022/lib/collection-editor-library.module.mjs +30 -6
- package/esm2022/lib/components/answer/answer.component.mjs +6 -3
- package/esm2022/lib/components/app-loader/app-loader.component.mjs +30 -0
- package/esm2022/lib/components/asset-browser/asset-browser.component.mjs +30 -12
- package/esm2022/lib/components/assign-page-number/assign-page-number.component.mjs +1 -1
- package/esm2022/lib/components/bulk-upload/bulk-upload.component.mjs +447 -0
- package/esm2022/lib/components/ckeditor-tool/ckeditor-tool.component.mjs +30 -12
- package/esm2022/lib/components/collection-icon/collection-icon.component.mjs +3 -3
- package/esm2022/lib/components/csv-upload/csv-upload.component.mjs +2 -2
- package/esm2022/lib/components/editor/editor.component.mjs +143 -64
- package/esm2022/lib/components/fancy-tree/fancy-tree.component.mjs +91 -9
- package/esm2022/lib/components/header/header.component.mjs +27 -9
- package/esm2022/lib/components/library/library.component.mjs +4 -4
- package/esm2022/lib/components/library-list/library-list.component.mjs +4 -4
- package/esm2022/lib/components/library-player/library-player.component.mjs +4 -4
- package/esm2022/lib/components/meta-form/meta-form.component.mjs +10 -18
- package/esm2022/lib/components/options/options.component.mjs +40 -27
- package/esm2022/lib/components/progress-status/progress-status.component.mjs +1 -1
- package/esm2022/lib/components/publish-checklist/publish-checklist.component.mjs +6 -3
- package/esm2022/lib/components/question/question.component.mjs +185 -77
- package/esm2022/lib/components/question-option-sub-menu/question-option-sub-menu.component.mjs +36 -0
- package/esm2022/lib/components/quml-player/quml-player.component.mjs +2 -2
- package/esm2022/lib/components/qumlplayer-page/qumlplayer-page.component.mjs +3 -3
- package/esm2022/lib/components/relational-metadata/relational-metadata.component.mjs +80 -0
- package/esm2022/lib/components/resource-reorder/resource-reorder.component.mjs +3 -3
- package/esm2022/lib/components/slider/slider.component.mjs +46 -0
- package/esm2022/lib/components/template/template.component.mjs +3 -3
- package/esm2022/lib/components/translations/translations.component.mjs +132 -0
- package/esm2022/lib/directives/date-format/date-format.pipe.mjs +34 -0
- package/esm2022/lib/interfaces/CreationContext.mjs +2 -0
- package/esm2022/lib/interfaces/editor.mjs +1 -1
- package/esm2022/lib/interfaces/loader.mjs +2 -0
- package/esm2022/lib/pipes/interpolate.pipe.mjs +17 -0
- package/esm2022/lib/pipes/sanitize-html.pipe.mjs +6 -8
- package/esm2022/lib/services/bulk-job/bulk-job.service.mjs +67 -0
- package/esm2022/lib/services/config/category.config.json +1 -0
- package/esm2022/lib/services/config/editor.config.json +29 -2
- package/esm2022/lib/services/config/label.config.json +16 -3
- package/esm2022/lib/services/config/player.config.json +3 -0
- package/esm2022/lib/services/config/url.config.json +17 -1
- package/esm2022/lib/services/editor/editor.service.mjs +64 -26
- package/esm2022/lib/services/question/question.service.mjs +27 -35
- package/esm2022/lib/services/tree/tree.service.mjs +20 -5
- package/fesm2022/{project-sunbird-sunbird-collection-editor.mjs → deeksha2309-sunbird-collection-editor.mjs} +1779 -483
- package/fesm2022/deeksha2309-sunbird-collection-editor.mjs.map +1 -0
- package/index.d.ts +2 -2
- package/lib/collection-editor-library.module.d.ts +51 -43
- package/lib/collection-editor-library.module.d.ts.map +1 -1
- package/lib/components/answer/answer.component.d.ts +2 -1
- package/lib/components/answer/answer.component.d.ts.map +1 -1
- package/lib/components/app-loader/app-loader.component.d.ts +18 -0
- package/lib/components/app-loader/app-loader.component.d.ts.map +1 -0
- package/lib/components/asset-browser/asset-browser.component.d.ts.map +1 -1
- package/lib/components/bulk-upload/bulk-upload.component.d.ts +71 -0
- package/lib/components/bulk-upload/bulk-upload.component.d.ts.map +1 -0
- package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts +1 -1
- package/lib/components/ckeditor-tool/ckeditor-tool.component.d.ts.map +1 -1
- package/lib/components/editor/editor.component.d.ts +11 -7
- package/lib/components/editor/editor.component.d.ts.map +1 -1
- package/lib/components/fancy-tree/fancy-tree.component.d.ts +11 -3
- package/lib/components/fancy-tree/fancy-tree.component.d.ts.map +1 -1
- package/lib/components/header/header.component.d.ts +6 -2
- package/lib/components/header/header.component.d.ts.map +1 -1
- package/lib/components/library/library.component.d.ts +1 -1
- package/lib/components/library/library.component.d.ts.map +1 -1
- package/lib/components/meta-form/meta-form.component.d.ts +3 -4
- package/lib/components/meta-form/meta-form.component.d.ts.map +1 -1
- package/lib/components/options/options.component.d.ts +15 -7
- package/lib/components/options/options.component.d.ts.map +1 -1
- package/lib/components/publish-checklist/publish-checklist.component.d.ts +2 -1
- package/lib/components/publish-checklist/publish-checklist.component.d.ts.map +1 -1
- package/lib/components/question/question.component.d.ts +21 -28
- package/lib/components/question/question.component.d.ts.map +1 -1
- package/lib/components/question-option-sub-menu/question-option-sub-menu.component.d.ts +27 -0
- package/lib/components/question-option-sub-menu/question-option-sub-menu.component.d.ts.map +1 -0
- package/lib/components/relational-metadata/relational-metadata.component.d.ts +25 -0
- package/lib/components/relational-metadata/relational-metadata.component.d.ts.map +1 -0
- package/lib/components/slider/slider.component.d.ts +25 -0
- package/lib/components/slider/slider.component.d.ts.map +1 -0
- package/lib/components/translations/translations.component.d.ts +70 -0
- package/lib/components/translations/translations.component.d.ts.map +1 -0
- package/lib/directives/date-format/date-format.pipe.d.ts +20 -0
- package/lib/directives/date-format/date-format.pipe.d.ts.map +1 -0
- package/lib/interfaces/CreationContext.d.ts +11 -0
- package/lib/interfaces/CreationContext.d.ts.map +1 -0
- package/lib/interfaces/editor.d.ts +10 -5
- package/lib/interfaces/editor.d.ts.map +1 -1
- package/lib/interfaces/loader.d.ts +11 -0
- package/lib/interfaces/loader.d.ts.map +1 -0
- package/lib/pipes/interpolate.pipe.d.ts +8 -0
- package/lib/pipes/interpolate.pipe.d.ts.map +1 -0
- package/lib/pipes/sanitize-html.pipe.d.ts +4 -4
- package/lib/pipes/sanitize-html.pipe.d.ts.map +1 -1
- package/lib/services/bulk-job/bulk-job.service.d.ts +17 -0
- package/lib/services/bulk-job/bulk-job.service.d.ts.map +1 -0
- package/lib/services/editor/editor.service.d.ts +7 -4
- package/lib/services/editor/editor.service.d.ts.map +1 -1
- package/lib/services/question/question.service.d.ts +2 -2
- package/lib/services/question/question.service.d.ts.map +1 -1
- package/lib/services/tree/tree.service.d.ts +3 -1
- package/lib/services/tree/tree.service.d.ts.map +1 -1
- package/package.json +5 -5
- package/esm2022/project-sunbird-sunbird-collection-editor.mjs +0 -5
- package/fesm2022/project-sunbird-sunbird-collection-editor.mjs.map +0 -1
- package/project-sunbird-sunbird-collection-editor.d.ts.map +0 -1
|
@@ -128,6 +128,7 @@ export class AssetBrowserComponent {
|
|
|
128
128
|
this.getAllImages(offset, this.query, true);
|
|
129
129
|
}
|
|
130
130
|
uploadImage(event) {
|
|
131
|
+
this.imageFile = event.target.files[0];
|
|
131
132
|
const file = event.target.files[0];
|
|
132
133
|
const reader = new FileReader();
|
|
133
134
|
this.formData = new FormData();
|
|
@@ -155,7 +156,6 @@ export class AssetBrowserComponent {
|
|
|
155
156
|
this.errorMsg = _.get(this.configService.labelConfig, 'messages.error.020');
|
|
156
157
|
}
|
|
157
158
|
if (!this.showErrorMsg) {
|
|
158
|
-
this.imageFile = file;
|
|
159
159
|
this.imageUploadLoader = true;
|
|
160
160
|
this.imageFormValid = true;
|
|
161
161
|
this.assestData = this.generateAssetCreateRequest(fileName, fileType, 'image');
|
|
@@ -177,16 +177,28 @@ export class AssetBrowserComponent {
|
|
|
177
177
|
this.formConfig = formvalue;
|
|
178
178
|
}
|
|
179
179
|
uploadAndUseImage(modal) {
|
|
180
|
-
this.
|
|
180
|
+
this.isClosable = false;
|
|
181
|
+
this.loading = true;
|
|
182
|
+
this.showErrorMsg = false;
|
|
183
|
+
this.imageFormValid = false;
|
|
184
|
+
this.questionService.createMediaAsset({ asset: this.assestData }).pipe(catchError(err => {
|
|
181
185
|
const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.019') };
|
|
186
|
+
this.loading = false;
|
|
187
|
+
this.isClosable = true;
|
|
188
|
+
this.imageFormValid = true;
|
|
182
189
|
return throwError(this.editorService.apiErrorHandling(err, errInfo));
|
|
183
190
|
})).subscribe((res) => {
|
|
184
191
|
const imgId = res.result.node_id;
|
|
185
|
-
const
|
|
186
|
-
|
|
192
|
+
const preSignedRequest = {
|
|
193
|
+
content: {
|
|
194
|
+
fileName: this.assetName
|
|
195
|
+
}
|
|
187
196
|
};
|
|
188
|
-
this.questionService.
|
|
189
|
-
const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.
|
|
197
|
+
this.questionService.generatePreSignedUrl(preSignedRequest, imgId).pipe(catchError(err => {
|
|
198
|
+
const errInfo = { errorMsg: _.get(this.configService.labelConfig, 'messages.error.026') };
|
|
199
|
+
this.loading = false;
|
|
200
|
+
this.isClosable = true;
|
|
201
|
+
this.imageFormValid = true;
|
|
190
202
|
return throwError(this.editorService.apiErrorHandling(err, errInfo));
|
|
191
203
|
})).subscribe((response) => {
|
|
192
204
|
const signedURL = response.result.pre_signed_url;
|
|
@@ -252,8 +264,10 @@ export class AssetBrowserComponent {
|
|
|
252
264
|
});
|
|
253
265
|
}
|
|
254
266
|
dismissImageUploadModal() {
|
|
255
|
-
this.
|
|
256
|
-
|
|
267
|
+
if (this.isClosable) {
|
|
268
|
+
this.showImagePicker = true;
|
|
269
|
+
this.showImageUploadModal = false;
|
|
270
|
+
}
|
|
257
271
|
}
|
|
258
272
|
openImageUploadModal() {
|
|
259
273
|
this.showImageUploadModal = true;
|
|
@@ -262,10 +276,14 @@ export class AssetBrowserComponent {
|
|
|
262
276
|
this.imageUploadLoader = false;
|
|
263
277
|
this.imageFormValid = false;
|
|
264
278
|
this.showErrorMsg = false;
|
|
279
|
+
this.loading = false;
|
|
280
|
+
this.isClosable = true;
|
|
265
281
|
}
|
|
266
282
|
dismissPops(modal) {
|
|
267
283
|
this.dismissImagePicker();
|
|
268
|
-
modal.deny
|
|
284
|
+
if (modal && modal.deny) {
|
|
285
|
+
modal.deny();
|
|
286
|
+
}
|
|
269
287
|
}
|
|
270
288
|
dismissImagePicker() {
|
|
271
289
|
this.showImagePicker = false;
|
|
@@ -307,11 +325,11 @@ export class AssetBrowserComponent {
|
|
|
307
325
|
}
|
|
308
326
|
}
|
|
309
327
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AssetBrowserComponent, deps: [{ token: i1.EditorService }, { token: i2.ConfigService }, { token: i3.QuestionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
310
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AssetBrowserComponent, selector: "lib-asset-browser", inputs: { showImagePicker: "showImagePicker" }, outputs: { assetBrowserEmitter: "assetBrowserEmitter", modalDismissEmitter: "modalDismissEmitter" }, viewQueries: [{ propertyName: "modal", first: true, predicate: ["modal"], descendants: true }], ngImport: i0, template: "<sui-modal [isClosable]=\"true\" class=\"sb-modal overflow-modal\" [isInverted]=\"false\" (dismissed)=\"dismissImagePicker()\"\n *ngIf=\"showImagePicker\" [size]=\"'normal'\" [isFullScreen]=\"false\" [mustScroll]=\"true\" #modal>\n <div class=\"sb-modal-header\">{{configService.labelConfig?.lbl?.selectImage}}</div>\n <div class=\"sb-modal-content p-0\">\n <sui-tabset>\n <div class=\"sb-tabset-menu\">\n <a class=\"sb-item\" (activate)=\"getMyImages(0)\" suiTabHeader=\"1\">{{configService.labelConfig?.lbl?.myImages}}</a>\n <a class=\"sb-item\" (activate)=\"getAllImages(0)\" suiTabHeader=\"2\">{{configService.labelConfig?.lbl?.allImage}}</a>\n </div>\n <div class=\"ui segment sb-tabset-segment m-0 pt-15\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"500\" [scrollWindow]=\"false\" (scrolled)=\"lazyloadMyImages()\" suiTabContent=\"1\">\n <div class=\"ui pb-16 d-flex pl-0\">\n <div class=\"sb-search-box small no-btn\">\n <div class=\"input-div relative\">\n <i class=\"search icon\" aria-hidden=\"true\"></i>\n <input (change)=\"searchImages($event, 'myImages')\" class=\"sb-search-input\" [(ngModel)]=\"searchMyInput\"\n type=\"text\" placeholder={{configService.labelConfig?.lbl?.searchPlaceholder}} />\n <i class=\"close icon\" aria-hidden=\"true\" (click)=\"searchImages('clearInput', 'myImages')\"></i>\n </div>\n <button class=\"sb-btn sb-btn-normal\">{{configService.labelConfig?.button_labels?.search_btn_label}}</button>\n </div>\n <p class=\"fs-0-986 ml-auto sb-color-grey\" >{{assetsCount}}</p>\n </div>\n <div *ngIf=\"!myAssets?.length && searchMyInput\" class=\"fs-0785 my-10\"> {{emptySearchMessage}} </div>\n <div class=\"sb-grid-layout image\">\n <div class=\"sb-video-content\" *ngFor=\"let data of myAssets\">\n <div class=\"sb-image-section relative position\">\n <img (click)=\"addImageInEditor(data.downloadUrl, data.identifier)\" alt=\"\" [src]=\"data.downloadUrl\">\n </div>\n </div>\n </div>\n </div>\n <div class=\"ui segment sb-tabset-segment m-0 pt-15\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"500\" [scrollWindow]=\"false\" (scrolled)=\"lazyloadAllImages()\" suiTabContent=\"2\">\n <div class=\"ui pb-16 d-flex pl-0\">\n <div class=\"sb-search-box small no-btn\">\n <div class=\"input-div relative\">\n <i class=\"search icon\" aria-hidden=\"true\"></i>\n <input (change)=\"searchImages($event, 'allImages')\" class=\"sb-search-input\" [(ngModel)]=\"searchAllInput\"\n type=\"text\" placeholder={{configService.labelConfig?.lbl?.searchPlaceholder}} />\n <i class=\"close icon\" aria-hidden=\"true\" (click)=\"searchImages('clearInput', 'allImages')\"></i>\n </div>\n <button class=\"sb-btn sb-btn-normal\">{{configService.labelConfig?.button_labels?.search_btn_label}}</button>\n </div>\n <p class=\"fs-0-986 ml-auto sb-color-grey\" >{{assetsCount}}</p>\n </div>\n <div *ngIf=\"!allImages?.length && searchAllInput\" class=\"fs-0785\"> {{emptySearchMessage}} </div>\n <div class=\"sb-grid-layout image\">\n <div class=\"sb-video-content\" *ngFor=\"let data of allImages\">\n <div class=\"sb-image-section\">\n <img (click)=\"addImageInEditor(data.downloadUrl, data.identifier)\" alt=\"\" [src]=\"data.downloadUrl\">\n </div>\n </div>\n </div>\n </div>\n </sui-tabset>\n </div>\n <div class=\"sb-modal-actions flex-jc-space-end\">\n <button (click)=\"openImageUploadModal();\" class=\"sb-btn sb-btn-primary sb-btn-normal\">{{configService.labelConfig?.lbl?.uploadAndUse}}</button>\n </div>\n</sui-modal>\n<sui-modal class=\"sb-modal overflow-modal\" [isClosable]=\"true\" [isInverted]=\"false\"\n (dismissed)=\"dismissImageUploadModal()\" *ngIf=\"showImageUploadModal\" [size]=\"'large'\" [isFullScreen]=\"false\"\n [mustScroll]=\"true\" appBodyScroll #modal>\n <div class=\"sb-modal-header\">{{configService.labelConfig?.lbl?.uploadAndUse}}</div>\n <div class=\"p-10 sb-bg-white\">\n <div class=\"d-flex\">\n <div class=\"w-50\">\n <div class=\"content\">\n <h6 class=\"mb-8 fs-normal\"> {{configService.labelConfig?.lbl?.chooseOrDragImage}}<span class=\"red\">*</span></h6>\n <div class=\"upload-image-modal-section d-flex flex-ai-center flex-jc-center flex-dc\">\n <ng-container>\n <button class=\"upload-input-button sb-btn sb-btn-success sb-btn-normal\">\n {{configService.labelConfig?.lbl?.uploadFromComputer}} \n <input (change)=\"uploadImage($event)\" type=\"file\" [accept]=\"acceptImageType\" name=\"assetfile\">\n </button>\n <div class=\"py-10 fs-0-785 sb-color-primary\" *ngIf=\"imageUploadLoader\"> {{assetName}} </div>\n <span class=\"fsmall mt-8\">{{configService.labelConfig?.lbl?.upload}} {{assetConfig.image.accepted}} \n ({{configService.labelConfig?.lbl?.maxFileSize}} {{assetConfig.image.size}}{{assetConfig.image.sizeType}})</span>\n <div *ngIf=\"showErrorMsg\" class=\"sb-color-error fsmall mt-8\">\n <p>{{errorMsg}}</p>\n </div>\n </ng-container>\n </div>\n <div class=\"ui info message sb-info-bx\">\n <ul class=\"list\">\n <li class=\"fs-0785\"> {{configService.labelConfig?.lbl?.allowedFileTypes}} {{assetConfig.image.accepted}}</li>\n <li class=\"fs-0785\"> {{configService.labelConfig?.lbl?.maximumAllowedFileSize}} {{assetConfig.image.size}}{{assetConfig.image.sizeType}}</li>\n </ul>\n </div>\n <h6 class=\"fs-0785\">{{configService.labelConfig?.lbl?.copyRightsAndLicense}}<span class=\"red\">*</span></h6>\n <p class=\"fsmall mt-8 terms-and-condition\">{{termsAndCondition}}</p>\n </div>\n </div>\n <div class=\"w-50 pl-10 ml-10 b-bl\">\n <div class=\"ui info message sb-info-bx mb-0\">\n <ul class=\"list\">\n <li class=\"fs-0785 font-weight-bold\">\n <i class=\"icon info circle\" aria-hidden=\"true\"></i>\n {{configService.labelConfig?.lbl?.dropChooseFile}} </li>\n </ul>\n </div>\n <div class=\"sb-form-fields\">\n <div class=\"form-container upload-form\">\n <sb-dynamic-form [config]=\"formConfig\" \n (statusChanges)=\"onStatusChanges($event)\" (valueChanges)=\"valueChanges($event)\"></sb-dynamic-form>\n </div>\n </div>\n </div>\n </div>\n <div class=\"sb-modal-actions flex-jc-space-between p-0\">\n <div>\n <button (click)=\"dismissPops(modal);\" class=\"mr-10 sb-btn sb-btn-primary sb-btn-normal\">{{configService.labelConfig?.button_labels?.cancel_btn_label}}</button>\n\n <button (click)=\"uploadAndUseImage(modal);\" [disabled]=\"!imageFormValid\" \n [ngClass]=\"{'sb-btn-primary': imageFormValid, 'sb-btn-disabled': !imageFormValid}\"\n class=\"sb-btn sb-btn-normal text-left\">{{configService.labelConfig?.button_labels?.upload_use_btn_label}}\n </button>\n </div>\n <div>\n <button (click)=\"dismissImageUploadModal();\" class=\" sb-btn sb-btn-primary sb-btn-normal\">{{configService.labelConfig?.button_labels?.back_btn_label}}</button>\n </div>\n </div>\n </div>\n</sui-modal>", styles: [".editorWrapper{border:0px solid white}.editorWrapper.hasError{border:0px solid red}.characterCount{text-align:right;border-top:0;padding-right:7px;font-size:11px;font-weight:700;margin-top:-16px;position:relative}.custom-image img{border:1px dotted;padding:7px;margin:6px;cursor:pointer}.resource-image{height:180px!important}.asset_container{overflow-y:auto;overflow-x:hidden;min-height:300px!important;max-height:300px!important;padding:5px}.insert-image-btn{position:absolute;z-index:1;left:315px;background-color:transparent;padding:12px 14px!important;margin-left:6px}.insert-image-btn>.icon{opacity:1}.insert-image-btn:active{background-color:transparent}.upload-file-description p{color:#999}.upload-file-description ul{margin:0;list-style:disc}.upload-file-description ul li{margin-bottom:8px}.upload-file-description ul li a{cursor:pointer;font-size:12px}.sb-grid-layout{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));grid-gap:16px}.sb-grid-layout.image{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}.sb-grid-layout.video{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.sb-grid-layout .sb-video-content .sb-image-section{height:96px;overflow:hidden;border-radius:4px;box-shadow:inset 0 1px 3px #00000080}.sb-image-section .selected-video{display:none}.sb-image-section.active .selected-video{position:absolute;right:4px;top:4px;color:#07bc81;font-size:20px;display:block}.sb-grid-layout .sb-video-content .sb-image-section img{width:100%;height:100%;cursor:pointer}.overlay-image{width:100%;height:100%;background:#0000004d;position:absolute;left:0;right:0;cursor:pointer}.overlay-image .play.icon{position:absolute;transform:translate(-50%,-50%);top:50%;left:50%;color:#fff9;font-size:32px;cursor:pointer}::ng-deep .ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-toolbar,::ng-deep .ck.ck-editor__top .ck-sticky-panel .ck-toolbar.ck-rounded-corners{border-left:none;border-right:none;border-bottom:1px solid #c4c4c4;border-radius:0}::ng-deep .ck-rounded-corners .ck.ck-editor__main>.ck-editor__editable,::ng-deep .ck.ck-editor__main>.ck-editor__editable.ck-rounded-corners{border:none}.upload-image-modal-section{border-radius:4px;width:100%;min-height:140px;background:#f5f9fc;border:1px dashed #024f9d}.upload-input-button input[type=file]{position:absolute;right:0;top:0;font-size:118px;margin:0;padding:0;cursor:pointer;opacity:0;height:100%}.upload-file-section{display:flex;height:240px;width:100%;max-width:800px;align-items:center;justify-content:center;flex-direction:column;margin:0 auto;background-color:#f5f9fc;border:1px dashed #80a7ce}.qq-uploader.qq-uploader-selector.custom-qq-uploader{background:inherit;border-color:none;border:none;max-height:inherit;min-height:inherit;overflow-y:inherit;width:688px;height:240px;display:flex;justify-content:center;align-items:center}.terms-and-condition{line-height:14px}.sb-info-bx{padding:.4rem!important}.sb-info-bx li{margin:0!important;padding:0!important}.sb-info-bx li:before{content:\"\"!important}.red{color:red}.b-bl{border-left:solid 1px #e4e1e1}.sb-form-fields .sb-field-group{margin:1rem 0}.sb-form-fields .sb-field{position:relative;margin-bottom:.5rem}.sb-form-fields .sb-field .sb-form-control{border:1px solid rgba(34,36,38,.15);width:100%;border-radius:.28571429rem;box-shadow:0 0 0 0 transparent inset;padding:.25rem .5rem!important}.sb-color-grey{color:#666}.flex-jc-space-end{justify-content:flex-end!important}.fs-0785{font-size:.785rem!important}.ui.info.message{color:#276f86!important}.sb-textbox[disabled=true]{opacity:.3!important;font-weight:500!important}.sb-tabset-segment{min-height:288px;max-height:288px;overflow-y:auto}input:focus-visible{border:none!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.SuiModal, selector: "sui-modal", inputs: ["isClosable", "closeResult", "size", "isCentered", "isFullScreen", "isBasic", "mustScroll", "isInverted", "transition", "transitionDuration"], outputs: ["approved", "denied", "dismissed"] }, { kind: "component", type: i6.SuiTabset, selector: "sui-tabset" }, { kind: "directive", type: i6.SuiTabHeader, selector: "[suiTabHeader]", inputs: ["suiTabHeader", "isActive", "isDisabled"], outputs: ["isActiveChange", "activate", "deactivate"] }, { kind: "directive", type: i6.SuiTabContent, selector: "[suiTabContent]", inputs: ["suiTabContent"] }, { kind: "component", type: i7.DynamicFormComponent, selector: "sb-dynamic-form", inputs: ["config", "dataLoadStatusDelegate"], outputs: ["initialize", "finalize", "valueChanges", "statusChanges"] }, { kind: "directive", type: i8.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }] }); }
|
|
328
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AssetBrowserComponent, selector: "lib-asset-browser", inputs: { showImagePicker: "showImagePicker" }, outputs: { assetBrowserEmitter: "assetBrowserEmitter", modalDismissEmitter: "modalDismissEmitter" }, viewQueries: [{ propertyName: "modal", first: true, predicate: ["modal"], descendants: true }], ngImport: i0, template: "<sui-modal [isClosable]=\"true\" class=\"sb-modal overflow-modal\" [isInverted]=\"false\" (dismissed)=\"dismissImagePicker()\"\n *ngIf=\"showImagePicker\" [size]=\"'normal'\" [isFullScreen]=\"false\" [mustScroll]=\"true\" #modal>\n <div class=\"sb-modal-header\">{{configService.labelConfig?.lbl?.selectImage}}</div>\n <div class=\"sb-modal-content p-0\">\n <sui-tabset>\n <div class=\"sb-tabset-menu\">\n <a class=\"sb-item\" (activate)=\"getMyImages(0)\" suiTabHeader=\"1\">{{configService.labelConfig?.lbl?.myImages}}</a>\n <a class=\"sb-item\" (activate)=\"getAllImages(0)\" suiTabHeader=\"2\">{{configService.labelConfig?.lbl?.allImage}}</a>\n </div>\n <div class=\"ui segment sb-tabset-segment m-0 pt-15\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"500\" [scrollWindow]=\"false\" (scrolled)=\"lazyloadMyImages()\" suiTabContent=\"1\">\n <div class=\"ui pb-16 d-flex pl-0\">\n <div class=\"sb-search-box small no-btn\">\n <div class=\"input-div relative\">\n <i class=\"search icon\" aria-hidden=\"true\"></i>\n <input (change)=\"searchImages($event, 'myImages')\" class=\"sb-search-input\" [(ngModel)]=\"searchMyInput\"\n type=\"text\" placeholder={{configService.labelConfig?.lbl?.searchPlaceholder}} />\n <i class=\"close icon\" aria-hidden=\"true\" (click)=\"searchImages('clearInput', 'myImages')\"></i>\n </div>\n <button class=\"sb-btn sb-btn-normal\">{{configService.labelConfig?.button_labels?.search_btn_label}}</button>\n </div>\n <p class=\"fs-0-986 ml-auto sb-color-grey\" >{{assetsCount}}</p>\n </div>\n <div *ngIf=\"!myAssets?.length && searchMyInput\" class=\"fs-0785 my-10\"> {{emptySearchMessage}} </div>\n <div class=\"sb-grid-layout image\">\n <div class=\"sb-video-content\" *ngFor=\"let data of myAssets\">\n <div class=\"sb-image-section relative position\">\n <img (click)=\"addImageInEditor(data.downloadUrl, data.identifier)\" alt=\"\" [src]=\"data.downloadUrl\">\n </div>\n </div>\n </div>\n </div>\n <div class=\"ui segment sb-tabset-segment m-0 pt-15\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"500\" [scrollWindow]=\"false\" (scrolled)=\"lazyloadAllImages()\" suiTabContent=\"2\">\n <div class=\"ui pb-16 d-flex pl-0\">\n <div class=\"sb-search-box small no-btn\">\n <div class=\"input-div relative\">\n <i class=\"search icon\" aria-hidden=\"true\"></i>\n <input (change)=\"searchImages($event, 'allImages')\" class=\"sb-search-input\" [(ngModel)]=\"searchAllInput\"\n type=\"text\" placeholder={{configService.labelConfig?.lbl?.searchPlaceholder}} />\n <i class=\"close icon\" aria-hidden=\"true\" (click)=\"searchImages('clearInput', 'allImages')\"></i>\n </div>\n <button class=\"sb-btn sb-btn-normal\">{{configService.labelConfig?.button_labels?.search_btn_label}}</button>\n </div>\n <p class=\"fs-0-986 ml-auto sb-color-grey\" >{{assetsCount}}</p>\n </div>\n <div *ngIf=\"!allImages?.length && searchAllInput\" class=\"fs-0785\"> {{emptySearchMessage}} </div>\n <div class=\"sb-grid-layout image\">\n <div class=\"sb-video-content\" *ngFor=\"let data of allImages\">\n <div class=\"sb-image-section\">\n <img (click)=\"addImageInEditor(data.downloadUrl, data.identifier)\" alt=\"\" [src]=\"data.downloadUrl\">\n </div>\n </div>\n </div>\n </div>\n </sui-tabset>\n </div>\n <div class=\"sb-modal-actions flex-jc-space-end\">\n <button (click)=\"openImageUploadModal();\" class=\"sb-btn sb-btn-primary sb-btn-normal\">{{configService.labelConfig?.lbl?.uploadAndUse}}</button>\n </div>\n</sui-modal>\n<sui-modal class=\"sb-modal overflow-modal\" [isClosable]=\"isClosable\" [isInverted]=\"false\"\n (dismissed)=\"dismissImageUploadModal()\" *ngIf=\"showImageUploadModal\" [size]=\"'large'\" [isFullScreen]=\"false\"\n [mustScroll]=\"true\" appBodyScroll #modal>\n <div class=\"sb-modal-header\">{{configService.labelConfig?.lbl?.uploadAndUse}}</div>\n <div class=\"p-10 sb-bg-white\">\n <div class=\"d-flex\">\n <div class=\"w-50\">\n <div class=\"content\">\n <h6 class=\"mb-8 fs-normal\"> {{configService.labelConfig?.lbl?.chooseOrDragImage}}<span class=\"red\">*</span></h6>\n <div class=\"upload-image-modal-section d-flex flex-ai-center flex-jc-center flex-dc\">\n <ng-container>\n <button class=\"upload-input-button sb-btn sb-btn-success sb-btn-normal\">\n {{configService.labelConfig?.lbl?.uploadFromComputer}} \n <input (change)=\"uploadImage($event)\" type=\"file\" [accept]=\"acceptImageType\" name=\"assetfile\">\n </button>\n <div class=\"py-10 fs-0-785 sb-color-primary\" *ngIf=\"imageUploadLoader\"> {{assetName}} </div>\n <span class=\"fsmall mt-8\">{{configService.labelConfig?.lbl?.upload}} {{assetConfig.image.accepted}} \n ({{configService.labelConfig?.lbl?.maxFileSize}} {{assetConfig.image.size}}{{assetConfig.image.sizeType}})</span>\n <div *ngIf=\"showErrorMsg\" class=\"sb-color-error fsmall mt-8\">\n <p>{{errorMsg}}</p>\n </div>\n </ng-container>\n </div>\n <div class=\"ui info message sb-info-bx\">\n <ul class=\"list\">\n <li class=\"fs-0785\"> {{configService.labelConfig?.lbl?.allowedFileTypes}} {{assetConfig.image.accepted}}</li>\n <li class=\"fs-0785\"> {{configService.labelConfig?.lbl?.maximumAllowedFileSize}} {{assetConfig.image.size}}{{assetConfig.image.sizeType}}</li>\n </ul>\n </div>\n <h6 class=\"fs-0785\">{{configService.labelConfig?.lbl?.copyRightsAndLicense}}<span class=\"red\">*</span></h6>\n <p class=\"fsmall mt-8 terms-and-condition\">{{termsAndCondition}}</p>\n </div>\n </div>\n <div class=\"w-50 pl-10 ml-10 b-bl\">\n <div class=\"ui info message sb-info-bx mb-0\">\n <ul class=\"list\">\n <li class=\"fs-0785 font-weight-bold\">\n <i class=\"icon info circle\" aria-hidden=\"true\"></i>\n {{configService.labelConfig?.lbl?.dropChooseFile}} </li>\n </ul>\n </div>\n <div class=\"sb-form-fields\">\n <div class=\"form-container upload-form\">\n <sb-dynamic-form [config]=\"formConfig\" \n (statusChanges)=\"onStatusChanges($event)\" (valueChanges)=\"valueChanges($event)\"></sb-dynamic-form>\n </div>\n </div>\n </div>\n </div>\n <div class=\"sb-modal-actions flex-jc-space-between p-0\">\n <div>\n <button (click)=\"dismissPops(modal);\" class=\"mr-10 sb-btn sb-btn-primary sb-btn-normal\">{{configService.labelConfig?.button_labels?.cancel_btn_label}}</button>\n <button type=\"button\" class=\"sb-btn sb-btn-normal text-left sb-btn-loading-spinner sb-btn-primary\"\n [disabled]=\"!imageFormValid\" (click)=\"uploadAndUseImage(modal);\" \n [ngClass]=\"{'sb-btn-primary': imageFormValid, 'sb-btn-disabled': !imageFormValid}\">\n <div class=\"sb-loading-spinner\" *ngIf=\"loading\" role=\"status\" aria-hidden=\"true\"></div>\n {{configService.labelConfig?.button_labels?.upload_use_btn_label}}\n </button>\n </div>\n <div>\n <button (click)=\"dismissImageUploadModal();\" class=\" sb-btn sb-btn-primary sb-btn-normal\">{{configService.labelConfig?.button_labels?.back_btn_label}}</button>\n </div>\n </div>\n </div>\n</sui-modal>", styles: [".editorWrapper{border:0px solid white}.editorWrapper.hasError{border:0px solid red}.characterCount{text-align:right;border-top:0;padding-right:7px;font-size:11px;font-weight:700;margin-top:-16px;position:relative}.custom-image img{border:1px dotted;padding:7px;margin:6px;cursor:pointer}.resource-image{height:180px!important}.asset_container{overflow-y:auto;overflow-x:hidden;min-height:300px!important;max-height:300px!important;padding:5px}.insert-image-btn{position:absolute;z-index:1;left:315px;background-color:transparent;padding:12px 14px!important;margin-left:6px}.insert-image-btn>.icon{opacity:1}.insert-image-btn:active{background-color:transparent}.upload-file-description p{color:#999}.upload-file-description ul{margin:0;list-style:disc}.upload-file-description ul li{margin-bottom:8px}.upload-file-description ul li a{cursor:pointer;font-size:12px}.sb-grid-layout{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));grid-gap:16px}.sb-grid-layout.image{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}.sb-grid-layout.video{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.sb-grid-layout .sb-video-content .sb-image-section{height:96px;overflow:hidden;border-radius:4px;box-shadow:inset 0 1px 3px #00000080}.sb-image-section .selected-video{display:none}.sb-image-section.active .selected-video{position:absolute;right:4px;top:4px;color:#07bc81;font-size:20px;display:block}.sb-grid-layout .sb-video-content .sb-image-section img{width:100%;height:100%;cursor:pointer}.overlay-image{width:100%;height:100%;background:#0000004d;position:absolute;left:0;right:0;cursor:pointer}.overlay-image .play.icon{position:absolute;transform:translate(-50%,-50%);top:50%;left:50%;color:#fff9;font-size:32px;cursor:pointer}::ng-deep .ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-toolbar,::ng-deep .ck.ck-editor__top .ck-sticky-panel .ck-toolbar.ck-rounded-corners{border-left:none;border-right:none;border-bottom:1px solid #c4c4c4;border-radius:0}::ng-deep .ck-rounded-corners .ck.ck-editor__main>.ck-editor__editable,::ng-deep .ck.ck-editor__main>.ck-editor__editable.ck-rounded-corners{border:none}.upload-image-modal-section{border-radius:4px;width:100%;min-height:140px;background:#f5f9fc;border:1px dashed #024f9d}.upload-input-button input[type=file]{position:absolute;right:0;top:0;font-size:118px;margin:0;padding:0;cursor:pointer;opacity:0;height:100%}.upload-file-section{display:flex;height:240px;width:100%;max-width:800px;align-items:center;justify-content:center;flex-direction:column;margin:0 auto;background-color:#f5f9fc;border:1px dashed #80a7ce}.qq-uploader.qq-uploader-selector.custom-qq-uploader{background:inherit;border-color:none;border:none;max-height:inherit;min-height:inherit;overflow-y:inherit;width:688px;height:240px;display:flex;justify-content:center;align-items:center}.terms-and-condition{line-height:14px}.sb-info-bx{padding:.4rem!important}.sb-info-bx li{margin:0!important;padding:0!important}.sb-info-bx li:before{content:\"\"!important}.red{color:red}.b-bl{border-left:solid 1px #e4e1e1}.sb-form-fields .sb-field-group{margin:1rem 0}.sb-form-fields .sb-field{position:relative;margin-bottom:.5rem}.sb-form-fields .sb-field .sb-form-control{border:1px solid rgba(34,36,38,.15);width:100%;border-radius:.28571429rem;box-shadow:0 0 0 0 transparent inset;padding:.25rem .5rem!important}.sb-color-grey{color:#666}.flex-jc-space-end{justify-content:flex-end!important}.fs-0785{font-size:.785rem!important}.ui.info.message{color:#276f86!important}.sb-textbox[disabled=true]{opacity:.3!important;font-weight:500!important}.sb-tabset-segment{min-height:288px;max-height:288px;overflow-y:auto}input:focus-visible{border:none!important}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i6.SuiModal, selector: "sui-modal", inputs: ["isClosable", "closeResult", "size", "isCentered", "isFullScreen", "isBasic", "mustScroll", "isInverted", "transition", "transitionDuration"], outputs: ["approved", "denied", "dismissed"] }, { kind: "component", type: i6.SuiTabset, selector: "sui-tabset" }, { kind: "directive", type: i6.SuiTabHeader, selector: "[suiTabHeader]", inputs: ["suiTabHeader", "isActive", "isDisabled"], outputs: ["isActiveChange", "activate", "deactivate"] }, { kind: "directive", type: i6.SuiTabContent, selector: "[suiTabContent]", inputs: ["suiTabContent"] }, { kind: "component", type: i7.DynamicFormComponent, selector: "sb-dynamic-form", inputs: ["config", "dataLoadStatusDelegate"], outputs: ["initialize", "finalize", "valueChanges", "statusChanges"] }, { kind: "directive", type: i8.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }] }); }
|
|
311
329
|
}
|
|
312
330
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AssetBrowserComponent, decorators: [{
|
|
313
331
|
type: Component,
|
|
314
|
-
args: [{ selector: 'lib-asset-browser', template: "<sui-modal [isClosable]=\"true\" class=\"sb-modal overflow-modal\" [isInverted]=\"false\" (dismissed)=\"dismissImagePicker()\"\n *ngIf=\"showImagePicker\" [size]=\"'normal'\" [isFullScreen]=\"false\" [mustScroll]=\"true\" #modal>\n <div class=\"sb-modal-header\">{{configService.labelConfig?.lbl?.selectImage}}</div>\n <div class=\"sb-modal-content p-0\">\n <sui-tabset>\n <div class=\"sb-tabset-menu\">\n <a class=\"sb-item\" (activate)=\"getMyImages(0)\" suiTabHeader=\"1\">{{configService.labelConfig?.lbl?.myImages}}</a>\n <a class=\"sb-item\" (activate)=\"getAllImages(0)\" suiTabHeader=\"2\">{{configService.labelConfig?.lbl?.allImage}}</a>\n </div>\n <div class=\"ui segment sb-tabset-segment m-0 pt-15\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"500\" [scrollWindow]=\"false\" (scrolled)=\"lazyloadMyImages()\" suiTabContent=\"1\">\n <div class=\"ui pb-16 d-flex pl-0\">\n <div class=\"sb-search-box small no-btn\">\n <div class=\"input-div relative\">\n <i class=\"search icon\" aria-hidden=\"true\"></i>\n <input (change)=\"searchImages($event, 'myImages')\" class=\"sb-search-input\" [(ngModel)]=\"searchMyInput\"\n type=\"text\" placeholder={{configService.labelConfig?.lbl?.searchPlaceholder}} />\n <i class=\"close icon\" aria-hidden=\"true\" (click)=\"searchImages('clearInput', 'myImages')\"></i>\n </div>\n <button class=\"sb-btn sb-btn-normal\">{{configService.labelConfig?.button_labels?.search_btn_label}}</button>\n </div>\n <p class=\"fs-0-986 ml-auto sb-color-grey\" >{{assetsCount}}</p>\n </div>\n <div *ngIf=\"!myAssets?.length && searchMyInput\" class=\"fs-0785 my-10\"> {{emptySearchMessage}} </div>\n <div class=\"sb-grid-layout image\">\n <div class=\"sb-video-content\" *ngFor=\"let data of myAssets\">\n <div class=\"sb-image-section relative position\">\n <img (click)=\"addImageInEditor(data.downloadUrl, data.identifier)\" alt=\"\" [src]=\"data.downloadUrl\">\n </div>\n </div>\n </div>\n </div>\n <div class=\"ui segment sb-tabset-segment m-0 pt-15\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"500\" [scrollWindow]=\"false\" (scrolled)=\"lazyloadAllImages()\" suiTabContent=\"2\">\n <div class=\"ui pb-16 d-flex pl-0\">\n <div class=\"sb-search-box small no-btn\">\n <div class=\"input-div relative\">\n <i class=\"search icon\" aria-hidden=\"true\"></i>\n <input (change)=\"searchImages($event, 'allImages')\" class=\"sb-search-input\" [(ngModel)]=\"searchAllInput\"\n type=\"text\" placeholder={{configService.labelConfig?.lbl?.searchPlaceholder}} />\n <i class=\"close icon\" aria-hidden=\"true\" (click)=\"searchImages('clearInput', 'allImages')\"></i>\n </div>\n <button class=\"sb-btn sb-btn-normal\">{{configService.labelConfig?.button_labels?.search_btn_label}}</button>\n </div>\n <p class=\"fs-0-986 ml-auto sb-color-grey\" >{{assetsCount}}</p>\n </div>\n <div *ngIf=\"!allImages?.length && searchAllInput\" class=\"fs-0785\"> {{emptySearchMessage}} </div>\n <div class=\"sb-grid-layout image\">\n <div class=\"sb-video-content\" *ngFor=\"let data of allImages\">\n <div class=\"sb-image-section\">\n <img (click)=\"addImageInEditor(data.downloadUrl, data.identifier)\" alt=\"\" [src]=\"data.downloadUrl\">\n </div>\n </div>\n </div>\n </div>\n </sui-tabset>\n </div>\n <div class=\"sb-modal-actions flex-jc-space-end\">\n <button (click)=\"openImageUploadModal();\" class=\"sb-btn sb-btn-primary sb-btn-normal\">{{configService.labelConfig?.lbl?.uploadAndUse}}</button>\n </div>\n</sui-modal>\n<sui-modal class=\"sb-modal overflow-modal\" [isClosable]=\"true\" [isInverted]=\"false\"\n (dismissed)=\"dismissImageUploadModal()\" *ngIf=\"showImageUploadModal\" [size]=\"'large'\" [isFullScreen]=\"false\"\n [mustScroll]=\"true\" appBodyScroll #modal>\n <div class=\"sb-modal-header\">{{configService.labelConfig?.lbl?.uploadAndUse}}</div>\n <div class=\"p-10 sb-bg-white\">\n <div class=\"d-flex\">\n <div class=\"w-50\">\n <div class=\"content\">\n <h6 class=\"mb-8 fs-normal\"> {{configService.labelConfig?.lbl?.chooseOrDragImage}}<span class=\"red\">*</span></h6>\n <div class=\"upload-image-modal-section d-flex flex-ai-center flex-jc-center flex-dc\">\n <ng-container>\n <button class=\"upload-input-button sb-btn sb-btn-success sb-btn-normal\">\n {{configService.labelConfig?.lbl?.uploadFromComputer}} \n <input (change)=\"uploadImage($event)\" type=\"file\" [accept]=\"acceptImageType\" name=\"assetfile\">\n </button>\n <div class=\"py-10 fs-0-785 sb-color-primary\" *ngIf=\"imageUploadLoader\"> {{assetName}} </div>\n <span class=\"fsmall mt-8\">{{configService.labelConfig?.lbl?.upload}} {{assetConfig.image.accepted}} \n ({{configService.labelConfig?.lbl?.maxFileSize}} {{assetConfig.image.size}}{{assetConfig.image.sizeType}})</span>\n <div *ngIf=\"showErrorMsg\" class=\"sb-color-error fsmall mt-8\">\n <p>{{errorMsg}}</p>\n </div>\n </ng-container>\n </div>\n <div class=\"ui info message sb-info-bx\">\n <ul class=\"list\">\n <li class=\"fs-0785\"> {{configService.labelConfig?.lbl?.allowedFileTypes}} {{assetConfig.image.accepted}}</li>\n <li class=\"fs-0785\"> {{configService.labelConfig?.lbl?.maximumAllowedFileSize}} {{assetConfig.image.size}}{{assetConfig.image.sizeType}}</li>\n </ul>\n </div>\n <h6 class=\"fs-0785\">{{configService.labelConfig?.lbl?.copyRightsAndLicense}}<span class=\"red\">*</span></h6>\n <p class=\"fsmall mt-8 terms-and-condition\">{{termsAndCondition}}</p>\n </div>\n </div>\n <div class=\"w-50 pl-10 ml-10 b-bl\">\n <div class=\"ui info message sb-info-bx mb-0\">\n <ul class=\"list\">\n <li class=\"fs-0785 font-weight-bold\">\n <i class=\"icon info circle\" aria-hidden=\"true\"></i>\n {{configService.labelConfig?.lbl?.dropChooseFile}} </li>\n </ul>\n </div>\n <div class=\"sb-form-fields\">\n <div class=\"form-container upload-form\">\n <sb-dynamic-form [config]=\"formConfig\" \n (statusChanges)=\"onStatusChanges($event)\" (valueChanges)=\"valueChanges($event)\"></sb-dynamic-form>\n </div>\n </div>\n </div>\n </div>\n <div class=\"sb-modal-actions flex-jc-space-between p-0\">\n <div>\n <button (click)=\"dismissPops(modal);\" class=\"mr-10 sb-btn sb-btn-primary sb-btn-normal\">{{configService.labelConfig?.button_labels?.cancel_btn_label}}</button>\n\n <button (click)=\"uploadAndUseImage(modal);\" [disabled]=\"!imageFormValid\" \n [ngClass]=\"{'sb-btn-primary': imageFormValid, 'sb-btn-disabled': !imageFormValid}\"\n class=\"sb-btn sb-btn-normal text-left\">{{configService.labelConfig?.button_labels?.upload_use_btn_label}}\n </button>\n </div>\n <div>\n <button (click)=\"dismissImageUploadModal();\" class=\" sb-btn sb-btn-primary sb-btn-normal\">{{configService.labelConfig?.button_labels?.back_btn_label}}</button>\n </div>\n </div>\n </div>\n</sui-modal>", styles: [".editorWrapper{border:0px solid white}.editorWrapper.hasError{border:0px solid red}.characterCount{text-align:right;border-top:0;padding-right:7px;font-size:11px;font-weight:700;margin-top:-16px;position:relative}.custom-image img{border:1px dotted;padding:7px;margin:6px;cursor:pointer}.resource-image{height:180px!important}.asset_container{overflow-y:auto;overflow-x:hidden;min-height:300px!important;max-height:300px!important;padding:5px}.insert-image-btn{position:absolute;z-index:1;left:315px;background-color:transparent;padding:12px 14px!important;margin-left:6px}.insert-image-btn>.icon{opacity:1}.insert-image-btn:active{background-color:transparent}.upload-file-description p{color:#999}.upload-file-description ul{margin:0;list-style:disc}.upload-file-description ul li{margin-bottom:8px}.upload-file-description ul li a{cursor:pointer;font-size:12px}.sb-grid-layout{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));grid-gap:16px}.sb-grid-layout.image{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}.sb-grid-layout.video{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.sb-grid-layout .sb-video-content .sb-image-section{height:96px;overflow:hidden;border-radius:4px;box-shadow:inset 0 1px 3px #00000080}.sb-image-section .selected-video{display:none}.sb-image-section.active .selected-video{position:absolute;right:4px;top:4px;color:#07bc81;font-size:20px;display:block}.sb-grid-layout .sb-video-content .sb-image-section img{width:100%;height:100%;cursor:pointer}.overlay-image{width:100%;height:100%;background:#0000004d;position:absolute;left:0;right:0;cursor:pointer}.overlay-image .play.icon{position:absolute;transform:translate(-50%,-50%);top:50%;left:50%;color:#fff9;font-size:32px;cursor:pointer}::ng-deep .ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-toolbar,::ng-deep .ck.ck-editor__top .ck-sticky-panel .ck-toolbar.ck-rounded-corners{border-left:none;border-right:none;border-bottom:1px solid #c4c4c4;border-radius:0}::ng-deep .ck-rounded-corners .ck.ck-editor__main>.ck-editor__editable,::ng-deep .ck.ck-editor__main>.ck-editor__editable.ck-rounded-corners{border:none}.upload-image-modal-section{border-radius:4px;width:100%;min-height:140px;background:#f5f9fc;border:1px dashed #024f9d}.upload-input-button input[type=file]{position:absolute;right:0;top:0;font-size:118px;margin:0;padding:0;cursor:pointer;opacity:0;height:100%}.upload-file-section{display:flex;height:240px;width:100%;max-width:800px;align-items:center;justify-content:center;flex-direction:column;margin:0 auto;background-color:#f5f9fc;border:1px dashed #80a7ce}.qq-uploader.qq-uploader-selector.custom-qq-uploader{background:inherit;border-color:none;border:none;max-height:inherit;min-height:inherit;overflow-y:inherit;width:688px;height:240px;display:flex;justify-content:center;align-items:center}.terms-and-condition{line-height:14px}.sb-info-bx{padding:.4rem!important}.sb-info-bx li{margin:0!important;padding:0!important}.sb-info-bx li:before{content:\"\"!important}.red{color:red}.b-bl{border-left:solid 1px #e4e1e1}.sb-form-fields .sb-field-group{margin:1rem 0}.sb-form-fields .sb-field{position:relative;margin-bottom:.5rem}.sb-form-fields .sb-field .sb-form-control{border:1px solid rgba(34,36,38,.15);width:100%;border-radius:.28571429rem;box-shadow:0 0 0 0 transparent inset;padding:.25rem .5rem!important}.sb-color-grey{color:#666}.flex-jc-space-end{justify-content:flex-end!important}.fs-0785{font-size:.785rem!important}.ui.info.message{color:#276f86!important}.sb-textbox[disabled=true]{opacity:.3!important;font-weight:500!important}.sb-tabset-segment{min-height:288px;max-height:288px;overflow-y:auto}input:focus-visible{border:none!important}\n"] }]
|
|
332
|
+
args: [{ selector: 'lib-asset-browser', template: "<sui-modal [isClosable]=\"true\" class=\"sb-modal overflow-modal\" [isInverted]=\"false\" (dismissed)=\"dismissImagePicker()\"\n *ngIf=\"showImagePicker\" [size]=\"'normal'\" [isFullScreen]=\"false\" [mustScroll]=\"true\" #modal>\n <div class=\"sb-modal-header\">{{configService.labelConfig?.lbl?.selectImage}}</div>\n <div class=\"sb-modal-content p-0\">\n <sui-tabset>\n <div class=\"sb-tabset-menu\">\n <a class=\"sb-item\" (activate)=\"getMyImages(0)\" suiTabHeader=\"1\">{{configService.labelConfig?.lbl?.myImages}}</a>\n <a class=\"sb-item\" (activate)=\"getAllImages(0)\" suiTabHeader=\"2\">{{configService.labelConfig?.lbl?.allImage}}</a>\n </div>\n <div class=\"ui segment sb-tabset-segment m-0 pt-15\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"500\" [scrollWindow]=\"false\" (scrolled)=\"lazyloadMyImages()\" suiTabContent=\"1\">\n <div class=\"ui pb-16 d-flex pl-0\">\n <div class=\"sb-search-box small no-btn\">\n <div class=\"input-div relative\">\n <i class=\"search icon\" aria-hidden=\"true\"></i>\n <input (change)=\"searchImages($event, 'myImages')\" class=\"sb-search-input\" [(ngModel)]=\"searchMyInput\"\n type=\"text\" placeholder={{configService.labelConfig?.lbl?.searchPlaceholder}} />\n <i class=\"close icon\" aria-hidden=\"true\" (click)=\"searchImages('clearInput', 'myImages')\"></i>\n </div>\n <button class=\"sb-btn sb-btn-normal\">{{configService.labelConfig?.button_labels?.search_btn_label}}</button>\n </div>\n <p class=\"fs-0-986 ml-auto sb-color-grey\" >{{assetsCount}}</p>\n </div>\n <div *ngIf=\"!myAssets?.length && searchMyInput\" class=\"fs-0785 my-10\"> {{emptySearchMessage}} </div>\n <div class=\"sb-grid-layout image\">\n <div class=\"sb-video-content\" *ngFor=\"let data of myAssets\">\n <div class=\"sb-image-section relative position\">\n <img (click)=\"addImageInEditor(data.downloadUrl, data.identifier)\" alt=\"\" [src]=\"data.downloadUrl\">\n </div>\n </div>\n </div>\n </div>\n <div class=\"ui segment sb-tabset-segment m-0 pt-15\" infiniteScroll [infiniteScrollDistance]=\"2\"\n [infiniteScrollThrottle]=\"500\" [scrollWindow]=\"false\" (scrolled)=\"lazyloadAllImages()\" suiTabContent=\"2\">\n <div class=\"ui pb-16 d-flex pl-0\">\n <div class=\"sb-search-box small no-btn\">\n <div class=\"input-div relative\">\n <i class=\"search icon\" aria-hidden=\"true\"></i>\n <input (change)=\"searchImages($event, 'allImages')\" class=\"sb-search-input\" [(ngModel)]=\"searchAllInput\"\n type=\"text\" placeholder={{configService.labelConfig?.lbl?.searchPlaceholder}} />\n <i class=\"close icon\" aria-hidden=\"true\" (click)=\"searchImages('clearInput', 'allImages')\"></i>\n </div>\n <button class=\"sb-btn sb-btn-normal\">{{configService.labelConfig?.button_labels?.search_btn_label}}</button>\n </div>\n <p class=\"fs-0-986 ml-auto sb-color-grey\" >{{assetsCount}}</p>\n </div>\n <div *ngIf=\"!allImages?.length && searchAllInput\" class=\"fs-0785\"> {{emptySearchMessage}} </div>\n <div class=\"sb-grid-layout image\">\n <div class=\"sb-video-content\" *ngFor=\"let data of allImages\">\n <div class=\"sb-image-section\">\n <img (click)=\"addImageInEditor(data.downloadUrl, data.identifier)\" alt=\"\" [src]=\"data.downloadUrl\">\n </div>\n </div>\n </div>\n </div>\n </sui-tabset>\n </div>\n <div class=\"sb-modal-actions flex-jc-space-end\">\n <button (click)=\"openImageUploadModal();\" class=\"sb-btn sb-btn-primary sb-btn-normal\">{{configService.labelConfig?.lbl?.uploadAndUse}}</button>\n </div>\n</sui-modal>\n<sui-modal class=\"sb-modal overflow-modal\" [isClosable]=\"isClosable\" [isInverted]=\"false\"\n (dismissed)=\"dismissImageUploadModal()\" *ngIf=\"showImageUploadModal\" [size]=\"'large'\" [isFullScreen]=\"false\"\n [mustScroll]=\"true\" appBodyScroll #modal>\n <div class=\"sb-modal-header\">{{configService.labelConfig?.lbl?.uploadAndUse}}</div>\n <div class=\"p-10 sb-bg-white\">\n <div class=\"d-flex\">\n <div class=\"w-50\">\n <div class=\"content\">\n <h6 class=\"mb-8 fs-normal\"> {{configService.labelConfig?.lbl?.chooseOrDragImage}}<span class=\"red\">*</span></h6>\n <div class=\"upload-image-modal-section d-flex flex-ai-center flex-jc-center flex-dc\">\n <ng-container>\n <button class=\"upload-input-button sb-btn sb-btn-success sb-btn-normal\">\n {{configService.labelConfig?.lbl?.uploadFromComputer}} \n <input (change)=\"uploadImage($event)\" type=\"file\" [accept]=\"acceptImageType\" name=\"assetfile\">\n </button>\n <div class=\"py-10 fs-0-785 sb-color-primary\" *ngIf=\"imageUploadLoader\"> {{assetName}} </div>\n <span class=\"fsmall mt-8\">{{configService.labelConfig?.lbl?.upload}} {{assetConfig.image.accepted}} \n ({{configService.labelConfig?.lbl?.maxFileSize}} {{assetConfig.image.size}}{{assetConfig.image.sizeType}})</span>\n <div *ngIf=\"showErrorMsg\" class=\"sb-color-error fsmall mt-8\">\n <p>{{errorMsg}}</p>\n </div>\n </ng-container>\n </div>\n <div class=\"ui info message sb-info-bx\">\n <ul class=\"list\">\n <li class=\"fs-0785\"> {{configService.labelConfig?.lbl?.allowedFileTypes}} {{assetConfig.image.accepted}}</li>\n <li class=\"fs-0785\"> {{configService.labelConfig?.lbl?.maximumAllowedFileSize}} {{assetConfig.image.size}}{{assetConfig.image.sizeType}}</li>\n </ul>\n </div>\n <h6 class=\"fs-0785\">{{configService.labelConfig?.lbl?.copyRightsAndLicense}}<span class=\"red\">*</span></h6>\n <p class=\"fsmall mt-8 terms-and-condition\">{{termsAndCondition}}</p>\n </div>\n </div>\n <div class=\"w-50 pl-10 ml-10 b-bl\">\n <div class=\"ui info message sb-info-bx mb-0\">\n <ul class=\"list\">\n <li class=\"fs-0785 font-weight-bold\">\n <i class=\"icon info circle\" aria-hidden=\"true\"></i>\n {{configService.labelConfig?.lbl?.dropChooseFile}} </li>\n </ul>\n </div>\n <div class=\"sb-form-fields\">\n <div class=\"form-container upload-form\">\n <sb-dynamic-form [config]=\"formConfig\" \n (statusChanges)=\"onStatusChanges($event)\" (valueChanges)=\"valueChanges($event)\"></sb-dynamic-form>\n </div>\n </div>\n </div>\n </div>\n <div class=\"sb-modal-actions flex-jc-space-between p-0\">\n <div>\n <button (click)=\"dismissPops(modal);\" class=\"mr-10 sb-btn sb-btn-primary sb-btn-normal\">{{configService.labelConfig?.button_labels?.cancel_btn_label}}</button>\n <button type=\"button\" class=\"sb-btn sb-btn-normal text-left sb-btn-loading-spinner sb-btn-primary\"\n [disabled]=\"!imageFormValid\" (click)=\"uploadAndUseImage(modal);\" \n [ngClass]=\"{'sb-btn-primary': imageFormValid, 'sb-btn-disabled': !imageFormValid}\">\n <div class=\"sb-loading-spinner\" *ngIf=\"loading\" role=\"status\" aria-hidden=\"true\"></div>\n {{configService.labelConfig?.button_labels?.upload_use_btn_label}}\n </button>\n </div>\n <div>\n <button (click)=\"dismissImageUploadModal();\" class=\" sb-btn sb-btn-primary sb-btn-normal\">{{configService.labelConfig?.button_labels?.back_btn_label}}</button>\n </div>\n </div>\n </div>\n</sui-modal>", styles: [".editorWrapper{border:0px solid white}.editorWrapper.hasError{border:0px solid red}.characterCount{text-align:right;border-top:0;padding-right:7px;font-size:11px;font-weight:700;margin-top:-16px;position:relative}.custom-image img{border:1px dotted;padding:7px;margin:6px;cursor:pointer}.resource-image{height:180px!important}.asset_container{overflow-y:auto;overflow-x:hidden;min-height:300px!important;max-height:300px!important;padding:5px}.insert-image-btn{position:absolute;z-index:1;left:315px;background-color:transparent;padding:12px 14px!important;margin-left:6px}.insert-image-btn>.icon{opacity:1}.insert-image-btn:active{background-color:transparent}.upload-file-description p{color:#999}.upload-file-description ul{margin:0;list-style:disc}.upload-file-description ul li{margin-bottom:8px}.upload-file-description ul li a{cursor:pointer;font-size:12px}.sb-grid-layout{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));grid-gap:16px}.sb-grid-layout.image{grid-template-columns:repeat(auto-fill,minmax(96px,1fr))}.sb-grid-layout.video{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.sb-grid-layout .sb-video-content .sb-image-section{height:96px;overflow:hidden;border-radius:4px;box-shadow:inset 0 1px 3px #00000080}.sb-image-section .selected-video{display:none}.sb-image-section.active .selected-video{position:absolute;right:4px;top:4px;color:#07bc81;font-size:20px;display:block}.sb-grid-layout .sb-video-content .sb-image-section img{width:100%;height:100%;cursor:pointer}.overlay-image{width:100%;height:100%;background:#0000004d;position:absolute;left:0;right:0;cursor:pointer}.overlay-image .play.icon{position:absolute;transform:translate(-50%,-50%);top:50%;left:50%;color:#fff9;font-size:32px;cursor:pointer}::ng-deep .ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-toolbar,::ng-deep .ck.ck-editor__top .ck-sticky-panel .ck-toolbar.ck-rounded-corners{border-left:none;border-right:none;border-bottom:1px solid #c4c4c4;border-radius:0}::ng-deep .ck-rounded-corners .ck.ck-editor__main>.ck-editor__editable,::ng-deep .ck.ck-editor__main>.ck-editor__editable.ck-rounded-corners{border:none}.upload-image-modal-section{border-radius:4px;width:100%;min-height:140px;background:#f5f9fc;border:1px dashed #024f9d}.upload-input-button input[type=file]{position:absolute;right:0;top:0;font-size:118px;margin:0;padding:0;cursor:pointer;opacity:0;height:100%}.upload-file-section{display:flex;height:240px;width:100%;max-width:800px;align-items:center;justify-content:center;flex-direction:column;margin:0 auto;background-color:#f5f9fc;border:1px dashed #80a7ce}.qq-uploader.qq-uploader-selector.custom-qq-uploader{background:inherit;border-color:none;border:none;max-height:inherit;min-height:inherit;overflow-y:inherit;width:688px;height:240px;display:flex;justify-content:center;align-items:center}.terms-and-condition{line-height:14px}.sb-info-bx{padding:.4rem!important}.sb-info-bx li{margin:0!important;padding:0!important}.sb-info-bx li:before{content:\"\"!important}.red{color:red}.b-bl{border-left:solid 1px #e4e1e1}.sb-form-fields .sb-field-group{margin:1rem 0}.sb-form-fields .sb-field{position:relative;margin-bottom:.5rem}.sb-form-fields .sb-field .sb-form-control{border:1px solid rgba(34,36,38,.15);width:100%;border-radius:.28571429rem;box-shadow:0 0 0 0 transparent inset;padding:.25rem .5rem!important}.sb-color-grey{color:#666}.flex-jc-space-end{justify-content:flex-end!important}.fs-0785{font-size:.785rem!important}.ui.info.message{color:#276f86!important}.sb-textbox[disabled=true]{opacity:.3!important;font-weight:500!important}.sb-tabset-segment{min-height:288px;max-height:288px;overflow-y:auto}input:focus-visible{border:none!important}\n"] }]
|
|
315
333
|
}], ctorParameters: function () { return [{ type: i1.EditorService }, { type: i2.ConfigService }, { type: i3.QuestionService }]; }, propDecorators: { showImagePicker: [{
|
|
316
334
|
type: Input
|
|
317
335
|
}], assetBrowserEmitter: [{
|
|
@@ -322,4 +340,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
322
340
|
type: ViewChild,
|
|
323
341
|
args: ['modal']
|
|
324
342
|
}] } });
|
|
325
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtYnJvd3Nlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2xsZWN0aW9uLWVkaXRvci1saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9hc3NldC1icm93c2VyL2Fzc2V0LWJyb3dzZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvYXNzZXQtYnJvd3Nlci9hc3NldC1icm93c2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEtBQUssQ0FBQyxNQUFNLFdBQVcsQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7O0FBUzlDLE1BQU0sT0FBTyxxQkFBcUI7SUFLaEMsWUFBb0IsYUFBNEIsRUFBUyxhQUE0QixFQUMzRSxlQUFnQztRQUR0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzNFLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUpoQyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzlDLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFJeEQsZ0JBQVcsR0FBUSxFQUFFLENBQUM7UUFDdEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDUixz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TGpDLFNBQVM7K0JBQ0UsbUJBQW1COzhKQUtwQixlQUFlO3NCQUF2QixLQUFLO2dCQUNJLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxtQkFBbUI7c0JBQTVCLE1BQU07Z0JBQ3FCLEtBQUs7c0JBQWhDLFNBQVM7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyB0aHJvd0Vycm9yLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFZGl0b3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZWRpdG9yL2VkaXRvci5zZXJ2aWNlJztcbmltcG9ydCB7IFF1ZXN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3F1ZXN0aW9uL3F1ZXN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgY29uZmlnIH0gZnJvbSAnLi9hc3NldC1icm93c2VyLmRhdGEnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZy9jb25maWcuc2VydmljZSc7XG5kZWNsYXJlIGNvbnN0IFN1bmJpcmRGaWxlVXBsb2FkTGliOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1hc3NldC1icm93c2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc2V0LWJyb3dzZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hc3NldC1icm93c2VyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQXNzZXRCcm93c2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBzaG93SW1hZ2VQaWNrZXI7XG4gIEBPdXRwdXQoKSBhc3NldEJyb3dzZXJFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBtb2RhbERpc21pc3NFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBWaWV3Q2hpbGQoJ21vZGFsJykgcHJpdmF0ZSBtb2RhbDtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlZGl0b3JTZXJ2aWNlOiBFZGl0b3JTZXJ2aWNlLCBwdWJsaWMgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICBwcml2YXRlIHF1ZXN0aW9uU2VydmljZTogUXVlc3Rpb25TZXJ2aWNlKSB7IH1cbiAgYXNzZXRDb25maWc6IGFueSA9IHt9O1xuICBteUFzc2V0cyA9IFtdO1xuICBhbGxJbWFnZXMgPSBbXTtcbiAgcHVibGljIGltYWdlVXBsb2FkTG9hZGVyID0gZmFsc2U7XG4gIHNob3dJbWFnZVVwbG9hZE1vZGFsOiBib29sZWFuO1xuICBhY2NlcHRJbWFnZVR5cGU6IGFueTtcbiAgc2hvd0Vycm9yTXNnOiBib29sZWFuO1xuICBlcnJvck1zZzogc3RyaW5nO1xuICBxdWVyeTogc3RyaW5nO1xuICB1cGxvYWRlcjtcbiAgaXNDbG9zYWJsZSA9IHRydWU7XG4gIGxvYWRpbmcgPSBmYWxzZTtcbiAgcHVibGljIG1lZGlhb2JqO1xuICBwdWJsaWMgYXNzZXRQcm94eVVybCA9ICcvYXNzZXRzL3B1YmxpYy8nO1xuICBwdWJsaWMgZWRpdG9ySW5zdGFuY2U6IGFueTtcbiAgcHVibGljIGFzc2V0c0NvdW50OiBhbnk7XG4gIHB1YmxpYyBzZWFyY2hNeUlucHV0ID0gJyc7XG4gIHB1YmxpYyBzZWFyY2hBbGxJbnB1dDogYW55O1xuICBzaG93QWRkQnV0dG9uOiBib29sZWFuO1xuICBhcHBJY29uO1xuICBwdWJsaWMgZm9ybURhdGE6IGFueTtcbiAgcHVibGljIGFzc2VzdERhdGEgPSB7fTtcbiAgcHVibGljIGZvcm1Db25maWc6IGFueTtcbiAgcHVibGljIGluaXRpYWxGb3JtQ29uZmlnOiBhbnk7XG4gIHB1YmxpYyBpbWFnZUZvcm1WYWxpZDogYW55O1xuICBwdWJsaWMgdGVybXNBbmRDb25kaXRpb246IGFueTtcbiAgcHVibGljIGFzc2V0TmFtZTogYW55O1xuICBwdWJsaWMgZW1wdHlTZWFyY2hNZXNzYWdlOiBhbnk7XG4gIHB1YmxpYyBpbWFnZUZpbGU6IGFueTtcbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5pbml0aWFsRm9ybUNvbmZpZyA9IF8uZ2V0KGNvbmZpZywgJ3VwbG9hZEljb25Gb3JtQ29uZmlnJyk7XG4gICAgdGhpcy5mb3JtQ29uZmlnID0gXy5nZXQoY29uZmlnLCAndXBsb2FkSWNvbkZvcm1Db25maWcnKTtcbiAgICB0aGlzLmFzc2V0Q29uZmlnID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvckNvbmZpZy5jb25maWcuYXNzZXRDb25maWc7XG4gICAgdGhpcy50ZXJtc0FuZENvbmRpdGlvbiA9IF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZS5sYWJlbENvbmZpZywgJ3Rlcm1zQW5kQ29uZGl0aW9ucy4wMDEnKTtcbiAgICB0aGlzLmVtcHR5U2VhcmNoTWVzc2FnZSA9IF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZS5sYWJlbENvbmZpZywgJ21lc3NhZ2VzLmVycm9yLjAxNicpO1xuICAgIHRoaXMuYWNjZXB0SW1hZ2VUeXBlID0gdGhpcy5nZXRBY2NlcHRUeXBlKHRoaXMuYXNzZXRDb25maWcuaW1hZ2UuYWNjZXB0ZWQsICdpbWFnZScpO1xuICB9XG5cbiAgZ2V0QWNjZXB0VHlwZSh0eXBlTGlzdCwgdHlwZSkge1xuICAgIGNvbnN0IGFjY2VwdFR5cGVMaXN0ID0gdHlwZUxpc3Quc3BsaXQoJywgJyk7XG4gICAgY29uc3QgcmVzdWx0ID0gW107XG4gICAgXy5mb3JFYWNoKGFjY2VwdFR5cGVMaXN0LCAoY29udGVudCkgPT4ge1xuICAgICAgcmVzdWx0LnB1c2goYCR7dHlwZX0vJHtjb250ZW50fWApO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGluaXRpYWxpemVJbWFnZVBpY2tlcigpIHtcbiAgICB0aGlzLnNob3dJbWFnZVBpY2tlciA9IHRydWU7XG4gIH1cblxuICBvdXRwdXRFdmVudEhhbmRsZXIoZXZlbnQpIHtcbiAgICBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShldmVudCkpO1xuICB9XG5cbiAgZ2V0TXlJbWFnZXMob2Zmc2V0LCBxdWVyeT8sIHNlYXJjaD8pIHtcbiAgICB0aGlzLmFzc2V0c0NvdW50ID0gMDtcbiAgICBpZiAoIXNlYXJjaCkge1xuICAgICAgdGhpcy5zZWFyY2hNeUlucHV0ID0gJyc7XG4gICAgfVxuICAgIGlmIChvZmZzZXQgPT09IDApIHtcbiAgICAgIHRoaXMubXlBc3NldHMubGVuZ3RoID0gMDtcbiAgICB9XG4gICAgY29uc3QgcmVxID0ge1xuICAgICAgZmlsdGVyczoge1xuICAgICAgICBtZWRpYVR5cGU6IFsnaW1hZ2UnXSxcbiAgICAgICAgY3JlYXRlZEJ5OiBfLmdldCh0aGlzLmVkaXRvclNlcnZpY2UuZWRpdG9yQ29uZmlnLCAnY29udGV4dC51c2VyLmlkJylcbiAgICAgIH0sXG4gICAgICBvZmZzZXRcbiAgICB9O1xuICAgIGlmIChxdWVyeSkge1xuICAgICAgcmVxWydxdWVyeSddID0gcXVlcnk7XG4gICAgfVxuICAgIHRoaXMucXVlc3Rpb25TZXJ2aWNlLmdldEFzc2V0TWVkaWEocmVxKS5waXBlKGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgIGNvbnN0IGVyckluZm8gPSB7IGVycm9yTXNnOiBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UubGFiZWxDb25maWcsICdtZXNzYWdlcy5lcnJvci4wMjInKSB9O1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IodGhpcy5lZGl0b3JTZXJ2aWNlLmFwaUVycm9ySGFuZGxpbmcoZXJyLCBlcnJJbmZvKSk7XG4gICAgfSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICB0aGlzLmFzc2V0c0NvdW50ID0gcmVzLnJlc3VsdC5jb3VudDtcbiAgICAgIF8ubWFwKHJlcy5yZXN1bHQuY29udGVudCwgKGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uZG93bmxvYWRVcmwpIHtcbiAgICAgICAgICB0aGlzLm15QXNzZXRzLnB1c2goaXRlbSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkSW1hZ2VJbkVkaXRvcihpbWFnZVVybCwgaW1hZ2VJZCkge1xuICAgIHRoaXMuYXBwSWNvbiA9IGltYWdlVXJsO1xuICAgIHRoaXMuc2hvd0ltYWdlUGlja2VyID0gZmFsc2U7XG4gICAgdGhpcy5hc3NldEJyb3dzZXJFbWl0dGVyLmVtaXQoeyB0eXBlOiAnaW1hZ2UnLCB1cmw6IHRoaXMuYXBwSWNvbiB9KTtcbiAgfVxuXG4gIGdldEFsbEltYWdlcyhvZmZzZXQsIHF1ZXJ5Pywgc2VhcmNoPykge1xuICAgIHRoaXMuYXNzZXRzQ291bnQgPSAwO1xuICAgIGlmICghc2VhcmNoKSB7XG4gICAgICB0aGlzLnNlYXJjaEFsbElucHV0ID0gJyc7XG4gICAgfVxuICAgIGlmIChvZmZzZXQgPT09IDApIHtcbiAgICAgIHRoaXMuYWxsSW1hZ2VzLmxlbmd0aCA9IDA7XG4gICAgfVxuICAgIGNvbnN0IHJlcSA9IHtcbiAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgbWVkaWFUeXBlOiBbJ2ltYWdlJ11cbiAgICAgIH0sXG4gICAgICBvZmZzZXRcbiAgICB9O1xuICAgIGlmIChxdWVyeSkge1xuICAgICAgcmVxWydxdWVyeSddID0gcXVlcnk7XG4gICAgfVxuICAgIHRoaXMucXVlc3Rpb25TZXJ2aWNlLmdldEFzc2V0TWVkaWEocmVxKS5waXBlKGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgIGNvbnN0IGVyckluZm8gPSB7IGVycm9yTXNnOiBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UubGFiZWxDb25maWcsICdtZXNzYWdlcy5lcnJvci4wMjInKSB9O1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IodGhpcy5lZGl0b3JTZXJ2aWNlLmFwaUVycm9ySGFuZGxpbmcoZXJyLCBlcnJJbmZvKSk7XG4gICAgfSkpXG4gICAgICAuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5hc3NldHNDb3VudCA9IHJlcy5yZXN1bHQuY291bnQ7XG4gICAgICAgIF8ubWFwKHJlcy5yZXN1bHQuY29udGVudCwgKGl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAoaXRlbS5kb3dubG9hZFVybCkge1xuICAgICAgICAgICAgdGhpcy5hbGxJbWFnZXMucHVzaChpdGVtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBsYXp5bG9hZE15SW1hZ2VzKCkge1xuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMubXlBc3NldHMubGVuZ3RoO1xuICAgIHRoaXMuZ2V0TXlJbWFnZXMob2Zmc2V0LCB0aGlzLnF1ZXJ5LCB0cnVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBmdW5jdGlvbiB0byBsYXp5IGxvYWQgYWxsIGltYWdlc1xuICAgKi9cbiAgbGF6eWxvYWRBbGxJbWFnZXMoKSB7XG4gICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5hbGxJbWFnZXMubGVuZ3RoO1xuICAgIHRoaXMuZ2V0QWxsSW1hZ2VzKG9mZnNldCwgdGhpcy5xdWVyeSwgdHJ1ZSk7XG4gIH1cbiAgdXBsb2FkSW1hZ2UoZXZlbnQpIHtcbiAgICBjb25zdCBmaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgdGhpcy5mb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIHRoaXMuZm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSk7XG4gICAgdGhpcy5hc3NldE5hbWUgPSBmaWxlLm5hbWU7XG4gICAgY29uc3QgZmlsZVR5cGUgPSBmaWxlLnR5cGU7XG4gICAgY29uc3QgZmlsZU5hbWUgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKS5zbGljZSgwLCAtMSkuam9pbignLicpO1xuICAgIGNvbnN0IGZpbGVTaXplID0gZmlsZS5zaXplIC8gMTAyNCAvIDEwMjQ7XG4gICAgaWYgKGZpbGVUeXBlLnNwbGl0KCcvJylbMF0gPT09ICdpbWFnZScpIHtcbiAgICAgIHRoaXMuc2hvd0Vycm9yTXNnID0gZmFsc2U7XG4gICAgICBpZiAoZmlsZVNpemUgPiB0aGlzLmFzc2V0Q29uZmlnLmltYWdlLnNpemUpIHtcbiAgICAgICAgdGhpcy5zaG93RXJyb3JNc2cgPSB0cnVlO1xuICAgICAgICB0aGlzLmVycm9yTXNnID0gXy5nZXQodGhpcy5jb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnLCAnbWVzc2FnZXMuZXJyb3IuMDIxJykgK1xuICAgICAgICAgIHRoaXMuYXNzZXRDb25maWcuaW1hZ2Uuc2l6ZSArIHRoaXMuYXNzZXRDb25maWcuaW1hZ2Uuc2l6ZVR5cGU7XG4gICAgICAgIHRoaXMucmVzZXRGb3JtRGF0YSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5lcnJvck1zZyA9ICcnO1xuICAgICAgICB0aGlzLnNob3dFcnJvck1zZyA9IGZhbHNlO1xuICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTChmaWxlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93RXJyb3JNc2cgPSB0cnVlO1xuICAgICAgdGhpcy5lcnJvck1zZyA9IF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZS5sYWJlbENvbmZpZywgJ21lc3NhZ2VzLmVycm9yLjAyMCcpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuc2hvd0Vycm9yTXNnKSB7XG4gICAgICB0aGlzLmltYWdlRmlsZSA9IGZpbGU7XG4gICAgICB0aGlzLmltYWdlVXBsb2FkTG9hZGVyID0gdHJ1ZTtcbiAgICAgIHRoaXMuaW1hZ2VGb3JtVmFsaWQgPSB0cnVlO1xuICAgICAgdGhpcy5hc3Nlc3REYXRhID0gdGhpcy5nZW5lcmF0ZUFzc2V0Q3JlYXRlUmVxdWVzdChmaWxlTmFtZSwgZmlsZVR5cGUsICdpbWFnZScpO1xuICAgICAgdGhpcy5wb3B1bGF0ZUZvcm1EYXRhKHRoaXMuYXNzZXN0RGF0YSk7XG4gICAgfVxuICB9XG4gIHJlc2V0Rm9ybURhdGEoKSB7XG4gICAgdGhpcy5pbWFnZVVwbG9hZExvYWRlciA9IGZhbHNlO1xuICAgIHRoaXMuaW1hZ2VGb3JtVmFsaWQgPSBmYWxzZTtcbiAgICB0aGlzLmZvcm1Db25maWcgPSB0aGlzLmluaXRpYWxGb3JtQ29uZmlnO1xuICB9XG4gIHBvcHVsYXRlRm9ybURhdGEoZm9ybURhdGEpIHtcbiAgICBjb25zdCBmb3JtdmFsdWUgPSBfLmNsb25lRGVlcCh0aGlzLmZvcm1Db25maWcpO1xuICAgIHRoaXMuZm9ybUNvbmZpZyA9IG51bGw7XG4gICAgXy5mb3JFYWNoKGZvcm12YWx1ZSwgKGZvcm1GaWVsZENhdGVnb3J5KSA9PiB7XG4gICAgICBmb3JtRmllbGRDYXRlZ29yeS5kZWZhdWx0ID0gZm9ybURhdGFbZm9ybUZpZWxkQ2F0ZWdvcnkuY29kZV07XG4gICAgICBmb3JtRmllbGRDYXRlZ29yeS5lZGl0YWJsZSA9IHRydWU7XG4gICAgfSk7XG4gICAgdGhpcy5mb3JtQ29uZmlnID0gZm9ybXZhbHVlO1xuICB9XG4gIHVwbG9hZEFuZFVzZUltYWdlKG1vZGFsKSB7XG4gICAgdGhpcy5xdWVzdGlvblNlcnZpY2UuY3JlYXRlTWVkaWFBc3NldCh7IGNvbnRlbnQ6IHRoaXMuYXNzZXN0RGF0YSB9KS5waXBlKGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgIGNvbnN0IGVyckluZm8gPSB7IGVycm9yTXNnOiBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UubGFiZWxDb25maWcsICdtZXNzYWdlcy5lcnJvci4wMTknKSB9O1xuICAgICAgcmV0dXJuIHRocm93RXJyb3IodGhpcy5lZGl0b3JTZXJ2aWNlLmFwaUVycm9ySGFuZGxpbmcoZXJyLCBlcnJJbmZvKSk7XG4gICAgfSkpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICBjb25zdCBpbWdJZCA9IHJlcy5yZXN1bHQubm9kZV9pZDtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICAgIGRhdGE6IHRoaXMuZm9ybURhdGFcbiAgICAgIH07XG4gICAgICB0aGlzLnF1ZXN0aW9uU2VydmljZS51cGxvYWRNZWRpYShyZXF1ZXN0LCBpbWdJZCkucGlwZShjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgIGNvbnN0IGVyckluZm8gPSB7IGVycm9yTXNnOiBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UubGFiZWxDb25maWcsICdtZXNzYWdlcy5lcnJvci4wMTknKSB9O1xuICAgICAgICByZXR1cm4gdGhyb3dFcnJvcih0aGlzLmVkaXRvclNlcnZpY2UuYXBpRXJyb3JIYW5kbGluZyhlcnIsIGVyckluZm8pKTtcbiAgICAgIH0pKS5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGNvbnN0IHNpZ25lZFVSTCA9IHJlc3BvbnNlLnJlc3VsdC5wcmVfc2lnbmVkX3VybDtcbiAgICAgICAgbGV0IGJsb2JDb25maWcgPSB7XG4gICAgICAgICAgcHJvY2Vzc0RhdGE6IGZhbHNlLFxuICAgICAgICAgIGNvbnRlbnRUeXBlOiAnQXNzZXQnXG4gICAgICAgIH07XG4gICAgICAgIGJsb2JDb25maWcgPSB0aGlzLmVkaXRvclNlcnZpY2UuYXBwZW5kQ2xvdWRTdG9yYWdlSGVhZGVycyhibG9iQ29uZmlnKTtcbiAgICAgICAgdGhpcy51cGxvYWRUb0Jsb2Ioc2lnbmVkVVJMLCB0aGlzLmltYWdlRmlsZSwgYmxvYkNvbmZpZykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBjb25zdCBmaWxlVVJMID0gc2lnbmVkVVJMLnNwbGl0KCc/JylbMF07XG4gICAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgIGRhdGEuYXBwZW5kKCdmaWxlVXJsJywgZmlsZVVSTCk7XG4gICAgICAgICAgZGF0YS5hcHBlbmQoJ21pbWVUeXBlJywgXy5nZXQodGhpcy5pbWFnZUZpbGUsICd0eXBlJykpO1xuICAgICAgICAgIGNvbnN0IGNvbmZpZzEgPSB7XG4gICAgICAgICAgICBlbmN0eXBlOiAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScsXG4gICAgICAgICAgICBwcm9jZXNzRGF0YTogZmFsc2UsXG4gICAgICAgICAgICBjb250ZW50VHlwZTogZmFsc2UsXG4gICAgICAgICAgICBjYWNoZTogZmFsc2VcbiAgICAgICAgICB9O1xuICAgICAgICAgIGNvbnN0IHVwbG9hZE1lZGlhQ29uZmlnID0ge1xuICAgICAgICAgICAgZGF0YSxcbiAgICAgICAgICAgIHBhcmFtOiBjb25maWcxXG4gICAgICAgICAgfTtcbiAgICAgICAgICB0aGlzLnF1ZXN0aW9uU2VydmljZS51cGxvYWRNZWRpYSh1cGxvYWRNZWRpYUNvbmZpZywgaW1nSWQpLnBpcGUoY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXJySW5mbyA9IHsgZXJyb3JNc2c6IF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZS5sYWJlbENvbmZpZywgJ21lc3NhZ2VzLmVycm9yLjAxOScpIH07XG4gICAgICAgICAgICB0aGlzLmlzQ2xvc2FibGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmltYWdlRm9ybVZhbGlkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHRoaXMuZWRpdG9yU2VydmljZS5hcGlFcnJvckhhbmRsaW5nKGVyciwgZXJySW5mbykpO1xuICAgICAgICAgIH0pKS5zdWJzY3JpYmUoKHJlc3BvbnNlMSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hZGRJbWFnZUluRWRpdG9yKHJlc3BvbnNlMS5yZXN1bHQuY29udGVudF91cmwsIHJlc3BvbnNlMS5yZXN1bHQubm9kZV9pZCk7XG4gICAgICAgICAgICB0aGlzLnNob3dJbWFnZVVwbG9hZE1vZGFsID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmRpc21pc3NQb3BzKG1vZGFsKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuICBnZW5lcmF0ZUFzc2V0Q3JlYXRlUmVxdWVzdChmaWxlTmFtZSwgZmlsZVR5cGUsIG1lZGlhVHlwZSkge1xuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBmaWxlTmFtZSxcbiAgICAgIG1lZGlhVHlwZSxcbiAgICAgIG1pbWVUeXBlOiBmaWxlVHlwZSxcbiAgICAgIGNyZWF0ZWRCeTogXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvckNvbmZpZywgJ2NvbnRleHQudXNlci5pZCcpLFxuICAgICAgY3JlYXRvcjogXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvckNvbmZpZywgJ2NvbnRleHQudXNlci5mdWxsTmFtZScpLFxuICAgICAgY2hhbm5lbDogXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvckNvbmZpZywgJ2NvbnRleHQuY2hhbm5lbCcpXG4gICAgfTtcbiAgfVxuXG4gIHVwbG9hZFRvQmxvYihzaWduZWRVUkwsIGZpbGUsIGNvbmZpZyk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgY29uc3QgY3NwID0gXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvckNvbmZpZywgJ2NvbnRleHQuY2xvdWRTdG9yYWdlLnByb3ZpZGVyJywgJ2F6dXJlJyk7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChvYnNlcnZlcikgPT4ge1xuICAgICAgY29uc3QgdXBsb2FkZXJMaWIgPSBuZXcgU3VuYmlyZEZpbGVVcGxvYWRMaWIuRmlsZVVwbG9hZGVyKCk7XG4gICAgICB1cGxvYWRlckxpYi51cGxvYWQoeyB1cmw6IHNpZ25lZFVSTCwgZmlsZSwgY3NwIH0pXG4gICAgICAgIC5vbihcImVycm9yXCIsIChlcnJvcikgPT4ge1xuICAgICAgICAgIGNvbnN0IGVyckluZm8gPSB7IGVycm9yTXNnOiBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UubGFiZWxDb25maWcsICdtZXNzYWdlcy5lcnJvci4wMTgnKSB9O1xuICAgICAgICAgIHRoaXMuaXNDbG9zYWJsZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IodGhpcy5lZGl0b3JTZXJ2aWNlLmFwaUVycm9ySGFuZGxpbmcoZXJyb3IsIGVyckluZm8pKTtcbiAgICAgICAgfSkub24oXCJjb21wbGV0ZWRcIiwgKGNvbXBsZXRlZCkgPT4ge1xuICAgICAgICAgIG9ic2VydmVyLm5leHQoY29tcGxldGVkKTtcbiAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgICB9KVxuICAgIH0pO1xuICB9XG5cblxuICBkaXNtaXNzSW1hZ2VVcGxvYWRNb2RhbCgpIHtcbiAgICB0aGlzLnNob3dJbWFnZVBpY2tlciA9IHRydWU7XG4gICAgdGhpcy5zaG93SW1hZ2VVcGxvYWRNb2RhbCA9IGZhbHNlO1xuICB9XG4gIG9wZW5JbWFnZVVwbG9hZE1vZGFsKCkge1xuICAgIHRoaXMuc2hvd0ltYWdlVXBsb2FkTW9kYWwgPSB0cnVlO1xuICAgIHRoaXMuZm9ybURhdGEgPSBudWxsO1xuICAgIHRoaXMuZm9ybUNvbmZpZyA9IHRoaXMuaW5pdGlhbEZvcm1Db25maWc7XG4gICAgdGhpcy5pbWFnZVVwbG9hZExvYWRlciA9IGZhbHNlO1xuICAgIHRoaXMuaW1hZ2VGb3JtVmFsaWQgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dFcnJvck1zZyA9IGZhbHNlO1xuICB9XG4gIGRpc21pc3NQb3BzKG1vZGFsKSB7XG4gICAgdGhpcy5kaXNtaXNzSW1hZ2VQaWNrZXIoKTtcbiAgICBtb2RhbC5kZW55KCk7XG4gIH1cbiAgZGlzbWlzc0ltYWdlUGlja2VyKCkge1xuICAgIHRoaXMuc2hvd0ltYWdlUGlja2VyID0gZmFsc2U7XG4gICAgdGhpcy5tb2RhbERpc21pc3NFbWl0dGVyLmVtaXQoe30pXG4gIH1cbiAgc2VhcmNoSW1hZ2VzKGV2ZW50LCB0eXBlKSB7XG4gICAgaWYgKGV2ZW50ID09PSAnY2xlYXJJbnB1dCcgJiYgdHlwZSA9PT0gJ215SW1hZ2VzJykge1xuICAgICAgdGhpcy5xdWVyeSA9ICcnO1xuICAgICAgdGhpcy5zZWFyY2hNeUlucHV0ID0gJyc7XG4gICAgfSBlbHNlIGlmIChldmVudCA9PT0gJ2NsZWFySW5wdXQnICYmIHR5cGUgPT09ICdhbGxJbWFnZXMnKSB7XG4gICAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgICB0aGlzLnNlYXJjaEFsbElucHV0ID0gJyc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucXVlcnkgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAnbXlJbWFnZXMnKSB7XG4gICAgICB0aGlzLmdldE15SW1hZ2VzKDAsIHRoaXMucXVlcnksIHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmdldEFsbEltYWdlcygwLCB0aGlzLnF1ZXJ5LCB0cnVlKTtcbiAgICB9XG4gIH1cbiAgb25TdGF0dXNDaGFuZ2VzKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmlzVmFsaWQgJiYgdGhpcy5pbWFnZVVwbG9hZExvYWRlcikge1xuICAgICAgdGhpcy5pbWFnZUZvcm1WYWxpZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW1hZ2VGb3JtVmFsaWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgdmFsdWVDaGFuZ2VzKGV2ZW50KSB7XG4gICAgdGhpcy5hc3Nlc3REYXRhID0gXy5tZXJnZSh7fSwgdGhpcy5hc3Nlc3REYXRhLCBldmVudCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5tb2RhbCAmJiB0aGlzLm1vZGFsLmRlbnkpIHtcbiAgICAgIHRoaXMubW9kYWwuZGVueSgpO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8c3VpLW1vZGFsIFtpc0Nsb3NhYmxlXT1cInRydWVcIiBjbGFzcz1cInNiLW1vZGFsIG92ZXJmbG93LW1vZGFsXCIgW2lzSW52ZXJ0ZWRdPVwiZmFsc2VcIiAoZGlzbWlzc2VkKT1cImRpc21pc3NJbWFnZVBpY2tlcigpXCJcbiAgKm5nSWY9XCJzaG93SW1hZ2VQaWNrZXJcIiBbc2l6ZV09XCInbm9ybWFsJ1wiIFtpc0Z1bGxTY3JlZW5dPVwiZmFsc2VcIiBbbXVzdFNjcm9sbF09XCJ0cnVlXCIgI21vZGFsPlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtaGVhZGVyXCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LnNlbGVjdEltYWdlfX08L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNiLW1vZGFsLWNvbnRlbnQgcC0wXCI+XG4gICAgPHN1aS10YWJzZXQ+XG4gICAgICA8ZGl2IGNsYXNzPVwic2ItdGFic2V0LW1lbnVcIj5cbiAgICAgICAgPGEgY2xhc3M9XCJzYi1pdGVtXCIgKGFjdGl2YXRlKT1cImdldE15SW1hZ2VzKDApXCIgc3VpVGFiSGVhZGVyPVwiMVwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5teUltYWdlc319PC9hPlxuICAgICAgICA8YSBjbGFzcz1cInNiLWl0ZW1cIiAoYWN0aXZhdGUpPVwiZ2V0QWxsSW1hZ2VzKDApXCIgc3VpVGFiSGVhZGVyPVwiMlwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5hbGxJbWFnZX19PC9hPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidWkgc2VnbWVudCBzYi10YWJzZXQtc2VnbWVudCBtLTAgcHQtMTVcIiBpbmZpbml0ZVNjcm9sbCBbaW5maW5pdGVTY3JvbGxEaXN0YW5jZV09XCIyXCJcbiAgICAgICAgW2luZmluaXRlU2Nyb2xsVGhyb3R0bGVdPVwiNTAwXCIgW3Njcm9sbFdpbmRvd109XCJmYWxzZVwiIChzY3JvbGxlZCk9XCJsYXp5bG9hZE15SW1hZ2VzKClcIiBzdWlUYWJDb250ZW50PVwiMVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidWkgIHBiLTE2IGQtZmxleCBwbC0wXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiLXNlYXJjaC1ib3ggc21hbGwgbm8tYnRuXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZGl2IHJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwic2VhcmNoIGljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgIDxpbnB1dCAoY2hhbmdlKT1cInNlYXJjaEltYWdlcygkZXZlbnQsICdteUltYWdlcycpXCIgY2xhc3M9XCJzYi1zZWFyY2gtaW5wdXRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaE15SW5wdXRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LnNlYXJjaFBsYWNlaG9sZGVyfX0gLz5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJjbG9zZSBpY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgKGNsaWNrKT1cInNlYXJjaEltYWdlcygnY2xlYXJJbnB1dCcsICdteUltYWdlcycpXCI+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi1ub3JtYWxcIj57e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmJ1dHRvbl9sYWJlbHM/LnNlYXJjaF9idG5fbGFiZWx9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwIGNsYXNzPVwiZnMtMC05ODYgbWwtYXV0byBzYi1jb2xvci1ncmV5XCIgPnt7YXNzZXRzQ291bnR9fTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhbXlBc3NldHM/Lmxlbmd0aCAmJiBzZWFyY2hNeUlucHV0XCIgY2xhc3M9XCJmcy0wNzg1IG15LTEwXCI+IHt7ZW1wdHlTZWFyY2hNZXNzYWdlfX0gIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2ItZ3JpZC1sYXlvdXQgaW1hZ2VcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ItdmlkZW8tY29udGVudFwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIG15QXNzZXRzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ItaW1hZ2Utc2VjdGlvbiByZWxhdGl2ZSBwb3NpdGlvblwiPlxuICAgICAgICAgICAgICA8aW1nIChjbGljayk9XCJhZGRJbWFnZUluRWRpdG9yKGRhdGEuZG93bmxvYWRVcmwsIGRhdGEuaWRlbnRpZmllcilcIiBhbHQ9XCJcIiBbc3JjXT1cImRhdGEuZG93bmxvYWRVcmxcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInVpIHNlZ21lbnQgc2ItdGFic2V0LXNlZ21lbnQgbS0wIHB0LTE1XCIgaW5maW5pdGVTY3JvbGwgW2luZmluaXRlU2Nyb2xsRGlzdGFuY2VdPVwiMlwiXG4gICAgICAgIFtpbmZpbml0ZVNjcm9sbFRocm90dGxlXT1cIjUwMFwiIFtzY3JvbGxXaW5kb3ddPVwiZmFsc2VcIiAoc2Nyb2xsZWQpPVwibGF6eWxvYWRBbGxJbWFnZXMoKVwiIHN1aVRhYkNvbnRlbnQ9XCIyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1aSAgcGItMTYgZC1mbGV4IHBsLTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Itc2VhcmNoLWJveCBzbWFsbCBuby1idG5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1kaXYgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJzZWFyY2ggaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgPGlucHV0IChjaGFuZ2UpPVwic2VhcmNoSW1hZ2VzKCRldmVudCwgJ2FsbEltYWdlcycpXCIgY2xhc3M9XCJzYi1zZWFyY2gtaW5wdXRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaEFsbElucHV0XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPXt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5zZWFyY2hQbGFjZWhvbGRlcn19IC8+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiY2xvc2UgaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIChjbGljayk9XCJzZWFyY2hJbWFnZXMoJ2NsZWFySW5wdXQnLCAnYWxsSW1hZ2VzJylcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzYi1idG4gc2ItYnRuLW5vcm1hbFwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8uYnV0dG9uX2xhYmVscz8uc2VhcmNoX2J0bl9sYWJlbH19PC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHAgY2xhc3M9XCJmcy0wLTk4NiBtbC1hdXRvIHNiLWNvbG9yLWdyZXlcIiA+e3thc3NldHNDb3VudH19PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFhbGxJbWFnZXM/Lmxlbmd0aCAmJiBzZWFyY2hBbGxJbnB1dFwiIGNsYXNzPVwiZnMtMDc4NVwiPiB7e2VtcHR5U2VhcmNoTWVzc2FnZX19IDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2ItZ3JpZC1sYXlvdXQgaW1hZ2VcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ItdmlkZW8tY29udGVudFwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGFsbEltYWdlc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiLWltYWdlLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgPGltZyAoY2xpY2spPVwiYWRkSW1hZ2VJbkVkaXRvcihkYXRhLmRvd25sb2FkVXJsLCBkYXRhLmlkZW50aWZpZXIpXCIgYWx0PVwiXCIgW3NyY109XCJkYXRhLmRvd25sb2FkVXJsXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L3N1aS10YWJzZXQ+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtYWN0aW9ucyBmbGV4LWpjLXNwYWNlLWVuZFwiPlxuICAgIDxidXR0b24gKGNsaWNrKT1cIm9wZW5JbWFnZVVwbG9hZE1vZGFsKCk7XCIgY2xhc3M9XCJzYi1idG4gc2ItYnRuLXByaW1hcnkgc2ItYnRuLW5vcm1hbFwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy51cGxvYWRBbmRVc2V9fTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvc3VpLW1vZGFsPlxuPHN1aS1tb2RhbCBjbGFzcz1cInNiLW1vZGFsIG92ZXJmbG93LW1vZGFsXCIgW2lzQ2xvc2FibGVdPVwidHJ1ZVwiIFtpc0ludmVydGVkXT1cImZhbHNlXCJcbiAgKGRpc21pc3NlZCk9XCJkaXNtaXNzSW1hZ2VVcGxvYWRNb2RhbCgpXCIgKm5nSWY9XCJzaG93SW1hZ2VVcGxvYWRNb2RhbFwiIFtzaXplXT1cIidsYXJnZSdcIiBbaXNGdWxsU2NyZWVuXT1cImZhbHNlXCJcbiAgW211c3RTY3JvbGxdPVwidHJ1ZVwiIGFwcEJvZHlTY3JvbGwgI21vZGFsPlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtaGVhZGVyXCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LnVwbG9hZEFuZFVzZX19PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwLTEwIHNiLWJnLXdoaXRlXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInctNTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgICA8aDYgY2xhc3M9XCJtYi04IGZzLW5vcm1hbFwiPiB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uY2hvb3NlT3JEcmFnSW1hZ2V9fTxzcGFuIGNsYXNzPVwicmVkXCI+Kjwvc3Bhbj48L2g2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtaW1hZ2UtbW9kYWwtc2VjdGlvbiBkLWZsZXggZmxleC1haS1jZW50ZXIgZmxleC1qYy1jZW50ZXIgZmxleC1kY1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInVwbG9hZC1pbnB1dC1idXR0b24gc2ItYnRuIHNiLWJ0bi1zdWNjZXNzIHNiLWJ0bi1ub3JtYWxcIj5cbiAgICAgICAgICAgICAgICB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8udXBsb2FkRnJvbUNvbXB1dGVyfX0gIFxuICAgICAgICAgICAgICAgIDxpbnB1dCAoY2hhbmdlKT1cInVwbG9hZEltYWdlKCRldmVudClcIiB0eXBlPVwiZmlsZVwiIFthY2NlcHRdPVwiYWNjZXB0SW1hZ2VUeXBlXCIgbmFtZT1cImFzc2V0ZmlsZVwiPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTEwIGZzLTAtNzg1IHNiLWNvbG9yLXByaW1hcnlcIiAqbmdJZj1cImltYWdlVXBsb2FkTG9hZGVyXCI+IHt7YXNzZXROYW1lfX0gPC9kaXY+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnNtYWxsIG10LThcIj57e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8udXBsb2FkfX0gIHt7YXNzZXRDb25maWcuaW1hZ2UuYWNjZXB0ZWR9fSBcbiAgICAgICAgICAgICAgICAoe3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/Lm1heEZpbGVTaXplfX0ge3thc3NldENvbmZpZy5pbWFnZS5zaXplfX17e2Fzc2V0Q29uZmlnLmltYWdlLnNpemVUeXBlfX0pPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0Vycm9yTXNnXCIgY2xhc3M9XCJzYi1jb2xvci1lcnJvciBmc21hbGwgbXQtOFwiPlxuICAgICAgICAgICAgICAgIDxwPnt7ZXJyb3JNc2d9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidWkgaW5mbyBtZXNzYWdlIHNiLWluZm8tYnhcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3RcIj5cbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZnMtMDc4NVwiPiB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uYWxsb3dlZEZpbGVUeXBlc319IHt7YXNzZXRDb25maWcuaW1hZ2UuYWNjZXB0ZWR9fTwvbGk+XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cImZzLTA3ODVcIj4ge3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/Lm1heGltdW1BbGxvd2VkRmlsZVNpemV9fSB7e2Fzc2V0Q29uZmlnLmltYWdlLnNpemV9fXt7YXNzZXRDb25maWcuaW1hZ2Uuc2l6ZVR5cGV9fTwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxoNiBjbGFzcz1cImZzLTA3ODVcIj57e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uY29weVJpZ2h0c0FuZExpY2Vuc2V9fTxzcGFuIGNsYXNzPVwicmVkXCI+Kjwvc3Bhbj48L2g2PlxuICAgICAgICAgIDxwIGNsYXNzPVwiZnNtYWxsIG10LTggdGVybXMtYW5kLWNvbmRpdGlvblwiPnt7dGVybXNBbmRDb25kaXRpb259fTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3LTUwIHBsLTEwIG1sLTEwIGItYmxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInVpIGluZm8gbWVzc2FnZSBzYi1pbmZvLWJ4IG1iLTBcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0XCI+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJmcy0wNzg1IGZvbnQtd2VpZ2h0LWJvbGRcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGluZm8gY2lyY2xlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uZHJvcENob29zZUZpbGV9fSA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2ItZm9ybS1maWVsZHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250YWluZXIgdXBsb2FkLWZvcm1cIj5cbiAgICAgICAgICAgIDxzYi1keW5hbWljLWZvcm0gW2NvbmZpZ109XCJmb3JtQ29uZmlnXCIgXG4gICAgICAgICAgICAgIChzdGF0dXNDaGFuZ2VzKT1cIm9uU3RhdHVzQ2hhbmdlcygkZXZlbnQpXCIgKHZhbHVlQ2hhbmdlcyk9XCJ2YWx1ZUNoYW5nZXMoJGV2ZW50KVwiPjwvc2ItZHluYW1pYy1mb3JtPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzYi1tb2RhbC1hY3Rpb25zIGZsZXgtamMtc3BhY2UtYmV0d2VlbiBwLTBcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRpc21pc3NQb3BzKG1vZGFsKTtcIiBjbGFzcz1cIm1yLTEwIHNiLWJ0biBzYi1idG4tcHJpbWFyeSBzYi1idG4tbm9ybWFsXCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5idXR0b25fbGFiZWxzPy5jYW5jZWxfYnRuX2xhYmVsfX08L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJ1cGxvYWRBbmRVc2VJbWFnZShtb2RhbCk7XCIgW2Rpc2FibGVkXT1cIiFpbWFnZUZvcm1WYWxpZFwiIFxuICAgICAgICBbbmdDbGFzc109XCJ7J3NiLWJ0bi1wcmltYXJ5JzogaW1hZ2VGb3JtVmFsaWQsICdzYi1idG4tZGlzYWJsZWQnOiAhaW1hZ2VGb3JtVmFsaWR9XCJcbiAgICAgICAgY2xhc3M9XCJzYi1idG4gIHNiLWJ0bi1ub3JtYWwgdGV4dC1sZWZ0XCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5idXR0b25fbGFiZWxzPy51cGxvYWRfdXNlX2J0bl9sYWJlbH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRpc21pc3NJbWFnZVVwbG9hZE1vZGFsKCk7XCIgY2xhc3M9XCIgc2ItYnRuIHNiLWJ0bi1wcmltYXJ5IHNiLWJ0bi1ub3JtYWxcIj57e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmJ1dHRvbl9sYWJlbHM/LmJhY2tfYnRuX2xhYmVsfX08L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvc3VpLW1vZGFsPiJdfQ==
|
|
343
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXQtYnJvd3Nlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb2xsZWN0aW9uLWVkaXRvci1saWJyYXJ5L3NyYy9saWIvY29tcG9uZW50cy9hc3NldC1icm93c2VyL2Fzc2V0LWJyb3dzZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29sbGVjdGlvbi1lZGl0b3ItbGlicmFyeS9zcmMvbGliL2NvbXBvbmVudHMvYXNzZXQtYnJvd3Nlci9hc3NldC1icm93c2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRyxPQUFPLEtBQUssQ0FBQyxNQUFNLFdBQVcsQ0FBQztBQUMvQixPQUFPLEVBQUUsVUFBVSxFQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHOUMsT0FBTyxFQUFDLE1BQU0sRUFBQyxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7O0FBUzVDLE1BQU0sT0FBTyxxQkFBcUI7SUFLaEMsWUFBb0IsYUFBNEIsRUFBUyxhQUE0QixFQUNqRSxlQUFnQztRQURoQyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQ2pFLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUoxQyx3QkFBbUIsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzlDLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFJeEQsZ0JBQVcsR0FBUSxFQUFFLENBQUM7UUFDdEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDUixz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QUM7U0FDekM7YUFBTTtZQUNILElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDMUM7SUFDSCxDQUFDO0lBQ0QsZUFBZSxDQUFDLEtBQUs7UUFDbkIsSUFBSSxLQUFLLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztTQUM1QjthQUFNO1lBQ0wsSUFBSSxDQUFDLGNBQWMsR0FBRyxLQUFLLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBQ0QsWUFBWSxDQUFDLEtBQUs7UUFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFO1lBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDbkI7SUFDSCxDQUFDOytHQWpWVSxxQkFBcUI7bUdBQXJCLHFCQUFxQiw4U0NmbEMsMHVQQTZIWTs7NEZEOUdDLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUI7OEpBS3BCLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0ksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDcUIsS0FBSztzQkFBaEMsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCAqIGFzIF8gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IHRocm93RXJyb3IsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEVkaXRvclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9lZGl0b3IvZWRpdG9yLnNlcnZpY2UnO1xuaW1wb3J0IHsgUXVlc3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcXVlc3Rpb24vcXVlc3Rpb24uc2VydmljZSc7XG5pbXBvcnQge2NvbmZpZ30gZnJvbSAnLi9hc3NldC1icm93c2VyLmRhdGEnO1xuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2NvbmZpZy9jb25maWcuc2VydmljZSc7XG5kZWNsYXJlIGNvbnN0IFN1bmJpcmRGaWxlVXBsb2FkTGliOiBhbnk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1hc3NldC1icm93c2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Fzc2V0LWJyb3dzZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hc3NldC1icm93c2VyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQXNzZXRCcm93c2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBzaG93SW1hZ2VQaWNrZXI7XG4gIEBPdXRwdXQoKSBhc3NldEJyb3dzZXJFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBtb2RhbERpc21pc3NFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBWaWV3Q2hpbGQoJ21vZGFsJykgcHJpdmF0ZSBtb2RhbDtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlZGl0b3JTZXJ2aWNlOiBFZGl0b3JTZXJ2aWNlLCBwdWJsaWMgY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBxdWVzdGlvblNlcnZpY2U6IFF1ZXN0aW9uU2VydmljZSkgeyB9XG4gIGFzc2V0Q29uZmlnOiBhbnkgPSB7fTtcbiAgbXlBc3NldHMgPSBbXTtcbiAgYWxsSW1hZ2VzID0gW107XG4gIHB1YmxpYyBpbWFnZVVwbG9hZExvYWRlciA9IGZhbHNlO1xuICBzaG93SW1hZ2VVcGxvYWRNb2RhbDogYm9vbGVhbjtcbiAgYWNjZXB0SW1hZ2VUeXBlOiBhbnk7XG4gIHNob3dFcnJvck1zZzogYm9vbGVhbjtcbiAgZXJyb3JNc2c6IHN0cmluZztcbiAgcXVlcnk6IHN0cmluZztcbiAgdXBsb2FkZXI7XG4gIGlzQ2xvc2FibGUgPSB0cnVlO1xuICBsb2FkaW5nID0gZmFsc2U7XG4gIHB1YmxpYyBtZWRpYW9iajtcbiAgcHVibGljIGFzc2V0UHJveHlVcmwgPSAnL2Fzc2V0cy9wdWJsaWMvJztcbiAgcHVibGljIGVkaXRvckluc3RhbmNlOiBhbnk7XG4gIHB1YmxpYyBhc3NldHNDb3VudDogYW55O1xuICBwdWJsaWMgc2VhcmNoTXlJbnB1dCA9ICcnO1xuICBwdWJsaWMgc2VhcmNoQWxsSW5wdXQ6IGFueTtcbiAgc2hvd0FkZEJ1dHRvbjogYm9vbGVhbjtcbiAgYXBwSWNvbjtcbiAgcHVibGljIGZvcm1EYXRhOiBhbnk7XG4gIHB1YmxpYyBhc3Nlc3REYXRhID0ge307XG4gIHB1YmxpYyBmb3JtQ29uZmlnOiBhbnk7XG4gIHB1YmxpYyBpbml0aWFsRm9ybUNvbmZpZzogYW55O1xuICBwdWJsaWMgaW1hZ2VGb3JtVmFsaWQ6IGFueTtcbiAgcHVibGljIHRlcm1zQW5kQ29uZGl0aW9uOiBhbnk7XG4gIHB1YmxpYyBhc3NldE5hbWU6IGFueTtcbiAgcHVibGljIGVtcHR5U2VhcmNoTWVzc2FnZTogYW55O1xuICBwdWJsaWMgaW1hZ2VGaWxlOiBhbnk7XG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbEZvcm1Db25maWcgPSAgXy5nZXQoY29uZmlnLCAndXBsb2FkSWNvbkZvcm1Db25maWcnKTtcbiAgICB0aGlzLmZvcm1Db25maWcgPSAgXy5nZXQoY29uZmlnLCAndXBsb2FkSWNvbkZvcm1Db25maWcnKTtcbiAgICB0aGlzLmFzc2V0Q29uZmlnID0gdGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvckNvbmZpZy5jb25maWcuYXNzZXRDb25maWc7XG4gICAgdGhpcy50ZXJtc0FuZENvbmRpdGlvbiA9ICBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UubGFiZWxDb25maWcsICd0ZXJtc0FuZENvbmRpdGlvbnMuMDAxJyk7XG4gICAgdGhpcy5lbXB0eVNlYXJjaE1lc3NhZ2UgPSAgXy5nZXQodGhpcy5jb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnLCAnbWVzc2FnZXMuZXJyb3IuMDE2Jyk7XG4gICAgdGhpcy5hY2NlcHRJbWFnZVR5cGUgPSB0aGlzLmdldEFjY2VwdFR5cGUodGhpcy5hc3NldENvbmZpZy5pbWFnZS5hY2NlcHRlZCwgJ2ltYWdlJyk7XG4gIH1cblxuICBnZXRBY2NlcHRUeXBlKHR5cGVMaXN0LCB0eXBlKSB7XG4gICAgY29uc3QgYWNjZXB0VHlwZUxpc3QgPSB0eXBlTGlzdC5zcGxpdCgnLCAnKTtcbiAgICBjb25zdCByZXN1bHQgPSBbXTtcbiAgICBfLmZvckVhY2goYWNjZXB0VHlwZUxpc3QsIChjb250ZW50KSA9PiB7XG4gICAgICByZXN1bHQucHVzaChgJHt0eXBlfS8ke2NvbnRlbnR9YCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpO1xuICB9XG5cbiAgaW5pdGlhbGl6ZUltYWdlUGlja2VyKCkge1xuICAgIHRoaXMuc2hvd0ltYWdlUGlja2VyID0gdHJ1ZTtcbiAgfVxuXG4gIG91dHB1dEV2ZW50SGFuZGxlcihldmVudCkge1xuICAgIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGV2ZW50KSk7XG4gIH1cblxuICBnZXRNeUltYWdlcyhvZmZzZXQsIHF1ZXJ5Pywgc2VhcmNoPykge1xuICAgIHRoaXMuYXNzZXRzQ291bnQgPSAwO1xuICAgIGlmICghc2VhcmNoKSB7XG4gICAgICB0aGlzLnNlYXJjaE15SW5wdXQgPSAnJztcbiAgICB9XG4gICAgaWYgKG9mZnNldCA9PT0gMCkge1xuICAgICAgdGhpcy5teUFzc2V0cy5sZW5ndGggPSAwO1xuICAgIH1cbiAgICBjb25zdCByZXEgPSB7XG4gICAgICBmaWx0ZXJzOiB7XG4gICAgICAgIG1lZGlhVHlwZTogWydpbWFnZSddLFxuICAgICAgICBjcmVhdGVkQnk6IF8uZ2V0KHRoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JDb25maWcsICdjb250ZXh0LnVzZXIuaWQnKVxuICAgICAgfSxcbiAgICAgIG9mZnNldFxuICAgIH07XG4gICAgaWYgKHF1ZXJ5KSB7XG4gICAgICByZXFbJ3F1ZXJ5J10gPSBxdWVyeTtcbiAgICB9XG4gICAgdGhpcy5xdWVzdGlvblNlcnZpY2UuZ2V0QXNzZXRNZWRpYShyZXEpLnBpcGUoY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgY29uc3QgZXJySW5mbyA9IHsgZXJyb3JNc2c6IF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZS5sYWJlbENvbmZpZywgJ21lc3NhZ2VzLmVycm9yLjAyMicpIH07XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcih0aGlzLmVkaXRvclNlcnZpY2UuYXBpRXJyb3JIYW5kbGluZyhlcnIsIGVyckluZm8pKTtcbiAgICB9KSkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5hc3NldHNDb3VudCA9IHJlcy5yZXN1bHQuY291bnQ7XG4gICAgICAgIF8ubWFwKHJlcy5yZXN1bHQuY29udGVudCwgKGl0ZW0pID0+IHtcbiAgICAgICAgICBpZiAoaXRlbS5kb3dubG9hZFVybCkge1xuICAgICAgICAgICAgdGhpcy5teUFzc2V0cy5wdXNoKGl0ZW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGFkZEltYWdlSW5FZGl0b3IoaW1hZ2VVcmwsIGltYWdlSWQpIHtcbiAgICB0aGlzLmFwcEljb24gPSBpbWFnZVVybDtcbiAgICB0aGlzLnNob3dJbWFnZVBpY2tlciA9IGZhbHNlO1xuICAgIHRoaXMuYXNzZXRCcm93c2VyRW1pdHRlci5lbWl0KHt0eXBlOiAnaW1hZ2UnLCB1cmw6IHRoaXMuYXBwSWNvbn0pO1xuICB9XG5cbiAgZ2V0QWxsSW1hZ2VzKG9mZnNldCwgcXVlcnk/LCBzZWFyY2g/KSB7XG4gICAgdGhpcy5hc3NldHNDb3VudCA9IDA7XG4gICAgaWYgKCFzZWFyY2gpIHtcbiAgICAgIHRoaXMuc2VhcmNoQWxsSW5wdXQgPSAnJztcbiAgICB9XG4gICAgaWYgKG9mZnNldCA9PT0gMCkge1xuICAgICAgdGhpcy5hbGxJbWFnZXMubGVuZ3RoID0gMDtcbiAgICB9XG4gICAgY29uc3QgcmVxID0ge1xuICAgICAgZmlsdGVyczoge1xuICAgICAgICBtZWRpYVR5cGU6IFsnaW1hZ2UnXVxuICAgICAgfSxcbiAgICAgIG9mZnNldFxuICAgIH07XG4gICAgaWYgKHF1ZXJ5KSB7XG4gICAgICByZXFbJ3F1ZXJ5J10gPSBxdWVyeTtcbiAgICB9XG4gICAgdGhpcy5xdWVzdGlvblNlcnZpY2UuZ2V0QXNzZXRNZWRpYShyZXEpLnBpcGUoY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgY29uc3QgZXJySW5mbyA9IHsgZXJyb3JNc2c6ICBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UubGFiZWxDb25maWcsICdtZXNzYWdlcy5lcnJvci4wMjInKX07XG4gICAgICByZXR1cm4gdGhyb3dFcnJvcih0aGlzLmVkaXRvclNlcnZpY2UuYXBpRXJyb3JIYW5kbGluZyhlcnIsIGVyckluZm8pKTtcbiAgICB9KSlcbiAgICAgIC5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmFzc2V0c0NvdW50ID0gcmVzLnJlc3VsdC5jb3VudDtcbiAgICAgICAgXy5tYXAocmVzLnJlc3VsdC5jb250ZW50LCAoaXRlbSkgPT4ge1xuICAgICAgICAgIGlmIChpdGVtLmRvd25sb2FkVXJsKSB7XG4gICAgICAgICAgICB0aGlzLmFsbEltYWdlcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGxhenlsb2FkTXlJbWFnZXMoKSB7XG4gICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5teUFzc2V0cy5sZW5ndGg7XG4gICAgdGhpcy5nZXRNeUltYWdlcyhvZmZzZXQsIHRoaXMucXVlcnksIHRydWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIGZ1bmN0aW9uIHRvIGxhenkgbG9hZCBhbGwgaW1hZ2VzXG4gICAqL1xuICBsYXp5bG9hZEFsbEltYWdlcygpIHtcbiAgICBjb25zdCBvZmZzZXQgPSB0aGlzLmFsbEltYWdlcy5sZW5ndGg7XG4gICAgdGhpcy5nZXRBbGxJbWFnZXMob2Zmc2V0LCB0aGlzLnF1ZXJ5LCB0cnVlKTtcbiAgfVxuICB1cGxvYWRJbWFnZShldmVudCkge1xuICAgIHRoaXMuaW1hZ2VGaWxlID0gZXZlbnQudGFyZ2V0LmZpbGVzWzBdO1xuICAgIGNvbnN0IGZpbGUgPSBldmVudC50YXJnZXQuZmlsZXNbMF07XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICB0aGlzLmZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgdGhpcy5mb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcbiAgICB0aGlzLmFzc2V0TmFtZSA9IGZpbGUubmFtZTtcbiAgICBjb25zdCBmaWxlVHlwZSA9IGZpbGUudHlwZTtcbiAgICBjb25zdCBmaWxlTmFtZSA9IGZpbGUubmFtZS5zcGxpdCgnLicpLnNsaWNlKDAsIC0xKS5qb2luKCcuJyk7XG4gICAgY29uc3QgZmlsZVNpemUgPSBmaWxlLnNpemUgLyAxMDI0IC8gMTAyNDtcbiAgICBpZiAoZmlsZVR5cGUuc3BsaXQoJy8nKVswXSA9PT0gJ2ltYWdlJykge1xuICAgICAgdGhpcy5zaG93RXJyb3JNc2cgPSBmYWxzZTtcbiAgICAgIGlmIChmaWxlU2l6ZSA+IHRoaXMuYXNzZXRDb25maWcuaW1hZ2Uuc2l6ZSkge1xuICAgICAgICB0aGlzLnNob3dFcnJvck1zZyA9IHRydWU7XG4gICAgICAgIHRoaXMuZXJyb3JNc2cgPSAgXy5nZXQodGhpcy5jb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnLCAnbWVzc2FnZXMuZXJyb3IuMDIxJykgK1xuICAgICAgICB0aGlzLmFzc2V0Q29uZmlnLmltYWdlLnNpemUgKyB0aGlzLmFzc2V0Q29uZmlnLmltYWdlLnNpemVUeXBlO1xuICAgICAgICB0aGlzLnJlc2V0Rm9ybURhdGEoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZXJyb3JNc2cgPSAnJztcbiAgICAgICAgdGhpcy5zaG93RXJyb3JNc2cgPSBmYWxzZTtcbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvd0Vycm9yTXNnID0gdHJ1ZTtcbiAgICAgIHRoaXMuZXJyb3JNc2cgPSBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UubGFiZWxDb25maWcsICdtZXNzYWdlcy5lcnJvci4wMjAnKTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnNob3dFcnJvck1zZykge1xuICAgICAgdGhpcy5pbWFnZVVwbG9hZExvYWRlciA9IHRydWU7XG4gICAgICB0aGlzLmltYWdlRm9ybVZhbGlkID0gdHJ1ZTtcbiAgICAgIHRoaXMuYXNzZXN0RGF0YSA9IHRoaXMuZ2VuZXJhdGVBc3NldENyZWF0ZVJlcXVlc3QoZmlsZU5hbWUsIGZpbGVUeXBlLCAnaW1hZ2UnKTtcbiAgICAgIHRoaXMucG9wdWxhdGVGb3JtRGF0YSh0aGlzLmFzc2VzdERhdGEpO1xuICAgIH1cbiAgfVxuICByZXNldEZvcm1EYXRhKCkge1xuICAgIHRoaXMuaW1hZ2VVcGxvYWRMb2FkZXIgPSBmYWxzZTtcbiAgICB0aGlzLmltYWdlRm9ybVZhbGlkID0gZmFsc2U7XG4gICAgdGhpcy5mb3JtQ29uZmlnID0gdGhpcy5pbml0aWFsRm9ybUNvbmZpZztcbiAgfVxuICBwb3B1bGF0ZUZvcm1EYXRhKGZvcm1EYXRhKSB7XG4gICAgY29uc3QgZm9ybXZhbHVlID0gXy5jbG9uZURlZXAodGhpcy5mb3JtQ29uZmlnKTtcbiAgICB0aGlzLmZvcm1Db25maWcgPSBudWxsO1xuICAgIF8uZm9yRWFjaChmb3JtdmFsdWUsIChmb3JtRmllbGRDYXRlZ29yeSkgPT4ge1xuICAgICAgICBmb3JtRmllbGRDYXRlZ29yeS5kZWZhdWx0ID0gZm9ybURhdGFbZm9ybUZpZWxkQ2F0ZWdvcnkuY29kZV07XG4gICAgICAgIGZvcm1GaWVsZENhdGVnb3J5LmVkaXRhYmxlID0gdHJ1ZTtcbiAgICB9KTtcbiAgICB0aGlzLmZvcm1Db25maWcgPSBmb3JtdmFsdWU7XG4gIH1cbiAgdXBsb2FkQW5kVXNlSW1hZ2UobW9kYWwpIHtcbiAgICB0aGlzLmlzQ2xvc2FibGUgPSBmYWxzZTtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuc2hvd0Vycm9yTXNnID0gZmFsc2U7XG4gICAgdGhpcy5pbWFnZUZvcm1WYWxpZCA9IGZhbHNlO1xuICAgIHRoaXMucXVlc3Rpb25TZXJ2aWNlLmNyZWF0ZU1lZGlhQXNzZXQoeyBhc3NldDogdGhpcy5hc3Nlc3REYXRhIH0pLnBpcGUoY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgY29uc3QgZXJySW5mbyA9IHsgZXJyb3JNc2c6IF8uZ2V0KHRoaXMuY29uZmlnU2VydmljZS5sYWJlbENvbmZpZywgJ21lc3NhZ2VzLmVycm9yLjAxOScpIH07XG4gICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNDbG9zYWJsZSA9IHRydWU7XG4gICAgICB0aGlzLmltYWdlRm9ybVZhbGlkID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0aHJvd0Vycm9yKHRoaXMuZWRpdG9yU2VydmljZS5hcGlFcnJvckhhbmRsaW5nKGVyciwgZXJySW5mbykpO1xuICAgIH0pKS5zdWJzY3JpYmUoKHJlcykgPT4ge1xuICAgICAgY29uc3QgaW1nSWQgPSByZXMucmVzdWx0Lm5vZGVfaWQ7XG4gICAgICBjb25zdCBwcmVTaWduZWRSZXF1ZXN0ID0ge1xuICAgICAgICBjb250ZW50OiB7XG4gICAgICAgICAgZmlsZU5hbWU6IHRoaXMuYXNzZXROYW1lXG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB0aGlzLnF1ZXN0aW9uU2VydmljZS5nZW5lcmF0ZVByZVNpZ25lZFVybChwcmVTaWduZWRSZXF1ZXN0LCBpbWdJZCkucGlwZShjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgIGNvbnN0IGVyckluZm8gPSB7IGVycm9yTXNnOiBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UubGFiZWxDb25maWcsICdtZXNzYWdlcy5lcnJvci4wMjYnKSB9O1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc0Nsb3NhYmxlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5pbWFnZUZvcm1WYWxpZCA9IHRydWU7XG4gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKHRoaXMuZWRpdG9yU2VydmljZS5hcGlFcnJvckhhbmRsaW5nKGVyciwgZXJySW5mbykpO1xuICAgICAgfSkpLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcbiAgICAgICAgY29uc3Qgc2lnbmVkVVJMID0gcmVzcG9uc2UucmVzdWx0LnByZV9zaWduZWRfdXJsO1xuICAgICAgICBsZXQgYmxvYkNvbmZpZyA9IHtcbiAgICAgICAgICBwcm9jZXNzRGF0YTogZmFsc2UsXG4gICAgICAgICAgY29udGVudFR5cGU6ICdBc3NldCdcbiAgICAgICAgfTtcbiAgICAgICAgYmxvYkNvbmZpZyA9IHRoaXMuZWRpdG9yU2VydmljZS5hcHBlbmRDbG91ZFN0b3JhZ2VIZWFkZXJzKGJsb2JDb25maWcpO1xuICAgICAgICB0aGlzLnVwbG9hZFRvQmxvYihzaWduZWRVUkwsIHRoaXMuaW1hZ2VGaWxlLCBibG9iQ29uZmlnKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGZpbGVVUkwgPSBzaWduZWRVUkwuc3BsaXQoJz8nKVswXTtcbiAgICAgICAgICBjb25zdCBkYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgICAgZGF0YS5hcHBlbmQoJ2ZpbGVVcmwnLCBmaWxlVVJMKTtcbiAgICAgICAgICBkYXRhLmFwcGVuZCgnbWltZVR5cGUnLCBfLmdldCh0aGlzLmltYWdlRmlsZSwgJ3R5cGUnKSk7XG4gICAgICAgICAgY29uc3QgY29uZmlnMSA9IHtcbiAgICAgICAgICAgIGVuY3R5cGU6ICdtdWx0aXBhcnQvZm9ybS1kYXRhJyxcbiAgICAgICAgICAgIHByb2Nlc3NEYXRhOiBmYWxzZSxcbiAgICAgICAgICAgIGNvbnRlbnRUeXBlOiBmYWxzZSxcbiAgICAgICAgICAgIGNhY2hlOiBmYWxzZVxuICAgICAgICAgIH07XG4gICAgICAgICAgY29uc3QgdXBsb2FkTWVkaWFDb25maWcgPSB7XG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGFyYW06IGNvbmZpZzFcbiAgICAgICAgICB9O1xuICAgICAgICAgIHRoaXMucXVlc3Rpb25TZXJ2aWNlLnVwbG9hZE1lZGlhKHVwbG9hZE1lZGlhQ29uZmlnLCBpbWdJZCkucGlwZShjYXRjaEVycm9yKGVyciA9PiB7XG4gICAgICAgICAgICBjb25zdCBlcnJJbmZvID0geyBlcnJvck1zZzogXy5nZXQodGhpcy5jb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnLCAnbWVzc2FnZXMuZXJyb3IuMDE5JykgfTtcbiAgICAgICAgICAgIHRoaXMuaXNDbG9zYWJsZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2VGb3JtVmFsaWQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodGhpcy5lZGl0b3JTZXJ2aWNlLmFwaUVycm9ySGFuZGxpbmcoZXJyLCBlcnJJbmZvKSk7XG4gICAgICAgICAgfSkpLnN1YnNjcmliZSgocmVzcG9uc2UxKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFkZEltYWdlSW5FZGl0b3IocmVzcG9uc2UxLnJlc3VsdC5jb250ZW50X3VybCwgcmVzcG9uc2UxLnJlc3VsdC5ub2RlX2lkKTtcbiAgICAgICAgICAgIHRoaXMuc2hvd0ltYWdlVXBsb2FkTW9kYWwgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZGlzbWlzc1BvcHMobW9kYWwpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgfSk7XG4gIH1cbiAgZ2VuZXJhdGVBc3NldENyZWF0ZVJlcXVlc3QoZmlsZU5hbWUsIGZpbGVUeXBlLCBtZWRpYVR5cGUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBuYW1lOiBmaWxlTmFtZSxcbiAgICAgICAgbWVkaWFUeXBlLFxuICAgICAgICBtaW1lVHlwZTogZmlsZVR5cGUsXG4gICAgICAgIGNyZWF0ZWRCeTogXy5nZXQodGhpcy5lZGl0b3JTZXJ2aWNlLmVkaXRvckNvbmZpZywgJ2NvbnRleHQudXNlci5pZCcpLFxuICAgICAgICBjcmVhdG9yOiBfLmdldCh0aGlzLmVkaXRvclNlcnZpY2UuZWRpdG9yQ29uZmlnLCAnY29udGV4dC51c2VyLmZ1bGxOYW1lJyksXG4gICAgICAgIGNoYW5uZWw6IF8uZ2V0KHRoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JDb25maWcsICdjb250ZXh0LmNoYW5uZWwnKVxuICAgIH07XG4gIH1cblxuICB1cGxvYWRUb0Jsb2Ioc2lnbmVkVVJMLCBmaWxlLCBjb25maWcpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIGNvbnN0IGNzcCA9IF8uZ2V0KHRoaXMuZWRpdG9yU2VydmljZS5lZGl0b3JDb25maWcsICdjb250ZXh0LmNsb3VkU3RvcmFnZS5wcm92aWRlcicsICdhenVyZScpO1xuICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZSgob2JzZXJ2ZXIpID0+IHtcbiAgICAgIGNvbnN0IHVwbG9hZGVyTGliID0gbmV3IFN1bmJpcmRGaWxlVXBsb2FkTGliLkZpbGVVcGxvYWRlcigpO1xuICAgICAgdXBsb2FkZXJMaWIudXBsb2FkKHsgdXJsOiBzaWduZWRVUkwsIGZpbGUsIGNzcCB9KVxuICAgICAgLm9uKFwiZXJyb3JcIiwgKGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGVyckluZm8gPSB7IGVycm9yTXNnOiBfLmdldCh0aGlzLmNvbmZpZ1NlcnZpY2UubGFiZWxDb25maWcsICdtZXNzYWdlcy5lcnJvci4wMTgnKSB9O1xuICAgICAgICB0aGlzLmlzQ2xvc2FibGUgPSB0cnVlO1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgb2JzZXJ2ZXIuZXJyb3IodGhpcy5lZGl0b3JTZXJ2aWNlLmFwaUVycm9ySGFuZGxpbmcoZXJyb3IsIGVyckluZm8pKTtcbiAgICAgIH0pLm9uKFwiY29tcGxldGVkXCIsIChjb21wbGV0ZWQpID0+IHtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChjb21wbGV0ZWQpO1xuICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xuICAgICAgfSlcbiAgICB9KTtcbiAgfVxuXG5cbiAgZGlzbWlzc0ltYWdlVXBsb2FkTW9kYWwoKSB7XG4gICAgaWYgKHRoaXMuaXNDbG9zYWJsZSkge1xuICAgIHRoaXMuc2hvd0ltYWdlUGlja2VyID0gdHJ1ZTtcbiAgICB0aGlzLnNob3dJbWFnZVVwbG9hZE1vZGFsID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIG9wZW5JbWFnZVVwbG9hZE1vZGFsKCkge1xuICAgIHRoaXMuc2hvd0ltYWdlVXBsb2FkTW9kYWwgPSB0cnVlO1xuICAgIHRoaXMuZm9ybURhdGEgPSBudWxsO1xuICAgIHRoaXMuZm9ybUNvbmZpZyA9IHRoaXMuaW5pdGlhbEZvcm1Db25maWc7XG4gICAgdGhpcy5pbWFnZVVwbG9hZExvYWRlciA9IGZhbHNlO1xuICAgIHRoaXMuaW1hZ2VGb3JtVmFsaWQgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dFcnJvck1zZyA9IGZhbHNlO1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgIHRoaXMuaXNDbG9zYWJsZSA9IHRydWU7XG4gIH1cbiAgZGlzbWlzc1BvcHMobW9kYWwpIHtcbiAgICB0aGlzLmRpc21pc3NJbWFnZVBpY2tlcigpO1xuICAgIGlmIChtb2RhbCAmJiBtb2RhbC5kZW55KSB7XG4gICAgICBtb2RhbC5kZW55KCk7XG4gICAgfVxuICB9XG4gIGRpc21pc3NJbWFnZVBpY2tlcigpIHtcbiAgICB0aGlzLnNob3dJbWFnZVBpY2tlciA9IGZhbHNlO1xuICAgIHRoaXMubW9kYWxEaXNtaXNzRW1pdHRlci5lbWl0KHt9KVxuICB9XG4gIHNlYXJjaEltYWdlcyhldmVudCwgdHlwZSkge1xuICAgIGlmIChldmVudCA9PT0gJ2NsZWFySW5wdXQnICYmIHR5cGUgPT09ICdteUltYWdlcycpIHtcbiAgICAgIHRoaXMucXVlcnkgPSAnJztcbiAgICAgIHRoaXMuc2VhcmNoTXlJbnB1dCA9ICcnO1xuICAgIH0gZWxzZSBpZiAoZXZlbnQgPT09ICdjbGVhcklucHV0JyAmJiB0eXBlID09PSAnYWxsSW1hZ2VzJykge1xuICAgICAgdGhpcy5xdWVyeSA9ICcnO1xuICAgICAgdGhpcy5zZWFyY2hBbGxJbnB1dCA9ICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1ZXJ5ID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ215SW1hZ2VzJyApIHtcbiAgICAgICAgdGhpcy5nZXRNeUltYWdlcygwLCB0aGlzLnF1ZXJ5LCB0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmdldEFsbEltYWdlcygwLCB0aGlzLnF1ZXJ5LCB0cnVlKTtcbiAgICB9XG4gIH1cbiAgb25TdGF0dXNDaGFuZ2VzKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmlzVmFsaWQgJiYgdGhpcy5pbWFnZVVwbG9hZExvYWRlcikge1xuICAgICAgdGhpcy5pbWFnZUZvcm1WYWxpZCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaW1hZ2VGb3JtVmFsaWQgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgdmFsdWVDaGFuZ2VzKGV2ZW50KSB7XG4gICAgdGhpcy5hc3Nlc3REYXRhID0gXy5tZXJnZSh7fSwgdGhpcy5hc3Nlc3REYXRhLCBldmVudCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5tb2RhbCAmJiB0aGlzLm1vZGFsLmRlbnkpIHtcbiAgICAgIHRoaXMubW9kYWwuZGVueSgpO1xuICAgIH1cbiAgfVxuXG59XG4iLCI8c3VpLW1vZGFsIFtpc0Nsb3NhYmxlXT1cInRydWVcIiBjbGFzcz1cInNiLW1vZGFsIG92ZXJmbG93LW1vZGFsXCIgW2lzSW52ZXJ0ZWRdPVwiZmFsc2VcIiAoZGlzbWlzc2VkKT1cImRpc21pc3NJbWFnZVBpY2tlcigpXCJcbiAgKm5nSWY9XCJzaG93SW1hZ2VQaWNrZXJcIiBbc2l6ZV09XCInbm9ybWFsJ1wiIFtpc0Z1bGxTY3JlZW5dPVwiZmFsc2VcIiBbbXVzdFNjcm9sbF09XCJ0cnVlXCIgI21vZGFsPlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtaGVhZGVyXCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LnNlbGVjdEltYWdlfX08L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNiLW1vZGFsLWNvbnRlbnQgcC0wXCI+XG4gICAgPHN1aS10YWJzZXQ+XG4gICAgICA8ZGl2IGNsYXNzPVwic2ItdGFic2V0LW1lbnVcIj5cbiAgICAgICAgPGEgY2xhc3M9XCJzYi1pdGVtXCIgKGFjdGl2YXRlKT1cImdldE15SW1hZ2VzKDApXCIgc3VpVGFiSGVhZGVyPVwiMVwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5teUltYWdlc319PC9hPlxuICAgICAgICA8YSBjbGFzcz1cInNiLWl0ZW1cIiAoYWN0aXZhdGUpPVwiZ2V0QWxsSW1hZ2VzKDApXCIgc3VpVGFiSGVhZGVyPVwiMlwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5hbGxJbWFnZX19PC9hPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwidWkgc2VnbWVudCBzYi10YWJzZXQtc2VnbWVudCBtLTAgcHQtMTVcIiBpbmZpbml0ZVNjcm9sbCBbaW5maW5pdGVTY3JvbGxEaXN0YW5jZV09XCIyXCJcbiAgICAgICAgW2luZmluaXRlU2Nyb2xsVGhyb3R0bGVdPVwiNTAwXCIgW3Njcm9sbFdpbmRvd109XCJmYWxzZVwiIChzY3JvbGxlZCk9XCJsYXp5bG9hZE15SW1hZ2VzKClcIiBzdWlUYWJDb250ZW50PVwiMVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidWkgIHBiLTE2IGQtZmxleCBwbC0wXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNiLXNlYXJjaC1ib3ggc21hbGwgbm8tYnRuXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZGl2IHJlbGF0aXZlXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwic2VhcmNoIGljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgIDxpbnB1dCAoY2hhbmdlKT1cInNlYXJjaEltYWdlcygkZXZlbnQsICdteUltYWdlcycpXCIgY2xhc3M9XCJzYi1zZWFyY2gtaW5wdXRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaE15SW5wdXRcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCIgcGxhY2Vob2xkZXI9e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LnNlYXJjaFBsYWNlaG9sZGVyfX0gLz5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJjbG9zZSBpY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgKGNsaWNrKT1cInNlYXJjaEltYWdlcygnY2xlYXJJbnB1dCcsICdteUltYWdlcycpXCI+PC9pPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2ItYnRuIHNiLWJ0bi1ub3JtYWxcIj57e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmJ1dHRvbl9sYWJlbHM/LnNlYXJjaF9idG5fbGFiZWx9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxwIGNsYXNzPVwiZnMtMC05ODYgbWwtYXV0byBzYi1jb2xvci1ncmV5XCIgPnt7YXNzZXRzQ291bnR9fTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCIhbXlBc3NldHM/Lmxlbmd0aCAmJiBzZWFyY2hNeUlucHV0XCIgY2xhc3M9XCJmcy0wNzg1IG15LTEwXCI+IHt7ZW1wdHlTZWFyY2hNZXNzYWdlfX0gIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2ItZ3JpZC1sYXlvdXQgaW1hZ2VcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ItdmlkZW8tY29udGVudFwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIG15QXNzZXRzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ItaW1hZ2Utc2VjdGlvbiByZWxhdGl2ZSBwb3NpdGlvblwiPlxuICAgICAgICAgICAgICA8aW1nIChjbGljayk9XCJhZGRJbWFnZUluRWRpdG9yKGRhdGEuZG93bmxvYWRVcmwsIGRhdGEuaWRlbnRpZmllcilcIiBhbHQ9XCJcIiBbc3JjXT1cImRhdGEuZG93bmxvYWRVcmxcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInVpIHNlZ21lbnQgc2ItdGFic2V0LXNlZ21lbnQgbS0wIHB0LTE1XCIgaW5maW5pdGVTY3JvbGwgW2luZmluaXRlU2Nyb2xsRGlzdGFuY2VdPVwiMlwiXG4gICAgICAgIFtpbmZpbml0ZVNjcm9sbFRocm90dGxlXT1cIjUwMFwiIFtzY3JvbGxXaW5kb3ddPVwiZmFsc2VcIiAoc2Nyb2xsZWQpPVwibGF6eWxvYWRBbGxJbWFnZXMoKVwiIHN1aVRhYkNvbnRlbnQ9XCIyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ1aSAgcGItMTYgZC1mbGV4IHBsLTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2Itc2VhcmNoLWJveCBzbWFsbCBuby1idG5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1kaXYgcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJzZWFyY2ggaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgPGlucHV0IChjaGFuZ2UpPVwic2VhcmNoSW1hZ2VzKCRldmVudCwgJ2FsbEltYWdlcycpXCIgY2xhc3M9XCJzYi1zZWFyY2gtaW5wdXRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaEFsbElucHV0XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPXt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy5zZWFyY2hQbGFjZWhvbGRlcn19IC8+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwiY2xvc2UgaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIChjbGljayk9XCJzZWFyY2hJbWFnZXMoJ2NsZWFySW5wdXQnLCAnYWxsSW1hZ2VzJylcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzYi1idG4gc2ItYnRuLW5vcm1hbFwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8uYnV0dG9uX2xhYmVscz8uc2VhcmNoX2J0bl9sYWJlbH19PC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHAgY2xhc3M9XCJmcy0wLTk4NiBtbC1hdXRvIHNiLWNvbG9yLWdyZXlcIiA+e3thc3NldHNDb3VudH19PC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cIiFhbGxJbWFnZXM/Lmxlbmd0aCAmJiBzZWFyY2hBbGxJbnB1dFwiIGNsYXNzPVwiZnMtMDc4NVwiPiB7e2VtcHR5U2VhcmNoTWVzc2FnZX19IDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2ItZ3JpZC1sYXlvdXQgaW1hZ2VcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2ItdmlkZW8tY29udGVudFwiICpuZ0Zvcj1cImxldCBkYXRhIG9mIGFsbEltYWdlc1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiLWltYWdlLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgPGltZyAoY2xpY2spPVwiYWRkSW1hZ2VJbkVkaXRvcihkYXRhLmRvd25sb2FkVXJsLCBkYXRhLmlkZW50aWZpZXIpXCIgYWx0PVwiXCIgW3NyY109XCJkYXRhLmRvd25sb2FkVXJsXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L3N1aS10YWJzZXQ+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtYWN0aW9ucyBmbGV4LWpjLXNwYWNlLWVuZFwiPlxuICAgIDxidXR0b24gKGNsaWNrKT1cIm9wZW5JbWFnZVVwbG9hZE1vZGFsKCk7XCIgY2xhc3M9XCJzYi1idG4gc2ItYnRuLXByaW1hcnkgc2ItYnRuLW5vcm1hbFwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8ubGJsPy51cGxvYWRBbmRVc2V9fTwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvc3VpLW1vZGFsPlxuPHN1aS1tb2RhbCBjbGFzcz1cInNiLW1vZGFsIG92ZXJmbG93LW1vZGFsXCIgW2lzQ2xvc2FibGVdPVwiaXNDbG9zYWJsZVwiIFtpc0ludmVydGVkXT1cImZhbHNlXCJcbiAgKGRpc21pc3NlZCk9XCJkaXNtaXNzSW1hZ2VVcGxvYWRNb2RhbCgpXCIgKm5nSWY9XCJzaG93SW1hZ2VVcGxvYWRNb2RhbFwiIFtzaXplXT1cIidsYXJnZSdcIiBbaXNGdWxsU2NyZWVuXT1cImZhbHNlXCJcbiAgW211c3RTY3JvbGxdPVwidHJ1ZVwiIGFwcEJvZHlTY3JvbGwgI21vZGFsPlxuICA8ZGl2IGNsYXNzPVwic2ItbW9kYWwtaGVhZGVyXCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/LnVwbG9hZEFuZFVzZX19PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJwLTEwIHNiLWJnLXdoaXRlXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInctNTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgICA8aDYgY2xhc3M9XCJtYi04IGZzLW5vcm1hbFwiPiB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uY2hvb3NlT3JEcmFnSW1hZ2V9fTxzcGFuIGNsYXNzPVwicmVkXCI+Kjwvc3Bhbj48L2g2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtaW1hZ2UtbW9kYWwtc2VjdGlvbiBkLWZsZXggZmxleC1haS1jZW50ZXIgZmxleC1qYy1jZW50ZXIgZmxleC1kY1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInVwbG9hZC1pbnB1dC1idXR0b24gc2ItYnRuIHNiLWJ0bi1zdWNjZXNzIHNiLWJ0bi1ub3JtYWxcIj5cbiAgICAgICAgICAgICAgICB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8udXBsb2FkRnJvbUNvbXB1dGVyfX0gIFxuICAgICAgICAgICAgICAgIDxpbnB1dCAoY2hhbmdlKT1cInVwbG9hZEltYWdlKCRldmVudClcIiB0eXBlPVwiZmlsZVwiIFthY2NlcHRdPVwiYWNjZXB0SW1hZ2VUeXBlXCIgbmFtZT1cImFzc2V0ZmlsZVwiPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInB5LTEwIGZzLTAtNzg1IHNiLWNvbG9yLXByaW1hcnlcIiAqbmdJZj1cImltYWdlVXBsb2FkTG9hZGVyXCI+IHt7YXNzZXROYW1lfX0gPC9kaXY+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZnNtYWxsIG10LThcIj57e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8udXBsb2FkfX0gIHt7YXNzZXRDb25maWcuaW1hZ2UuYWNjZXB0ZWR9fSBcbiAgICAgICAgICAgICAgICAoe3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/Lm1heEZpbGVTaXplfX0ge3thc3NldENvbmZpZy5pbWFnZS5zaXplfX17e2Fzc2V0Q29uZmlnLmltYWdlLnNpemVUeXBlfX0pPC9zcGFuPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0Vycm9yTXNnXCIgY2xhc3M9XCJzYi1jb2xvci1lcnJvciBmc21hbGwgbXQtOFwiPlxuICAgICAgICAgICAgICAgIDxwPnt7ZXJyb3JNc2d9fTwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidWkgaW5mbyBtZXNzYWdlIHNiLWluZm8tYnhcIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3RcIj5cbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZnMtMDc4NVwiPiB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uYWxsb3dlZEZpbGVUeXBlc319IHt7YXNzZXRDb25maWcuaW1hZ2UuYWNjZXB0ZWR9fTwvbGk+XG4gICAgICAgICAgICAgIDxsaSBjbGFzcz1cImZzLTA3ODVcIj4ge3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5sYmw/Lm1heGltdW1BbGxvd2VkRmlsZVNpemV9fSB7e2Fzc2V0Q29uZmlnLmltYWdlLnNpemV9fXt7YXNzZXRDb25maWcuaW1hZ2Uuc2l6ZVR5cGV9fTwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxoNiBjbGFzcz1cImZzLTA3ODVcIj57e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uY29weVJpZ2h0c0FuZExpY2Vuc2V9fTxzcGFuIGNsYXNzPVwicmVkXCI+Kjwvc3Bhbj48L2g2PlxuICAgICAgICAgIDxwIGNsYXNzPVwiZnNtYWxsIG10LTggdGVybXMtYW5kLWNvbmRpdGlvblwiPnt7dGVybXNBbmRDb25kaXRpb259fTwvcD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ3LTUwIHBsLTEwIG1sLTEwIGItYmxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInVpIGluZm8gbWVzc2FnZSBzYi1pbmZvLWJ4IG1iLTBcIj5cbiAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0XCI+XG4gICAgICAgICAgICA8bGkgY2xhc3M9XCJmcy0wNzg1IGZvbnQtd2VpZ2h0LWJvbGRcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGluZm8gY2lyY2xlXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmxibD8uZHJvcENob29zZUZpbGV9fSA8L2xpPlxuICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2ItZm9ybS1maWVsZHNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jb250YWluZXIgdXBsb2FkLWZvcm1cIj5cbiAgICAgICAgICAgIDxzYi1keW5hbWljLWZvcm0gW2NvbmZpZ109XCJmb3JtQ29uZmlnXCIgXG4gICAgICAgICAgICAgIChzdGF0dXNDaGFuZ2VzKT1cIm9uU3RhdHVzQ2hhbmdlcygkZXZlbnQpXCIgKHZhbHVlQ2hhbmdlcyk9XCJ2YWx1ZUNoYW5nZXMoJGV2ZW50KVwiPjwvc2ItZHluYW1pYy1mb3JtPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJzYi1tb2RhbC1hY3Rpb25zIGZsZXgtamMtc3BhY2UtYmV0d2VlbiBwLTBcIj5cbiAgICAgIDxkaXY+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cImRpc21pc3NQb3BzKG1vZGFsKTtcIiBjbGFzcz1cIm1yLTEwIHNiLWJ0biBzYi1idG4tcHJpbWFyeSBzYi1idG4tbm9ybWFsXCI+e3tjb25maWdTZXJ2aWNlLmxhYmVsQ29uZmlnPy5idXR0b25fbGFiZWxzPy5jYW5jZWxfYnRuX2xhYmVsfX08L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInNiLWJ0biBzYi1idG4tbm9ybWFsIHRleHQtbGVmdCBzYi1idG4tbG9hZGluZy1zcGlubmVyIHNiLWJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWltYWdlRm9ybVZhbGlkXCIgIChjbGljayk9XCJ1cGxvYWRBbmRVc2VJbWFnZShtb2RhbCk7XCIgXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydzYi1idG4tcHJpbWFyeSc6IGltYWdlRm9ybVZhbGlkLCAnc2ItYnRuLWRpc2FibGVkJzogIWltYWdlRm9ybVZhbGlkfVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNiLWxvYWRpbmctc3Bpbm5lclwiICAqbmdJZj1cImxvYWRpbmdcIiByb2xlPVwic3RhdHVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9kaXY+XG4gICAgICAgICAgICB7e2NvbmZpZ1NlcnZpY2UubGFiZWxDb25maWc/LmJ1dHRvbl9sYWJlbHM/LnVwbG9hZF91c2VfYnRuX2xhYmVsfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZGlzbWlzc0ltYWdlVXBsb2FkTW9kYWwoKTtcIiBjbGFzcz1cIiBzYi1idG4gc2ItYnRuLXByaW1hcnkgc2ItYnRuLW5vcm1hbFwiPnt7Y29uZmlnU2VydmljZS5sYWJlbENvbmZpZz8uYnV0dG9uX2xhYmVscz8uYmFja19idG5fbGFiZWx9fTwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9zdWktbW9kYWw+Il19
|
|
@@ -180,7 +180,7 @@ export class AssignPageNumberComponent {
|
|
|
180
180
|
});
|
|
181
181
|
}
|
|
182
182
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AssignPageNumberComponent, deps: [{ token: i1.EditorService }, { token: i2.TreeService }, { token: i3.QuestionService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
183
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AssignPageNumberComponent, selector: "lib-assign-page-number", outputs: { assignPageEmitter: "assignPageEmitter" }, ngImport: i0, template: "<div class=\"sb-editor-container mb-0\">\n <lib-header [labelConfigData]=\"toolbarConfig\" [pageId]=\"pageId\" (toolbarEmitter)=\"toolbarEventListener($event)\">\n </lib-header>\n <div class=\"add-to-library mb-0\">\n <div class=\"h-100vh sb-bg-white\">\n <div class=\"ui\">\n <div class=\"ui twelve column grid m-0\">\n <div class=\"three wide column p-0 overflow-y mb-40 h-100vh\">\n <lib-plain-tree class=\"sb-collectionTree-fancyTree sb-collectionTree-fancyTreelist sb-questionset-scroll\"\n [treeData]=\"treeData\" (treeEmitter)=\"treeEventListener($event)\">\n </lib-plain-tree>\n </div>\n <!-- Right Player Sections -->\n <div class=\"eight wide column bg-white pl-40 mb-10 w-73\">\n <table aria-describedby=\"pagination\">\n <thead>\n <tr>\n <th>Questions</th>\n <th class=\"right\">Page no</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let question of questions; let i=index\">\n <td innerHtml=\"{{question?.question}}\"></td>\n <td><i [ngStyle]=\"{'visibility:hidden':question?.page_no > 0 && question?.page_no}\" [ngClass]=\"{'close-button-dynamic':question?.page_no > 0 }\" class=\"close icon close-button\" (click)=\"clearInput($event.target.value, question, i)\"></i>\n <input type=\"number\" name=\"pageNo\" pattern=\"^[1-9][0-9]*$\" oninput=\"if(!this.value.match('^[1-9][0-9]*$'))this.value='';\"\n (input)=\"onValueChange($event.target.value,question, i)\" value=\"{{question?.page_no}}\" /></td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: ["table{font-family:arial,sans-serif;border-collapse:collapse;width:97%;border:1px solid #cccccc;margin:15px 25px 15px 15px}table thead tr{background-color:#ededed}table thead tr th{margin-right:86px}td,th{text-align:left;padding:15px}tr:nth-child(2n){background-color:#f3f7fa}tr{border:2px solid #cccccc}tr td input{float:right;width:14%;border-radius:6px;border-width:1px;height:42px;text-align:center;margin-right:10px}tr .right{float:right}h2{margin-left:15px}.close-button{opacity:0;float:right;margin-top:5px;margin-right:15px;color:#8b8080;font-size:20px}.close-button-dynamic{opacity:1;color:#8b8080;float:right;margin-top:5px;margin-right:15px;font-size:20px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i5.HeaderComponent, selector: "lib-header", inputs: ["pageId", "labelConfigData", "buttonLoaders", "showComment", "publishchecklist", "requestChange"], outputs: ["toolbarEmitter", "qualityParamEmitter"] }, { kind: "component", type: i6.PlainTreeComponent, selector: "lib-plain-tree", inputs: ["treeData"], outputs: ["treeEmitter"] }] }); }
|
|
183
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: AssignPageNumberComponent, selector: "lib-assign-page-number", outputs: { assignPageEmitter: "assignPageEmitter" }, ngImport: i0, template: "<div class=\"sb-editor-container mb-0\">\n <lib-header [labelConfigData]=\"toolbarConfig\" [pageId]=\"pageId\" (toolbarEmitter)=\"toolbarEventListener($event)\">\n </lib-header>\n <div class=\"add-to-library mb-0\">\n <div class=\"h-100vh sb-bg-white\">\n <div class=\"ui\">\n <div class=\"ui twelve column grid m-0\">\n <div class=\"three wide column p-0 overflow-y mb-40 h-100vh\">\n <lib-plain-tree class=\"sb-collectionTree-fancyTree sb-collectionTree-fancyTreelist sb-questionset-scroll\"\n [treeData]=\"treeData\" (treeEmitter)=\"treeEventListener($event)\">\n </lib-plain-tree>\n </div>\n <!-- Right Player Sections -->\n <div class=\"eight wide column bg-white pl-40 mb-10 w-73\">\n <table aria-describedby=\"pagination\">\n <thead>\n <tr>\n <th>Questions</th>\n <th class=\"right\">Page no</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let question of questions; let i=index\">\n <td innerHtml=\"{{question?.question}}\"></td>\n <td><i [ngStyle]=\"{'visibility:hidden':question?.page_no > 0 && question?.page_no}\" [ngClass]=\"{'close-button-dynamic':question?.page_no > 0 }\" class=\"close icon close-button\" (click)=\"clearInput($event.target.value, question, i)\"></i>\n <input type=\"number\" name=\"pageNo\" pattern=\"^[1-9][0-9]*$\" oninput=\"if(!this.value.match('^[1-9][0-9]*$'))this.value='';\"\n (input)=\"onValueChange($event.target.value,question, i)\" value=\"{{question?.page_no}}\" /></td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: ["table{font-family:arial,sans-serif;border-collapse:collapse;width:97%;border:1px solid #cccccc;margin:15px 25px 15px 15px}table thead tr{background-color:#ededed}table thead tr th{margin-right:86px}td,th{text-align:left;padding:15px}tr:nth-child(2n){background-color:#f3f7fa}tr{border:2px solid #cccccc}tr td input{float:right;width:14%;border-radius:6px;border-width:1px;height:42px;text-align:center;margin-right:10px}tr .right{float:right}h2{margin-left:15px}.close-button{opacity:0;float:right;margin-top:5px;margin-right:15px;color:#8b8080;font-size:20px}.close-button-dynamic{opacity:1;color:#8b8080;float:right;margin-top:5px;margin-right:15px;font-size:20px}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i5.HeaderComponent, selector: "lib-header", inputs: ["pageId", "labelConfigData", "buttonLoaders", "showComment", "publishchecklist", "requestChange"], outputs: ["toolbarEmitter", "bulkUploadEmitter", "qualityParamEmitter"] }, { kind: "component", type: i6.PlainTreeComponent, selector: "lib-plain-tree", inputs: ["treeData"], outputs: ["treeEmitter"] }] }); }
|
|
184
184
|
}
|
|
185
185
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: AssignPageNumberComponent, decorators: [{
|
|
186
186
|
type: Component,
|