@seniorsistemas/data-seniorx-core 3.1.0 → 3.2.0
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/core/constants/accordion.const.d.ts +4 -4
- package/core/constants/alert.const.d.ts +1 -1
- package/core/constants/autocomplete.const.d.ts +2 -2
- package/core/constants/badge.const.d.ts +1 -1
- package/core/constants/card.const.d.ts +8 -8
- package/core/constants/chips.const.d.ts +2 -2
- package/core/constants/code-editor.const.d.ts +4 -4
- package/core/constants/collapse-link.const.d.ts +2 -2
- package/core/constants/color-picker.const.d.ts +2 -2
- package/core/constants/combobox.const.d.ts +3 -3
- package/core/constants/context-selector.const.d.ts +1 -1
- package/core/constants/editable-overlay.const.d.ts +4 -4
- package/core/constants/fileupload.const.d.ts +3 -3
- package/core/constants/gantt.const.d.ts +1 -1
- package/core/constants/help-popover.const.d.ts +2 -2
- package/core/constants/hyperlink.const.d.ts +2 -2
- package/core/constants/info-sign.const.d.ts +1 -1
- package/core/constants/inline-edit.const.d.ts +4 -4
- package/core/constants/kanban.const.d.ts +2 -2
- package/core/constants/list.const.d.ts +1 -1
- package/core/constants/modalc.const.d.ts +1 -1
- package/core/constants/navigation-button.const.d.ts +3 -3
- package/core/constants/object-card.const.d.ts +2 -2
- package/core/constants/picklist.const.d.ts +2 -2
- package/core/constants/pin-code-field.const.d.ts +3 -3
- package/core/constants/popover.const.d.ts +1 -1
- package/core/constants/progressbar.const.d.ts +1 -1
- package/core/constants/radio.const.d.ts +2 -2
- package/core/constants/rating-scale.const.d.ts +1 -1
- package/core/constants/sidebar.const.d.ts +1 -1
- package/core/constants/slider.const.d.ts +1 -1
- package/core/constants/split-button.const.d.ts +2 -2
- package/core/constants/spotlight.const.d.ts +8 -8
- package/core/constants/star-rating.const.d.ts +2 -2
- package/core/constants/tab.const.d.ts +3 -3
- package/core/constants/table.const.d.ts +1 -0
- package/core/constants/thumbnails.const.d.ts +4 -4
- package/core/constants/token-list.const.d.ts +1 -1
- package/core/types/table-column.type.d.ts +4 -0
- package/core/types/table-options.type.d.ts +3 -0
- package/core/types/table-shared.type.d.ts +1 -1
- package/core/types/tile-select.type.d.ts +17 -0
- package/esm2022/core/constants/accordion.const.mjs +5 -5
- package/esm2022/core/constants/alert.const.mjs +2 -2
- package/esm2022/core/constants/autocomplete.const.mjs +3 -3
- package/esm2022/core/constants/badge.const.mjs +2 -2
- package/esm2022/core/constants/card.const.mjs +9 -9
- package/esm2022/core/constants/chips.const.mjs +3 -3
- package/esm2022/core/constants/code-editor.const.mjs +5 -5
- package/esm2022/core/constants/collapse-link.const.mjs +3 -3
- package/esm2022/core/constants/color-picker.const.mjs +3 -3
- package/esm2022/core/constants/combobox.const.mjs +7 -4
- package/esm2022/core/constants/context-selector.const.mjs +2 -2
- package/esm2022/core/constants/editable-overlay.const.mjs +5 -5
- package/esm2022/core/constants/fileupload.const.mjs +4 -4
- package/esm2022/core/constants/gantt.const.mjs +2 -2
- package/esm2022/core/constants/help-popover.const.mjs +3 -3
- package/esm2022/core/constants/hyperlink.const.mjs +3 -3
- package/esm2022/core/constants/info-sign.const.mjs +2 -2
- package/esm2022/core/constants/inline-edit.const.mjs +5 -5
- package/esm2022/core/constants/kanban.const.mjs +3 -3
- package/esm2022/core/constants/list.const.mjs +2 -2
- package/esm2022/core/constants/loading-state.const.mjs +2 -2
- package/esm2022/core/constants/modalc.const.mjs +2 -2
- package/esm2022/core/constants/navigation-button.const.mjs +4 -4
- package/esm2022/core/constants/object-card.const.mjs +3 -3
- package/esm2022/core/constants/picklist.const.mjs +3 -3
- package/esm2022/core/constants/pin-code-field.const.mjs +4 -4
- package/esm2022/core/constants/popover.const.mjs +8 -2
- package/esm2022/core/constants/progressbar.const.mjs +2 -2
- package/esm2022/core/constants/radio.const.mjs +3 -3
- package/esm2022/core/constants/rating-scale.const.mjs +2 -2
- package/esm2022/core/constants/sidebar.const.mjs +2 -2
- package/esm2022/core/constants/slider.const.mjs +2 -2
- package/esm2022/core/constants/split-button.const.mjs +3 -3
- package/esm2022/core/constants/spotlight.const.mjs +9 -9
- package/esm2022/core/constants/star-rating.const.mjs +3 -3
- package/esm2022/core/constants/tab.const.mjs +4 -4
- package/esm2022/core/constants/table.const.mjs +4 -3
- package/esm2022/core/constants/thumbnails.const.mjs +5 -5
- package/esm2022/core/constants/token-list.const.mjs +2 -2
- package/esm2022/core/data/fontawesome-v5-solid-icons.data.mjs +2 -2
- package/esm2022/core/types/table-column.type.mjs +1 -1
- package/esm2022/core/types/table-options.type.mjs +1 -1
- package/esm2022/core/types/table-shared.type.mjs +1 -1
- package/esm2022/core/types/tile-select.type.mjs +8 -0
- package/esm2022/core/utils/combobox.util.mjs +6 -6
- package/esm2022/features/accordion/components/accordion-item/accordion-item.component.mjs +3 -3
- package/esm2022/features/autocomplete/autocomplete.component.mjs +3 -3
- package/esm2022/features/bignumber-input/bignumber-input.component.mjs +1 -1
- package/esm2022/features/breadcrumb/breadcrumb.component.mjs +3 -3
- package/esm2022/features/button/button.component.mjs +7 -3
- package/esm2022/features/card-list/card/card.component.mjs +2 -2
- package/esm2022/features/card-list/card-list.component.mjs +7 -3
- package/esm2022/features/chat/chat.component.mjs +4 -4
- package/esm2022/features/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/features/checkbox-list/checkbox-list.component.mjs +3 -3
- package/esm2022/features/chips/chips.component.mjs +3 -3
- package/esm2022/features/code-editor/code-editor.component.mjs +23 -5
- package/esm2022/features/color-picker/color-picker.component.mjs +3 -3
- package/esm2022/features/country-phone-picker/country-phone-picker.component.mjs +3 -3
- package/esm2022/features/currency/currency.component.mjs +1 -1
- package/esm2022/features/editable-overlay/editable-overlay.component.mjs +3 -3
- package/esm2022/features/empty-state/empty-state.component.mjs +1 -1
- package/esm2022/features/fileupload/fileupload.component.mjs +4 -4
- package/esm2022/features/filters/filters.component.mjs +3 -3
- package/esm2022/features/help-popover/help-popover.component.mjs +2 -2
- package/esm2022/features/hyperlink/hyperlink.component.mjs +3 -3
- package/esm2022/features/icon-picker/icon-picker.component.mjs +1 -1
- package/esm2022/features/image-cropper/image-cropper.component.mjs +9 -9
- package/esm2022/features/inline-edit/components/fields/inline-edit-number/inline-edit-number.component.mjs +1 -1
- package/esm2022/features/inline-edit/components/inline-edit-item/inline-edit-item.component.mjs +2 -2
- package/esm2022/features/list/list.component.mjs +7 -3
- package/esm2022/features/loading-state/loading-state.component.mjs +5 -5
- package/esm2022/features/localized-number-input/localized-number-input.component.mjs +4 -4
- package/esm2022/features/lookup/lookup.component.mjs +5 -5
- package/esm2022/features/mask/mask.component.mjs +4 -4
- package/esm2022/features/modal/modal.component.mjs +3 -3
- package/esm2022/features/modalc/modalc.component.mjs +3 -3
- package/esm2022/features/number-input/number-input.component.mjs +32 -5
- package/esm2022/features/object-card/components/object-card-field/object-card-field.component.mjs +1 -1
- package/esm2022/features/object-card/components/object-card-main/object-card-main.component.mjs +1 -1
- package/esm2022/features/object-card/object-card.component.mjs +2 -2
- package/esm2022/features/paginator/paginator.component.mjs +3 -3
- package/esm2022/features/panel/panel.component.mjs +6 -6
- package/esm2022/features/password-strength/password-strength.component.mjs +6 -6
- package/esm2022/features/picklist/picklist.component.mjs +6 -4
- package/esm2022/features/pin-code-field/pin-code-field.component.mjs +3 -3
- package/esm2022/features/profile-picture-picker/profile-picture-picker.component.mjs +11 -11
- package/esm2022/features/rating-scale/rating-scale.component.mjs +3 -3
- package/esm2022/features/row-card-list/row-card/row-card.component.mjs +100 -7
- package/esm2022/features/row-card-list/row-card-list.component.mjs +7 -3
- package/esm2022/features/scaffold/scaffold.component.mjs +3 -3
- package/esm2022/features/searchbox/searchbox.component.mjs +4 -4
- package/esm2022/features/select-button/select-button.component.mjs +5 -5
- package/esm2022/features/sidebar/sidebar.component.mjs +3 -3
- package/esm2022/features/slider/slider.component.mjs +3 -3
- package/esm2022/features/speech-recognition/speech-recognition.component.mjs +12 -12
- package/esm2022/features/spotlight/spotlight.component.mjs +2 -2
- package/esm2022/features/star-rating/star-rating.component.mjs +3 -3
- package/esm2022/features/switch/switch.component.mjs +4 -4
- package/esm2022/features/table/components/table-actions-menu.component.mjs +2 -2
- package/esm2022/features/table/components/table-cell-content.component.mjs +16 -10
- package/esm2022/features/table/table.component.mjs +46 -16
- package/esm2022/features/table/utils/table-visual.util.mjs +25 -7
- package/esm2022/features/textarea/textarea.component.mjs +3 -3
- package/esm2022/features/textbox/textbox.component.mjs +3 -3
- package/esm2022/features/tile-select/tile-select.component.mjs +80 -0
- package/esm2022/features/toast/toast.component.mjs +3 -3
- package/esm2022/features/tree/components/tree-node-item/tree-node-item.component.mjs +6 -6
- package/esm2022/features/visual-sql-editor/visual-sql-editor.component.mjs +2 -2
- package/esm2022/locales/en.json +4760 -4749
- package/esm2022/locales/es-CO.json +4760 -4749
- package/esm2022/locales/pt.json +4760 -4749
- package/esm2022/providers/features.provider.mjs +3 -1
- package/esm2022/public-api.mjs +3 -1
- package/features/button/button.component.d.ts +2 -1
- package/features/card-list/card-list.component.d.ts +3 -1
- package/features/code-editor/code-editor.component.d.ts +2 -1
- package/features/help-popover/help-popover.component.d.ts +1 -1
- package/features/inline-edit/components/inline-edit-item/inline-edit-item.component.d.ts +4 -4
- package/features/kanban/components/kanban-item-dragging/kanban-item-dragging.component.d.ts +2 -2
- package/features/list/list.component.d.ts +3 -1
- package/features/navigation-button/navigation-button.component.d.ts +3 -3
- package/features/number-input/number-input.component.d.ts +7 -1
- package/features/panel/panel.component.d.ts +1 -1
- package/features/picklist/picklist.component.d.ts +3 -2
- package/features/pin-code-field/pin-code-field.component.d.ts +3 -3
- package/features/row-card-list/row-card/row-card.component.d.ts +15 -2
- package/features/row-card-list/row-card-list.component.d.ts +3 -1
- package/features/spotlight/spotlight.component.d.ts +8 -8
- package/features/table/components/table-cell-content.component.d.ts +4 -1
- package/features/table/table.component.d.ts +9 -2
- package/features/table/utils/table-visual.util.d.ts +5 -0
- package/features/textarea/textarea.component.d.ts +1 -1
- package/features/thumbnails/components/thumbnail-item/thumbnail-item.component.d.ts +3 -3
- package/features/thumbnails/components/thumbnail-item-image/thumbnail-item-image.component.d.ts +1 -1
- package/features/thumbnails/components/thumbnail-item-video/thumbnail-item-video.component.d.ts +1 -1
- package/features/tile-select/tile-select.component.d.ts +21 -0
- package/fesm2022/seniorsistemas-data-seniorx-core-fontawesome-v5-solid-icons.data-fK3MF8KJ.mjs +4 -0
- package/fesm2022/{seniorsistemas-data-seniorx-core-fontawesome-v5-solid-icons.data-B7opbaVg.mjs.map → seniorsistemas-data-seniorx-core-fontawesome-v5-solid-icons.data-fK3MF8KJ.mjs.map} +1 -1
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs +14859 -14534
- package/fesm2022/seniorsistemas-data-seniorx-core.mjs.map +1 -1
- package/package.json +57 -22
- package/public-api.d.ts +3 -0
- package/src/locales/en.json +4760 -4749
- package/src/locales/es-CO.json +4760 -4749
- package/src/locales/pt.json +4760 -4749
- package/styles/sdc-global-variables.scss +2 -2
- package/styles.css +2 -2
- package/fesm2022/seniorsistemas-data-seniorx-core-fontawesome-v5-solid-icons.data-B7opbaVg.mjs +0 -4
|
@@ -27,7 +27,7 @@ export class FileUploadComponent {
|
|
|
27
27
|
allowRemove = true;
|
|
28
28
|
allowImageModal = true;
|
|
29
29
|
invalid = false;
|
|
30
|
-
placeholder = 'platform.datacore.
|
|
30
|
+
placeholder = 'platform.datacore.fileupload_placeholder';
|
|
31
31
|
set files(val) {
|
|
32
32
|
this._files = val ?? [];
|
|
33
33
|
this.cdr.markForCheck();
|
|
@@ -255,11 +255,11 @@ export class FileUploadComponent {
|
|
|
255
255
|
};
|
|
256
256
|
}
|
|
257
257
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FileUploadComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
258
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FileUploadComponent, isStandalone: true, selector: "sdc-fileupload", inputs: { label: "label", required: "required", disabled: "disabled", multiple: "multiple", accept: "accept", maxFileSize: "maxFileSize", helperText: "helperText", errorMessage: "errorMessage", mode: "mode", showPreview: "showPreview", allowDownload: "allowDownload", allowRemove: "allowRemove", allowImageModal: "allowImageModal", invalid: "invalid", placeholder: "placeholder", files: "files" }, outputs: { filesChange: "filesChange", fileSelected: "fileSelected", fileRemoved: "fileRemoved", fileDownload: "fileDownload", filePreview: "filePreview", validationError: "validationError" }, viewQueries: [{ propertyName: "nativeInput", first: true, predicate: ["nativeInput"], descendants: true }], ngImport: i0, template: "<div\n class=\"sdc-fileupload\"\n [class.sdc-fileupload--dropzone]=\"isDropzoneMode\"\n [class.sdc-fileupload--button]=\"isButtonMode\"\n [class.sdc-fileupload--compact]=\"isCompactMode\"\n [class.sdc-fileupload--disabled]=\"disabled\"\n [class.sdc-fileupload--invalid]=\"isInvalid\"\n [class.sdc-fileupload--has-files]=\"hasFiles\"\n>\n <!-- Label row -->\n @if (label) {\n <div class=\"sdc-fileupload__label-row\">\n <label [for]=\"inputId\" class=\"sdc-fileupload__label\">\n {{ labelText | translate }}\n @if (required) {\n <span class=\"sdc-fileupload__required\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">{{ 'platform.datacore.accessibility.required_field' | translate }}</span>\n }\n </label>\n </div>\n }\n\n <!-- Hidden native file input -->\n <input\n #nativeInput\n class=\"sdc-fileupload__native-input\"\n type=\"file\"\n [id]=\"inputId\"\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n [accept]=\"accept\"\n [attr.aria-label]=\"labelText ? (labelText | translate) : ('platform.datacore.fileupload.select_file' | translate)\"\n [attr.aria-required]=\"required ? 'true' : null\"\n [attr.aria-invalid]=\"isInvalid ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n (change)=\"onNativeChange($event)\"\n />\n\n <!-- Dropzone area -->\n @if (isDropzoneMode) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__dropzone\"\n [class.sdc-fileupload__dropzone--drag-over]=\"isDragOver\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"'platform.datacore.fileupload.dropzone_label' | translate\"\n (click)=\"openFilePicker()\"\n (keydown)=\"onDropzoneKeydown($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <i class=\"fas fa-cloud-upload-alt sdc-fileupload__dropzone-icon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-fileupload__dropzone-text\">{{ placeholder | translate }}</span>\n <span class=\"sdc-fileupload__dropzone-hint\">\n {{ 'platform.datacore.fileupload.dropzone_hint' | translate }}\n </span>\n </button>\n }\n\n <!-- Button-only mode -->\n @if (isButtonMode || isCompactMode) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__btn\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"'platform.datacore.fileupload.attach_file' | translate\"\n (click)=\"openFilePicker()\"\n >\n <i class=\"fas fa-paperclip sdc-fileupload__btn-icon\" aria-hidden=\"true\"></i>\n {{ 'platform.datacore.fileupload.attach_file' | translate }}\n </button>\n }\n\n <!-- File list -->\n @if (hasFiles) {\n <ul\n class=\"sdc-fileupload__file-list\"\n [attr.aria-label]=\"'platform.datacore.fileupload.file_list' | translate\"\n >\n @for (file of files; track file.id) {\n <li class=\"sdc-fileupload__file-item\">\n\n <!-- Image preview thumbnail -->\n @if (file.isImage && showPreview && file.previewUrl) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__thumb-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload.preview_image' | translate\"\n (click)=\"openPreviewModal(file, $event)\"\n >\n <img\n class=\"sdc-fileupload__thumb\"\n [src]=\"file.previewUrl\"\n [alt]=\"file.name\"\n width=\"40\"\n height=\"40\"\n loading=\"lazy\"\n />\n </button>\n }\n\n <!-- File type icon (non-image) -->\n @if (!file.isImage || !showPreview) {\n <div class=\"sdc-fileupload__file-icon\" aria-hidden=\"true\">\n <i class=\"fas fa-file-alt\"></i>\n </div>\n }\n\n <!-- File info -->\n <div class=\"sdc-fileupload__file-info\">\n <span class=\"sdc-fileupload__file-name\" [title]=\"file.name\">{{ file.name }}</span>\n <span class=\"sdc-fileupload__file-size\">{{ formatFileSize(file.size) }}</span>\n </div>\n\n <!-- File actions -->\n <div class=\"sdc-fileupload__file-actions\">\n @if (file.isImage && allowImageModal && showPreview && file.previewUrl) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload.preview_image' | translate\"\n (click)=\"openPreviewModal(file, $event)\"\n >\n <i class=\"fas fa-eye\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (allowDownload && (file.url || file.previewUrl)) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload.download_file' | translate\"\n (click)=\"downloadFile(file, $event)\"\n >\n <i class=\"fas fa-download\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (allowRemove && !disabled) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn sdc-fileupload__action-btn--remove\"\n [attr.aria-label]=\"('platform.datacore.fileupload.remove_file' | translate) + ' ' + file.name\"\n (click)=\"removeFile(file, $event)\"\n >\n <i class=\"fas fa-times\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n </li>\n }\n </ul>\n }\n\n <!-- Helper text -->\n @if (helperText && !isInvalid) {\n <small [id]=\"helperId\" class=\"sdc-fileupload__helper\">\n {{ helperTextValue | translate }}\n </small>\n }\n\n <!-- Error message -->\n @if (isInvalid && errorMessage) {\n <small\n [id]=\"errorId\"\n class=\"sdc-fileupload__error\"\n role=\"alert\"\n aria-live=\"polite\"\n >\n {{ errorMessageValue | translate }}\n </small>\n }\n</div>\n\n<!-- Image preview modal -->\n@if (previewFile) {\n <sdc-modal\n [visible]=\"previewModalVisible\"\n [header]=\"previewFile.name\"\n [closable]=\"true\"\n [appendToBody]=\"true\"\n width=\"auto\"\n (visibleChange)=\"!$event && closePreviewModal()\"\n (hidden)=\"closePreviewModal()\"\n >\n <img\n class=\"sdc-fileupload__preview-img\"\n [src]=\"previewFile.previewUrl\"\n [alt]=\"previewFile.name\"\n width=\"800\"\n height=\"600\"\n />\n </sdc-modal>\n}\n", styles: [":host{display:block}.sdc-fileupload{display:flex;flex-direction:column;gap:.35rem}.sdc-fileupload__label-row{display:flex;align-items:center;gap:var(--sdc-form-label-row-gap);margin-bottom:var(--sdc-form-label-row-mb)}.sdc-fileupload__label{display:inline-flex;align-items:center;gap:var(--sdc-form-required-ml);padding-top:var(--sdc-form-label-py);padding-bottom:var(--sdc-form-label-py);font-size:var(--sdc-form-label-font-size);font-weight:var(--sdc-form-label-font-weight);line-height:var(--sdc-form-label-lh);color:var(--sdc-form-label-color);cursor:pointer}.sdc-fileupload__required{color:var(--sdc-form-required-color);font-weight:var(--sdc-form-required-weight)}.sdc-fileupload__native-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip:rect(0 0 0 0);pointer-events:none}.sdc-fileupload__dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;min-height:120px;padding:1.5rem 1rem;border:2px dashed var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-formfield-default-bg, #ffffff);color:var(--sdc-text-muted, #6b7280);cursor:pointer;font-family:inherit;text-align:center;transition:border-color var(--sdc-transition-fast, .18s ease),background-color var(--sdc-transition-fast, .18s ease);outline:none;width:100%}.sdc-fileupload__dropzone--drag-over{border-color:var(--sdc-formfield-focus-color, #428bca);background-color:#428bca17}.sdc-fileupload__dropzone:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-fileupload--disabled .sdc-fileupload__dropzone{cursor:not-allowed;background-color:var(--sdc-formfield-disabled-bg, transparent);opacity:.6;pointer-events:none}.sdc-fileupload--invalid .sdc-fileupload__dropzone{border-color:var(--sdc-formfield-invalid-border, #d98888)}.sdc-fileupload__dropzone:hover:not(:disabled),.sdc-fileupload__dropzone:focus-visible:not(:disabled){border-color:var(--sdc-formfield-focus-color, #428bca);background-color:#428bca0d}.sdc-fileupload--invalid .sdc-fileupload__dropzone:focus-visible{box-shadow:var(--sdc-formfield-invalid-focus-shadow, 0 0 0 2px rgba(217, 136, 136, .16))}.sdc-fileupload__dropzone-icon{font-size:2rem;color:var(--sdc-formfield-default-border, #cccccc);transition:color var(--sdc-transition-fast, .18s ease)}.sdc-fileupload__dropzone--drag-over .sdc-fileupload__dropzone-icon,.sdc-fileupload__dropzone:hover .sdc-fileupload__dropzone-icon{color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__dropzone-text{font-size:14px;font-weight:500;color:var(--sdc-text-default)}.sdc-fileupload__dropzone-hint{font-size:12px;color:var(--sdc-text-muted, #6b7280)}.sdc-fileupload__btn{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .85rem;height:var(--sdc-formfield-default-height, 34px);border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-button-bg, #eceeef);color:var(--sdc-text-default);font-size:14px;font-family:inherit;cursor:pointer;transition:var(--sdc-button-bg-hover-transition, background-color .2s ease-out);outline:none}.sdc-fileupload__btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15));border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__btn:disabled{cursor:not-allowed;opacity:.6}.sdc-fileupload__btn:hover:not(:disabled){background-color:var(--sdc-button-bg-hover, #e6e6e6)}.sdc-fileupload__btn-icon{font-size:13px;color:var(--sdc-button-icon-default, #333333)}.sdc-fileupload__file-list{list-style:none;margin:.25rem 0 0;padding:0;display:flex;flex-direction:column;gap:.4rem}.sdc-fileupload__file-item{display:flex;align-items:center;gap:.65rem;padding:.4rem .65rem;border:1px solid var(--sdc-surface-border-color, #dedce5);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-surface-bg, #ffffff);transition:box-shadow var(--sdc-transition-fast, .18s ease)}.sdc-fileupload__file-item:hover{box-shadow:var(--sdc-shadow-sm, 0 2px 8px rgba(0, 0, 0, .08))}.sdc-fileupload__thumb-btn{padding:0;border:none;background:transparent;cursor:pointer;border-radius:var(--sdc-formfield-border-radius, 4px);overflow:hidden;flex:0 0 auto;outline:none}.sdc-fileupload__thumb-btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-fileupload__thumb{width:40px;height:40px;object-fit:cover;display:block;border-radius:var(--sdc-formfield-border-radius, 4px)}.sdc-fileupload__file-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background-color:var(--sdc-button-bg, #eceeef);border-radius:var(--sdc-formfield-border-radius, 4px);color:var(--sdc-text-muted, #6b7280);font-size:16px;flex:0 0 auto}.sdc-fileupload__file-info{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.sdc-fileupload__file-name{font-size:13px;font-weight:500;color:var(--sdc-text-default);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-fileupload__file-size{font-size:12px;color:var(--sdc-text-muted, #6b7280)}.sdc-fileupload__file-actions{display:flex;align-items:center;gap:.2rem;flex:0 0 auto}.sdc-fileupload__action-btn{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid transparent;border-radius:var(--sdc-formfield-border-radius, 4px);background:transparent;color:var(--sdc-text-muted, #6b7280);font-size:13px;cursor:pointer;transition:background-color var(--sdc-transition-fast, .18s ease),color var(--sdc-transition-fast, .18s ease);outline:none}.sdc-fileupload__action-btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15));border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__action-btn:hover{background-color:var(--sdc-button-bg, #eceeef);color:var(--sdc-text-default)}.sdc-fileupload__action-btn--remove:hover{background-color:#d988881f;color:var(--sdc-error-color, #d98888)}.sdc-fileupload__helper{font-size:12px;color:var(--sdc-text-muted, #6b7280);margin-top:.1rem}.sdc-fileupload__error{font-size:12px;color:var(--sdc-error-color, #d98888);margin-top:.1rem}.sdc-fileupload__preview-img{max-width:100%;max-height:70vh;display:block;margin:0 auto;border-radius:var(--sdc-formfield-border-radius, 4px)}.sdc-fileupload--disabled .sdc-fileupload__label{cursor:not-allowed;opacity:.7}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: ModalComponent, selector: "sdc-modal", inputs: ["footerButtons", "headerActions", "header", "height", "maximizable", "maximize", "resizable", "responsive", "width", "zIndex", "closable", "styleClass", "appendToBody", "visible"], outputs: ["hidden", "visibleChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
258
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FileUploadComponent, isStandalone: true, selector: "sdc-fileupload", inputs: { label: "label", required: "required", disabled: "disabled", multiple: "multiple", accept: "accept", maxFileSize: "maxFileSize", helperText: "helperText", errorMessage: "errorMessage", mode: "mode", showPreview: "showPreview", allowDownload: "allowDownload", allowRemove: "allowRemove", allowImageModal: "allowImageModal", invalid: "invalid", placeholder: "placeholder", files: "files" }, outputs: { filesChange: "filesChange", fileSelected: "fileSelected", fileRemoved: "fileRemoved", fileDownload: "fileDownload", filePreview: "filePreview", validationError: "validationError" }, viewQueries: [{ propertyName: "nativeInput", first: true, predicate: ["nativeInput"], descendants: true }], ngImport: i0, template: "<div\n class=\"sdc-fileupload\"\n [class.sdc-fileupload--dropzone]=\"isDropzoneMode\"\n [class.sdc-fileupload--button]=\"isButtonMode\"\n [class.sdc-fileupload--compact]=\"isCompactMode\"\n [class.sdc-fileupload--disabled]=\"disabled\"\n [class.sdc-fileupload--invalid]=\"isInvalid\"\n [class.sdc-fileupload--has-files]=\"hasFiles\"\n>\n <!-- Label row -->\n @if (label) {\n <div class=\"sdc-fileupload__label-row\">\n <label [for]=\"inputId\" class=\"sdc-fileupload__label\">\n {{ labelText | translate }}\n @if (required) {\n <span class=\"sdc-fileupload__required\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">{{ 'platform.datacore.accessibility_required_field' | translate }}</span>\n }\n </label>\n </div>\n }\n\n <!-- Hidden native file input -->\n <input\n #nativeInput\n class=\"sdc-fileupload__native-input\"\n type=\"file\"\n [id]=\"inputId\"\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n [accept]=\"accept\"\n [attr.aria-label]=\"labelText ? (labelText | translate) : ('platform.datacore.fileupload_select_file' | translate)\"\n [attr.aria-required]=\"required ? 'true' : null\"\n [attr.aria-invalid]=\"isInvalid ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n (change)=\"onNativeChange($event)\"\n />\n\n <!-- Dropzone area -->\n @if (isDropzoneMode) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__dropzone\"\n [class.sdc-fileupload__dropzone--drag-over]=\"isDragOver\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"'platform.datacore.fileupload_dropzone_label' | translate\"\n (click)=\"openFilePicker()\"\n (keydown)=\"onDropzoneKeydown($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <i class=\"fas fa-cloud-upload-alt sdc-fileupload__dropzone-icon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-fileupload__dropzone-text\">{{ placeholder | translate }}</span>\n <span class=\"sdc-fileupload__dropzone-hint\">\n {{ 'platform.datacore.fileupload_dropzone_hint' | translate }}\n </span>\n </button>\n }\n\n <!-- Button-only mode -->\n @if (isButtonMode || isCompactMode) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__btn\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"'platform.datacore.fileupload_attach_file' | translate\"\n (click)=\"openFilePicker()\"\n >\n <i class=\"fas fa-paperclip sdc-fileupload__btn-icon\" aria-hidden=\"true\"></i>\n {{ 'platform.datacore.fileupload_attach_file' | translate }}\n </button>\n }\n\n <!-- File list -->\n @if (hasFiles) {\n <ul\n class=\"sdc-fileupload__file-list\"\n [attr.aria-label]=\"'platform.datacore.fileupload_file_list' | translate\"\n >\n @for (file of files; track file.id) {\n <li class=\"sdc-fileupload__file-item\">\n\n <!-- Image preview thumbnail -->\n @if (file.isImage && showPreview && file.previewUrl) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__thumb-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload_preview_image' | translate\"\n (click)=\"openPreviewModal(file, $event)\"\n >\n <img\n class=\"sdc-fileupload__thumb\"\n [src]=\"file.previewUrl\"\n [alt]=\"file.name\"\n width=\"40\"\n height=\"40\"\n loading=\"lazy\"\n />\n </button>\n }\n\n <!-- File type icon (non-image) -->\n @if (!file.isImage || !showPreview) {\n <div class=\"sdc-fileupload__file-icon\" aria-hidden=\"true\">\n <i class=\"fas fa-file-alt\"></i>\n </div>\n }\n\n <!-- File info -->\n <div class=\"sdc-fileupload__file-info\">\n <span class=\"sdc-fileupload__file-name\" [title]=\"file.name\">{{ file.name }}</span>\n <span class=\"sdc-fileupload__file-size\">{{ formatFileSize(file.size) }}</span>\n </div>\n\n <!-- File actions -->\n <div class=\"sdc-fileupload__file-actions\">\n @if (file.isImage && allowImageModal && showPreview && file.previewUrl) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload_preview_image' | translate\"\n (click)=\"openPreviewModal(file, $event)\"\n >\n <i class=\"fas fa-eye\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (allowDownload && (file.url || file.previewUrl)) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload_download_file' | translate\"\n (click)=\"downloadFile(file, $event)\"\n >\n <i class=\"fas fa-download\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (allowRemove && !disabled) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn sdc-fileupload__action-btn--remove\"\n [attr.aria-label]=\"('platform.datacore.fileupload_remove_file' | translate) + ' ' + file.name\"\n (click)=\"removeFile(file, $event)\"\n >\n <i class=\"fas fa-times\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n </li>\n }\n </ul>\n }\n\n <!-- Helper text -->\n @if (helperText && !isInvalid) {\n <small [id]=\"helperId\" class=\"sdc-fileupload__helper\">\n {{ helperTextValue | translate }}\n </small>\n }\n\n <!-- Error message -->\n @if (isInvalid && errorMessage) {\n <small\n [id]=\"errorId\"\n class=\"sdc-fileupload__error\"\n role=\"alert\"\n aria-live=\"polite\"\n >\n {{ errorMessageValue | translate }}\n </small>\n }\n</div>\n\n<!-- Image preview modal -->\n@if (previewFile) {\n <sdc-modal\n [visible]=\"previewModalVisible\"\n [header]=\"previewFile.name\"\n [closable]=\"true\"\n [appendToBody]=\"true\"\n width=\"auto\"\n (visibleChange)=\"!$event && closePreviewModal()\"\n (hidden)=\"closePreviewModal()\"\n >\n <img\n class=\"sdc-fileupload__preview-img\"\n [src]=\"previewFile.previewUrl\"\n [alt]=\"previewFile.name\"\n width=\"800\"\n height=\"600\"\n />\n </sdc-modal>\n}\n", styles: [":host{display:block}.sdc-fileupload{display:flex;flex-direction:column;gap:.35rem}.sdc-fileupload__label-row{display:flex;align-items:center;gap:var(--sdc-form-label-row-gap);margin-bottom:var(--sdc-form-label-row-mb)}.sdc-fileupload__label{display:inline-flex;align-items:center;gap:var(--sdc-form-required-ml);padding-top:var(--sdc-form-label-py);padding-bottom:var(--sdc-form-label-py);font-size:var(--sdc-form-label-font-size);font-weight:var(--sdc-form-label-font-weight);line-height:var(--sdc-form-label-lh);color:var(--sdc-form-label-color);cursor:pointer}.sdc-fileupload__required{color:var(--sdc-form-required-color);font-weight:var(--sdc-form-required-weight)}.sdc-fileupload__native-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip:rect(0 0 0 0);pointer-events:none}.sdc-fileupload__dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;min-height:120px;padding:1.5rem 1rem;border:2px dashed var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-formfield-default-bg, #ffffff);color:var(--sdc-text-muted, #6b7280);cursor:pointer;font-family:inherit;text-align:center;transition:border-color var(--sdc-transition-fast, .18s ease),background-color var(--sdc-transition-fast, .18s ease);outline:none;width:100%}.sdc-fileupload__dropzone--drag-over{border-color:var(--sdc-formfield-focus-color, #428bca);background-color:#428bca17}.sdc-fileupload__dropzone:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-fileupload--disabled .sdc-fileupload__dropzone{cursor:not-allowed;background-color:var(--sdc-formfield-disabled-bg, transparent);opacity:.6;pointer-events:none}.sdc-fileupload--invalid .sdc-fileupload__dropzone{border-color:var(--sdc-formfield-invalid-border, #d98888)}.sdc-fileupload__dropzone:hover:not(:disabled),.sdc-fileupload__dropzone:focus-visible:not(:disabled){border-color:var(--sdc-formfield-focus-color, #428bca);background-color:#428bca0d}.sdc-fileupload--invalid .sdc-fileupload__dropzone:focus-visible{box-shadow:var(--sdc-formfield-invalid-focus-shadow, 0 0 0 2px rgba(217, 136, 136, .16))}.sdc-fileupload__dropzone-icon{font-size:2rem;color:var(--sdc-formfield-default-border, #cccccc);transition:color var(--sdc-transition-fast, .18s ease)}.sdc-fileupload__dropzone--drag-over .sdc-fileupload__dropzone-icon,.sdc-fileupload__dropzone:hover .sdc-fileupload__dropzone-icon{color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__dropzone-text{font-size:14px;font-weight:500;color:var(--sdc-text-default)}.sdc-fileupload__dropzone-hint{font-size:12px;color:var(--sdc-text-muted, #6b7280)}.sdc-fileupload__btn{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .85rem;height:var(--sdc-formfield-default-height, 34px);border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-button-bg, #eceeef);color:var(--sdc-text-default);font-size:14px;font-family:inherit;cursor:pointer;transition:var(--sdc-button-bg-hover-transition, background-color .2s ease-out);outline:none}.sdc-fileupload__btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15));border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__btn:disabled{cursor:not-allowed;opacity:.6}.sdc-fileupload__btn:hover:not(:disabled){background-color:var(--sdc-button-bg-hover, #e6e6e6)}.sdc-fileupload__btn-icon{font-size:13px;color:var(--sdc-button-icon-default, #333333)}.sdc-fileupload__file-list{list-style:none;margin:.25rem 0 0;padding:0;display:flex;flex-direction:column;gap:.4rem}.sdc-fileupload__file-item{display:flex;align-items:center;gap:.65rem;padding:.4rem .65rem;border:1px solid var(--sdc-surface-border-color, #dedce5);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-surface-bg, #ffffff);transition:box-shadow var(--sdc-transition-fast, .18s ease)}.sdc-fileupload__file-item:hover{box-shadow:var(--sdc-shadow-sm, 0 2px 8px rgba(0, 0, 0, .08))}.sdc-fileupload__thumb-btn{padding:0;border:none;background:transparent;cursor:pointer;border-radius:var(--sdc-formfield-border-radius, 4px);overflow:hidden;flex:0 0 auto;outline:none}.sdc-fileupload__thumb-btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-fileupload__thumb{width:40px;height:40px;object-fit:cover;display:block;border-radius:var(--sdc-formfield-border-radius, 4px)}.sdc-fileupload__file-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background-color:var(--sdc-button-bg, #eceeef);border-radius:var(--sdc-formfield-border-radius, 4px);color:var(--sdc-text-muted, #6b7280);font-size:16px;flex:0 0 auto}.sdc-fileupload__file-info{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.sdc-fileupload__file-name{font-size:13px;font-weight:500;color:var(--sdc-text-default);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-fileupload__file-size{font-size:12px;color:var(--sdc-text-muted, #6b7280)}.sdc-fileupload__file-actions{display:flex;align-items:center;gap:.2rem;flex:0 0 auto}.sdc-fileupload__action-btn{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid transparent;border-radius:var(--sdc-formfield-border-radius, 4px);background:transparent;color:var(--sdc-text-muted, #6b7280);font-size:13px;cursor:pointer;transition:background-color var(--sdc-transition-fast, .18s ease),color var(--sdc-transition-fast, .18s ease);outline:none}.sdc-fileupload__action-btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15));border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__action-btn:hover{background-color:var(--sdc-button-bg, #eceeef);color:var(--sdc-text-default)}.sdc-fileupload__action-btn--remove:hover{background-color:#d988881f;color:var(--sdc-error-color, #d98888)}.sdc-fileupload__helper{font-size:12px;color:var(--sdc-text-muted, #6b7280);margin-top:.1rem}.sdc-fileupload__error{font-size:12px;color:var(--sdc-error-color, #d98888);margin-top:.1rem}.sdc-fileupload__preview-img{max-width:100%;max-height:70vh;display:block;margin:0 auto;border-radius:var(--sdc-formfield-border-radius, 4px)}.sdc-fileupload--disabled .sdc-fileupload__label{cursor:not-allowed;opacity:.7}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: ModalComponent, selector: "sdc-modal", inputs: ["footerButtons", "headerActions", "header", "height", "maximizable", "maximize", "resizable", "responsive", "width", "zIndex", "closable", "styleClass", "appendToBody", "visible"], outputs: ["hidden", "visibleChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
259
259
|
}
|
|
260
260
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FileUploadComponent, decorators: [{
|
|
261
261
|
type: Component,
|
|
262
|
-
args: [{ selector: 'sdc-fileupload', standalone: true, imports: [CommonModule, TranslateModule, ModalComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<div\n class=\"sdc-fileupload\"\n [class.sdc-fileupload--dropzone]=\"isDropzoneMode\"\n [class.sdc-fileupload--button]=\"isButtonMode\"\n [class.sdc-fileupload--compact]=\"isCompactMode\"\n [class.sdc-fileupload--disabled]=\"disabled\"\n [class.sdc-fileupload--invalid]=\"isInvalid\"\n [class.sdc-fileupload--has-files]=\"hasFiles\"\n>\n <!-- Label row -->\n @if (label) {\n <div class=\"sdc-fileupload__label-row\">\n <label [for]=\"inputId\" class=\"sdc-fileupload__label\">\n {{ labelText | translate }}\n @if (required) {\n <span class=\"sdc-fileupload__required\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">{{ 'platform.datacore.accessibility.required_field' | translate }}</span>\n }\n </label>\n </div>\n }\n\n <!-- Hidden native file input -->\n <input\n #nativeInput\n class=\"sdc-fileupload__native-input\"\n type=\"file\"\n [id]=\"inputId\"\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n [accept]=\"accept\"\n [attr.aria-label]=\"labelText ? (labelText | translate) : ('platform.datacore.fileupload.select_file' | translate)\"\n [attr.aria-required]=\"required ? 'true' : null\"\n [attr.aria-invalid]=\"isInvalid ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n (change)=\"onNativeChange($event)\"\n />\n\n <!-- Dropzone area -->\n @if (isDropzoneMode) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__dropzone\"\n [class.sdc-fileupload__dropzone--drag-over]=\"isDragOver\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"'platform.datacore.fileupload.dropzone_label' | translate\"\n (click)=\"openFilePicker()\"\n (keydown)=\"onDropzoneKeydown($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <i class=\"fas fa-cloud-upload-alt sdc-fileupload__dropzone-icon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-fileupload__dropzone-text\">{{ placeholder | translate }}</span>\n <span class=\"sdc-fileupload__dropzone-hint\">\n {{ 'platform.datacore.fileupload.dropzone_hint' | translate }}\n </span>\n </button>\n }\n\n <!-- Button-only mode -->\n @if (isButtonMode || isCompactMode) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__btn\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"'platform.datacore.fileupload.attach_file' | translate\"\n (click)=\"openFilePicker()\"\n >\n <i class=\"fas fa-paperclip sdc-fileupload__btn-icon\" aria-hidden=\"true\"></i>\n {{ 'platform.datacore.fileupload.attach_file' | translate }}\n </button>\n }\n\n <!-- File list -->\n @if (hasFiles) {\n <ul\n class=\"sdc-fileupload__file-list\"\n [attr.aria-label]=\"'platform.datacore.fileupload.file_list' | translate\"\n >\n @for (file of files; track file.id) {\n <li class=\"sdc-fileupload__file-item\">\n\n <!-- Image preview thumbnail -->\n @if (file.isImage && showPreview && file.previewUrl) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__thumb-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload.preview_image' | translate\"\n (click)=\"openPreviewModal(file, $event)\"\n >\n <img\n class=\"sdc-fileupload__thumb\"\n [src]=\"file.previewUrl\"\n [alt]=\"file.name\"\n width=\"40\"\n height=\"40\"\n loading=\"lazy\"\n />\n </button>\n }\n\n <!-- File type icon (non-image) -->\n @if (!file.isImage || !showPreview) {\n <div class=\"sdc-fileupload__file-icon\" aria-hidden=\"true\">\n <i class=\"fas fa-file-alt\"></i>\n </div>\n }\n\n <!-- File info -->\n <div class=\"sdc-fileupload__file-info\">\n <span class=\"sdc-fileupload__file-name\" [title]=\"file.name\">{{ file.name }}</span>\n <span class=\"sdc-fileupload__file-size\">{{ formatFileSize(file.size) }}</span>\n </div>\n\n <!-- File actions -->\n <div class=\"sdc-fileupload__file-actions\">\n @if (file.isImage && allowImageModal && showPreview && file.previewUrl) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload.preview_image' | translate\"\n (click)=\"openPreviewModal(file, $event)\"\n >\n <i class=\"fas fa-eye\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (allowDownload && (file.url || file.previewUrl)) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload.download_file' | translate\"\n (click)=\"downloadFile(file, $event)\"\n >\n <i class=\"fas fa-download\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (allowRemove && !disabled) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn sdc-fileupload__action-btn--remove\"\n [attr.aria-label]=\"('platform.datacore.fileupload.remove_file' | translate) + ' ' + file.name\"\n (click)=\"removeFile(file, $event)\"\n >\n <i class=\"fas fa-times\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n </li>\n }\n </ul>\n }\n\n <!-- Helper text -->\n @if (helperText && !isInvalid) {\n <small [id]=\"helperId\" class=\"sdc-fileupload__helper\">\n {{ helperTextValue | translate }}\n </small>\n }\n\n <!-- Error message -->\n @if (isInvalid && errorMessage) {\n <small\n [id]=\"errorId\"\n class=\"sdc-fileupload__error\"\n role=\"alert\"\n aria-live=\"polite\"\n >\n {{ errorMessageValue | translate }}\n </small>\n }\n</div>\n\n<!-- Image preview modal -->\n@if (previewFile) {\n <sdc-modal\n [visible]=\"previewModalVisible\"\n [header]=\"previewFile.name\"\n [closable]=\"true\"\n [appendToBody]=\"true\"\n width=\"auto\"\n (visibleChange)=\"!$event && closePreviewModal()\"\n (hidden)=\"closePreviewModal()\"\n >\n <img\n class=\"sdc-fileupload__preview-img\"\n [src]=\"previewFile.previewUrl\"\n [alt]=\"previewFile.name\"\n width=\"800\"\n height=\"600\"\n />\n </sdc-modal>\n}\n", styles: [":host{display:block}.sdc-fileupload{display:flex;flex-direction:column;gap:.35rem}.sdc-fileupload__label-row{display:flex;align-items:center;gap:var(--sdc-form-label-row-gap);margin-bottom:var(--sdc-form-label-row-mb)}.sdc-fileupload__label{display:inline-flex;align-items:center;gap:var(--sdc-form-required-ml);padding-top:var(--sdc-form-label-py);padding-bottom:var(--sdc-form-label-py);font-size:var(--sdc-form-label-font-size);font-weight:var(--sdc-form-label-font-weight);line-height:var(--sdc-form-label-lh);color:var(--sdc-form-label-color);cursor:pointer}.sdc-fileupload__required{color:var(--sdc-form-required-color);font-weight:var(--sdc-form-required-weight)}.sdc-fileupload__native-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip:rect(0 0 0 0);pointer-events:none}.sdc-fileupload__dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;min-height:120px;padding:1.5rem 1rem;border:2px dashed var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-formfield-default-bg, #ffffff);color:var(--sdc-text-muted, #6b7280);cursor:pointer;font-family:inherit;text-align:center;transition:border-color var(--sdc-transition-fast, .18s ease),background-color var(--sdc-transition-fast, .18s ease);outline:none;width:100%}.sdc-fileupload__dropzone--drag-over{border-color:var(--sdc-formfield-focus-color, #428bca);background-color:#428bca17}.sdc-fileupload__dropzone:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-fileupload--disabled .sdc-fileupload__dropzone{cursor:not-allowed;background-color:var(--sdc-formfield-disabled-bg, transparent);opacity:.6;pointer-events:none}.sdc-fileupload--invalid .sdc-fileupload__dropzone{border-color:var(--sdc-formfield-invalid-border, #d98888)}.sdc-fileupload__dropzone:hover:not(:disabled),.sdc-fileupload__dropzone:focus-visible:not(:disabled){border-color:var(--sdc-formfield-focus-color, #428bca);background-color:#428bca0d}.sdc-fileupload--invalid .sdc-fileupload__dropzone:focus-visible{box-shadow:var(--sdc-formfield-invalid-focus-shadow, 0 0 0 2px rgba(217, 136, 136, .16))}.sdc-fileupload__dropzone-icon{font-size:2rem;color:var(--sdc-formfield-default-border, #cccccc);transition:color var(--sdc-transition-fast, .18s ease)}.sdc-fileupload__dropzone--drag-over .sdc-fileupload__dropzone-icon,.sdc-fileupload__dropzone:hover .sdc-fileupload__dropzone-icon{color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__dropzone-text{font-size:14px;font-weight:500;color:var(--sdc-text-default)}.sdc-fileupload__dropzone-hint{font-size:12px;color:var(--sdc-text-muted, #6b7280)}.sdc-fileupload__btn{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .85rem;height:var(--sdc-formfield-default-height, 34px);border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-button-bg, #eceeef);color:var(--sdc-text-default);font-size:14px;font-family:inherit;cursor:pointer;transition:var(--sdc-button-bg-hover-transition, background-color .2s ease-out);outline:none}.sdc-fileupload__btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15));border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__btn:disabled{cursor:not-allowed;opacity:.6}.sdc-fileupload__btn:hover:not(:disabled){background-color:var(--sdc-button-bg-hover, #e6e6e6)}.sdc-fileupload__btn-icon{font-size:13px;color:var(--sdc-button-icon-default, #333333)}.sdc-fileupload__file-list{list-style:none;margin:.25rem 0 0;padding:0;display:flex;flex-direction:column;gap:.4rem}.sdc-fileupload__file-item{display:flex;align-items:center;gap:.65rem;padding:.4rem .65rem;border:1px solid var(--sdc-surface-border-color, #dedce5);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-surface-bg, #ffffff);transition:box-shadow var(--sdc-transition-fast, .18s ease)}.sdc-fileupload__file-item:hover{box-shadow:var(--sdc-shadow-sm, 0 2px 8px rgba(0, 0, 0, .08))}.sdc-fileupload__thumb-btn{padding:0;border:none;background:transparent;cursor:pointer;border-radius:var(--sdc-formfield-border-radius, 4px);overflow:hidden;flex:0 0 auto;outline:none}.sdc-fileupload__thumb-btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-fileupload__thumb{width:40px;height:40px;object-fit:cover;display:block;border-radius:var(--sdc-formfield-border-radius, 4px)}.sdc-fileupload__file-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background-color:var(--sdc-button-bg, #eceeef);border-radius:var(--sdc-formfield-border-radius, 4px);color:var(--sdc-text-muted, #6b7280);font-size:16px;flex:0 0 auto}.sdc-fileupload__file-info{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.sdc-fileupload__file-name{font-size:13px;font-weight:500;color:var(--sdc-text-default);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-fileupload__file-size{font-size:12px;color:var(--sdc-text-muted, #6b7280)}.sdc-fileupload__file-actions{display:flex;align-items:center;gap:.2rem;flex:0 0 auto}.sdc-fileupload__action-btn{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid transparent;border-radius:var(--sdc-formfield-border-radius, 4px);background:transparent;color:var(--sdc-text-muted, #6b7280);font-size:13px;cursor:pointer;transition:background-color var(--sdc-transition-fast, .18s ease),color var(--sdc-transition-fast, .18s ease);outline:none}.sdc-fileupload__action-btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15));border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__action-btn:hover{background-color:var(--sdc-button-bg, #eceeef);color:var(--sdc-text-default)}.sdc-fileupload__action-btn--remove:hover{background-color:#d988881f;color:var(--sdc-error-color, #d98888)}.sdc-fileupload__helper{font-size:12px;color:var(--sdc-text-muted, #6b7280);margin-top:.1rem}.sdc-fileupload__error{font-size:12px;color:var(--sdc-error-color, #d98888);margin-top:.1rem}.sdc-fileupload__preview-img{max-width:100%;max-height:70vh;display:block;margin:0 auto;border-radius:var(--sdc-formfield-border-radius, 4px)}.sdc-fileupload--disabled .sdc-fileupload__label{cursor:not-allowed;opacity:.7}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}\n"] }]
|
|
262
|
+
args: [{ selector: 'sdc-fileupload', standalone: true, imports: [CommonModule, TranslateModule, ModalComponent], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<div\n class=\"sdc-fileupload\"\n [class.sdc-fileupload--dropzone]=\"isDropzoneMode\"\n [class.sdc-fileupload--button]=\"isButtonMode\"\n [class.sdc-fileupload--compact]=\"isCompactMode\"\n [class.sdc-fileupload--disabled]=\"disabled\"\n [class.sdc-fileupload--invalid]=\"isInvalid\"\n [class.sdc-fileupload--has-files]=\"hasFiles\"\n>\n <!-- Label row -->\n @if (label) {\n <div class=\"sdc-fileupload__label-row\">\n <label [for]=\"inputId\" class=\"sdc-fileupload__label\">\n {{ labelText | translate }}\n @if (required) {\n <span class=\"sdc-fileupload__required\" aria-hidden=\"true\">*</span>\n <span class=\"sr-only\">{{ 'platform.datacore.accessibility_required_field' | translate }}</span>\n }\n </label>\n </div>\n }\n\n <!-- Hidden native file input -->\n <input\n #nativeInput\n class=\"sdc-fileupload__native-input\"\n type=\"file\"\n [id]=\"inputId\"\n [disabled]=\"disabled\"\n [multiple]=\"multiple\"\n [accept]=\"accept\"\n [attr.aria-label]=\"labelText ? (labelText | translate) : ('platform.datacore.fileupload_select_file' | translate)\"\n [attr.aria-required]=\"required ? 'true' : null\"\n [attr.aria-invalid]=\"isInvalid ? 'true' : null\"\n [attr.aria-describedby]=\"ariaDescribedBy\"\n (change)=\"onNativeChange($event)\"\n />\n\n <!-- Dropzone area -->\n @if (isDropzoneMode) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__dropzone\"\n [class.sdc-fileupload__dropzone--drag-over]=\"isDragOver\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"'platform.datacore.fileupload_dropzone_label' | translate\"\n (click)=\"openFilePicker()\"\n (keydown)=\"onDropzoneKeydown($event)\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n >\n <i class=\"fas fa-cloud-upload-alt sdc-fileupload__dropzone-icon\" aria-hidden=\"true\"></i>\n <span class=\"sdc-fileupload__dropzone-text\">{{ placeholder | translate }}</span>\n <span class=\"sdc-fileupload__dropzone-hint\">\n {{ 'platform.datacore.fileupload_dropzone_hint' | translate }}\n </span>\n </button>\n }\n\n <!-- Button-only mode -->\n @if (isButtonMode || isCompactMode) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__btn\"\n [disabled]=\"disabled\"\n [attr.aria-label]=\"'platform.datacore.fileupload_attach_file' | translate\"\n (click)=\"openFilePicker()\"\n >\n <i class=\"fas fa-paperclip sdc-fileupload__btn-icon\" aria-hidden=\"true\"></i>\n {{ 'platform.datacore.fileupload_attach_file' | translate }}\n </button>\n }\n\n <!-- File list -->\n @if (hasFiles) {\n <ul\n class=\"sdc-fileupload__file-list\"\n [attr.aria-label]=\"'platform.datacore.fileupload_file_list' | translate\"\n >\n @for (file of files; track file.id) {\n <li class=\"sdc-fileupload__file-item\">\n\n <!-- Image preview thumbnail -->\n @if (file.isImage && showPreview && file.previewUrl) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__thumb-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload_preview_image' | translate\"\n (click)=\"openPreviewModal(file, $event)\"\n >\n <img\n class=\"sdc-fileupload__thumb\"\n [src]=\"file.previewUrl\"\n [alt]=\"file.name\"\n width=\"40\"\n height=\"40\"\n loading=\"lazy\"\n />\n </button>\n }\n\n <!-- File type icon (non-image) -->\n @if (!file.isImage || !showPreview) {\n <div class=\"sdc-fileupload__file-icon\" aria-hidden=\"true\">\n <i class=\"fas fa-file-alt\"></i>\n </div>\n }\n\n <!-- File info -->\n <div class=\"sdc-fileupload__file-info\">\n <span class=\"sdc-fileupload__file-name\" [title]=\"file.name\">{{ file.name }}</span>\n <span class=\"sdc-fileupload__file-size\">{{ formatFileSize(file.size) }}</span>\n </div>\n\n <!-- File actions -->\n <div class=\"sdc-fileupload__file-actions\">\n @if (file.isImage && allowImageModal && showPreview && file.previewUrl) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload_preview_image' | translate\"\n (click)=\"openPreviewModal(file, $event)\"\n >\n <i class=\"fas fa-eye\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (allowDownload && (file.url || file.previewUrl)) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn\"\n [attr.aria-label]=\"'platform.datacore.fileupload_download_file' | translate\"\n (click)=\"downloadFile(file, $event)\"\n >\n <i class=\"fas fa-download\" aria-hidden=\"true\"></i>\n </button>\n }\n\n @if (allowRemove && !disabled) {\n <button\n type=\"button\"\n class=\"sdc-fileupload__action-btn sdc-fileupload__action-btn--remove\"\n [attr.aria-label]=\"('platform.datacore.fileupload_remove_file' | translate) + ' ' + file.name\"\n (click)=\"removeFile(file, $event)\"\n >\n <i class=\"fas fa-times\" aria-hidden=\"true\"></i>\n </button>\n }\n </div>\n </li>\n }\n </ul>\n }\n\n <!-- Helper text -->\n @if (helperText && !isInvalid) {\n <small [id]=\"helperId\" class=\"sdc-fileupload__helper\">\n {{ helperTextValue | translate }}\n </small>\n }\n\n <!-- Error message -->\n @if (isInvalid && errorMessage) {\n <small\n [id]=\"errorId\"\n class=\"sdc-fileupload__error\"\n role=\"alert\"\n aria-live=\"polite\"\n >\n {{ errorMessageValue | translate }}\n </small>\n }\n</div>\n\n<!-- Image preview modal -->\n@if (previewFile) {\n <sdc-modal\n [visible]=\"previewModalVisible\"\n [header]=\"previewFile.name\"\n [closable]=\"true\"\n [appendToBody]=\"true\"\n width=\"auto\"\n (visibleChange)=\"!$event && closePreviewModal()\"\n (hidden)=\"closePreviewModal()\"\n >\n <img\n class=\"sdc-fileupload__preview-img\"\n [src]=\"previewFile.previewUrl\"\n [alt]=\"previewFile.name\"\n width=\"800\"\n height=\"600\"\n />\n </sdc-modal>\n}\n", styles: [":host{display:block}.sdc-fileupload{display:flex;flex-direction:column;gap:.35rem}.sdc-fileupload__label-row{display:flex;align-items:center;gap:var(--sdc-form-label-row-gap);margin-bottom:var(--sdc-form-label-row-mb)}.sdc-fileupload__label{display:inline-flex;align-items:center;gap:var(--sdc-form-required-ml);padding-top:var(--sdc-form-label-py);padding-bottom:var(--sdc-form-label-py);font-size:var(--sdc-form-label-font-size);font-weight:var(--sdc-form-label-font-weight);line-height:var(--sdc-form-label-lh);color:var(--sdc-form-label-color);cursor:pointer}.sdc-fileupload__required{color:var(--sdc-form-required-color);font-weight:var(--sdc-form-required-weight)}.sdc-fileupload__native-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden;clip:rect(0 0 0 0);pointer-events:none}.sdc-fileupload__dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;min-height:120px;padding:1.5rem 1rem;border:2px dashed var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-formfield-default-bg, #ffffff);color:var(--sdc-text-muted, #6b7280);cursor:pointer;font-family:inherit;text-align:center;transition:border-color var(--sdc-transition-fast, .18s ease),background-color var(--sdc-transition-fast, .18s ease);outline:none;width:100%}.sdc-fileupload__dropzone--drag-over{border-color:var(--sdc-formfield-focus-color, #428bca);background-color:#428bca17}.sdc-fileupload__dropzone:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-fileupload--disabled .sdc-fileupload__dropzone{cursor:not-allowed;background-color:var(--sdc-formfield-disabled-bg, transparent);opacity:.6;pointer-events:none}.sdc-fileupload--invalid .sdc-fileupload__dropzone{border-color:var(--sdc-formfield-invalid-border, #d98888)}.sdc-fileupload__dropzone:hover:not(:disabled),.sdc-fileupload__dropzone:focus-visible:not(:disabled){border-color:var(--sdc-formfield-focus-color, #428bca);background-color:#428bca0d}.sdc-fileupload--invalid .sdc-fileupload__dropzone:focus-visible{box-shadow:var(--sdc-formfield-invalid-focus-shadow, 0 0 0 2px rgba(217, 136, 136, .16))}.sdc-fileupload__dropzone-icon{font-size:2rem;color:var(--sdc-formfield-default-border, #cccccc);transition:color var(--sdc-transition-fast, .18s ease)}.sdc-fileupload__dropzone--drag-over .sdc-fileupload__dropzone-icon,.sdc-fileupload__dropzone:hover .sdc-fileupload__dropzone-icon{color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__dropzone-text{font-size:14px;font-weight:500;color:var(--sdc-text-default)}.sdc-fileupload__dropzone-hint{font-size:12px;color:var(--sdc-text-muted, #6b7280)}.sdc-fileupload__btn{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .85rem;height:var(--sdc-formfield-default-height, 34px);border:1px solid var(--sdc-formfield-default-border, #cccccc);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-button-bg, #eceeef);color:var(--sdc-text-default);font-size:14px;font-family:inherit;cursor:pointer;transition:var(--sdc-button-bg-hover-transition, background-color .2s ease-out);outline:none}.sdc-fileupload__btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15));border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__btn:disabled{cursor:not-allowed;opacity:.6}.sdc-fileupload__btn:hover:not(:disabled){background-color:var(--sdc-button-bg-hover, #e6e6e6)}.sdc-fileupload__btn-icon{font-size:13px;color:var(--sdc-button-icon-default, #333333)}.sdc-fileupload__file-list{list-style:none;margin:.25rem 0 0;padding:0;display:flex;flex-direction:column;gap:.4rem}.sdc-fileupload__file-item{display:flex;align-items:center;gap:.65rem;padding:.4rem .65rem;border:1px solid var(--sdc-surface-border-color, #dedce5);border-radius:var(--sdc-formfield-border-radius, 4px);background-color:var(--sdc-surface-bg, #ffffff);transition:box-shadow var(--sdc-transition-fast, .18s ease)}.sdc-fileupload__file-item:hover{box-shadow:var(--sdc-shadow-sm, 0 2px 8px rgba(0, 0, 0, .08))}.sdc-fileupload__thumb-btn{padding:0;border:none;background:transparent;cursor:pointer;border-radius:var(--sdc-formfield-border-radius, 4px);overflow:hidden;flex:0 0 auto;outline:none}.sdc-fileupload__thumb-btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15))}.sdc-fileupload__thumb{width:40px;height:40px;object-fit:cover;display:block;border-radius:var(--sdc-formfield-border-radius, 4px)}.sdc-fileupload__file-icon{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background-color:var(--sdc-button-bg, #eceeef);border-radius:var(--sdc-formfield-border-radius, 4px);color:var(--sdc-text-muted, #6b7280);font-size:16px;flex:0 0 auto}.sdc-fileupload__file-info{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.sdc-fileupload__file-name{font-size:13px;font-weight:500;color:var(--sdc-text-default);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sdc-fileupload__file-size{font-size:12px;color:var(--sdc-text-muted, #6b7280)}.sdc-fileupload__file-actions{display:flex;align-items:center;gap:.2rem;flex:0 0 auto}.sdc-fileupload__action-btn{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;padding:0;border:1px solid transparent;border-radius:var(--sdc-formfield-border-radius, 4px);background:transparent;color:var(--sdc-text-muted, #6b7280);font-size:13px;cursor:pointer;transition:background-color var(--sdc-transition-fast, .18s ease),color var(--sdc-transition-fast, .18s ease);outline:none}.sdc-fileupload__action-btn:focus-visible{box-shadow:var(--sdc-formfield-focus-shadow, 0 0 0 3px rgba(0, 123, 255, .15));border-color:var(--sdc-formfield-focus-color, #428bca)}.sdc-fileupload__action-btn:hover{background-color:var(--sdc-button-bg, #eceeef);color:var(--sdc-text-default)}.sdc-fileupload__action-btn--remove:hover{background-color:#d988881f;color:var(--sdc-error-color, #d98888)}.sdc-fileupload__helper{font-size:12px;color:var(--sdc-text-muted, #6b7280);margin-top:.1rem}.sdc-fileupload__error{font-size:12px;color:var(--sdc-error-color, #d98888);margin-top:.1rem}.sdc-fileupload__preview-img{max-width:100%;max-height:70vh;display:block;margin:0 auto;border-radius:var(--sdc-formfield-border-radius, 4px)}.sdc-fileupload--disabled .sdc-fileupload__label{cursor:not-allowed;opacity:.7}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);border:0}\n"] }]
|
|
263
263
|
}], propDecorators: { nativeInput: [{
|
|
264
264
|
type: ViewChild,
|
|
265
265
|
args: ['nativeInput']
|
|
@@ -308,4 +308,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
308
308
|
}], validationError: [{
|
|
309
309
|
type: Output
|
|
310
310
|
}] } });
|
|
311
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2ZpbGV1cGxvYWQvZmlsZXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2ZpbGV1cGxvYWQvZmlsZXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFMUQsT0FBTyxFQUNMLHlCQUF5QixFQUN6QiwyQkFBMkIsRUFDM0IseUJBQXlCLEVBQ3pCLG9CQUFvQixFQUNwQixzQkFBc0IsR0FDdkIsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBRS9DLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztBQUVuQixTQUFTLGNBQWM7SUFDckIsVUFBVSxJQUFJLENBQUMsQ0FBQztJQUNoQixPQUFPLEdBQUcsb0JBQW9CLFNBQVMsVUFBVSxFQUFFLENBQUM7QUFDdEQsQ0FBQztBQVdELE1BQU0sT0FBTyxtQkFBbUI7SUFDSixXQUFXLENBQWdDO0lBRTVELEtBQUssR0FBbUIsS0FBSyxDQUFDO0lBQzlCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixRQUFRLEdBQUcs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QUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNqRSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBdUIsRUFBRSxLQUFZO1FBQ2hELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1lBQzNDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN2QixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDWixDQUFDO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQXVCLEVBQUUsS0FBWTtRQUNwRCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFBQyxPQUFPO1FBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQWE7UUFDMUIsSUFBSSxLQUFLLEdBQUcsSUFBSSxFQUFFLENBQUM7WUFBQyxPQUFPLEdBQUcsS0FBSyxJQUFJLENBQUM7UUFBQyxDQUFDO1FBQzFDLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUFDLE9BQU8sR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUFDLENBQUM7UUFDdEUsT0FBTyxHQUFHLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDcEQsQ0FBQztJQUVPLFlBQVksQ0FBQyxRQUFnQjtRQUNuQyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU8saUJBQWlCLENBQUMsR0FBUztRQUNqQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pDLElBQUksU0FBUyxFQUFFLENBQUM7WUFDZCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNyQyxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ3JDLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsc0JBQXNCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxRCxJQUFJLFVBQThCLENBQUM7UUFDbkMsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2hDLFVBQVUsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25DLENBQUM7UUFFRCxNQUFNLE9BQU8sR0FBc0I7WUFDakMsRUFBRSxFQUFFLGNBQWMsRUFBRTtZQUNwQixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7WUFDZCxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7WUFDZCxJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7WUFDZCxJQUFJLEVBQUUsR0FBRztZQUNULFVBQVU7WUFDVixPQUFPO1NBQ1IsQ0FBQztRQUVGLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFTyxZQUFZLENBQUMsSUFBVTtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQUMsT0FBTyxJQUFJLENBQUM7UUFBQyxDQUFDO1FBQzNELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNELE1BQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDdEMsSUFBSSxPQUFPLEtBQUssS0FBSyxFQUFFLENBQUM7Z0JBQUMsT0FBTyxJQUFJLENBQUM7WUFBQyxDQUFDO1lBQ3ZDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUFDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUFDLENBQUM7WUFDeEYsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUFDLENBQUM7WUFDaEcsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLE9BQU8sQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksT0FBTyxFQUFFLENBQUM7WUFBQyxPQUFPLElBQUksQ0FBQztRQUFDLENBQUM7UUFDN0IsT0FBTztZQUNMLElBQUksRUFBRSxVQUFVO1lBQ2hCLE9BQU8sRUFBRSx5QkFBeUIsQ0FBQyxRQUFRO1lBQzNDLElBQUk7U0FDTCxDQUFDO0lBQ0osQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFVO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQUMsT0FBTyxJQUFJLENBQUM7UUFBQyxDQUFDO1FBQ3hFLE9BQU87WUFDTCxJQUFJLEVBQUUsVUFBVTtZQUNoQixPQUFPLEVBQUUseUJBQXlCLENBQUMsUUFBUTtZQUMzQyxJQUFJO1NBQ0wsQ0FBQztJQUNKLENBQUM7d0dBcFBVLG1CQUFtQjs0RkFBbkIsbUJBQW1CLHF3QkMzQ2hDLDRtTkFtTUEseStNRDlKWSxZQUFZLDhCQUFFLGVBQWUsNEZBQUUsY0FBYzs7NEZBTTVDLG1CQUFtQjtrQkFUL0IsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGNBQWMsQ0FBQyxtQkFHdkMsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsUUFBUTs4QkFHZixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBRWYsS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFTyxLQUFLO3NCQUFqQixLQUFLO2dCQVFJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBuZXh0U2VxdWVudGlhbElkIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy9pZC51dGlsJztcbmltcG9ydCB7IE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwvbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgRmlsZVVwbG9hZE1vZGUsIFNkY0ZpbGVVcGxvYWRFcnJvciwgU2RjRmlsZVVwbG9hZEZpbGUgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL2ZpbGV1cGxvYWQudHlwZSc7XG5pbXBvcnQge1xuICBGSUxFVVBMT0FEX0RFRkFVTFRfQUNDRVBULFxuICBGSUxFVVBMT0FEX0RFRkFVTFRfTUFYX1NJWkUsXG4gIEZJTEVVUExPQURfRVJST1JfTUVTU0FHRVMsXG4gIEZJTEVVUExPQURfSURfUFJFRklYLFxuICBGSUxFVVBMT0FEX0lNQUdFX1RZUEVTLFxufSBmcm9tICcuLi8uLi9jb3JlL2NvbnN0YW50cy9maWxldXBsb2FkLmNvbnN0JztcblxubGV0IF9pZENvdW50ZXIgPSAwO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZUZpbGVJZCgpOiBzdHJpbmcge1xuICBfaWRDb3VudGVyICs9IDE7XG4gIHJldHVybiBgJHtGSUxFVVBMT0FEX0lEX1BSRUZJWH0tZmlsZS0ke19pZENvdW50ZXJ9YDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2RjLWZpbGV1cGxvYWQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIE1vZGFsQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGV1cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZmlsZXVwbG9hZC5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZCxcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ25hdGl2ZUlucHV0JykgbmF0aXZlSW5wdXQ/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCBmYWxzZSA9IGZhbHNlO1xuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBhY2NlcHQ6IHN0cmluZyA9IEZJTEVVUExPQURfREVGQVVMVF9BQ0NFUFQ7XG4gIEBJbnB1dCgpIG1heEZpbGVTaXplOiBudW1iZXIgPSBGSUxFVVBMT0FEX0RFRkFVTFRfTUFYX1NJWkU7XG4gIEBJbnB1dCgpIGhlbHBlclRleHQ6IHN0cmluZyB8IGZhbHNlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogc3RyaW5nIHwgZmFsc2UgPSBmYWxzZTtcbiAgQElucHV0KCkgbW9kZTogRmlsZVVwbG9hZE1vZGUgPSAnZHJvcHpvbmUnO1xuICBASW5wdXQoKSBzaG93UHJldmlldyA9IHRydWU7XG4gIEBJbnB1dCgpIGFsbG93RG93bmxvYWQgPSB0cnVlO1xuICBASW5wdXQoKSBhbGxvd1JlbW92ZSA9IHRydWU7XG4gIEBJbnB1dCgpIGFsbG93SW1hZ2VNb2RhbCA9IHRydWU7XG4gIEBJbnB1dCgpIGludmFsaWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAncGxhdGZvcm0uZGF0YWNvcmUuZmlsZXVwbG9hZC5wbGFjZWhvbGRlcic7XG5cbiAgQElucHV0KCkgc2V0IGZpbGVzKHZhbDogU2RjRmlsZVVwbG9hZEZpbGVbXSkge1xuICAgIHRoaXMuX2ZpbGVzID0gdmFsID8/IFtdO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG4gIGdldCBmaWxlcygpOiBTZGNGaWxlVXBsb2FkRmlsZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZXM7XG4gIH1cblxuICBAT3V0cHV0KCkgZmlsZXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNkY0ZpbGVVcGxvYWRGaWxlW10+KCk7XG4gIEBPdXRwdXQoKSBmaWxlU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNkY0ZpbGVVcGxvYWRGaWxlPigpO1xuICBAT3V0cHV0KCkgZmlsZVJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNkY0ZpbGVVcGxvYWRGaWxlPigpO1xuICBAT3V0cHV0KCkgZmlsZURvd25sb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxTZGNGaWxlVXBsb2FkRmlsZT4oKTtcbiAgQE91dHB1dCgpIGZpbGVQcmV2aWV3ID0gbmV3IEV2ZW50RW1pdHRlcjxTZGNGaWxlVXBsb2FkRmlsZT4oKTtcbiAgQE91dHB1dCgpIHZhbGlkYXRpb25FcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8U2RjRmlsZVVwbG9hZEVycm9yPigpO1xuXG4gIHJlYWRvbmx5IGNvbXBvbmVudElkID0gbmV4dFNlcXVlbnRpYWxJZChGSUxFVVBMT0FEX0lEX1BSRUZJWCk7XG4gIHJlYWRvbmx5IGlucHV0SWQgPSBgJHt0aGlzLmNvbXBvbmVudElkfS1pbnB1dGA7XG4gIHJlYWRvbmx5IGhlbHBlcklkID0gYCR7dGhpcy5jb21wb25lbnRJZH0taGVscGVyYDtcbiAgcmVhZG9ubHkgZXJyb3JJZCA9IGAke3RoaXMuY29tcG9uZW50SWR9LWVycm9yYDtcblxuICBpc0RyYWdPdmVyID0gZmFsc2U7XG4gIHByZXZpZXdNb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgcHJldmlld0ZpbGU6IFNkY0ZpbGVVcGxvYWRGaWxlIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfZmlsZXM6IFNkY0ZpbGVVcGxvYWRGaWxlW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIG9iamVjdFVybHM6IHN0cmluZ1tdID0gW107XG5cbiAgZ2V0IGhhc0ZpbGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9maWxlcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0IGxhYmVsVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5sYWJlbCA9PT0gJ3N0cmluZycgPyB0aGlzLmxhYmVsIDogJyc7XG4gIH1cblxuICBnZXQgaGVscGVyVGV4dFZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmhlbHBlclRleHQgPT09ICdzdHJpbmcnID8gdGhpcy5oZWxwZXJUZXh0IDogJyc7XG4gIH1cblxuICBnZXQgZXJyb3JNZXNzYWdlVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuZXJyb3JNZXNzYWdlID09PSAnc3RyaW5nJyA/IHRoaXMuZXJyb3JNZXNzYWdlIDogJyc7XG4gIH1cblxuICBnZXQgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmludmFsaWQ7XG4gIH1cblxuICBnZXQgYXJpYURlc2NyaWJlZEJ5KCk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGlkczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodGhpcy5oZWxwZXJUZXh0VmFsdWUpIHtcbiAgICAgIGlkcy5wdXNoKHRoaXMuaGVscGVySWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0ludmFsaWQgJiYgdGhpcy5lcnJvck1lc3NhZ2VWYWx1ZSkge1xuICAgICAgaWRzLnB1c2godGhpcy5lcnJvcklkKTtcbiAgICB9XG4gICAgcmV0dXJuIGlkcy5sZW5ndGggPyBpZHMuam9pbignICcpIDogbnVsbDtcbiAgfVxuXG4gIGdldCBpc0Ryb3B6b25lTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnZHJvcHpvbmUnO1xuICB9XG5cbiAgZ2V0IGlzQnV0dG9uTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnYnV0dG9uJztcbiAgfVxuXG4gIGdldCBpc0NvbXBhY3RNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdjb21wYWN0JztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub2JqZWN0VXJscy5mb3JFYWNoKHVybCA9PiBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCkpO1xuICB9XG5cbiAgb3BlbkZpbGVQaWNrZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5uYXRpdmVJbnB1dD8ubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgb25OYXRpdmVDaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBpZiAoIWlucHV0LmZpbGVzPy5sZW5ndGgpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5wcm9jZXNzRmlsZXMoQXJyYXkuZnJvbShpbnB1dC5maWxlcykpO1xuICAgIGlucHV0LnZhbHVlID0gJyc7XG4gIH1cblxuICBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkgeyB0aGlzLmlzRHJhZ092ZXIgPSB0cnVlOyB9XG4gIH1cblxuICBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlzRHJhZ092ZXIgPSBmYWxzZTtcbiAgfVxuXG4gIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlzRHJhZ092ZXIgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgeyByZXR1cm47IH1cbiAgICBjb25zdCBmaWxlcyA9IGV2ZW50LmRhdGFUcmFuc2Zlcj8uZmlsZXM7XG4gICAgaWYgKGZpbGVzPy5sZW5ndGgpIHsgdGhpcy5wcm9jZXNzRmlsZXMoQXJyYXkuZnJvbShmaWxlcykpOyB9XG4gIH1cblxuICBvbkRyb3B6b25lS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm9wZW5GaWxlUGlja2VyKCk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlRmlsZShmaWxlOiBTZGNGaWxlVXBsb2FkRmlsZSwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuOyB9XG4gICAgaWYgKGZpbGUucHJldmlld1VybCAmJiB0aGlzLm9iamVjdFVybHMuaW5jbHVkZXMoZmlsZS5wcmV2aWV3VXJsKSkge1xuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChmaWxlLnByZXZpZXdVcmwpO1xuICAgICAgdGhpcy5vYmplY3RVcmxzID0gdGhpcy5vYmplY3RVcmxzLmZpbHRlcih1ID0+IHUgIT09IGZpbGUucHJldmlld1VybCk7XG4gICAgfVxuICAgIHRoaXMuX2ZpbGVzID0gdGhpcy5fZmlsZXMuZmlsdGVyKGYgPT4gZi5pZCAhPT0gZmlsZS5pZCk7XG4gICAgdGhpcy5maWxlc0NoYW5nZS5lbWl0KFsuLi50aGlzLl9maWxlc10pO1xuICAgIHRoaXMuZmlsZVJlbW92ZWQuZW1pdChmaWxlKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGRvd25sb2FkRmlsZShmaWxlOiBTZGNGaWxlVXBsb2FkRmlsZSwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5maWxlRG93bmxvYWQuZW1pdChmaWxlKTtcbiAgICBpZiAoZmlsZS51cmwgfHwgZmlsZS5wcmV2aWV3VXJsKSB7XG4gICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgYS5ocmVmID0gZmlsZS51cmwgPz8gZmlsZS5wcmV2aWV3VXJsID8/ICcnO1xuICAgICAgYS5kb3dubG9hZCA9IGZpbGUubmFtZTtcbiAgICAgIGEuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBvcGVuUHJldmlld01vZGFsKGZpbGU6IFNkY0ZpbGVVcGxvYWRGaWxlLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIWZpbGUuaXNJbWFnZSB8fCAhdGhpcy5hbGxvd0ltYWdlTW9kYWwpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5wcmV2aWV3RmlsZSA9IGZpbGU7XG4gICAgdGhpcy5wcmV2aWV3TW9kYWxWaXNpYmxlID0gdHJ1ZTtcbiAgICB0aGlzLmZpbGVQcmV2aWV3LmVtaXQoZmlsZSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBjbG9zZVByZXZpZXdNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnByZXZpZXdNb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLnByZXZpZXdGaWxlID0gbnVsbDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGZvcm1hdEZpbGVTaXplKGJ5dGVzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChieXRlcyA8IDEwMjQpIHsgcmV0dXJuIGAke2J5dGVzfSBCYDsgfVxuICAgIGlmIChieXRlcyA8IDEwMjQgKiAxMDI0KSB7IHJldHVybiBgJHsoYnl0ZXMgLyAxMDI0KS50b0ZpeGVkKDEpfSBLQmA7IH1cbiAgICByZXR1cm4gYCR7KGJ5dGVzIC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgxKX0gTUJgO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzRmlsZXMocmF3RmlsZXM6IEZpbGVbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHRvQWRkID0gdGhpcy5tdWx0aXBsZSA/IHJhd0ZpbGVzIDogcmF3RmlsZXMuc2xpY2UoMCwgMSk7XG4gICAgdG9BZGQuZm9yRWFjaCgocmF3KSA9PiB0aGlzLnByb2Nlc3NTaW5nbGVGaWxlKHJhdykpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU2luZ2xlRmlsZShyYXc6IEZpbGUpOiB2b2lkIHtcbiAgICBjb25zdCB0eXBlRXJyb3IgPSB0aGlzLnZhbGlkYXRlVHlwZShyYXcpO1xuICAgIGlmICh0eXBlRXJyb3IpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLmVtaXQodHlwZUVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2l6ZUVycm9yID0gdGhpcy52YWxpZGF0ZVNpemUocmF3KTtcbiAgICBpZiAoc2l6ZUVycm9yKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5lbWl0KHNpemVFcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXNJbWFnZSA9IEZJTEVVUExPQURfSU1BR0VfVFlQRVMuaW5jbHVkZXMocmF3LnR5cGUpO1xuICAgIGxldCBwcmV2aWV3VXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKGlzSW1hZ2UgJiYgdGhpcy5zaG93UHJldmlldykge1xuICAgICAgcHJldmlld1VybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwocmF3KTtcbiAgICAgIHRoaXMub2JqZWN0VXJscy5wdXNoKHByZXZpZXdVcmwpO1xuICAgIH1cblxuICAgIGNvbnN0IHNkY0ZpbGU6IFNkY0ZpbGVVcGxvYWRGaWxlID0ge1xuICAgICAgaWQ6IGdlbmVyYXRlRmlsZUlkKCksXG4gICAgICBuYW1lOiByYXcubmFtZSxcbiAgICAgIHNpemU6IHJhdy5zaXplLFxuICAgICAgdHlwZTogcmF3LnR5cGUsXG4gICAgICBmaWxlOiByYXcsXG4gICAgICBwcmV2aWV3VXJsLFxuICAgICAgaXNJbWFnZSxcbiAgICB9O1xuXG4gICAgdGhpcy5fZmlsZXMgPSB0aGlzLm11bHRpcGxlID8gWy4uLnRoaXMuX2ZpbGVzLCBzZGNGaWxlXSA6IFtzZGNGaWxlXTtcbiAgICB0aGlzLmZpbGVzQ2hhbmdlLmVtaXQoWy4uLnRoaXMuX2ZpbGVzXSk7XG4gICAgdGhpcy5maWxlU2VsZWN0ZWQuZW1pdChzZGNGaWxlKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVUeXBlKGZpbGU6IEZpbGUpOiBTZGNGaWxlVXBsb2FkRXJyb3IgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuYWNjZXB0IHx8IHRoaXMuYWNjZXB0ID09PSAnKi8qJykgeyByZXR1cm4gbnVsbDsgfVxuICAgIGNvbnN0IGFjY2VwdGVkID0gdGhpcy5hY2NlcHQuc3BsaXQoJywnKS5tYXAodCA9PiB0LnRyaW0oKSk7XG4gICAgY29uc3QgbWF0Y2hlcyA9IGFjY2VwdGVkLnNvbWUocGF0dGVybiA9PiB7XG4gICAgICBpZiAocGF0dGVybiA9PT0gJyovKicpIHsgcmV0dXJuIHRydWU7IH1cbiAgICAgIGlmIChwYXR0ZXJuLmVuZHNXaXRoKCcvKicpKSB7IHJldHVybiBmaWxlLnR5cGUuc3RhcnRzV2l0aChwYXR0ZXJuLnJlcGxhY2UoJy8qJywgJy8nKSk7IH1cbiAgICAgIGlmIChwYXR0ZXJuLnN0YXJ0c1dpdGgoJy4nKSkgeyByZXR1cm4gZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgocGF0dGVybi50b0xvd2VyQ2FzZSgpKTsgfVxuICAgICAgcmV0dXJuIGZpbGUudHlwZSA9PT0gcGF0dGVybjtcbiAgICB9KTtcbiAgICBpZiAobWF0Y2hlcykgeyByZXR1cm4gbnVsbDsgfVxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnZmlsZVR5cGUnLFxuICAgICAgbWVzc2FnZTogRklMRVVQTE9BRF9FUlJPUl9NRVNTQUdFUy5maWxlVHlwZSxcbiAgICAgIGZpbGUsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVTaXplKGZpbGU6IEZpbGUpOiBTZGNGaWxlVXBsb2FkRXJyb3IgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMubWF4RmlsZVNpemUgfHwgZmlsZS5zaXplIDw9IHRoaXMubWF4RmlsZVNpemUpIHsgcmV0dXJuIG51bGw7IH1cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2ZpbGVTaXplJyxcbiAgICAgIG1lc3NhZ2U6IEZJTEVVUExPQURfRVJST1JfTUVTU0FHRVMuZmlsZVNpemUsXG4gICAgICBmaWxlLFxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZFwiXG4gIFtjbGFzcy5zZGMtZmlsZXVwbG9hZC0tZHJvcHpvbmVdPVwiaXNEcm9wem9uZU1vZGVcIlxuICBbY2xhc3Muc2RjLWZpbGV1cGxvYWQtLWJ1dHRvbl09XCJpc0J1dHRvbk1vZGVcIlxuICBbY2xhc3Muc2RjLWZpbGV1cGxvYWQtLWNvbXBhY3RdPVwiaXNDb21wYWN0TW9kZVwiXG4gIFtjbGFzcy5zZGMtZmlsZXVwbG9hZC0tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbY2xhc3Muc2RjLWZpbGV1cGxvYWQtLWludmFsaWRdPVwiaXNJbnZhbGlkXCJcbiAgW2NsYXNzLnNkYy1maWxldXBsb2FkLS1oYXMtZmlsZXNdPVwiaGFzRmlsZXNcIlxuPlxuICA8IS0tIExhYmVsIHJvdyAtLT5cbiAgQGlmIChsYWJlbCkge1xuICAgIDxkaXYgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fbGFiZWwtcm93XCI+XG4gICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkXCIgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fbGFiZWxcIj5cbiAgICAgICAge3sgbGFiZWxUZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgICAgIEBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy1maWxldXBsb2FkX19yZXF1aXJlZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPio8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+e3sgJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkucmVxdWlyZWRfZmllbGQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICB9XG5cbiAgPCEtLSBIaWRkZW4gbmF0aXZlIGZpbGUgaW5wdXQgLS0+XG4gIDxpbnB1dFxuICAgICNuYXRpdmVJbnB1dFxuICAgIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX25hdGl2ZS1pbnB1dFwiXG4gICAgdHlwZT1cImZpbGVcIlxuICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWxUZXh0ID8gKGxhYmVsVGV4dCB8IHRyYW5zbGF0ZSkgOiAoJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWQuc2VsZWN0X2ZpbGUnIHwgdHJhbnNsYXRlKVwiXG4gICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZCA/ICd0cnVlJyA6IG51bGxcIlxuICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpc0ludmFsaWQgPyAndHJ1ZScgOiBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRCeVwiXG4gICAgKGNoYW5nZSk9XCJvbk5hdGl2ZUNoYW5nZSgkZXZlbnQpXCJcbiAgLz5cblxuICA8IS0tIERyb3B6b25lIGFyZWEgLS0+XG4gIEBpZiAoaXNEcm9wem9uZU1vZGUpIHtcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2Ryb3B6b25lXCJcbiAgICAgIFtjbGFzcy5zZGMtZmlsZXVwbG9hZF9fZHJvcHpvbmUtLWRyYWctb3Zlcl09XCJpc0RyYWdPdmVyXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybS5kYXRhY29yZS5maWxldXBsb2FkLmRyb3B6b25lX2xhYmVsJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAoY2xpY2spPVwib3BlbkZpbGVQaWNrZXIoKVwiXG4gICAgICAoa2V5ZG93bik9XCJvbkRyb3B6b25lS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxuICAgICAgKGRyYWdsZWF2ZSk9XCJvbkRyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgICAgIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1jbG91ZC11cGxvYWQtYWx0IHNkYy1maWxldXBsb2FkX19kcm9wem9uZS1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZHJvcHpvbmUtdGV4dFwiPnt7IHBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZHJvcHpvbmUtaGludFwiPlxuICAgICAgICB7eyAncGxhdGZvcm0uZGF0YWNvcmUuZmlsZXVwbG9hZC5kcm9wem9uZV9oaW50JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICB9XG5cbiAgPCEtLSBCdXR0b24tb25seSBtb2RlIC0tPlxuICBAaWYgKGlzQnV0dG9uTW9kZSB8fCBpc0NvbXBhY3RNb2RlKSB7XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cInNkYy1maWxldXBsb2FkX19idG5cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWQuYXR0YWNoX2ZpbGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgIChjbGljayk9XCJvcGVuRmlsZVBpY2tlcigpXCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1wYXBlcmNsaXAgc2RjLWZpbGV1cGxvYWRfX2J0bi1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAge3sgJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWQuYXR0YWNoX2ZpbGUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIH1cblxuICA8IS0tIEZpbGUgbGlzdCAtLT5cbiAgQGlmIChoYXNGaWxlcykge1xuICAgIDx1bFxuICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZmlsZS1saXN0XCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWQuZmlsZV9saXN0JyB8IHRyYW5zbGF0ZVwiXG4gICAgPlxuICAgICAgQGZvciAoZmlsZSBvZiBmaWxlczsgdHJhY2sgZmlsZS5pZCkge1xuICAgICAgICA8bGkgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZmlsZS1pdGVtXCI+XG5cbiAgICAgICAgICA8IS0tIEltYWdlIHByZXZpZXcgdGh1bWJuYWlsIC0tPlxuICAgICAgICAgIEBpZiAoZmlsZS5pc0ltYWdlICYmIHNob3dQcmV2aWV3ICYmIGZpbGUucHJldmlld1VybCkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fdGh1bWItYnRuXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm0uZGF0YWNvcmUuZmlsZXVwbG9hZC5wcmV2aWV3X2ltYWdlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvcGVuUHJldmlld01vZGFsKGZpbGUsICRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fdGh1bWJcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiZmlsZS5wcmV2aWV3VXJsXCJcbiAgICAgICAgICAgICAgICBbYWx0XT1cImZpbGUubmFtZVwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCI0MFwiXG4gICAgICAgICAgICAgICAgaGVpZ2h0PVwiNDBcIlxuICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDwhLS0gRmlsZSB0eXBlIGljb24gKG5vbi1pbWFnZSkgLS0+XG4gICAgICAgICAgQGlmICghZmlsZS5pc0ltYWdlIHx8ICFzaG93UHJldmlldykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNkYy1maWxldXBsb2FkX19maWxlLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZmlsZS1hbHRcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8IS0tIEZpbGUgaW5mbyAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2ZpbGUtaW5mb1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZmlsZS1uYW1lXCIgW3RpdGxlXT1cImZpbGUubmFtZVwiPnt7IGZpbGUubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2ZpbGUtc2l6ZVwiPnt7IGZvcm1hdEZpbGVTaXplKGZpbGUuc2l6ZSkgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIEZpbGUgYWN0aW9ucyAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2ZpbGUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgQGlmIChmaWxlLmlzSW1hZ2UgJiYgYWxsb3dJbWFnZU1vZGFsICYmIHNob3dQcmV2aWV3ICYmIGZpbGUucHJldmlld1VybCkge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fYWN0aW9uLWJ0blwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm0uZGF0YWNvcmUuZmlsZXVwbG9hZC5wcmV2aWV3X2ltYWdlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5QcmV2aWV3TW9kYWwoZmlsZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1leWVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKGFsbG93RG93bmxvYWQgJiYgKGZpbGUudXJsIHx8IGZpbGUucHJldmlld1VybCkpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2FjdGlvbi1idG5cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWQuZG93bmxvYWRfZmlsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZEZpbGUoZmlsZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1kb3dubG9hZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAoYWxsb3dSZW1vdmUgJiYgIWRpc2FibGVkKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNkYy1maWxldXBsb2FkX19hY3Rpb24tYnRuIHNkYy1maWxldXBsb2FkX19hY3Rpb24tYnRuLS1yZW1vdmVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiKCdwbGF0Zm9ybS5kYXRhY29yZS5maWxldXBsb2FkLnJlbW92ZV9maWxlJyB8IHRyYW5zbGF0ZSkgKyAnICcgKyBmaWxlLm5hbWVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGaWxlKGZpbGUsICRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgfVxuICAgIDwvdWw+XG4gIH1cblxuICA8IS0tIEhlbHBlciB0ZXh0IC0tPlxuICBAaWYgKGhlbHBlclRleHQgJiYgIWlzSW52YWxpZCkge1xuICAgIDxzbWFsbCBbaWRdPVwiaGVscGVySWRcIiBjbGFzcz1cInNkYy1maWxldXBsb2FkX19oZWxwZXJcIj5cbiAgICAgIHt7IGhlbHBlclRleHRWYWx1ZSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvc21hbGw+XG4gIH1cblxuICA8IS0tIEVycm9yIG1lc3NhZ2UgLS0+XG4gIEBpZiAoaXNJbnZhbGlkICYmIGVycm9yTWVzc2FnZSkge1xuICAgIDxzbWFsbFxuICAgICAgW2lkXT1cImVycm9ySWRcIlxuICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZXJyb3JcIlxuICAgICAgcm9sZT1cImFsZXJ0XCJcbiAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgPlxuICAgICAge3sgZXJyb3JNZXNzYWdlVmFsdWUgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NtYWxsPlxuICB9XG48L2Rpdj5cblxuPCEtLSBJbWFnZSBwcmV2aWV3IG1vZGFsIC0tPlxuQGlmIChwcmV2aWV3RmlsZSkge1xuICA8c2RjLW1vZGFsXG4gICAgW3Zpc2libGVdPVwicHJldmlld01vZGFsVmlzaWJsZVwiXG4gICAgW2hlYWRlcl09XCJwcmV2aWV3RmlsZS5uYW1lXCJcbiAgICBbY2xvc2FibGVdPVwidHJ1ZVwiXG4gICAgW2FwcGVuZFRvQm9keV09XCJ0cnVlXCJcbiAgICB3aWR0aD1cImF1dG9cIlxuICAgICh2aXNpYmxlQ2hhbmdlKT1cIiEkZXZlbnQgJiYgY2xvc2VQcmV2aWV3TW9kYWwoKVwiXG4gICAgKGhpZGRlbik9XCJjbG9zZVByZXZpZXdNb2RhbCgpXCJcbiAgPlxuICAgIDxpbWdcbiAgICAgIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX3ByZXZpZXctaW1nXCJcbiAgICAgIFtzcmNdPVwicHJldmlld0ZpbGUucHJldmlld1VybFwiXG4gICAgICBbYWx0XT1cInByZXZpZXdGaWxlLm5hbWVcIlxuICAgICAgd2lkdGg9XCI4MDBcIlxuICAgICAgaGVpZ2h0PVwiNjAwXCJcbiAgICAvPlxuICA8L3NkYy1tb2RhbD5cbn1cbiJdfQ==
|
|
311
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXVwbG9hZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2ZpbGV1cGxvYWQvZmlsZXVwbG9hZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2ZpbGV1cGxvYWQvZmlsZXVwbG9hZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUV0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFMUQsT0FBTyxFQUNMLHlCQUF5QixFQUN6QiwyQkFBMkIsRUFDM0IseUJBQXlCLEVBQ3pCLG9CQUFvQixFQUNwQixzQkFBc0IsR0FDdkIsTUFBTSx1Q0FBdUMsQ0FBQzs7O0FBRS9DLElBQUksVUFBVSxHQUFHLENBQUMsQ0FBQztBQUVuQixTQUFTLGNBQWM7SUFDckIsVUFBVSxJQUFJLENBQUMsQ0FBQztJQUNoQixPQUFPLEdBQUcsb0JBQW9CLFNBQVMsVUFBVSxFQUFFLENBQUM7QUFDdEQsQ0FBQztBQVdELE1BQU0sT0FBTyxtQkFBbUI7SUFDSixXQUFXLENBQWdDO0lBRTVELEtBQUssR0FBbUIsS0FBSyxDQUFDO0lBQzlCLFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixRQUFRLEdBQUcs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QUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNqRSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxZQUFZLENBQUMsSUFBdUIsRUFBRSxLQUFZO1FBQ2hELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDO1lBQzNDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FB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O2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFFTyxLQUFLO3NCQUFqQixLQUFLO2dCQVFJLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5pbXBvcnQgeyBuZXh0U2VxdWVudGlhbElkIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscy9pZC51dGlsJztcbmltcG9ydCB7IE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwvbW9kYWwuY29tcG9uZW50JztcbmltcG9ydCB0eXBlIHsgRmlsZVVwbG9hZE1vZGUsIFNkY0ZpbGVVcGxvYWRFcnJvciwgU2RjRmlsZVVwbG9hZEZpbGUgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL2ZpbGV1cGxvYWQudHlwZSc7XG5pbXBvcnQge1xuICBGSUxFVVBMT0FEX0RFRkFVTFRfQUNDRVBULFxuICBGSUxFVVBMT0FEX0RFRkFVTFRfTUFYX1NJWkUsXG4gIEZJTEVVUExPQURfRVJST1JfTUVTU0FHRVMsXG4gIEZJTEVVUExPQURfSURfUFJFRklYLFxuICBGSUxFVVBMT0FEX0lNQUdFX1RZUEVTLFxufSBmcm9tICcuLi8uLi9jb3JlL2NvbnN0YW50cy9maWxldXBsb2FkLmNvbnN0JztcblxubGV0IF9pZENvdW50ZXIgPSAwO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZUZpbGVJZCgpOiBzdHJpbmcge1xuICBfaWRDb3VudGVyICs9IDE7XG4gIHJldHVybiBgJHtGSUxFVVBMT0FEX0lEX1BSRUZJWH0tZmlsZS0ke19pZENvdW50ZXJ9YDtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2RjLWZpbGV1cGxvYWQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBUcmFuc2xhdGVNb2R1bGUsIE1vZGFsQ29tcG9uZW50XSxcbiAgdGVtcGxhdGVVcmw6ICcuL2ZpbGV1cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vZmlsZXVwbG9hZC5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5FbXVsYXRlZCxcbn0pXG5leHBvcnQgY2xhc3MgRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoJ25hdGl2ZUlucHV0JykgbmF0aXZlSW5wdXQ/OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCBmYWxzZSA9IGZhbHNlO1xuICBASW5wdXQoKSByZXF1aXJlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBhY2NlcHQ6IHN0cmluZyA9IEZJTEVVUExPQURfREVGQVVMVF9BQ0NFUFQ7XG4gIEBJbnB1dCgpIG1heEZpbGVTaXplOiBudW1iZXIgPSBGSUxFVVBMT0FEX0RFRkFVTFRfTUFYX1NJWkU7XG4gIEBJbnB1dCgpIGhlbHBlclRleHQ6IHN0cmluZyB8IGZhbHNlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogc3RyaW5nIHwgZmFsc2UgPSBmYWxzZTtcbiAgQElucHV0KCkgbW9kZTogRmlsZVVwbG9hZE1vZGUgPSAnZHJvcHpvbmUnO1xuICBASW5wdXQoKSBzaG93UHJldmlldyA9IHRydWU7XG4gIEBJbnB1dCgpIGFsbG93RG93bmxvYWQgPSB0cnVlO1xuICBASW5wdXQoKSBhbGxvd1JlbW92ZSA9IHRydWU7XG4gIEBJbnB1dCgpIGFsbG93SW1hZ2VNb2RhbCA9IHRydWU7XG4gIEBJbnB1dCgpIGludmFsaWQgPSBmYWxzZTtcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAncGxhdGZvcm0uZGF0YWNvcmUuZmlsZXVwbG9hZF9wbGFjZWhvbGRlcic7XG5cbiAgQElucHV0KCkgc2V0IGZpbGVzKHZhbDogU2RjRmlsZVVwbG9hZEZpbGVbXSkge1xuICAgIHRoaXMuX2ZpbGVzID0gdmFsID8/IFtdO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG4gIGdldCBmaWxlcygpOiBTZGNGaWxlVXBsb2FkRmlsZVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsZXM7XG4gIH1cblxuICBAT3V0cHV0KCkgZmlsZXNDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFNkY0ZpbGVVcGxvYWRGaWxlW10+KCk7XG4gIEBPdXRwdXQoKSBmaWxlU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNkY0ZpbGVVcGxvYWRGaWxlPigpO1xuICBAT3V0cHV0KCkgZmlsZVJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFNkY0ZpbGVVcGxvYWRGaWxlPigpO1xuICBAT3V0cHV0KCkgZmlsZURvd25sb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxTZGNGaWxlVXBsb2FkRmlsZT4oKTtcbiAgQE91dHB1dCgpIGZpbGVQcmV2aWV3ID0gbmV3IEV2ZW50RW1pdHRlcjxTZGNGaWxlVXBsb2FkRmlsZT4oKTtcbiAgQE91dHB1dCgpIHZhbGlkYXRpb25FcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8U2RjRmlsZVVwbG9hZEVycm9yPigpO1xuXG4gIHJlYWRvbmx5IGNvbXBvbmVudElkID0gbmV4dFNlcXVlbnRpYWxJZChGSUxFVVBMT0FEX0lEX1BSRUZJWCk7XG4gIHJlYWRvbmx5IGlucHV0SWQgPSBgJHt0aGlzLmNvbXBvbmVudElkfS1pbnB1dGA7XG4gIHJlYWRvbmx5IGhlbHBlcklkID0gYCR7dGhpcy5jb21wb25lbnRJZH0taGVscGVyYDtcbiAgcmVhZG9ubHkgZXJyb3JJZCA9IGAke3RoaXMuY29tcG9uZW50SWR9LWVycm9yYDtcblxuICBpc0RyYWdPdmVyID0gZmFsc2U7XG4gIHByZXZpZXdNb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgcHJldmlld0ZpbGU6IFNkY0ZpbGVVcGxvYWRGaWxlIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfZmlsZXM6IFNkY0ZpbGVVcGxvYWRGaWxlW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBwcml2YXRlIG9iamVjdFVybHM6IHN0cmluZ1tdID0gW107XG5cbiAgZ2V0IGhhc0ZpbGVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9maWxlcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ2V0IGxhYmVsVGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0eXBlb2YgdGhpcy5sYWJlbCA9PT0gJ3N0cmluZycgPyB0aGlzLmxhYmVsIDogJyc7XG4gIH1cblxuICBnZXQgaGVscGVyVGV4dFZhbHVlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHR5cGVvZiB0aGlzLmhlbHBlclRleHQgPT09ICdzdHJpbmcnID8gdGhpcy5oZWxwZXJUZXh0IDogJyc7XG4gIH1cblxuICBnZXQgZXJyb3JNZXNzYWdlVmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdHlwZW9mIHRoaXMuZXJyb3JNZXNzYWdlID09PSAnc3RyaW5nJyA/IHRoaXMuZXJyb3JNZXNzYWdlIDogJyc7XG4gIH1cblxuICBnZXQgaXNJbnZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmludmFsaWQ7XG4gIH1cblxuICBnZXQgYXJpYURlc2NyaWJlZEJ5KCk6IHN0cmluZyB8IG51bGwge1xuICAgIGNvbnN0IGlkczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodGhpcy5oZWxwZXJUZXh0VmFsdWUpIHtcbiAgICAgIGlkcy5wdXNoKHRoaXMuaGVscGVySWQpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0ludmFsaWQgJiYgdGhpcy5lcnJvck1lc3NhZ2VWYWx1ZSkge1xuICAgICAgaWRzLnB1c2godGhpcy5lcnJvcklkKTtcbiAgICB9XG4gICAgcmV0dXJuIGlkcy5sZW5ndGggPyBpZHMuam9pbignICcpIDogbnVsbDtcbiAgfVxuXG4gIGdldCBpc0Ryb3B6b25lTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnZHJvcHpvbmUnO1xuICB9XG5cbiAgZ2V0IGlzQnV0dG9uTW9kZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlID09PSAnYnV0dG9uJztcbiAgfVxuXG4gIGdldCBpc0NvbXBhY3RNb2RlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1vZGUgPT09ICdjb21wYWN0JztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub2JqZWN0VXJscy5mb3JFYWNoKHVybCA9PiBVUkwucmV2b2tlT2JqZWN0VVJMKHVybCkpO1xuICB9XG5cbiAgb3BlbkZpbGVQaWNrZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5uYXRpdmVJbnB1dD8ubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICB9XG5cbiAgb25OYXRpdmVDaGFuZ2UoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBpZiAoIWlucHV0LmZpbGVzPy5sZW5ndGgpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5wcm9jZXNzRmlsZXMoQXJyYXkuZnJvbShpbnB1dC5maWxlcykpO1xuICAgIGlucHV0LnZhbHVlID0gJyc7XG4gIH1cblxuICBvbkRyYWdPdmVyKGV2ZW50OiBEcmFnRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkgeyB0aGlzLmlzRHJhZ092ZXIgPSB0cnVlOyB9XG4gIH1cblxuICBvbkRyYWdMZWF2ZShldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlzRHJhZ092ZXIgPSBmYWxzZTtcbiAgfVxuXG4gIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLmlzRHJhZ092ZXIgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgeyByZXR1cm47IH1cbiAgICBjb25zdCBmaWxlcyA9IGV2ZW50LmRhdGFUcmFuc2Zlcj8uZmlsZXM7XG4gICAgaWYgKGZpbGVzPy5sZW5ndGgpIHsgdGhpcy5wcm9jZXNzRmlsZXMoQXJyYXkuZnJvbShmaWxlcykpOyB9XG4gIH1cblxuICBvbkRyb3B6b25lS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5ID09PSAnICcpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLm9wZW5GaWxlUGlja2VyKCk7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlRmlsZShmaWxlOiBTZGNGaWxlVXBsb2FkRmlsZSwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuOyB9XG4gICAgaWYgKGZpbGUucHJldmlld1VybCAmJiB0aGlzLm9iamVjdFVybHMuaW5jbHVkZXMoZmlsZS5wcmV2aWV3VXJsKSkge1xuICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChmaWxlLnByZXZpZXdVcmwpO1xuICAgICAgdGhpcy5vYmplY3RVcmxzID0gdGhpcy5vYmplY3RVcmxzLmZpbHRlcih1ID0+IHUgIT09IGZpbGUucHJldmlld1VybCk7XG4gICAgfVxuICAgIHRoaXMuX2ZpbGVzID0gdGhpcy5fZmlsZXMuZmlsdGVyKGYgPT4gZi5pZCAhPT0gZmlsZS5pZCk7XG4gICAgdGhpcy5maWxlc0NoYW5nZS5lbWl0KFsuLi50aGlzLl9maWxlc10pO1xuICAgIHRoaXMuZmlsZVJlbW92ZWQuZW1pdChmaWxlKTtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGRvd25sb2FkRmlsZShmaWxlOiBTZGNGaWxlVXBsb2FkRmlsZSwgZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5maWxlRG93bmxvYWQuZW1pdChmaWxlKTtcbiAgICBpZiAoZmlsZS51cmwgfHwgZmlsZS5wcmV2aWV3VXJsKSB7XG4gICAgICBjb25zdCBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgYS5ocmVmID0gZmlsZS51cmwgPz8gZmlsZS5wcmV2aWV3VXJsID8/ICcnO1xuICAgICAgYS5kb3dubG9hZCA9IGZpbGUubmFtZTtcbiAgICAgIGEuY2xpY2soKTtcbiAgICB9XG4gIH1cblxuICBvcGVuUHJldmlld01vZGFsKGZpbGU6IFNkY0ZpbGVVcGxvYWRGaWxlLCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoIWZpbGUuaXNJbWFnZSB8fCAhdGhpcy5hbGxvd0ltYWdlTW9kYWwpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5wcmV2aWV3RmlsZSA9IGZpbGU7XG4gICAgdGhpcy5wcmV2aWV3TW9kYWxWaXNpYmxlID0gdHJ1ZTtcbiAgICB0aGlzLmZpbGVQcmV2aWV3LmVtaXQoZmlsZSk7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBjbG9zZVByZXZpZXdNb2RhbCgpOiB2b2lkIHtcbiAgICB0aGlzLnByZXZpZXdNb2RhbFZpc2libGUgPSBmYWxzZTtcbiAgICB0aGlzLnByZXZpZXdGaWxlID0gbnVsbDtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIGZvcm1hdEZpbGVTaXplKGJ5dGVzOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmIChieXRlcyA8IDEwMjQpIHsgcmV0dXJuIGAke2J5dGVzfSBCYDsgfVxuICAgIGlmIChieXRlcyA8IDEwMjQgKiAxMDI0KSB7IHJldHVybiBgJHsoYnl0ZXMgLyAxMDI0KS50b0ZpeGVkKDEpfSBLQmA7IH1cbiAgICByZXR1cm4gYCR7KGJ5dGVzIC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgxKX0gTUJgO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzRmlsZXMocmF3RmlsZXM6IEZpbGVbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7IHJldHVybjsgfVxuICAgIGNvbnN0IHRvQWRkID0gdGhpcy5tdWx0aXBsZSA/IHJhd0ZpbGVzIDogcmF3RmlsZXMuc2xpY2UoMCwgMSk7XG4gICAgdG9BZGQuZm9yRWFjaCgocmF3KSA9PiB0aGlzLnByb2Nlc3NTaW5nbGVGaWxlKHJhdykpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBwcm9jZXNzU2luZ2xlRmlsZShyYXc6IEZpbGUpOiB2b2lkIHtcbiAgICBjb25zdCB0eXBlRXJyb3IgPSB0aGlzLnZhbGlkYXRlVHlwZShyYXcpO1xuICAgIGlmICh0eXBlRXJyb3IpIHtcbiAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9yLmVtaXQodHlwZUVycm9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgc2l6ZUVycm9yID0gdGhpcy52YWxpZGF0ZVNpemUocmF3KTtcbiAgICBpZiAoc2l6ZUVycm9yKSB7XG4gICAgICB0aGlzLnZhbGlkYXRpb25FcnJvci5lbWl0KHNpemVFcnJvcik7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXNJbWFnZSA9IEZJTEVVUExPQURfSU1BR0VfVFlQRVMuaW5jbHVkZXMocmF3LnR5cGUpO1xuICAgIGxldCBwcmV2aWV3VXJsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKGlzSW1hZ2UgJiYgdGhpcy5zaG93UHJldmlldykge1xuICAgICAgcHJldmlld1VybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwocmF3KTtcbiAgICAgIHRoaXMub2JqZWN0VXJscy5wdXNoKHByZXZpZXdVcmwpO1xuICAgIH1cblxuICAgIGNvbnN0IHNkY0ZpbGU6IFNkY0ZpbGVVcGxvYWRGaWxlID0ge1xuICAgICAgaWQ6IGdlbmVyYXRlRmlsZUlkKCksXG4gICAgICBuYW1lOiByYXcubmFtZSxcbiAgICAgIHNpemU6IHJhdy5zaXplLFxuICAgICAgdHlwZTogcmF3LnR5cGUsXG4gICAgICBmaWxlOiByYXcsXG4gICAgICBwcmV2aWV3VXJsLFxuICAgICAgaXNJbWFnZSxcbiAgICB9O1xuXG4gICAgdGhpcy5fZmlsZXMgPSB0aGlzLm11bHRpcGxlID8gWy4uLnRoaXMuX2ZpbGVzLCBzZGNGaWxlXSA6IFtzZGNGaWxlXTtcbiAgICB0aGlzLmZpbGVzQ2hhbmdlLmVtaXQoWy4uLnRoaXMuX2ZpbGVzXSk7XG4gICAgdGhpcy5maWxlU2VsZWN0ZWQuZW1pdChzZGNGaWxlKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVUeXBlKGZpbGU6IEZpbGUpOiBTZGNGaWxlVXBsb2FkRXJyb3IgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuYWNjZXB0IHx8IHRoaXMuYWNjZXB0ID09PSAnKi8qJykgeyByZXR1cm4gbnVsbDsgfVxuICAgIGNvbnN0IGFjY2VwdGVkID0gdGhpcy5hY2NlcHQuc3BsaXQoJywnKS5tYXAodCA9PiB0LnRyaW0oKSk7XG4gICAgY29uc3QgbWF0Y2hlcyA9IGFjY2VwdGVkLnNvbWUocGF0dGVybiA9PiB7XG4gICAgICBpZiAocGF0dGVybiA9PT0gJyovKicpIHsgcmV0dXJuIHRydWU7IH1cbiAgICAgIGlmIChwYXR0ZXJuLmVuZHNXaXRoKCcvKicpKSB7IHJldHVybiBmaWxlLnR5cGUuc3RhcnRzV2l0aChwYXR0ZXJuLnJlcGxhY2UoJy8qJywgJy8nKSk7IH1cbiAgICAgIGlmIChwYXR0ZXJuLnN0YXJ0c1dpdGgoJy4nKSkgeyByZXR1cm4gZmlsZS5uYW1lLnRvTG93ZXJDYXNlKCkuZW5kc1dpdGgocGF0dGVybi50b0xvd2VyQ2FzZSgpKTsgfVxuICAgICAgcmV0dXJuIGZpbGUudHlwZSA9PT0gcGF0dGVybjtcbiAgICB9KTtcbiAgICBpZiAobWF0Y2hlcykgeyByZXR1cm4gbnVsbDsgfVxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiAnZmlsZVR5cGUnLFxuICAgICAgbWVzc2FnZTogRklMRVVQTE9BRF9FUlJPUl9NRVNTQUdFUy5maWxlVHlwZSxcbiAgICAgIGZpbGUsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVTaXplKGZpbGU6IEZpbGUpOiBTZGNGaWxlVXBsb2FkRXJyb3IgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMubWF4RmlsZVNpemUgfHwgZmlsZS5zaXplIDw9IHRoaXMubWF4RmlsZVNpemUpIHsgcmV0dXJuIG51bGw7IH1cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogJ2ZpbGVTaXplJyxcbiAgICAgIG1lc3NhZ2U6IEZJTEVVUExPQURfRVJST1JfTUVTU0FHRVMuZmlsZVNpemUsXG4gICAgICBmaWxlLFxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZFwiXG4gIFtjbGFzcy5zZGMtZmlsZXVwbG9hZC0tZHJvcHpvbmVdPVwiaXNEcm9wem9uZU1vZGVcIlxuICBbY2xhc3Muc2RjLWZpbGV1cGxvYWQtLWJ1dHRvbl09XCJpc0J1dHRvbk1vZGVcIlxuICBbY2xhc3Muc2RjLWZpbGV1cGxvYWQtLWNvbXBhY3RdPVwiaXNDb21wYWN0TW9kZVwiXG4gIFtjbGFzcy5zZGMtZmlsZXVwbG9hZC0tZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbY2xhc3Muc2RjLWZpbGV1cGxvYWQtLWludmFsaWRdPVwiaXNJbnZhbGlkXCJcbiAgW2NsYXNzLnNkYy1maWxldXBsb2FkLS1oYXMtZmlsZXNdPVwiaGFzRmlsZXNcIlxuPlxuICA8IS0tIExhYmVsIHJvdyAtLT5cbiAgQGlmIChsYWJlbCkge1xuICAgIDxkaXYgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fbGFiZWwtcm93XCI+XG4gICAgICA8bGFiZWwgW2Zvcl09XCJpbnB1dElkXCIgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fbGFiZWxcIj5cbiAgICAgICAge3sgbGFiZWxUZXh0IHwgdHJhbnNsYXRlIH19XG4gICAgICAgIEBpZiAocmVxdWlyZWQpIHtcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInNkYy1maWxldXBsb2FkX19yZXF1aXJlZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPio8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+e3sgJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHlfcmVxdWlyZWRfZmllbGQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgICA8L2xhYmVsPlxuICAgIDwvZGl2PlxuICB9XG5cbiAgPCEtLSBIaWRkZW4gbmF0aXZlIGZpbGUgaW5wdXQgLS0+XG4gIDxpbnB1dFxuICAgICNuYXRpdmVJbnB1dFxuICAgIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX25hdGl2ZS1pbnB1dFwiXG4gICAgdHlwZT1cImZpbGVcIlxuICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiXG4gICAgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAgIFthdHRyLmFyaWEtbGFiZWxdPVwibGFiZWxUZXh0ID8gKGxhYmVsVGV4dCB8IHRyYW5zbGF0ZSkgOiAoJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWRfc2VsZWN0X2ZpbGUnIHwgdHJhbnNsYXRlKVwiXG4gICAgW2F0dHIuYXJpYS1yZXF1aXJlZF09XCJyZXF1aXJlZCA/ICd0cnVlJyA6IG51bGxcIlxuICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpc0ludmFsaWQgPyAndHJ1ZScgOiBudWxsXCJcbiAgICBbYXR0ci5hcmlhLWRlc2NyaWJlZGJ5XT1cImFyaWFEZXNjcmliZWRCeVwiXG4gICAgKGNoYW5nZSk9XCJvbk5hdGl2ZUNoYW5nZSgkZXZlbnQpXCJcbiAgLz5cblxuICA8IS0tIERyb3B6b25lIGFyZWEgLS0+XG4gIEBpZiAoaXNEcm9wem9uZU1vZGUpIHtcbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2Ryb3B6b25lXCJcbiAgICAgIFtjbGFzcy5zZGMtZmlsZXVwbG9hZF9fZHJvcHpvbmUtLWRyYWctb3Zlcl09XCJpc0RyYWdPdmVyXCJcbiAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidwbGF0Zm9ybS5kYXRhY29yZS5maWxldXBsb2FkX2Ryb3B6b25lX2xhYmVsJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAoY2xpY2spPVwib3BlbkZpbGVQaWNrZXIoKVwiXG4gICAgICAoa2V5ZG93bik9XCJvbkRyb3B6b25lS2V5ZG93bigkZXZlbnQpXCJcbiAgICAgIChkcmFnb3Zlcik9XCJvbkRyYWdPdmVyKCRldmVudClcIlxuICAgICAgKGRyYWdsZWF2ZSk9XCJvbkRyYWdMZWF2ZSgkZXZlbnQpXCJcbiAgICAgIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1jbG91ZC11cGxvYWQtYWx0IHNkYy1maWxldXBsb2FkX19kcm9wem9uZS1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZHJvcHpvbmUtdGV4dFwiPnt7IHBsYWNlaG9sZGVyIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZHJvcHpvbmUtaGludFwiPlxuICAgICAgICB7eyAncGxhdGZvcm0uZGF0YWNvcmUuZmlsZXVwbG9hZF9kcm9wem9uZV9oaW50JyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICB9XG5cbiAgPCEtLSBCdXR0b24tb25seSBtb2RlIC0tPlxuICBAaWYgKGlzQnV0dG9uTW9kZSB8fCBpc0NvbXBhY3RNb2RlKSB7XG4gICAgPGJ1dHRvblxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICBjbGFzcz1cInNkYy1maWxldXBsb2FkX19idG5cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWRfYXR0YWNoX2ZpbGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgIChjbGljayk9XCJvcGVuRmlsZVBpY2tlcigpXCJcbiAgICA+XG4gICAgICA8aSBjbGFzcz1cImZhcyBmYS1wYXBlcmNsaXAgc2RjLWZpbGV1cGxvYWRfX2J0bi1pY29uXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAge3sgJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWRfYXR0YWNoX2ZpbGUnIHwgdHJhbnNsYXRlIH19XG4gICAgPC9idXR0b24+XG4gIH1cblxuICA8IS0tIEZpbGUgbGlzdCAtLT5cbiAgQGlmIChoYXNGaWxlcykge1xuICAgIDx1bFxuICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZmlsZS1saXN0XCJcbiAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWRfZmlsZV9saXN0JyB8IHRyYW5zbGF0ZVwiXG4gICAgPlxuICAgICAgQGZvciAoZmlsZSBvZiBmaWxlczsgdHJhY2sgZmlsZS5pZCkge1xuICAgICAgICA8bGkgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZmlsZS1pdGVtXCI+XG5cbiAgICAgICAgICA8IS0tIEltYWdlIHByZXZpZXcgdGh1bWJuYWlsIC0tPlxuICAgICAgICAgIEBpZiAoZmlsZS5pc0ltYWdlICYmIHNob3dQcmV2aWV3ICYmIGZpbGUucHJldmlld1VybCkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fdGh1bWItYnRuXCJcbiAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm0uZGF0YWNvcmUuZmlsZXVwbG9hZF9wcmV2aWV3X2ltYWdlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJvcGVuUHJldmlld01vZGFsKGZpbGUsICRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fdGh1bWJcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiZmlsZS5wcmV2aWV3VXJsXCJcbiAgICAgICAgICAgICAgICBbYWx0XT1cImZpbGUubmFtZVwiXG4gICAgICAgICAgICAgICAgd2lkdGg9XCI0MFwiXG4gICAgICAgICAgICAgICAgaGVpZ2h0PVwiNDBcIlxuICAgICAgICAgICAgICAgIGxvYWRpbmc9XCJsYXp5XCJcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDwhLS0gRmlsZSB0eXBlIGljb24gKG5vbi1pbWFnZSkgLS0+XG4gICAgICAgICAgQGlmICghZmlsZS5pc0ltYWdlIHx8ICFzaG93UHJldmlldykge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNkYy1maWxldXBsb2FkX19maWxlLWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZmlsZS1hbHRcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG5cbiAgICAgICAgICA8IS0tIEZpbGUgaW5mbyAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2ZpbGUtaW5mb1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZmlsZS1uYW1lXCIgW3RpdGxlXT1cImZpbGUubmFtZVwiPnt7IGZpbGUubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2ZpbGUtc2l6ZVwiPnt7IGZvcm1hdEZpbGVTaXplKGZpbGUuc2l6ZSkgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8IS0tIEZpbGUgYWN0aW9ucyAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2ZpbGUtYWN0aW9uc1wiPlxuICAgICAgICAgICAgQGlmIChmaWxlLmlzSW1hZ2UgJiYgYWxsb3dJbWFnZU1vZGFsICYmIHNob3dQcmV2aWV3ICYmIGZpbGUucHJldmlld1VybCkge1xuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fYWN0aW9uLWJ0blwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCIncGxhdGZvcm0uZGF0YWNvcmUuZmlsZXVwbG9hZF9wcmV2aWV3X2ltYWdlJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5QcmV2aWV3TW9kYWwoZmlsZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1leWVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKGFsbG93RG93bmxvYWQgJiYgKGZpbGUudXJsIHx8IGZpbGUucHJldmlld1VybCkpIHtcbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX2FjdGlvbi1idG5cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmZpbGV1cGxvYWRfZG93bmxvYWRfZmlsZScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZEZpbGUoZmlsZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1kb3dubG9hZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpZiAoYWxsb3dSZW1vdmUgJiYgIWRpc2FibGVkKSB7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNkYy1maWxldXBsb2FkX19hY3Rpb24tYnRuIHNkYy1maWxldXBsb2FkX19hY3Rpb24tYnRuLS1yZW1vdmVcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiKCdwbGF0Zm9ybS5kYXRhY29yZS5maWxldXBsb2FkX3JlbW92ZV9maWxlJyB8IHRyYW5zbGF0ZSkgKyAnICcgKyBmaWxlLm5hbWVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVGaWxlKGZpbGUsICRldmVudClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgfVxuICAgIDwvdWw+XG4gIH1cblxuICA8IS0tIEhlbHBlciB0ZXh0IC0tPlxuICBAaWYgKGhlbHBlclRleHQgJiYgIWlzSW52YWxpZCkge1xuICAgIDxzbWFsbCBbaWRdPVwiaGVscGVySWRcIiBjbGFzcz1cInNkYy1maWxldXBsb2FkX19oZWxwZXJcIj5cbiAgICAgIHt7IGhlbHBlclRleHRWYWx1ZSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvc21hbGw+XG4gIH1cblxuICA8IS0tIEVycm9yIG1lc3NhZ2UgLS0+XG4gIEBpZiAoaXNJbnZhbGlkICYmIGVycm9yTWVzc2FnZSkge1xuICAgIDxzbWFsbFxuICAgICAgW2lkXT1cImVycm9ySWRcIlxuICAgICAgY2xhc3M9XCJzZGMtZmlsZXVwbG9hZF9fZXJyb3JcIlxuICAgICAgcm9sZT1cImFsZXJ0XCJcbiAgICAgIGFyaWEtbGl2ZT1cInBvbGl0ZVwiXG4gICAgPlxuICAgICAge3sgZXJyb3JNZXNzYWdlVmFsdWUgfCB0cmFuc2xhdGUgfX1cbiAgICA8L3NtYWxsPlxuICB9XG48L2Rpdj5cblxuPCEtLSBJbWFnZSBwcmV2aWV3IG1vZGFsIC0tPlxuQGlmIChwcmV2aWV3RmlsZSkge1xuICA8c2RjLW1vZGFsXG4gICAgW3Zpc2libGVdPVwicHJldmlld01vZGFsVmlzaWJsZVwiXG4gICAgW2hlYWRlcl09XCJwcmV2aWV3RmlsZS5uYW1lXCJcbiAgICBbY2xvc2FibGVdPVwidHJ1ZVwiXG4gICAgW2FwcGVuZFRvQm9keV09XCJ0cnVlXCJcbiAgICB3aWR0aD1cImF1dG9cIlxuICAgICh2aXNpYmxlQ2hhbmdlKT1cIiEkZXZlbnQgJiYgY2xvc2VQcmV2aWV3TW9kYWwoKVwiXG4gICAgKGhpZGRlbik9XCJjbG9zZVByZXZpZXdNb2RhbCgpXCJcbiAgPlxuICAgIDxpbWdcbiAgICAgIGNsYXNzPVwic2RjLWZpbGV1cGxvYWRfX3ByZXZpZXctaW1nXCJcbiAgICAgIFtzcmNdPVwicHJldmlld0ZpbGUucHJldmlld1VybFwiXG4gICAgICBbYWx0XT1cInByZXZpZXdGaWxlLm5hbWVcIlxuICAgICAgd2lkdGg9XCI4MDBcIlxuICAgICAgaGVpZ2h0PVwiNjAwXCJcbiAgICAvPlxuICA8L3NkYy1tb2RhbD5cbn1cbiJdfQ==
|
|
@@ -247,7 +247,7 @@ export class FiltersComponent {
|
|
|
247
247
|
return [model];
|
|
248
248
|
}
|
|
249
249
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FiltersComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
250
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FiltersComponent, isStandalone: true, selector: "sdc-filters", inputs: { data: "data", config: "config", loading: "loading", filterColumnClass: "filterColumnClass" }, outputs: { filtered: "filtered" }, usesOnChanges: true, ngImport: i0, template: "<section class=\"grid min-h-10rem\" role=\"search\"\n [attr.aria-label]=\"'platform.datacore.
|
|
250
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: FiltersComponent, isStandalone: true, selector: "sdc-filters", inputs: { data: "data", config: "config", loading: "loading", filterColumnClass: "filterColumnClass" }, outputs: { filtered: "filtered" }, usesOnChanges: true, ngImport: i0, template: "<section class=\"grid min-h-10rem\" role=\"search\"\n [attr.aria-label]=\"'platform.datacore.accessibility_filters_section' | translate\">\n @if (config!.search!.show !== false) {\n <div class=\"col-12 md:col-12 lg:col-6 xl:col-4\">\n <sdc-searchbox [disabled]=\"loading\" [label]=\"config!.search!.label || ''\"\n [placeholder]=\"config!.search!.placeholder || ''\" [size]=\"'small'\"\n [triggerMode]=\"config!.search!.triggerMode || 'auto'\" (onSearch)=\"onSearch($event)\" (onClear)=\"onClear()\">\n </sdc-searchbox>\n </div>\n }\n @if (config!.filters!.length) {\n @for (def of config.filters; track def.key) {\n <div class=\"sdc-filters__filter-item\" [ngClass]=\"filterItemColumnClass\" [class.mb-3]=\"isMobile\">\n <sdc-combobox width=\"100%\" [label]=\"def.label || ''\" [disabled]=\"loading\" [placeholder]=\"def.placeholder || ''\"\n [multiple]=\"(def.type ?? 'multiselect') === 'multiselect'\" [options]=\"filterOptionsMap[def.key]\"\n [(ngModel)]=\"selectedValues[def.key]\" (ngModelChange)=\"onComboChange(def.key, $event)\"\n [infoTooltip]=\"def.infoTooltip || ''\"\n [infoTooltipAllowHtml]=\"def.infoTooltipAllowHtml ?? false\"\n [infoTooltipPosition]=\"def.infoTooltipPosition ?? 'right'\"\n [attr.aria-label]=\"\n def.label || \n def.placeholder || \n ('platform.datacore.accessibility_filter_field' | translate)\n \">\n </sdc-combobox>\n </div>\n }\n }\n</section>\n", styles: [".bg-disabled{background-color:var(--p-inputtext-disabled-background)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i3.TranslatePipe, name: "translate" }, { kind: "component", type: SearchboxComponent, selector: "sdc-searchbox", inputs: ["triggerMode", "debounceTimeMs", "ariaLabel", "inputRole", "inputAriaControls", "inputAriaDescribedBy", "inputAriaActiveDescendant", "inputAriaHaspopup", "inputAriaExpanded", "inputAutocomplete", "submitOnEnter", "clearOnEscape"], outputs: ["debouncedValueChange", "onSearch", "onClear"] }, { kind: "component", type: ComboboxComponent, selector: "sdc-combobox", inputs: ["multiple", "appendTo", "zIndex", "options", "overrideChipMessage", "maxSelectedLabels", "showClear", "searchable", "iconSelector", "showIconClass", "infoTooltip", "infoTooltipPosition", "infoTooltipEvent", "infoTooltipAllowHtml"], outputs: ["onSelectedItem", "panelClosed"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
251
251
|
}
|
|
252
252
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: FiltersComponent, decorators: [{
|
|
253
253
|
type: Component,
|
|
@@ -257,7 +257,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
257
257
|
TranslateModule,
|
|
258
258
|
SearchboxComponent,
|
|
259
259
|
ComboboxComponent
|
|
260
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<section class=\"grid min-h-10rem\" role=\"search\"\n [attr.aria-label]=\"'platform.datacore.
|
|
260
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.Emulated, template: "<section class=\"grid min-h-10rem\" role=\"search\"\n [attr.aria-label]=\"'platform.datacore.accessibility_filters_section' | translate\">\n @if (config!.search!.show !== false) {\n <div class=\"col-12 md:col-12 lg:col-6 xl:col-4\">\n <sdc-searchbox [disabled]=\"loading\" [label]=\"config!.search!.label || ''\"\n [placeholder]=\"config!.search!.placeholder || ''\" [size]=\"'small'\"\n [triggerMode]=\"config!.search!.triggerMode || 'auto'\" (onSearch)=\"onSearch($event)\" (onClear)=\"onClear()\">\n </sdc-searchbox>\n </div>\n }\n @if (config!.filters!.length) {\n @for (def of config.filters; track def.key) {\n <div class=\"sdc-filters__filter-item\" [ngClass]=\"filterItemColumnClass\" [class.mb-3]=\"isMobile\">\n <sdc-combobox width=\"100%\" [label]=\"def.label || ''\" [disabled]=\"loading\" [placeholder]=\"def.placeholder || ''\"\n [multiple]=\"(def.type ?? 'multiselect') === 'multiselect'\" [options]=\"filterOptionsMap[def.key]\"\n [(ngModel)]=\"selectedValues[def.key]\" (ngModelChange)=\"onComboChange(def.key, $event)\"\n [infoTooltip]=\"def.infoTooltip || ''\"\n [infoTooltipAllowHtml]=\"def.infoTooltipAllowHtml ?? false\"\n [infoTooltipPosition]=\"def.infoTooltipPosition ?? 'right'\"\n [attr.aria-label]=\"\n def.label || \n def.placeholder || \n ('platform.datacore.accessibility_filter_field' | translate)\n \">\n </sdc-combobox>\n </div>\n }\n }\n</section>\n", styles: [".bg-disabled{background-color:var(--p-inputtext-disabled-background)}\n"] }]
|
|
261
261
|
}], propDecorators: { data: [{
|
|
262
262
|
type: Input,
|
|
263
263
|
args: [{ required: true }]
|
|
@@ -271,4 +271,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
271
271
|
}], filtered: [{
|
|
272
272
|
type: Output
|
|
273
273
|
}] } });
|
|
274
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2ZpbHRlcnMvZmlsdGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2ZpbHRlcnMvZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFheEQsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFJWixNQUFNLEVBQ04sdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFFdkIsTUFBTSwyQkFBMkIsR0FBRyxtQ0FBbUMsQ0FBQztBQWlCeEUsTUFBTSxPQUFPLGdCQUFnQjtJQUNBLElBQUksR0FBdUIsRUFBRSxDQUFDO0lBQzlCLE1BQU0sQ0FBaUI7SUFDekMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixpQkFBaUIsR0FBRywyQkFBMkIsQ0FBQztJQUMvQyxRQUFRLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7SUFFbEQsUUFBUSxHQUFHLFFBQVEsRUFBRSxDQUFDO0lBQ3RCLGdCQUFnQixHQUFpQyxFQUFFLENBQUM7SUFDcEQsY0FBYyxHQUFvQyxFQUFFLENBQUM7SUFFOUMsVUFBVSxHQUFHLE1BQU0sQ0FB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O2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBDb21ib2JveENvbXBvbmVudCB9IGZyb20gJy4uL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hib3hDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2hib3gvc2VhcmNoYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvbGF5b3V0LnV0aWwnO1xuaW1wb3J0IHsgdHlwZSBTZWFyY2hUcmlnZ2VyTW9kZSB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvc2VhcmNoYm94LnR5cGUnO1xuaW1wb3J0IHtcbiAgdHlwZSBGaWx0ZXJhYmxlUmVjb3JkLFxuICB0eXBlIEZpbHRlcnNDb25maWcsXG4gIHR5cGUgRmlsdGVyRGVmLFxuICB0eXBlIEZpbHRlclNlbGVjdGlvbixcbiAgdHlwZSBGaWx0ZXJTZWxlY3Rpb25WYWx1ZSxcbiAgdHlwZSBGaWVsZEFjY2Vzc29yLFxuICB0eXBlIExhYmVsQWNjZXNzb3IsXG4gIHR5cGUgVmFsdWVBY2Nlc3NvclxufSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL2ZpbHRlcnMudHlwZSc7XG5pbXBvcnQgeyB0eXBlIE9wdGlvbkl0ZW0sIHR5cGUgT3B0aW9uVmFsdWUgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL3NlbWFudGljcy50eXBlJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgc2lnbmFsLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmNvbnN0IERFRkFVTFRfRklMVEVSX0NPTFVNTl9DTEFTUyA9ICdjb2wtMTIgbWQ6Y29sLTYgbGc6Y29sLTMgeGw6Y29sLTInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtZmlsdGVycycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIFNlYXJjaGJveENvbXBvbmVudCxcbiAgICBDb21ib2JveENvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVycy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9maWx0ZXJzLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGRhdGE6IEZpbHRlcmFibGVSZWNvcmRbXSA9IFtdO1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb25maWchOiBGaWx0ZXJzQ29uZmlnO1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZpbHRlckNvbHVtbkNsYXNzID0gREVGQVVMVF9GSUxURVJfQ09MVU1OX0NMQVNTO1xuICBAT3V0cHV0KCkgZmlsdGVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlcmFibGVSZWNvcmRbXT4oKTtcblxuICBwcm90ZWN0ZWQgaXNNb2JpbGUgPSBpc01vYmlsZSgpO1xuICBwcm90ZWN0ZWQgZmlsdGVyT3B0aW9uc01hcDogUmVjb3JkPHN0cmluZywgT3B0aW9uSXRlbVtdPiA9IHt9O1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZpbHRlclNlbGVjdGlvbj4gPSB7fTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNlYXJjaFRlcm0gPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgZGVzdHJveWVkID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGdldCBmaWx0ZXJJdGVtQ29sdW1uQ2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJDb2x1bW5DbGFzcz8udHJpbSgpIHx8IERFRkFVTFRfRklMVEVSX0NPTFVNTl9DTEFTUztcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKF9jaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5idWlsZE9wdGlvbnNNYXAoKTtcbiAgICB0aGlzLmVuc3VyZU1vZGVscygpO1xuICAgIHRoaXMuYXBwbHlQcmVzZXRzRnJvbUNvbmZpZygpO1xuICAgIHRoaXMuYXBwbHlJbml0aWFsU3RhdGVGcm9tQ29uZmlnKCk7XG4gICAgdGhpcy5hcHBseUFuZEVtaXRBc3luYygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuICB9XG5cbiAgb25TZWFyY2godGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXJtLnNldCgodGVybSA/PyAnJykudHJpbSgpKTtcbiAgICB0aGlzLmFwcGx5QW5kRW1pdEFzeW5jKCk7XG4gIH1cblxuICBvbkNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybS5zZXQoJycpO1xuICAgIHRoaXMuYXBwbHlBbmRFbWl0QXN5bmMoKTtcbiAgfVxuXG4gIG9uQ29tYm9DaGFuZ2Uoa2V5OiBzdHJpbmcsIG1vZGVsOiBGaWx0ZXJTZWxlY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzW2tleV0gPSBtb2RlbDtcbiAgICB0aGlzLmFwcGx5QW5kRW1pdEFzeW5jKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbHRlcnMoKTogRmlsdGVyRGVmW10ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZz8uZmlsdGVycyA/PyBbXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VhcmNoQ2ZnKCk6IHtcbiAgICBmaWVsZHM6IEZpZWxkQWNjZXNzb3JbXTtcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICB0cmlnZ2VyTW9kZT86IFNlYXJjaFRyaWdnZXJNb2RlIHwgJ2F1dG8nO1xuICAgIHNob3c/OiBib29sZWFuO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICB9IHtcbiAgICBjb25zdCBzID0gdGhpcy5jb25maWc/LnNlYXJjaDtcbiAgICByZXR1cm4ge1xuICAgICAgZmllbGRzOiBzPy5maWVsZHMgPz8gW10sXG4gICAgICBwbGFjZWhvbGRlcjogcz8ucGxhY2Vob2xkZXIsXG4gICAgICB0cmlnZ2VyTW9kZTogcz8udHJpZ2dlck1vZGUgPz8gJ2F1dG8nLFxuICAgICAgc2hvdzogcz8uc2hvdyA/PyB0cnVlLFxuICAgICAgbGFiZWw6IHM/LmxhYmVsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5pdGlhbFN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZz8uaW5pdGlhbFN0YXRlO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkUGF0aChvYmo6IHVua25vd24sIHBhdGg6IHN0cmluZyk6IHVua25vd24ge1xuICAgIHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlPHVua25vd24+KChhY2MsIHBhcnQpID0+IHRoaXMucmVhZFJlY29yZFZhbHVlKGFjYywgcGFydCksIG9iaik7XG4gIH1cblxuICBwcml2YXRlIHJlYWRSZWNvcmRWYWx1ZShzb3VyY2U6IHVua25vd24sIGtleTogc3RyaW5nKTogdW5rbm93biB7XG4gICAgaWYgKCFzb3VyY2UgfHwgdHlwZW9mIHNvdXJjZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIChzb3VyY2UgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV07XG4gIH1cblxuICBwcml2YXRlIGdldEZpZWxkVmFsdWUocm93OiBGaWx0ZXJhYmxlUmVjb3JkLCBhY2M6IEZpZWxkQWNjZXNzb3IpOiB1bmtub3duIHtcbiAgICByZXR1cm4gdHlwZW9mIGFjYyA9PT0gJ2Z1bmN0aW9uJyA/IGFjYyhyb3cpIDogdGhpcy5yZWFkUGF0aChyb3csIGFjYyk7XG4gIH1cblxuICBwcml2YXRlIGdldExhYmVsKHZhbDogdW5rbm93biwgYWNjPzogTGFiZWxBY2Nlc3Nvcik6IHN0cmluZyB7XG4gICAgaWYgKCFhY2MpIHtcbiAgICAgIGlmICh2YWwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgdGV4dCA9IHRoaXMucmVhZFJlY29yZFZhbHVlKHZhbCwgJ3RleHQnKTtcbiAgICAgICAgaWYgKHR5cGVvZiB0ZXh0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHJldHVybiBTdHJpbmcodGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMucmVhZFJlY29yZFZhbHVlKHZhbCwgJ2xhYmVsJyk7XG4gICAgICAgIGlmICh0eXBlb2YgbGFiZWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgcmV0dXJuIFN0cmluZyhsYWJlbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBTdHJpbmcodmFsKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvbHZlZCA9IHR5cGVvZiBhY2MgPT09ICdmdW5jdGlvbicgPyBhY2ModmFsKSA6IHRoaXMucmVhZFBhdGgodmFsLCBhY2MpO1xuICAgIHJldHVybiBTdHJpbmcocmVzb2x2ZWQgPz8gdmFsID8/ICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmFsdWUodmFsOiB1bmtub3duLCBhY2M/OiBWYWx1ZUFjY2Vzc29yKTogdW5rbm93biB7XG4gICAgaWYgKCFhY2MpIHtcbiAgICAgIGlmICh2YWwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uVmFsdWUgPSB0aGlzLnJlYWRSZWNvcmRWYWx1ZSh2YWwsICd2YWx1ZScpO1xuICAgICAgICBpZiAodHlwZW9mIG9wdGlvblZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHJldHVybiBvcHRpb25WYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wdGlvbklkID0gdGhpcy5yZWFkUmVjb3JkVmFsdWUodmFsLCAnaWQnKTtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25JZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uSWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVvZiBhY2MgPT09ICdmdW5jdGlvbicgPyBhY2ModmFsKSA6IHRoaXMucmVhZFBhdGgodmFsLCBhY2MpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b09wdGlvblZhbHVlKHZhbHVlOiB1bmtub3duKTogT3B0aW9uVmFsdWUge1xuICAgIHJldHVybiB2YWx1ZSA9PSBudWxsID8gbnVsbCA6IFN0cmluZyh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHRvT3B0aW9uSXRlbSh2YWx1ZTogdW5rbm93biwgbGFiZWxBY2M/OiBMYWJlbEFjY2Vzc29yLCB2YWx1ZUFjYz86IFZhbHVlQWNjZXNzb3IpOiBPcHRpb25JdGVtIHtcbiAgICBjb25zdCBpY29uID0gdGhpcy5yZWFkUmVjb3JkVmFsdWUodmFsdWUsICdpY29uJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogdGhpcy5nZXRMYWJlbCh2YWx1ZSwgbGFiZWxBY2MpLFxuICAgICAgdmFsdWU6IHRoaXMudG9PcHRpb25WYWx1ZSh0aGlzLmdldFZhbHVlKHZhbHVlLCB2YWx1ZUFjYykpLFxuICAgICAgaWNvbjogdHlwZW9mIGljb24gPT09ICdzdHJpbmcnID8gaWNvbiA6IHVuZGVmaW5lZFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkT3B0aW9uc01hcCgpOiB2b2lkIHtcbiAgICBjb25zdCBtYXA6IFJlY29yZDxzdHJpbmcsIE9wdGlvbkl0ZW1bXT4gPSB7fTtcbiAgICBjb25zdCByb3dzID0gdGhpcy5kYXRhID8/IFtdO1xuXG4gICAgZm9yIChjb25zdCBkZWYgb2YgdGhpcy5nZXRGaWx0ZXJzKCkpIHtcbiAgICAgIG1hcFtkZWYua2V5XSA9IHRoaXMuY29sbGVjdE9wdGlvbnNGb3JGaWx0ZXIoZGVmLCByb3dzKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbHRlck9wdGlvbnNNYXAgPSBtYXA7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZU1vZGVscygpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGRlZiBvZiB0aGlzLmdldEZpbHRlcnMoKSkge1xuICAgICAgY29uc3QgbXVsdGlwbGUgPSAoZGVmLnR5cGUgPz8gJ211bHRpc2VsZWN0JykgPT09ICdtdWx0aXNlbGVjdCc7XG5cbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWVzW2RlZi5rZXldID09IG51bGwpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc1tkZWYua2V5XSA9IG11bHRpcGxlID8gW10gOiBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNFbXB0eVNlbGVjdGlvbihzZWxlY3Rpb246IEZpbHRlclNlbGVjdGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdGlvbikpIHtcbiAgICAgIHJldHVybiBzZWxlY3Rpb24ubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIHJldHVybiBzZWxlY3Rpb24gPT0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgY2xvbmVTZWxlY3Rpb24oc2VsZWN0aW9uOiBGaWx0ZXJTZWxlY3Rpb24pOiBGaWx0ZXJTZWxlY3Rpb24ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHNlbGVjdGlvbikgPyBzZWxlY3Rpb24uc2xpY2UoKSA6IHNlbGVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlQcmVzZXRzRnJvbUNvbmZpZygpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGRlZiBvZiB0aGlzLmdldEZpbHRlcnMoKSkge1xuICAgICAgY29uc3QgcHJlc2V0ID0gZGVmLnByZXNldDtcblxuICAgICAgaWYgKHByZXNldCAhPSBudWxsICYmIHRoaXMuaXNFbXB0eVNlbGVjdGlvbih0aGlzLnNlbGVjdGVkVmFsdWVzW2RlZi5rZXldKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzW2RlZi5rZXldID0gdGhpcy5jbG9uZVNlbGVjdGlvbihwcmVzZXQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlJbml0aWFsU3RhdGVGcm9tQ29uZmlnKCk6IHZvaWQge1xuICAgIGNvbnN0IGluaXQgPSB0aGlzLmdldEluaXRpYWxTdGF0ZSgpO1xuXG4gICAgaWYgKCFpbml0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBpbml0LnNlYXJjaCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGVybS5zZXQoaW5pdC5zZWFyY2gudHJpbSgpKTtcbiAgICB9XG5cbiAgICBpZiAoaW5pdC5maWx0ZXJzKSB7XG4gICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhpbml0LmZpbHRlcnMpKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNba10gPSB0aGlzLmNsb25lU2VsZWN0aW9uKHYpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplVG9WYWx1ZXMoZGVmOiBGaWx0ZXJEZWYsIG1vZGVsOiBGaWx0ZXJTZWxlY3Rpb24pOiBPcHRpb25WYWx1ZVtdIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnRvU2VsZWN0aW9uQXJyYXkobW9kZWwpO1xuXG4gICAgcmV0dXJuIHZhbHVlc1xuICAgICAgLmZpbHRlcigodmFsdWUpOiB2YWx1ZSBpcyBGaWx0ZXJTZWxlY3Rpb25WYWx1ZSA9PiB2YWx1ZSAhPSBudWxsKVxuICAgICAgLm1hcCgodmFsdWUpID0+ICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gdGhpcy5nZXRWYWx1ZSh2YWx1ZSwgZGVmLm9wdGlvblZhbHVlKSA6IHZhbHVlKSlcbiAgICAgIC5tYXAoKHZhbHVlKSA9PiB0aGlzLnRvT3B0aW9uVmFsdWUodmFsdWUpKVxuICAgICAgLmZpbHRlcigodmFsdWUpOiB2YWx1ZSBpcyBzdHJpbmcgPT4gdmFsdWUgIT0gbnVsbCk7XG4gIH1cblxuICBwcml2YXRlIHJvd01hdGNoZXNGaWx0ZXJzKHJvdzogRmlsdGVyYWJsZVJlY29yZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldEZpbHRlcnMoKS5ldmVyeSgoZGVmKSA9PiB0aGlzLnJvd01hdGNoZXNGaWx0ZXIocm93LCBkZWYpKTtcbiAgfVxuXG4gIHByaXZhdGUgcm93TWF0Y2hlc1NlYXJjaChyb3c6IEZpbHRlcmFibGVSZWNvcmQsIHRlcm06IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGVybSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5nZXRTZWFyY2hDZmcoKS5maWVsZHM7XG5cbiAgICBpZiAoIWZpZWxkcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmaWVsZHMuc29tZSgoZmllbGQpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRGaWVsZFZhbHVlKHJvdywgZmllbGQpO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmpvaW4oJyAnKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlID8/ICcnKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAuaW5jbHVkZXModGVybSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbXB1dGVGaWx0ZXJlZCgpOiBGaWx0ZXJhYmxlUmVjb3JkW10ge1xuICAgIGNvbnN0IHRlcm0gPSB0aGlzLnNlYXJjaFRlcm0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiAodGhpcy5kYXRhID8/IFtdKS5maWx0ZXIoKHJvdykgPT4gdGhpcy5yb3dNYXRjaGVzU2VhcmNoKHJvdywgdGVybSkgJiYgdGhpcy5yb3dNYXRjaGVzRmlsdGVycyhyb3cpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlBbmRFbWl0QXN5bmMoKTogdm9pZCB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jb21wdXRlRmlsdGVyZWQoKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmRlc3Ryb3llZCkge1xuICAgICAgICB0aGlzLmZpbHRlcmVkLmVtaXQocmVzdWx0KTtcbiAgICAgIH1cbiAgICB9LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgY29sbGVjdE9wdGlvbnNGb3JGaWx0ZXIoZGVmOiBGaWx0ZXJEZWYsIHJvd3M6IEZpbHRlcmFibGVSZWNvcmRbXSk6IE9wdGlvbkl0ZW1bXSB7XG4gICAgY29uc3Qgc2VlbiA9IG5ldyBNYXA8T3B0aW9uVmFsdWUsIE9wdGlvbkl0ZW0+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XG4gICAgICB0aGlzLmFkZFJvd09wdGlvbnNUb01hcChzZWVuLCByb3csIGRlZik7XG4gICAgfVxuXG4gICAgcmV0dXJuIEFycmF5LmZyb20oc2Vlbi52YWx1ZXMoKSk7XG4gIH1cblxuICBwcml2YXRlIGFkZFJvd09wdGlvbnNUb01hcChzZWVuOiBNYXA8T3B0aW9uVmFsdWUsIE9wdGlvbkl0ZW0+LCByb3c6IEZpbHRlcmFibGVSZWNvcmQsIGRlZjogRmlsdGVyRGVmKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy50b0FycmF5VmFsdWUodGhpcy5nZXRGaWVsZFZhbHVlKHJvdywgZGVmLmZpZWxkKSk7XG5cbiAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy50b09wdGlvbkl0ZW0odmFsdWUsIGRlZi5vcHRpb25MYWJlbCwgZGVmLm9wdGlvblZhbHVlKTtcblxuICAgICAgICBpZiAoIXNlZW4uaGFzKG9wdGlvbi52YWx1ZSkpIHtcbiAgICAgICAgICBzZWVuLnNldChvcHRpb24udmFsdWUsIG9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJvd01hdGNoZXNGaWx0ZXIocm93OiBGaWx0ZXJhYmxlUmVjb3JkLCBkZWY6IEZpbHRlckRlZik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNlbGVjdGVkVmFsdWVzID0gdGhpcy5ub3JtYWxpemVUb1ZhbHVlcyhkZWYsIHRoaXMuc2VsZWN0ZWRWYWx1ZXNbZGVmLmtleV0pO1xuXG4gICAgaWYgKCFzZWxlY3RlZFZhbHVlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHJvd1ZhbHVlcyA9IHRoaXMudG9BcnJheVZhbHVlKHRoaXMuZ2V0RmllbGRWYWx1ZShyb3csIGRlZi5maWVsZCkpXG4gICAgICAubWFwKCh2YWx1ZSkgPT4gdGhpcy50b09wdGlvblZhbHVlKHRoaXMuZ2V0VmFsdWUodmFsdWUsIGRlZi5vcHRpb25WYWx1ZSkpKVxuICAgICAgLmZpbHRlcigodmFsdWUpOiB2YWx1ZSBpcyBzdHJpbmcgPT4gdmFsdWUgIT0gbnVsbCk7XG5cbiAgICByZXR1cm4gcm93VmFsdWVzLnNvbWUoKHJvd1ZhbHVlKSA9PiBzZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhyb3dWYWx1ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b0FycmF5VmFsdWUodmFsdWU6IHVua25vd24pOiB1bmtub3duW10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgfVxuXG4gIHByaXZhdGUgdG9TZWxlY3Rpb25BcnJheShtb2RlbDogRmlsdGVyU2VsZWN0aW9uKTogRmlsdGVyU2VsZWN0aW9uVmFsdWVbXSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkobW9kZWwpKSB7XG4gICAgICByZXR1cm4gbW9kZWw7XG4gICAgfVxuXG4gICAgaWYgKG1vZGVsID09IG51bGwpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gW21vZGVsXTtcbiAgfVxufVxuIiwiPHNlY3Rpb24gY2xhc3M9XCJncmlkIG1pbi1oLTEwcmVtXCIgcm9sZT1cInNlYXJjaFwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHkuZmlsdGVyc19zZWN0aW9uJyB8IHRyYW5zbGF0ZVwiPlxuICBAaWYgKGNvbmZpZyEuc2VhcmNoIS5zaG93ICE9PSBmYWxzZSkge1xuICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1kOmNvbC0xMiBsZzpjb2wtNiB4bDpjb2wtNFwiPlxuICAgIDxzZGMtc2VhcmNoYm94IFtkaXNhYmxlZF09XCJsb2FkaW5nXCIgW2xhYmVsXT1cImNvbmZpZyEuc2VhcmNoIS5sYWJlbCB8fCAnJ1wiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiY29uZmlnIS5zZWFyY2ghLnBsYWNlaG9sZGVyIHx8ICcnXCIgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICBbdHJpZ2dlck1vZGVdPVwiY29uZmlnIS5zZWFyY2ghLnRyaWdnZXJNb2RlIHx8ICdhdXRvJ1wiIChvblNlYXJjaCk9XCJvblNlYXJjaCgkZXZlbnQpXCIgKG9uQ2xlYXIpPVwib25DbGVhcigpXCI+XG4gICAgPC9zZGMtc2VhcmNoYm94PlxuICA8L2Rpdj5cbiAgfVxuICBAaWYgKGNvbmZpZyEuZmlsdGVycyEubGVuZ3RoKSB7XG4gIEBmb3IgKGRlZiBvZiBjb25maWcuZmlsdGVyczsgdHJhY2sgZGVmLmtleSkge1xuICA8ZGl2IGNsYXNzPVwic2RjLWZpbHRlcnNfX2ZpbHRlci1pdGVtXCIgW25nQ2xhc3NdPVwiZmlsdGVySXRlbUNvbHVtbkNsYXNzXCIgW2NsYXNzLm1iLTNdPVwiaXNNb2JpbGVcIj5cbiAgICA8c2RjLWNvbWJvYm94IHdpZHRoPVwiMTAwJVwiIFtsYWJlbF09XCJkZWYubGFiZWwgfHwgJydcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiIFtwbGFjZWhvbGRlcl09XCJkZWYucGxhY2Vob2xkZXIgfHwgJydcIlxuICAgICAgW211bHRpcGxlXT1cIihkZWYudHlwZSA/PyAnbXVsdGlzZWxlY3QnKSA9PT0gJ211bHRpc2VsZWN0J1wiIFtvcHRpb25zXT1cImZpbHRlck9wdGlvbnNNYXBbZGVmLmtleV1cIlxuICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFZhbHVlc1tkZWYua2V5XVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ29tYm9DaGFuZ2UoZGVmLmtleSwgJGV2ZW50KVwiXG4gICAgICBbaW5mb1Rvb2x0aXBdPVwiZGVmLmluZm9Ub29sdGlwIHx8ICcnXCJcbiAgICAgIFtpbmZvVG9vbHRpcEFsbG93SHRtbF09XCJkZWYuaW5mb1Rvb2x0aXBBbGxvd0h0bWwgPz8gZmFsc2VcIlxuICAgICAgW2luZm9Ub29sdGlwUG9zaXRpb25dPVwiZGVmLmluZm9Ub29sdGlwUG9zaXRpb24gPz8gJ3JpZ2h0J1wiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgZGVmLmxhYmVsIHx8IFxuICAgICAgICAgICAgZGVmLnBsYWNlaG9sZGVyIHx8IFxuICAgICAgICAgICAgKCdwbGF0Zm9ybS5kYXRhY29yZS5hY2Nlc3NpYmlsaXR5LmZpbHRlcl9maWVsZCcgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgXCI+XG4gICAgPC9zZGMtY29tYm9ib3g+XG4gIDwvZGl2PlxuICB9XG4gIH1cbjwvc2VjdGlvbj5cbiJdfQ==
|
|
274
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVycy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2ZpbHRlcnMvZmlsdGVycy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWIvc3JjL2ZlYXR1cmVzL2ZpbHRlcnMvZmlsdGVycy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFheEQsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFJWixNQUFNLEVBQ04sdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFFdkIsTUFBTSwyQkFBMkIsR0FBRyxtQ0FBbUMsQ0FBQztBQWlCeEUsTUFBTSxPQUFPLGdCQUFnQjtJQUNBLElBQUksR0FBdUIsRUFBRSxDQUFDO0lBQzlCLE1BQU0sQ0FBaUI7SUFDekMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixpQkFBaUIsR0FBRywyQkFBMkIsQ0FBQztJQUMvQyxRQUFRLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7SUFFbEQsUUFBUSxHQUFHLFFBQVEsRUFBRSxDQUFDO0lBQ3RCLGdCQUFnQixHQUFpQyxFQUFFLENBQUM7SUFDcEQsY0FBYyxHQUFvQyxFQUFFLENBQUM7SUFFOUMsVUFBVSxHQUFHLE1BQU0sQ0FB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O2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBDb21ib2JveENvbXBvbmVudCB9IGZyb20gJy4uL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hib3hDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2hib3gvc2VhcmNoYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBpc01vYmlsZSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMvbGF5b3V0LnV0aWwnO1xuaW1wb3J0IHsgdHlwZSBTZWFyY2hUcmlnZ2VyTW9kZSB9IGZyb20gJy4uLy4uL2NvcmUvdHlwZXMvc2VhcmNoYm94LnR5cGUnO1xuaW1wb3J0IHtcbiAgdHlwZSBGaWx0ZXJhYmxlUmVjb3JkLFxuICB0eXBlIEZpbHRlcnNDb25maWcsXG4gIHR5cGUgRmlsdGVyRGVmLFxuICB0eXBlIEZpbHRlclNlbGVjdGlvbixcbiAgdHlwZSBGaWx0ZXJTZWxlY3Rpb25WYWx1ZSxcbiAgdHlwZSBGaWVsZEFjY2Vzc29yLFxuICB0eXBlIExhYmVsQWNjZXNzb3IsXG4gIHR5cGUgVmFsdWVBY2Nlc3NvclxufSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL2ZpbHRlcnMudHlwZSc7XG5pbXBvcnQgeyB0eXBlIE9wdGlvbkl0ZW0sIHR5cGUgT3B0aW9uVmFsdWUgfSBmcm9tICcuLi8uLi9jb3JlL3R5cGVzL3NlbWFudGljcy50eXBlJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgc2lnbmFsLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmNvbnN0IERFRkFVTFRfRklMVEVSX0NPTFVNTl9DTEFTUyA9ICdjb2wtMTIgbWQ6Y29sLTYgbGc6Y29sLTMgeGw6Y29sLTInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzZGMtZmlsdGVycycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIFNlYXJjaGJveENvbXBvbmVudCxcbiAgICBDb21ib2JveENvbXBvbmVudFxuICBdLFxuICB0ZW1wbGF0ZVVybDogJy4vZmlsdGVycy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9maWx0ZXJzLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLkVtdWxhdGVkXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlcnNDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pIGRhdGE6IEZpbHRlcmFibGVSZWNvcmRbXSA9IFtdO1xuICBASW5wdXQoeyByZXF1aXJlZDogdHJ1ZSB9KSBjb25maWchOiBGaWx0ZXJzQ29uZmlnO1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZpbHRlckNvbHVtbkNsYXNzID0gREVGQVVMVF9GSUxURVJfQ09MVU1OX0NMQVNTO1xuICBAT3V0cHV0KCkgZmlsdGVyZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbHRlcmFibGVSZWNvcmRbXT4oKTtcblxuICBwcm90ZWN0ZWQgaXNNb2JpbGUgPSBpc01vYmlsZSgpO1xuICBwcm90ZWN0ZWQgZmlsdGVyT3B0aW9uc01hcDogUmVjb3JkPHN0cmluZywgT3B0aW9uSXRlbVtdPiA9IHt9O1xuICBwcm90ZWN0ZWQgc2VsZWN0ZWRWYWx1ZXM6IFJlY29yZDxzdHJpbmcsIEZpbHRlclNlbGVjdGlvbj4gPSB7fTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHNlYXJjaFRlcm0gPSBzaWduYWw8c3RyaW5nPignJyk7XG4gIHByaXZhdGUgZGVzdHJveWVkID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGdldCBmaWx0ZXJJdGVtQ29sdW1uQ2xhc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJDb2x1bW5DbGFzcz8udHJpbSgpIHx8IERFRkFVTFRfRklMVEVSX0NPTFVNTl9DTEFTUztcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKF9jaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy5idWlsZE9wdGlvbnNNYXAoKTtcbiAgICB0aGlzLmVuc3VyZU1vZGVscygpO1xuICAgIHRoaXMuYXBwbHlQcmVzZXRzRnJvbUNvbmZpZygpO1xuICAgIHRoaXMuYXBwbHlJbml0aWFsU3RhdGVGcm9tQ29uZmlnKCk7XG4gICAgdGhpcy5hcHBseUFuZEVtaXRBc3luYygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95ZWQgPSB0cnVlO1xuICB9XG5cbiAgb25TZWFyY2godGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXJtLnNldCgodGVybSA/PyAnJykudHJpbSgpKTtcbiAgICB0aGlzLmFwcGx5QW5kRW1pdEFzeW5jKCk7XG4gIH1cblxuICBvbkNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMuc2VhcmNoVGVybS5zZXQoJycpO1xuICAgIHRoaXMuYXBwbHlBbmRFbWl0QXN5bmMoKTtcbiAgfVxuXG4gIG9uQ29tYm9DaGFuZ2Uoa2V5OiBzdHJpbmcsIG1vZGVsOiBGaWx0ZXJTZWxlY3Rpb24pOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkVmFsdWVzW2tleV0gPSBtb2RlbDtcbiAgICB0aGlzLmFwcGx5QW5kRW1pdEFzeW5jKCk7XG4gIH1cblxuICBwcml2YXRlIGdldEZpbHRlcnMoKTogRmlsdGVyRGVmW10ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZz8uZmlsdGVycyA/PyBbXTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2VhcmNoQ2ZnKCk6IHtcbiAgICBmaWVsZHM6IEZpZWxkQWNjZXNzb3JbXTtcbiAgICBwbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICB0cmlnZ2VyTW9kZT86IFNlYXJjaFRyaWdnZXJNb2RlIHwgJ2F1dG8nO1xuICAgIHNob3c/OiBib29sZWFuO1xuICAgIGxhYmVsPzogc3RyaW5nO1xuICB9IHtcbiAgICBjb25zdCBzID0gdGhpcy5jb25maWc/LnNlYXJjaDtcbiAgICByZXR1cm4ge1xuICAgICAgZmllbGRzOiBzPy5maWVsZHMgPz8gW10sXG4gICAgICBwbGFjZWhvbGRlcjogcz8ucGxhY2Vob2xkZXIsXG4gICAgICB0cmlnZ2VyTW9kZTogcz8udHJpZ2dlck1vZGUgPz8gJ2F1dG8nLFxuICAgICAgc2hvdzogcz8uc2hvdyA/PyB0cnVlLFxuICAgICAgbGFiZWw6IHM/LmxhYmVsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SW5pdGlhbFN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZz8uaW5pdGlhbFN0YXRlO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkUGF0aChvYmo6IHVua25vd24sIHBhdGg6IHN0cmluZyk6IHVua25vd24ge1xuICAgIHJldHVybiBwYXRoLnNwbGl0KCcuJykucmVkdWNlPHVua25vd24+KChhY2MsIHBhcnQpID0+IHRoaXMucmVhZFJlY29yZFZhbHVlKGFjYywgcGFydCksIG9iaik7XG4gIH1cblxuICBwcml2YXRlIHJlYWRSZWNvcmRWYWx1ZShzb3VyY2U6IHVua25vd24sIGtleTogc3RyaW5nKTogdW5rbm93biB7XG4gICAgaWYgKCFzb3VyY2UgfHwgdHlwZW9mIHNvdXJjZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIChzb3VyY2UgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW2tleV07XG4gIH1cblxuICBwcml2YXRlIGdldEZpZWxkVmFsdWUocm93OiBGaWx0ZXJhYmxlUmVjb3JkLCBhY2M6IEZpZWxkQWNjZXNzb3IpOiB1bmtub3duIHtcbiAgICByZXR1cm4gdHlwZW9mIGFjYyA9PT0gJ2Z1bmN0aW9uJyA/IGFjYyhyb3cpIDogdGhpcy5yZWFkUGF0aChyb3csIGFjYyk7XG4gIH1cblxuICBwcml2YXRlIGdldExhYmVsKHZhbDogdW5rbm93biwgYWNjPzogTGFiZWxBY2Nlc3Nvcik6IHN0cmluZyB7XG4gICAgaWYgKCFhY2MpIHtcbiAgICAgIGlmICh2YWwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgdGV4dCA9IHRoaXMucmVhZFJlY29yZFZhbHVlKHZhbCwgJ3RleHQnKTtcbiAgICAgICAgaWYgKHR5cGVvZiB0ZXh0ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHJldHVybiBTdHJpbmcodGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMucmVhZFJlY29yZFZhbHVlKHZhbCwgJ2xhYmVsJyk7XG4gICAgICAgIGlmICh0eXBlb2YgbGFiZWwgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgcmV0dXJuIFN0cmluZyhsYWJlbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBTdHJpbmcodmFsKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvbHZlZCA9IHR5cGVvZiBhY2MgPT09ICdmdW5jdGlvbicgPyBhY2ModmFsKSA6IHRoaXMucmVhZFBhdGgodmFsLCBhY2MpO1xuICAgIHJldHVybiBTdHJpbmcocmVzb2x2ZWQgPz8gdmFsID8/ICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0VmFsdWUodmFsOiB1bmtub3duLCBhY2M/OiBWYWx1ZUFjY2Vzc29yKTogdW5rbm93biB7XG4gICAgaWYgKCFhY2MpIHtcbiAgICAgIGlmICh2YWwgJiYgdHlwZW9mIHZhbCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uVmFsdWUgPSB0aGlzLnJlYWRSZWNvcmRWYWx1ZSh2YWwsICd2YWx1ZScpO1xuICAgICAgICBpZiAodHlwZW9mIG9wdGlvblZhbHVlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHJldHVybiBvcHRpb25WYWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wdGlvbklkID0gdGhpcy5yZWFkUmVjb3JkVmFsdWUodmFsLCAnaWQnKTtcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25JZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uSWQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHR5cGVvZiBhY2MgPT09ICdmdW5jdGlvbicgPyBhY2ModmFsKSA6IHRoaXMucmVhZFBhdGgodmFsLCBhY2MpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b09wdGlvblZhbHVlKHZhbHVlOiB1bmtub3duKTogT3B0aW9uVmFsdWUge1xuICAgIHJldHVybiB2YWx1ZSA9PSBudWxsID8gbnVsbCA6IFN0cmluZyh2YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIHRvT3B0aW9uSXRlbSh2YWx1ZTogdW5rbm93biwgbGFiZWxBY2M/OiBMYWJlbEFjY2Vzc29yLCB2YWx1ZUFjYz86IFZhbHVlQWNjZXNzb3IpOiBPcHRpb25JdGVtIHtcbiAgICBjb25zdCBpY29uID0gdGhpcy5yZWFkUmVjb3JkVmFsdWUodmFsdWUsICdpY29uJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogdGhpcy5nZXRMYWJlbCh2YWx1ZSwgbGFiZWxBY2MpLFxuICAgICAgdmFsdWU6IHRoaXMudG9PcHRpb25WYWx1ZSh0aGlzLmdldFZhbHVlKHZhbHVlLCB2YWx1ZUFjYykpLFxuICAgICAgaWNvbjogdHlwZW9mIGljb24gPT09ICdzdHJpbmcnID8gaWNvbiA6IHVuZGVmaW5lZFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkT3B0aW9uc01hcCgpOiB2b2lkIHtcbiAgICBjb25zdCBtYXA6IFJlY29yZDxzdHJpbmcsIE9wdGlvbkl0ZW1bXT4gPSB7fTtcbiAgICBjb25zdCByb3dzID0gdGhpcy5kYXRhID8/IFtdO1xuXG4gICAgZm9yIChjb25zdCBkZWYgb2YgdGhpcy5nZXRGaWx0ZXJzKCkpIHtcbiAgICAgIG1hcFtkZWYua2V5XSA9IHRoaXMuY29sbGVjdE9wdGlvbnNGb3JGaWx0ZXIoZGVmLCByb3dzKTtcbiAgICB9XG5cbiAgICB0aGlzLmZpbHRlck9wdGlvbnNNYXAgPSBtYXA7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZU1vZGVscygpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGRlZiBvZiB0aGlzLmdldEZpbHRlcnMoKSkge1xuICAgICAgY29uc3QgbXVsdGlwbGUgPSAoZGVmLnR5cGUgPz8gJ211bHRpc2VsZWN0JykgPT09ICdtdWx0aXNlbGVjdCc7XG5cbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkVmFsdWVzW2RlZi5rZXldID09IG51bGwpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFZhbHVlc1tkZWYua2V5XSA9IG11bHRpcGxlID8gW10gOiBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNFbXB0eVNlbGVjdGlvbihzZWxlY3Rpb246IEZpbHRlclNlbGVjdGlvbik6IGJvb2xlYW4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdGlvbikpIHtcbiAgICAgIHJldHVybiBzZWxlY3Rpb24ubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIHJldHVybiBzZWxlY3Rpb24gPT0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgY2xvbmVTZWxlY3Rpb24oc2VsZWN0aW9uOiBGaWx0ZXJTZWxlY3Rpb24pOiBGaWx0ZXJTZWxlY3Rpb24ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHNlbGVjdGlvbikgPyBzZWxlY3Rpb24uc2xpY2UoKSA6IHNlbGVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlQcmVzZXRzRnJvbUNvbmZpZygpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGRlZiBvZiB0aGlzLmdldEZpbHRlcnMoKSkge1xuICAgICAgY29uc3QgcHJlc2V0ID0gZGVmLnByZXNldDtcblxuICAgICAgaWYgKHByZXNldCAhPSBudWxsICYmIHRoaXMuaXNFbXB0eVNlbGVjdGlvbih0aGlzLnNlbGVjdGVkVmFsdWVzW2RlZi5rZXldKSkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkVmFsdWVzW2RlZi5rZXldID0gdGhpcy5jbG9uZVNlbGVjdGlvbihwcmVzZXQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlJbml0aWFsU3RhdGVGcm9tQ29uZmlnKCk6IHZvaWQge1xuICAgIGNvbnN0IGluaXQgPSB0aGlzLmdldEluaXRpYWxTdGF0ZSgpO1xuXG4gICAgaWYgKCFpbml0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBpbml0LnNlYXJjaCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGVybS5zZXQoaW5pdC5zZWFyY2gudHJpbSgpKTtcbiAgICB9XG5cbiAgICBpZiAoaW5pdC5maWx0ZXJzKSB7XG4gICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhpbml0LmZpbHRlcnMpKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRWYWx1ZXNba10gPSB0aGlzLmNsb25lU2VsZWN0aW9uKHYpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbm9ybWFsaXplVG9WYWx1ZXMoZGVmOiBGaWx0ZXJEZWYsIG1vZGVsOiBGaWx0ZXJTZWxlY3Rpb24pOiBPcHRpb25WYWx1ZVtdIHtcbiAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLnRvU2VsZWN0aW9uQXJyYXkobW9kZWwpO1xuXG4gICAgcmV0dXJuIHZhbHVlc1xuICAgICAgLmZpbHRlcigodmFsdWUpOiB2YWx1ZSBpcyBGaWx0ZXJTZWxlY3Rpb25WYWx1ZSA9PiB2YWx1ZSAhPSBudWxsKVxuICAgICAgLm1hcCgodmFsdWUpID0+ICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnID8gdGhpcy5nZXRWYWx1ZSh2YWx1ZSwgZGVmLm9wdGlvblZhbHVlKSA6IHZhbHVlKSlcbiAgICAgIC5tYXAoKHZhbHVlKSA9PiB0aGlzLnRvT3B0aW9uVmFsdWUodmFsdWUpKVxuICAgICAgLmZpbHRlcigodmFsdWUpOiB2YWx1ZSBpcyBzdHJpbmcgPT4gdmFsdWUgIT0gbnVsbCk7XG4gIH1cblxuICBwcml2YXRlIHJvd01hdGNoZXNGaWx0ZXJzKHJvdzogRmlsdGVyYWJsZVJlY29yZCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmdldEZpbHRlcnMoKS5ldmVyeSgoZGVmKSA9PiB0aGlzLnJvd01hdGNoZXNGaWx0ZXIocm93LCBkZWYpKTtcbiAgfVxuXG4gIHByaXZhdGUgcm93TWF0Y2hlc1NlYXJjaChyb3c6IEZpbHRlcmFibGVSZWNvcmQsIHRlcm06IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghdGVybSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZmllbGRzID0gdGhpcy5nZXRTZWFyY2hDZmcoKS5maWVsZHM7XG5cbiAgICBpZiAoIWZpZWxkcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmaWVsZHMuc29tZSgoZmllbGQpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRGaWVsZFZhbHVlKHJvdywgZmllbGQpO1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLmpvaW4oJyAnKS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRlcm0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gU3RyaW5nKHZhbHVlID8/ICcnKVxuICAgICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgICAuaW5jbHVkZXModGVybSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbXB1dGVGaWx0ZXJlZCgpOiBGaWx0ZXJhYmxlUmVjb3JkW10ge1xuICAgIGNvbnN0IHRlcm0gPSB0aGlzLnNlYXJjaFRlcm0oKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiAodGhpcy5kYXRhID8/IFtdKS5maWx0ZXIoKHJvdykgPT4gdGhpcy5yb3dNYXRjaGVzU2VhcmNoKHJvdywgdGVybSkgJiYgdGhpcy5yb3dNYXRjaGVzRmlsdGVycyhyb3cpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXBwbHlBbmRFbWl0QXN5bmMoKTogdm9pZCB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jb21wdXRlRmlsdGVyZWQoKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLmRlc3Ryb3llZCkge1xuICAgICAgICB0aGlzLmZpbHRlcmVkLmVtaXQocmVzdWx0KTtcbiAgICAgIH1cbiAgICB9LCAwKTtcbiAgfVxuXG4gIHByaXZhdGUgY29sbGVjdE9wdGlvbnNGb3JGaWx0ZXIoZGVmOiBGaWx0ZXJEZWYsIHJvd3M6IEZpbHRlcmFibGVSZWNvcmRbXSk6IE9wdGlvbkl0ZW1bXSB7XG4gICAgY29uc3Qgc2VlbiA9IG5ldyBNYXA8T3B0aW9uVmFsdWUsIE9wdGlvbkl0ZW0+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHJvdyBvZiByb3dzKSB7XG4gICAgICB0aGlzLmFkZFJvd09wdGlvbnNUb01hcChzZWVuLCByb3csIGRlZik7XG4gICAgfVxuXG4gICAgcmV0dXJuIEFycmF5LmZyb20oc2Vlbi52YWx1ZXMoKSk7XG4gIH1cblxuICBwcml2YXRlIGFkZFJvd09wdGlvbnNUb01hcChzZWVuOiBNYXA8T3B0aW9uVmFsdWUsIE9wdGlvbkl0ZW0+LCByb3c6IEZpbHRlcmFibGVSZWNvcmQsIGRlZjogRmlsdGVyRGVmKTogdm9pZCB7XG4gICAgY29uc3QgdmFsdWVzID0gdGhpcy50b0FycmF5VmFsdWUodGhpcy5nZXRGaWVsZFZhbHVlKHJvdywgZGVmLmZpZWxkKSk7XG5cbiAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy50b09wdGlvbkl0ZW0odmFsdWUsIGRlZi5vcHRpb25MYWJlbCwgZGVmLm9wdGlvblZhbHVlKTtcblxuICAgICAgICBpZiAoIXNlZW4uaGFzKG9wdGlvbi52YWx1ZSkpIHtcbiAgICAgICAgICBzZWVuLnNldChvcHRpb24udmFsdWUsIG9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJvd01hdGNoZXNGaWx0ZXIocm93OiBGaWx0ZXJhYmxlUmVjb3JkLCBkZWY6IEZpbHRlckRlZik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHNlbGVjdGVkVmFsdWVzID0gdGhpcy5ub3JtYWxpemVUb1ZhbHVlcyhkZWYsIHRoaXMuc2VsZWN0ZWRWYWx1ZXNbZGVmLmtleV0pO1xuXG4gICAgaWYgKCFzZWxlY3RlZFZhbHVlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHJvd1ZhbHVlcyA9IHRoaXMudG9BcnJheVZhbHVlKHRoaXMuZ2V0RmllbGRWYWx1ZShyb3csIGRlZi5maWVsZCkpXG4gICAgICAubWFwKCh2YWx1ZSkgPT4gdGhpcy50b09wdGlvblZhbHVlKHRoaXMuZ2V0VmFsdWUodmFsdWUsIGRlZi5vcHRpb25WYWx1ZSkpKVxuICAgICAgLmZpbHRlcigodmFsdWUpOiB2YWx1ZSBpcyBzdHJpbmcgPT4gdmFsdWUgIT0gbnVsbCk7XG5cbiAgICByZXR1cm4gcm93VmFsdWVzLnNvbWUoKHJvd1ZhbHVlKSA9PiBzZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhyb3dWYWx1ZSkpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b0FycmF5VmFsdWUodmFsdWU6IHVua25vd24pOiB1bmtub3duW10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgfVxuXG4gIHByaXZhdGUgdG9TZWxlY3Rpb25BcnJheShtb2RlbDogRmlsdGVyU2VsZWN0aW9uKTogRmlsdGVyU2VsZWN0aW9uVmFsdWVbXSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkobW9kZWwpKSB7XG4gICAgICByZXR1cm4gbW9kZWw7XG4gICAgfVxuXG4gICAgaWYgKG1vZGVsID09IG51bGwpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gW21vZGVsXTtcbiAgfVxufVxuIiwiPHNlY3Rpb24gY2xhc3M9XCJncmlkIG1pbi1oLTEwcmVtXCIgcm9sZT1cInNlYXJjaFwiXG4gIFthdHRyLmFyaWEtbGFiZWxdPVwiJ3BsYXRmb3JtLmRhdGFjb3JlLmFjY2Vzc2liaWxpdHlfZmlsdGVyc19zZWN0aW9uJyB8IHRyYW5zbGF0ZVwiPlxuICBAaWYgKGNvbmZpZyEuc2VhcmNoIS5zaG93ICE9PSBmYWxzZSkge1xuICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1kOmNvbC0xMiBsZzpjb2wtNiB4bDpjb2wtNFwiPlxuICAgIDxzZGMtc2VhcmNoYm94IFtkaXNhYmxlZF09XCJsb2FkaW5nXCIgW2xhYmVsXT1cImNvbmZpZyEuc2VhcmNoIS5sYWJlbCB8fCAnJ1wiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiY29uZmlnIS5zZWFyY2ghLnBsYWNlaG9sZGVyIHx8ICcnXCIgW3NpemVdPVwiJ3NtYWxsJ1wiXG4gICAgICBbdHJpZ2dlck1vZGVdPVwiY29uZmlnIS5zZWFyY2ghLnRyaWdnZXJNb2RlIHx8ICdhdXRvJ1wiIChvblNlYXJjaCk9XCJvblNlYXJjaCgkZXZlbnQpXCIgKG9uQ2xlYXIpPVwib25DbGVhcigpXCI+XG4gICAgPC9zZGMtc2VhcmNoYm94PlxuICA8L2Rpdj5cbiAgfVxuICBAaWYgKGNvbmZpZyEuZmlsdGVycyEubGVuZ3RoKSB7XG4gIEBmb3IgKGRlZiBvZiBjb25maWcuZmlsdGVyczsgdHJhY2sgZGVmLmtleSkge1xuICA8ZGl2IGNsYXNzPVwic2RjLWZpbHRlcnNfX2ZpbHRlci1pdGVtXCIgW25nQ2xhc3NdPVwiZmlsdGVySXRlbUNvbHVtbkNsYXNzXCIgW2NsYXNzLm1iLTNdPVwiaXNNb2JpbGVcIj5cbiAgICA8c2RjLWNvbWJvYm94IHdpZHRoPVwiMTAwJVwiIFtsYWJlbF09XCJkZWYubGFiZWwgfHwgJydcIiBbZGlzYWJsZWRdPVwibG9hZGluZ1wiIFtwbGFjZWhvbGRlcl09XCJkZWYucGxhY2Vob2xkZXIgfHwgJydcIlxuICAgICAgW211bHRpcGxlXT1cIihkZWYudHlwZSA/PyAnbXVsdGlzZWxlY3QnKSA9PT0gJ211bHRpc2VsZWN0J1wiIFtvcHRpb25zXT1cImZpbHRlck9wdGlvbnNNYXBbZGVmLmtleV1cIlxuICAgICAgWyhuZ01vZGVsKV09XCJzZWxlY3RlZFZhbHVlc1tkZWYua2V5XVwiIChuZ01vZGVsQ2hhbmdlKT1cIm9uQ29tYm9DaGFuZ2UoZGVmLmtleSwgJGV2ZW50KVwiXG4gICAgICBbaW5mb1Rvb2x0aXBdPVwiZGVmLmluZm9Ub29sdGlwIHx8ICcnXCJcbiAgICAgIFtpbmZvVG9vbHRpcEFsbG93SHRtbF09XCJkZWYuaW5mb1Rvb2x0aXBBbGxvd0h0bWwgPz8gZmFsc2VcIlxuICAgICAgW2luZm9Ub29sdGlwUG9zaXRpb25dPVwiZGVmLmluZm9Ub29sdGlwUG9zaXRpb24gPz8gJ3JpZ2h0J1wiXG4gICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIlxuICAgICAgICAgICAgZGVmLmxhYmVsIHx8IFxuICAgICAgICAgICAgZGVmLnBsYWNlaG9sZGVyIHx8IFxuICAgICAgICAgICAgKCdwbGF0Zm9ybS5kYXRhY29yZS5hY2Nlc3NpYmlsaXR5X2ZpbHRlcl9maWVsZCcgfCB0cmFuc2xhdGUpXG4gICAgICAgICAgXCI+XG4gICAgPC9zZGMtY29tYm9ib3g+XG4gIDwvZGl2PlxuICB9XG4gIH1cbjwvc2VjdGlvbj5cbiJdfQ==
|