@dignite-ng/expand.cms 2.0.0-rc.12 → 2.0.0-rc.13
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/esm2022/lib/components/admin/entries/entries.component.mjs +1 -1
- package/esm2022/lib/components/dynamic-form/table/table-config.component.mjs +5 -5
- package/esm2022/lib/components/dynamic-form/table/table-config.mjs +2 -9
- package/fesm2022/dignite-ng-expand.cms.mjs +14 -21
- package/fesm2022/dignite-ng-expand.cms.mjs.map +1 -1
- package/lib/components/dynamic-form/table/table-config.d.ts +1 -1
- package/package.json +3 -3
|
@@ -349,7 +349,7 @@ export class EntriesComponent {
|
|
|
349
349
|
provide: EXTENSIONS_IDENTIFIER,
|
|
350
350
|
useValue: ECmsComponent.Entries,
|
|
351
351
|
},
|
|
352
|
-
], ngImport: i0, template: "<abp-page [title]=\"'Cms::Entries' | abpLocalization\" [toolbar]=\"true\">\r\n <abp-page-toolbar-container *ngIf=\"entryTypeList.length < 1\" class=\"col \"></abp-page-toolbar-container>\r\n <abp-page-toolbar-container *ngIf=\"entryTypeList.length > 1\" class=\"col \">\r\n <div class=\"row justify-content-end mx-0 gap-2\" *abpPermission=\"'CmsAdmin.Entry.Create'\">\r\n <div class=\"col-auto px-0 pt-0\">\r\n <div ngbDropdown class=\"d-inline-block\">\r\n <button type=\"button\" class=\"btn btn-primary btn-sm ms-2\" id=\"dropdownBasic1\" ngbDropdownToggle>\r\n <i class=\"fa fa-plus pe-1\" aria-hidden=\"true\"></i>{{'Cms::New' | abpLocalization}}\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\r\n <ng-container *ngFor=\"let item of entryTypeList\">\r\n <button ngbDropdownItem [routerLink]=\"['/cms/admin/entries/create']\"\r\n [queryParams]=\"{cultureName: filters.culture,sectionId:filters.sectionId,entryTypeId:item.id}\">{{item.displayName}}</button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n <div id=\"sites-page\" class=\"sites-page\">\r\n <div class=\"card\">\r\n <div class=\"card-body \">\r\n <div class=\"row align-items-end\">\r\n <div class=\"mb-3 col-3\">\r\n <label class=\"form-label\">{{'Cms::Sections' | abpLocalization}}\uFF1A</label>\r\n <select class=\"form-select col-auto\" [(ngModel)]=\"filters.sectionId\"\r\n (change)=\"sectionIdChange()\">\r\n <ng-container *ngFor=\"let item of SiteOfSectionList\">\r\n <option [value]=\"item.id\">{{item.displayName}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"mb-3 col-3\">\r\n <label class=\"form-label\">{{'AbpUi::Languages' | abpLocalization}}\uFF1A</label>\r\n <select class=\"form-select col-auto\" [(ngModel)]=\"filters.culture\" (change)=\"cultureChange()\">\r\n <ng-container *ngFor=\"let item of sectionLanguagesList\">\r\n <option [value]=\"item.cultureName\">{{item.displayName}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"mb-3 col-6\">\r\n <div class=\"input-group\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"filters.filter\"\r\n [placeholder]=\"'Cms::PagerSearch'|abpLocalization\" />\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"listget()\">\r\n <i class=\"bi bi-search\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n @if(filters.culture&&enablegearchFormEntity&&enableSearchFieldList.length>0){\r\n \r\n\r\n <div id=\"entries-advanced-form\" class=\"entries-advanced-form \" [hidden]=\"isexpanded\"\r\n (abpInit)=\"abpInitss()\">\r\n <form [formGroup]=\"enablegearchFormEntity\">\r\n <div class=\"row align-items-end\">\r\n <ng-container *ngFor=\"let el of enableSearchFieldList\">\r\n <ng-container *ngIf=\"el.field&&enablegearchFormEntity&&el.enableSearch\">\r\n <div class=\"col-3\">\r\n <df-dynamic [fields]=\"el\" [parentFiledName]=\"'extraProperties'\"\r\n [culture]=\"filters.culture\" [entity]=\"enablegearchFormEntity\"></df-dynamic>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"col-6 mb-3 \">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"listget()\">\r\n <span>{{ 'AbpUi::Refresh' | abpLocalization }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"card mb-0\">\r\n <div class=\"card-body p-0\">\r\n @if(SiteOfSectionType!==SectionType.Structure){\r\n <div class=\"table-responsive table-fixed-header\">\r\n <ngx-datatable class=\"material \" [rows]=\"data.items\" [list]=\"list\" [columnMode]=\"ColumnMode.force\"\r\n [headerHeight]=\"50\" [footerHeight]=\"50\" rowHeight=\"auto\" [virtualization]=\"false\"\r\n [externalPaging]=\"true\" [count]=\"data.totalCount\" [scrollbarH]=\"true\">\r\n <ngx-datatable-column [name]=\"'Cms::Title' | abpLocalization\" prop=\"title\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n {{ value }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n <ngx-datatable-column [name]=\"'Cms::EntryType' | abpLocalization\" prop=\"entryTypeId\"\r\n [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <ng-container *ngFor=\"let item of entryTypeList\">\r\n <ng-container *ngIf=\"item.id === value\">{{item.displayName}}</ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n <ngx-datatable-column [name]=\"'Cms::Slug' | abpLocalization\" prop=\"slug\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n {{ value }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n <ngx-datatable-column [name]=\"'Cms::Status' | abpLocalization\" prop=\"status\" [width]=\"80\"\r\n [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <ng-container *ngFor=\"let item of _entryStatusOptions\">\r\n <ng-container *ngIf=\"item.value=== value\">{{ 'Cms::Enum:EntryStatus:'+item.key |\r\n abpLocalization }}</ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n @for (item of showinFieldList; track $index) {\r\n <ngx-datatable-column [name]=\"'Cms::'+item.displayName | abpLocalization\"\r\n [prop]=\"item?.field?.name\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <df-dynamic-view [type]=\"item.field.formControlName\" [showInList]=\"true\" [fields]=\"item\" [value]=\"row?.extraProperties[item.field.name]\"></df-dynamic-view>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n }\r\n <ngx-datatable-column [name]=\"'Cms::PublishTime' | abpLocalization\" prop=\"publishTime\"\r\n [width]=\"190\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n {{value | shortDateTime }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n <ngx-datatable-column [sortable]=\"false\" [name]=\"'AbpUi::Actions' | abpLocalization\"\r\n [frozenLeft]=\"true\" [width]=\"110\" [maxWidth]=\"110\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <div ngbDropdown container=\"body\">\r\n <button type=\"button\" class=\"btn btn-primary btn-sm\" ngbDropdownToggle>\r\n <i class=\"me-1 fa fa-cog\"></i> {{'AbpUi::Actions' | abpLocalization}}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <button ngbDropdownItem\r\n routerLink=\"/cms/admin/entries/{{row.id}}/edit\">{{'AbpUi::Edit' |\r\n abpLocalization}}</button>\r\n <button ngbDropdownItem (click)=\"deletefield(row)\">{{'AbpUi::Delete' |\r\n abpLocalization}}</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n </ngx-datatable>\r\n </div>\r\n }\r\n\r\n @if(SiteOfSectionType===SectionType.Structure){\r\n <div class=\"table-responsive table-fixed-header\">\r\n <table class=\"table overflow-nowrap mb-0\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <thead>\r\n <tr>\r\n <th class=\"sticky-left-card-bg\">{{'AbpUi::Actions' | abpLocalization}}</th>\r\n <th>{{'Cms::Title' | abpLocalization}}</th>\r\n <th>{{'Cms::EntryType' | abpLocalization}}</th>\r\n <th>{{'Cms::Slug' | abpLocalization}}</th>\r\n <th>{{'Cms::Status' | abpLocalization}}</th>\r\n\r\n @for (item of showinFieldList; track $index) {\r\n <th>{{'Cms::'+item.displayName | abpLocalization}}</th>\r\n }\r\n <th>{{'Cms::PublishTime' | abpLocalization}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of data.items\" cdkDrag>\r\n <td class=\"sticky-left-card-bg\">\r\n <div ngbDropdown container=\"body\">\r\n <button type=\"button\" class=\"btn btn-primary btn-sm\" ngbDropdownToggle>\r\n <i class=\"me-1 fa fa-cog\"></i> {{'AbpUi::Actions' | abpLocalization}}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <button ngbDropdownItem\r\n routerLink=\"/cms/admin/entries/{{item.id}}/edit\">{{'AbpUi::Edit' |\r\n abpLocalization}}</button>\r\n <button ngbDropdownItem (click)=\"deletefield(item)\">{{'AbpUi::Delete' |\r\n abpLocalization}}</button>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"white-space-normal\">{{item.title}}</td>\r\n <td>\r\n <ng-container *ngFor=\"let item1 of entryTypeList\">\r\n <ng-container\r\n *ngIf=\"item1.id === item.entryTypeId\">{{item1.displayName}}</ng-container>\r\n </ng-container>\r\n </td>\r\n <td>{{item.slug}}</td>\r\n <td>\r\n <ng-container *ngFor=\"let item2 of _entryStatusOptions\">\r\n <ng-container *ngIf=\"item.status=== item2.value\">{{\r\n 'Cms::Enum:EntryStatus:'+item2.key |\r\n abpLocalization }}</ng-container>\r\n </ng-container>\r\n </td>\r\n @for (item1 of showinFieldList; track $index) {\r\n <td>{{item?.extraProperties[item1?.field?.name]}}</td>\r\n }\r\n <td>{{item.publishTime | shortDateTime }}</td>\r\n </tr>\r\n </tbody>\r\n @if(data.items.length === 0){\r\n <div class=\"text-muted p-2\">\r\n {{ 'Cms::NoDataAvailableInDatatable' | abpLocalization}}\r\n </div>\r\n }\r\n </table>\r\n </div>\r\n <div class=\"card-footer py-2\">\r\n <small class=\"text-muted\"> {{data.totalCount}} {{ 'Cms::Total' | abpLocalization}}</small>\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n</abp-page>", styles: ["::ng-deep .sites-page .dignite_page{background:transparent}::ng-deep .sites-page .list-group-flush>.list-group-item:first-child{border-top-width:var(--bs-list-group-border-width)}::ng-deep .sites-page .card-header input{flex:2 1 auto}::ng-deep .sites-page .card-header .form-select{padding:.475rem 3.75rem .475rem 1.25rem}::ng-deep .sites-page .morentr{border:2px solid transparent}::ng-deep .sites-page .borderdrag{border:2px solid var(--ck-color-selector-column-resizer-hover)!important}::ng-deep .sites-page .borderdragtd{background-color:var(--ck-color-selector-column-resizer-hover)!important}::ng-deep .sites-page .testtr{border-color:transparent}::ng-deep .sites-page .testtr td{padding:2px}::ng-deep .sites-page .testtr:hover{background-color:transparent}.cdk-drag-preview{display:table;box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:0}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}::ng-deep .sites-modal-form .form-control{padding:.4rem 1.25rem}.white-space-normal{white-space:normal;min-width:150px}.overflow-nowrap{overflow:auto;white-space:nowrap}::ng-deep .sites-page .table th{padding-left:1rem!important;padding-right:1rem!important}::ng-deep .sites-page .table td{padding:.875rem 1rem!important}::ng-deep .sites-page .table .sticky-left-card-bg{position:sticky;left:0;background:var(--bs-card-bg)}::ng-deep .sites-page .entries-advanced-form{transition:all .3s linear}\n"], dependencies: [{ kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i10.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i10.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }, { kind: "directive", type: i4.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "component", type: i11.DatatableComponent, selector: "ngx-datatable", inputs: ["targetMarkerTemplate", "rows", "groupRowsBy", "groupedRows", "columns", "selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { kind: "directive", type: i11.DataTableColumnDirective, selector: "ngx-datatable-column", inputs: ["name", "prop", "frozenLeft", "frozenRight", "flexGrow", "resizeable", "comparator", "pipe", "sortable", "draggable", "canAutoResize", "minWidth", "width", "maxWidth", "checkboxable", "headerCheckboxable", "headerClass", "cellClass", "isTreeColumn", "treeLevelIndent", "summaryFunc", "summaryTemplate", "cellTemplate", "headerTemplate", "treeToggleTemplate"] }, { kind: "directive", type: i11.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { kind: "directive", type: i12.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i3.NgxDatatableListDirective, selector: "ngx-datatable[list]", inputs: ["list"], exportAs: ["ngxDatatableList"] }, { kind: "directive", type: i13.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i13.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i13.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i13.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "directive", type: i13.NgbDropdownButtonItem, selector: "button[ngbDropdownItem]" }, { kind: "component", type: i14.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i14.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "component", type: i15.DynamicComponent, selector: "df-dynamic", inputs: ["selected", "type", "culture", "parentFiledName", "fields", "entity"] }, { kind: "directive", type: i16.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i16.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "pipe", type: i4.LocalizationPipe, name: "abpLocalization" }, { kind: "pipe", type: i4.ShortDateTimePipe, name: "shortDateTime" }] }); }
|
|
352
|
+
], ngImport: i0, template: "<abp-page [title]=\"'Cms::Entries' | abpLocalization\" [toolbar]=\"true\">\r\n <abp-page-toolbar-container *ngIf=\"entryTypeList.length < 1\" class=\"col \"></abp-page-toolbar-container>\r\n <abp-page-toolbar-container *ngIf=\"entryTypeList.length > 1\" class=\"col \">\r\n <div class=\"row justify-content-end mx-0 gap-2\" *abpPermission=\"'CmsAdmin.Entry.Create'\">\r\n <div class=\"col-auto px-0 pt-0\">\r\n <div ngbDropdown class=\"d-inline-block\">\r\n <button type=\"button\" class=\"btn btn-primary btn-sm ms-2\" id=\"dropdownBasic1\" ngbDropdownToggle>\r\n <i class=\"fa fa-plus pe-1\" aria-hidden=\"true\"></i>{{'Cms::New' | abpLocalization}}\r\n </button>\r\n <div ngbDropdownMenu aria-labelledby=\"dropdownBasic1\">\r\n <ng-container *ngFor=\"let item of entryTypeList\">\r\n <button ngbDropdownItem [routerLink]=\"['/cms/admin/entries/create']\"\r\n [queryParams]=\"{cultureName: filters.culture,sectionId:filters.sectionId,entryTypeId:item.id}\">{{item.displayName}}</button>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n <div id=\"sites-page\" class=\"sites-page\">\r\n <div class=\"card\">\r\n <div class=\"card-body \">\r\n <div class=\"row align-items-end\">\r\n <div class=\"mb-3 col-3\">\r\n <label class=\"form-label\">{{'Cms::Sections' | abpLocalization}}\uFF1A</label>\r\n <select class=\"form-select col-auto\" [(ngModel)]=\"filters.sectionId\"\r\n (change)=\"sectionIdChange()\">\r\n <ng-container *ngFor=\"let item of SiteOfSectionList\">\r\n <option [value]=\"item.id\">{{item.displayName}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"mb-3 col-3\">\r\n <label class=\"form-label\">{{'AbpUi::Languages' | abpLocalization}}\uFF1A</label>\r\n <select class=\"form-select col-auto\" [(ngModel)]=\"filters.culture\" (change)=\"cultureChange()\">\r\n <ng-container *ngFor=\"let item of sectionLanguagesList\">\r\n <option [value]=\"item.cultureName\">{{item.displayName}}</option>\r\n </ng-container>\r\n </select>\r\n </div>\r\n <div class=\"mb-3 col-6\">\r\n <div class=\"input-group\">\r\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"filters.filter\"\r\n [placeholder]=\"'Cms::PagerSearch'|abpLocalization\" />\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"listget()\">\r\n <i class=\"bi bi-search\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n @if(filters.culture&&enablegearchFormEntity&&enableSearchFieldList.length>0){\r\n \r\n\r\n <div id=\"entries-advanced-form\" class=\"entries-advanced-form \" [hidden]=\"isexpanded\"\r\n (abpInit)=\"abpInitss()\">\r\n <form [formGroup]=\"enablegearchFormEntity\">\r\n <div class=\"row align-items-end\">\r\n <ng-container *ngFor=\"let el of enableSearchFieldList\">\r\n <ng-container *ngIf=\"el.field&&enablegearchFormEntity&&el.enableSearch\">\r\n <div class=\"col-3\">\r\n <df-dynamic [fields]=\"el\" [parentFiledName]=\"'extraProperties'\"\r\n [culture]=\"filters.culture\" [entity]=\"enablegearchFormEntity\"></df-dynamic>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <div class=\"col-6 mb-3 \">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"listget()\">\r\n <span>{{ 'AbpUi::Refresh' | abpLocalization }}</span>\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"card mb-0\">\r\n <div class=\"card-body p-0\">\r\n @if(SiteOfSectionType!==SectionType.Structure){\r\n <div class=\"table-responsive table-fixed-header\">\r\n <ngx-datatable class=\"material \" [rows]=\"data.items\" [list]=\"list\" [columnMode]=\"ColumnMode.force\"\r\n [headerHeight]=\"50\" [footerHeight]=\"50\" rowHeight=\"auto\" [virtualization]=\"false\"\r\n [externalPaging]=\"true\" [count]=\"data.totalCount\" [scrollbarH]=\"true\">\r\n <ngx-datatable-column [name]=\"'Cms::Title' | abpLocalization\" prop=\"title\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n {{ value }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n <ngx-datatable-column [name]=\"'Cms::EntryType' | abpLocalization\" prop=\"entryTypeId\"\r\n [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <ng-container *ngFor=\"let item of entryTypeList\">\r\n <ng-container *ngIf=\"item.id === value\">{{item.displayName}}</ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n <ngx-datatable-column [name]=\"'Cms::Slug' | abpLocalization\" prop=\"slug\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n {{ value }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n <ngx-datatable-column [name]=\"'Cms::Status' | abpLocalization\" prop=\"status\" [width]=\"80\"\r\n [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <ng-container *ngFor=\"let item of _entryStatusOptions\">\r\n <ng-container *ngIf=\"item.value=== value\">{{ 'Cms::Enum:EntryStatus:'+item.key |\r\n abpLocalization }}</ng-container>\r\n </ng-container>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n @for (item of showinFieldList; track $index) {\r\n <ngx-datatable-column [name]=\"'Cms::'+item.displayName | abpLocalization\"\r\n [prop]=\"item?.field?.name\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <df-dynamic-view [type]=\"item.field.formControlName\" [showInList]=\"true\" [fields]=\"item\" [value]=\"row?.extraProperties[item.field.name]\"></df-dynamic-view>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n }\r\n <ngx-datatable-column [name]=\"'Cms::PublishTime' | abpLocalization\" prop=\"publishTime\"\r\n [width]=\"190\" [sortable]=\"false\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n {{value | shortDateTime }}\r\n </ng-template>\r\n </ngx-datatable-column>\r\n <ngx-datatable-column [sortable]=\"false\" [name]=\"'AbpUi::Actions' | abpLocalization\"\r\n [frozenLeft]=\"true\" [width]=\"110\" [maxWidth]=\"110\">\r\n <ng-template let-row=\"row\" let-value=\"value\" ngx-datatable-cell-template>\r\n <div ngbDropdown container=\"body\">\r\n <button type=\"button\" class=\"btn btn-primary btn-sm\" ngbDropdownToggle>\r\n <i class=\"me-1 fa fa-cog\"></i> {{'AbpUi::Actions' | abpLocalization}}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <button ngbDropdownItem\r\n routerLink=\"/cms/admin/entries/{{row.id}}/edit\">{{'AbpUi::Edit' |\r\n abpLocalization}}</button>\r\n <button ngbDropdownItem (click)=\"deletefield(row)\">{{'AbpUi::Delete' |\r\n abpLocalization}}</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ngx-datatable-column>\r\n\r\n </ngx-datatable>\r\n </div>\r\n }\r\n\r\n @if(SiteOfSectionType===SectionType.Structure){\r\n <div class=\"table-responsive table-fixed-header\">\r\n <table class=\"table overflow-nowrap mb-0\" cdkDropList (cdkDropListDropped)=\"drop($event)\">\r\n <thead>\r\n <tr>\r\n <th class=\"sticky-left-card-bg\">{{'AbpUi::Actions' | abpLocalization}}</th>\r\n <th>{{'Cms::Title' | abpLocalization}}</th>\r\n <th>{{'Cms::EntryType' | abpLocalization}}</th>\r\n <th>{{'Cms::Slug' | abpLocalization}}</th>\r\n <th>{{'Cms::Status' | abpLocalization}}</th>\r\n\r\n @for (item of showinFieldList; track $index) {\r\n <th>{{'Cms::'+item.displayName | abpLocalization}}</th>\r\n }\r\n <th>{{'Cms::PublishTime' | abpLocalization}}</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let item of data.items\" cdkDrag>\r\n <td class=\"sticky-left-card-bg\">\r\n <div ngbDropdown container=\"body\">\r\n <button type=\"button\" class=\"btn btn-primary btn-sm\" ngbDropdownToggle>\r\n <i class=\"me-1 fa fa-cog\"></i> {{'AbpUi::Actions' | abpLocalization}}\r\n </button>\r\n <div ngbDropdownMenu>\r\n <button ngbDropdownItem\r\n routerLink=\"/cms/admin/entries/{{item.id}}/edit\">{{'AbpUi::Edit' |\r\n abpLocalization}}</button>\r\n <button ngbDropdownItem (click)=\"deletefield(item)\">{{'AbpUi::Delete' |\r\n abpLocalization}}</button>\r\n </div>\r\n </div>\r\n </td>\r\n <td class=\"white-space-normal\">{{item.title}}</td>\r\n <td>\r\n <ng-container *ngFor=\"let item1 of entryTypeList\">\r\n <ng-container\r\n *ngIf=\"item1.id === item.entryTypeId\">{{item1.displayName}}</ng-container>\r\n </ng-container>\r\n </td>\r\n <td>{{item.slug}}</td>\r\n <td>\r\n <ng-container *ngFor=\"let item2 of _entryStatusOptions\">\r\n <ng-container *ngIf=\"item.status=== item2.value\">{{\r\n 'Cms::Enum:EntryStatus:'+item2.key |\r\n abpLocalization }}</ng-container>\r\n </ng-container>\r\n </td>\r\n @for (item1 of showinFieldList; track $index) {\r\n <td>{{item?.extraProperties[item1?.field?.name]}}</td>\r\n }\r\n <td>{{item.publishTime | shortDateTime }}</td>\r\n </tr>\r\n </tbody>\r\n @if(data.items.length === 0){\r\n <div class=\"text-muted p-2\">\r\n {{ 'Cms::NoDataAvailableInDatatable' | abpLocalization}}\r\n </div>\r\n }\r\n </table>\r\n </div>\r\n <div class=\"card-footer py-2\">\r\n <small class=\"text-muted\"> {{data.totalCount}} {{ 'Cms::Total' | abpLocalization}}</small>\r\n </div>\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n\r\n\r\n </div>\r\n</abp-page>", styles: ["::ng-deep .sites-page .dignite_page{background:transparent}::ng-deep .sites-page .list-group-flush>.list-group-item:first-child{border-top-width:var(--bs-list-group-border-width)}::ng-deep .sites-page .card-header input{flex:2 1 auto}::ng-deep .sites-page .card-header .form-select{padding:.475rem 3.75rem .475rem 1.25rem}::ng-deep .sites-page .morentr{border:2px solid transparent}::ng-deep .sites-page .borderdrag{border:2px solid var(--ck-color-selector-column-resizer-hover)!important}::ng-deep .sites-page .borderdragtd{background-color:var(--ck-color-selector-column-resizer-hover)!important}::ng-deep .sites-page .testtr{border-color:transparent}::ng-deep .sites-page .testtr td{padding:2px}::ng-deep .sites-page .testtr:hover{background-color:transparent}.cdk-drag-preview{display:table;box-sizing:border-box;border-radius:4px;box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cdk-drag-placeholder{opacity:0}.cdk-drag-animating{transition:transform .25s cubic-bezier(0,0,.2,1)}.example-box:last-child{border:0}.example-list.cdk-drop-list-dragging .example-box:not(.cdk-drag-placeholder){transition:transform .25s cubic-bezier(0,0,.2,1)}::ng-deep .sites-modal-form .form-control{padding:.4rem 1.25rem}.white-space-normal{white-space:normal;min-width:150px}.overflow-nowrap{overflow:auto;white-space:nowrap}::ng-deep .sites-page .table th{padding-left:1rem!important;padding-right:1rem!important}::ng-deep .sites-page .table td{padding:.875rem 1rem!important}::ng-deep .sites-page .table .sticky-left-card-bg{position:sticky;left:0;background:var(--bs-card-bg)}::ng-deep .sites-page .entries-advanced-form{transition:all .3s linear}\n"], dependencies: [{ kind: "directive", type: i9.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i10.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i10.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i10.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i10.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i10.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i10.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i5.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i4.InitDirective, selector: "[abpInit]", outputs: ["abpInit"] }, { kind: "directive", type: i4.PermissionDirective, selector: "[abpPermission]", inputs: ["abpPermission", "abpPermissionRunChangeDetection"] }, { kind: "component", type: i11.DatatableComponent, selector: "ngx-datatable", inputs: ["targetMarkerTemplate", "rows", "groupRowsBy", "groupedRows", "columns", "selected", "scrollbarV", "scrollbarH", "rowHeight", "columnMode", "headerHeight", "footerHeight", "externalPaging", "externalSorting", "limit", "count", "offset", "loadingIndicator", "selectionType", "reorderable", "swapColumns", "sortType", "sorts", "cssClasses", "messages", "rowClass", "selectCheck", "displayCheck", "groupExpansionDefault", "trackByProp", "selectAllRowsOnPage", "virtualization", "treeFromRelation", "treeToRelation", "summaryRow", "summaryHeight", "summaryPosition", "rowIdentity"], outputs: ["scroll", "activate", "select", "sort", "page", "reorder", "resize", "tableContextmenu", "treeAction"] }, { kind: "directive", type: i11.DataTableColumnDirective, selector: "ngx-datatable-column", inputs: ["name", "prop", "frozenLeft", "frozenRight", "flexGrow", "resizeable", "comparator", "pipe", "sortable", "draggable", "canAutoResize", "minWidth", "width", "maxWidth", "checkboxable", "headerCheckboxable", "headerClass", "cellClass", "isTreeColumn", "treeLevelIndent", "summaryFunc", "summaryTemplate", "cellTemplate", "headerTemplate", "treeToggleTemplate"] }, { kind: "directive", type: i11.DataTableColumnCellDirective, selector: "[ngx-datatable-cell-template]" }, { kind: "directive", type: i12.ValidationGroupDirective, selector: "[formGroup],[formGroupName]", exportAs: ["validationGroup"] }, { kind: "directive", type: i3.NgxDatatableListDirective, selector: "ngx-datatable[list]", inputs: ["list"], exportAs: ["ngxDatatableList"] }, { kind: "directive", type: i13.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i13.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i13.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }, { kind: "directive", type: i13.NgbDropdownItem, selector: "[ngbDropdownItem]", inputs: ["tabindex", "disabled"] }, { kind: "directive", type: i13.NgbDropdownButtonItem, selector: "button[ngbDropdownItem]" }, { kind: "component", type: i14.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i14.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "component", type: i15.DynamicComponent, selector: "df-dynamic", inputs: ["selected", "type", "culture", "parentFiledName", "fields", "entity"] }, { kind: "component", type: i15.DynamicViewComponent, selector: "df-dynamic-view", inputs: ["showInList", "fields", "type", "value"] }, { kind: "directive", type: i16.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i16.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "pipe", type: i4.LocalizationPipe, name: "abpLocalization" }, { kind: "pipe", type: i4.ShortDateTimePipe, name: "shortDateTime" }] }); }
|
|
353
353
|
}
|
|
354
354
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImport: i0, type: EntriesComponent, decorators: [{
|
|
355
355
|
type: Component,
|
|
@@ -40,7 +40,7 @@ export class TableConfigComponent {
|
|
|
40
40
|
this.dataLoaded();
|
|
41
41
|
}
|
|
42
42
|
get formConfiguration() {
|
|
43
|
-
return this._Entity
|
|
43
|
+
return this._Entity?.get('formConfiguration');
|
|
44
44
|
}
|
|
45
45
|
get TableColumns() {
|
|
46
46
|
return this.formConfiguration.controls['TableColumns'];
|
|
@@ -65,7 +65,7 @@ export class TableConfigComponent {
|
|
|
65
65
|
}
|
|
66
66
|
AfterInit() {
|
|
67
67
|
return new Promise((resolve, rejects) => {
|
|
68
|
-
this._Entity
|
|
68
|
+
this._Entity?.setControl('formConfiguration', this.fb.group(new TableConfig()));
|
|
69
69
|
this._fieldControlGroup = this._FieldAbstractsService.getExcludeAssignControl(this._type);
|
|
70
70
|
if (this._selected && this._selected.formControlName == this._type) {
|
|
71
71
|
this._selected.formConfiguration['TableColumns'].forEach(el => {
|
|
@@ -102,7 +102,7 @@ export class TableConfigComponent {
|
|
|
102
102
|
const formGroup = this.TableColumns.at(this.TableColumnsIndex);
|
|
103
103
|
let formConfigurationgroup = formGroup.get('formConfiguration');
|
|
104
104
|
formConfigurationgroup.setValue({
|
|
105
|
-
...this.tableSelectForm
|
|
105
|
+
...this.tableSelectForm?.value['formConfiguration'],
|
|
106
106
|
});
|
|
107
107
|
this.tableSelectOpen = false;
|
|
108
108
|
}
|
|
@@ -113,7 +113,7 @@ export class TableConfigComponent {
|
|
|
113
113
|
this.tableSelectForm.patchValue({
|
|
114
114
|
...rows.value
|
|
115
115
|
});
|
|
116
|
-
this.tableSelectForm.get('formConfiguration')
|
|
116
|
+
this.tableSelectForm.get('formConfiguration')?.patchValue({
|
|
117
117
|
...rows.value['formConfiguration']
|
|
118
118
|
});
|
|
119
119
|
this._tableSelected = rows.value;
|
|
@@ -155,4 +155,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.5", ngImpor
|
|
|
155
155
|
type: ViewChild,
|
|
156
156
|
args: ['tableSelectModalSubmit', { static: false }]
|
|
157
157
|
}] } });
|
|
158
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29uZmlnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL3RhYmxlL3RhYmxlLWNvbmZpZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS90YWJsZS90YWJsZS1jb25maWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFRL0QsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixZQUNVLEVBQWUsRUFDZixjQUE2QixFQUM3QixzQkFBNkM7UUFGN0MsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7UUF5Qy9DLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQWlEeEMsZUFBZTtRQUNmLG9CQUFlLEdBQVksS0FBSyxDQUFBO1FBRWhDLHFCQUFxQjtRQUNyQixjQUFTLEdBQVksS0FBSyxDQUFBO0lBN0Z0QixDQUFDO0lBR0wsSUFDVyxNQUFNLENBQUMsQ0FBWTtRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUdELElBQ1csUUFBUSxDQUFDLENBQU07UUFDeEIsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNOLEtB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TUFBTSxDQUFDLEtBQUssQ0FBQTtRQUM5QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN2RCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2hDLElBQUksU0FBUyxDQUFDLEtBQUs7WUFBRSxPQUFNO1FBQzNCLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDOUIsQ0FBQzs4R0FwS1Usb0JBQW9CO2tHQUFwQixvQkFBb0Isc1dDWGpDLG9zS0FvRlk7OzJGRHpFQyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCO2dKQWFoQixNQUFNO3NCQURoQixLQUFLO2dCQVFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBa0JLLElBQUk7c0JBRGQsS0FBSztnQkFXc0MsV0FBVztzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQWdFYyxzQkFBc0I7c0JBQTdFLFNBQVM7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUYWJsZUNvbmZpZywgVGFibGVGb3JtQ29udHJvbCB9IGZyb20gJy4vdGFibGUtY29uZmlnJztcbmltcG9ydCB7IENtc0FwaVNlcnZpY2UsIEZpZWxkQWJzdHJhY3RzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGYtdGFibGUtY29uZmlnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWNvbmZpZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLWNvbmZpZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29uZmlnQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBfQ21zQXBpU2VydmljZTogQ21zQXBpU2VydmljZSxcbiAgICBwcml2YXRlIF9GaWVsZEFic3RyYWN0c1NlcnZpY2U6IEZpZWxkQWJzdHJhY3RzU2VydmljZSxcbiAgKSB7IH1cbiAgLyoq6KGo5Y2V5a6e5L2TICovXG4gIF9FbnRpdHk6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZFxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IEVudGl0eSh2OiBGb3JtR3JvdXApIHtcbiAgICB0aGlzLl9FbnRpdHkgPSB2O1xuICAgIHRoaXMuZGF0YUxvYWRlZCgpXG4gIH1cbiAgLyoq6YCJ5oup55qE6KGo5Y2V5L+h5oGvICovXG4gIF9zZWxlY3RlZDogYW55XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWQodjogYW55KSB7XG4gICAgaWYgKHYpIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHYuZm9ybUNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheSh2LmZvcm1Db25maWd1cmF0aW9uW2tleV0pKXtcbiAgICAgICAgICB2LmZvcm1Db25maWd1cmF0aW9uW2tleV09dGhpcy5fQ21zQXBpU2VydmljZS5jb252ZXJ0S2V5c1RvQ2FtZWxDYXNlKHYuZm9ybUNvbmZpZ3VyYXRpb25ba2V5XSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB2XG4gICAgICB0aGlzLmRhdGFMb2FkZWQoKVxuICAgIH1cbiAgfVxuICAvKirooajljZXmjqfku7bnu4QgKi9cbiAgX2ZpZWxkQ29udHJvbEdyb3VwOiBhbnlbXVxuXG4gIC8qKuihqOWNleaOp+S7tuexu+WeiyAqL1xuICBfdHlwZTogYW55XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdHlwZSh2OiBhbnkpIHtcbiAgICB0aGlzLl90eXBlID0gdlxuICAgIHRoaXMuZGF0YUxvYWRlZCgpXG4gIH1cbiAgZ2V0IGZvcm1Db25maWd1cmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9FbnRpdHkuZ2V0KCdmb3JtQ29uZmlndXJhdGlvbicpIGFzIEZvcm1Hcm91cFxuICB9XG4gIGdldCBUYWJsZUNvbHVtbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybUNvbmZpZ3VyYXRpb24uY29udHJvbHNbJ1RhYmxlQ29sdW1ucyddIGFzIEZvcm1BcnJheVxuICB9XG4gIEBWaWV3Q2hpbGQoJ3N1Ym1pdGNsaWNrJywgeyBzdGF0aWM6IHRydWUgfSkgc3VibWl0Y2xpY2s6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBjZHIgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuICBhc3luYyBkYXRhTG9hZGVkKCkge1xuICAgIGlmICh0aGlzLl9FbnRpdHkgJiYgdGhpcy5fdHlwZSkge1xuICAgICAgYXdhaXQgdGhpcy5BZnRlckluaXQoKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTsgLy8g5omL5Yqo6Kem5Y+R5Y+Y5pu05qOA5rWLXG4gICAgICB0aGlzLnN1Ym1pdGNsaWNrPy5uYXRpdmVFbGVtZW50Py5jbGljaygpO1xuICAgIH1cbiAgfVxuICAvKirlop7liqDpgInpobkgKi9cbiAgYWRkVGFibGVDb2x1bW5zKCkge1xuICAgIHRoaXMuVGFibGVDb2x1bW5zLnB1c2godGhpcy5mYi5ncm91cCh7XG4gICAgICAuLi5uZXcgVGFibGVGb3JtQ29udHJvbCgpLFxuICAgICAgZm9ybUNvbmZpZ3VyYXRpb246IFt7fV1cbiAgICB9KSlcbiAgfVxuICAvKirliKDpmaTmn5DkuKrpgInpobkgKi9cbiAgZGVsZXRlVGFibGVDb2x1bW5zKGluZGV4KSB7XG4gICAgdGhpcy5UYWJsZUNvbHVtbnMucmVtb3ZlQXQoaW5kZXgpXG4gIH1cblxuICBBZnRlckluaXQoKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3RzKSA9PiB7XG4gICAgICB0aGlzLl9FbnRpdHkuc2V0Q29udHJvbCgnZm9ybUNvbmZpZ3VyYXRpb24nLCB0aGlzLmZiLmdyb3VwKG5ldyBUYWJsZUNvbmZpZygpKSlcbiAgICAgIHRoaXMuX2ZpZWxkQ29udHJvbEdyb3VwID0gdGhpcy5fRmllbGRBYnN0cmFjdHNTZXJ2aWNlLmdldEV4Y2x1ZGVBc3NpZ25Db250cm9sKHRoaXMuX3R5cGUpXG4gICAgICBpZiAodGhpcy5fc2VsZWN0ZWQgJiYgdGhpcy5fc2VsZWN0ZWQuZm9ybUNvbnRyb2xOYW1lID09IHRoaXMuX3R5cGUpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWQuZm9ybUNvbmZpZ3VyYXRpb25bJ1RhYmxlQ29sdW1ucyddLmZvckVhY2goZWwgPT4ge1xuICAgICAgICAgIHRoaXMuYWRkVGFibGVDb2x1bW5zKClcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZm9ybUNvbmZpZ3VyYXRpb24ucGF0Y2hWYWx1ZSh0aGlzLl9zZWxlY3RlZC5mb3JtQ29uZmlndXJhdGlvbilcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWRkVGFibGVDb2x1bW5zKClcbiAgICAgIH1cbiAgICAgIHJlc29sdmUodHJ1ZSlcbiAgICB9KVxuICB9XG4gIGl0ZW1Gb3JtOiBhbnlcbiAgLyoq6YCJ5oup6KGo5qC855qE6KGo5Y2V5o6n5Lu2ICovXG4gIHNlbGVjdFRhYmxlQ29udHJvbChldmVudCwgaSwgaXRlbSkge1xuICAgIHRoaXMuQ3VycmVudFNlbGVjdGlvblRhYmxlQ29udHJvbE5hbWUgPSBldmVudC50YXJnZXQudmFsdWVcbiAgICB0aGlzLnRhYmxlU2VsZWN0T3BlbiA9IHRydWVcbiAgICB0aGlzLnRhYmxlU2VsZWN0Rm9ybSA9IHRoaXMuZmIuZ3JvdXAobmV3IFRhYmxlRm9ybUNvbnRyb2woKSlcbiAgICB0aGlzLlRhYmxlQ29sdW1uc0luZGV4ID0gaVxuICAgIHRoaXMuaXRlbUZvcm0gPSBpdGVtXG4gIH1cblxuICBDdXJyZW50U2VsZWN0aW9uVGFibGVDb250cm9sTmFtZTogYW55XG5cbiAgLyoq5q2j5Zyo5Yib5bu65oiW57yW6L6R55qE6KGo5qC86aG55LiL5qCHICovXG4gIFRhYmxlQ29sdW1uc0luZGV4OiBhbnlcbiAgLyoq5Yib5bu656uZ54K55qih5oCB5qGG54q25oCBICovXG4gIHRhYmxlU2VsZWN0T3BlbjogYm9vbGVhbiA9IGZhbHNlXG5cbiAgLyoq55So5LqO56Gu5a6a5qih5oCB55qE57mB5b+Z54q25oCB5piv5ZCm5Li655yfICovXG4gIG1vZGFsQnVzeTogYm9vbGVhbiA9IGZhbHNlXG4gIC8qKuWIm+W7uuermeeCueihqOWNlSAqL1xuICB0YWJsZVNlbGVjdEZvcm06IEZvcm1Hcm91cCB8IHVuZGVmaW5lZDtcblxuICAvKirooajmoLzlt7LpgInmi6nmlbDmja4gKi9cbiAgX3RhYmxlU2VsZWN0ZWQ6IGFueVxuXG5cbiAgLyoq6KGo5Y2V5o6n5Lu25qih5p2/LeWKqOaAgei1i+WAvOihqOWNleaOp+S7tiAqL1xuICBAVmlld0NoaWxkKCd0YWJsZVNlbGVjdE1vZGFsU3VibWl0JywgeyBzdGF0aWM6IGZhbHNlIH0pIHRhYmxlU2VsZWN0TW9kYWxTdWJtaXQ6IEVsZW1lbnRSZWY7XG5cblxuICAvKirliJvlu7rnq5nngrnmqKHmgIHmoYbnirbmgIHmlLnlj5ggKi9cbiAgdGFibGVTZWxlY3RWaXNpYmxlQ2hhbmdlKGV2ZW50KSB7XG4gICAgaWYgKCFldmVudCkge1xuICAgICAgdGhpcy5fdGFibGVTZWxlY3RlZCA9IHVuZGVmaW5lZFxuICAgICAgdGhpcy50YWJsZVNlbGVjdEZvcm0gPSB1bmRlZmluZWRcbiAgICAgIHRoaXMuQ3VycmVudFNlbGVjdGlvblRhYmxlQ29udHJvbE5hbWUgPSB1bmRlZmluZWRcbiAgICAgIHRoaXMuVGFibGVDb2x1bW5zSW5kZXggPSB1bmRlZmluZWRcbiAgICAgIHJldHVyblxuICAgIH1cbiAgfVxuICAvKirooajljZXkv53lrZjmj5DkuqQgKi9cbiAgY3JlYXRlT3JFZGl0U2F2ZSgpIHtcbiAgICBjb25zdCBmb3JtR3JvdXAgPSB0aGlzLlRhYmxlQ29sdW1ucy5hdCh0aGlzLlRhYmxlQ29sdW1uc0luZGV4KSBhcyBGb3JtR3JvdXA7XG4gICAgbGV0IGZvcm1Db25maWd1cmF0aW9uZ3JvdXAgPSBmb3JtR3JvdXAuZ2V0KCdmb3JtQ29uZmlndXJhdGlvbicpIGFzIEZvcm1Hcm91cFxuXG4gICAgZm9ybUNvbmZpZ3VyYXRpb25ncm91cC5zZXRWYWx1ZSh7XG4gICAgICAuLi50aGlzLnRhYmxlU2VsZWN0Rm9ybS52YWx1ZVsnZm9ybUNvbmZpZ3VyYXRpb24nXSxcbiAgICB9KTtcbiAgICB0aGlzLnRhYmxlU2VsZWN0T3BlbiA9IGZhbHNlXG4gIH1cblxuICAvKirnvJbovpHnq5nngrnmjInpkq4gKi9cbiAgRWRpdFNpdGVzQnRuKHJvd3MsIGkpIHtcblxuICAgIHRoaXMuQ3VycmVudFNlbGVjdGlvblRhYmxlQ29udHJvbE5hbWUgPSByb3dzLmdldCgnZm9ybUNvbnRyb2xOYW1lJykudmFsdWVcbiAgICB0aGlzLnRhYmxlU2VsZWN0Rm9ybSA9IHRoaXMuZmIuZ3JvdXAobmV3IFRhYmxlRm9ybUNvbnRyb2woKSlcbiAgICB0aGlzLnRhYmxlU2VsZWN0Rm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIC4uLnJvd3MudmFsdWVcbiAgICB9KVxuICAgIHRoaXMudGFibGVTZWxlY3RGb3JtLmdldCgnZm9ybUNvbmZpZ3VyYXRpb24nKS5wYXRjaFZhbHVlKHtcbiAgICAgIC4uLnJvd3MudmFsdWVbJ2Zvcm1Db25maWd1cmF0aW9uJ11cbiAgICB9KVxuICAgIHRoaXMuX3RhYmxlU2VsZWN0ZWQgPSByb3dzLnZhbHVlXG4gICAgdGhpcy5UYWJsZUNvbHVtbnNJbmRleCA9IGlcbiAgICB0aGlzLnRhYmxlU2VsZWN0T3BlbiA9IHRydWVcbiAgfVxuXG5cbiAgLyoq6LCD5pW06KGo5qC85L2N572uICovXG4gIFRhYmxlQXJyb3dVcE9yRG93bih0eXBlLCBpbmRleCkge1xuICAgIGxldCBjb250cm9sQXQgPSB0aGlzLlRhYmxlQ29sdW1ucy5hdChpbmRleClcbiAgICB0aGlzLlRhYmxlQ29sdW1ucy5yZW1vdmVBdChpbmRleClcbiAgICBsZXQgbGFzdGluZGV4ID0gdHlwZSA9PSAndXAnID8gaW5kZXggLSAxIDogaW5kZXggKyAxXG4gICAgdGhpcy5UYWJsZUNvbHVtbnMuaW5zZXJ0KGxhc3RpbmRleCwgY29udHJvbEF0KVxuICB9XG5cblxuICAvKirlrZfmrrXmoIfnrb5pbnB1dOWkseWOu+agh+eCueeUn+aIkOWtl+auteWQjeWtlyAqL1xuICBkaXNQbGF5TmFtZUlucHV0Qmx1cihldmVudCwgaXRlbSkge1xuICAgIGxldCB2YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZVxuICAgIGxldCBwaW55aW4gPSB0aGlzLl9DbXNBcGlTZXJ2aWNlLmNoaW5lc2VUb1Bpbnlpbih2YWx1ZSlcbiAgICBsZXQgbmFtZUlucHV0ID0gaXRlbS5nZXQoJ25hbWUnKVxuICAgIGlmIChuYW1lSW5wdXQudmFsdWUpIHJldHVyblxuICAgIG5hbWVJbnB1dC5wYXRjaFZhbHVlKHBpbnlpbilcbiAgfVxufVxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJfRW50aXR5XCI+XG4gICAgPGRpdiBmb3JtR3JvdXBOYW1lPVwiZm9ybUNvbmZpZ3VyYXRpb25cIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj57eydEaWduaXRlQWJwRm9ybXM6OlNlbGVjdExpc3RJdGVtJyB8IGFicExvY2FsaXphdGlvbn19PC9sYWJlbD5cbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlXCI+XG4gICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGggc2NvcGU9XCJjb2xcIj57eydDbXM6OlRhYmxlQ29sdW1uRGlzcGxheU5hbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+e3snQ21zOjpUYWJsZUNvbHVtbk5hbWUnIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+e3snQ21zOjpUYWJsZUNvbHVtbkZvcm0nIHwgYWJwTG9jYWxpemF0aW9ufX08L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCIgY2xhc3M9XCJmbGV4LWVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbVwiIChjbGljay5zdG9wKT1cImFkZFRhYmxlQ29sdW1ucygpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXMtY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxuICAgICAgICAgICAgICAgIDx0Ym9keSBmb3JtQXJyYXlOYW1lPVwiVGFibGVDb2x1bW5zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgVGFibGVDb2x1bW5zLmNvbnRyb2xzO2xldCBpPWluZGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dHIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cImRpc3BsYXlOYW1lXCIgIChibHVyKT1cImRpc1BsYXlOYW1lSW5wdXRCbHVyKCRldmVudCxpdGVtKVwiID48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD48aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIj48L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZm9ybUNvbnRyb2xOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2VsZWN0VGFibGVDb250cm9sKCRldmVudCxpLGl0ZW0pXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0RnJvbTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbV9mIG9mIF9maWVsZENvbnRyb2xHcm91cDtsZXQgaV9mID1pbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW3ZhbHVlXT1cIml0ZW1fZi5uYW1lXCI+e3tpdGVtX2YuZGlzcGxheU5hbWV9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHNjb3BlPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXN0YXJ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gXCIgKGNsaWNrLnN0b3ApPVwiRWRpdFNpdGVzQnRuKGl0ZW0saSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1lZGl0XCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gbXMtMVwiIChjbGljay5zdG9wKT1cImRlbGV0ZVRhYmxlQ29sdW1ucyhpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLW1pbnVzXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gbXMtMVwiICpuZ0lmPVwiaSE9PTBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljay5zdG9wKT1cIlRhYmxlQXJyb3dVcE9yRG93bigndXAnLGkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtYXJyb3ctdXBcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSBtcy0xXCIgKm5nSWY9XCJpIT09VGFibGVDb2x1bW5zLmNvbnRyb2xzLmxlbmd0aC0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2suc3RvcCk9XCJUYWJsZUFycm93VXBPckRvd24oJ2Rvd24nLGkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtYXJyb3ctZG93blwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAoYWJwSW5pdCk9XCJzdWJtaXRjbGljaz8ubmF0aXZlRWxlbWVudD8uY2xpY2soKVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZTtcIlxuICAgICAgICAgICAgI3N1Ym1pdGNsaWNrPjwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9mb3JtPlxuXG5cbjxhYnAtbW9kYWwgWyh2aXNpYmxlKV09XCJ0YWJsZVNlbGVjdE9wZW5cIiBbYnVzeV09XCJtb2RhbEJ1c3lcIiAodmlzaWJsZUNoYW5nZSk9XCJ0YWJsZVNlbGVjdFZpc2libGVDaGFuZ2UoJGV2ZW50KVwiIFtvcHRpb25zXT1cInsgc2l6ZTogQ3VycmVudFNlbGVjdGlvblRhYmxlQ29udHJvbE5hbWU9PSdNYXRyaXgnPyd4bCc6JycgLHNjcm9sbGFibGU6ZmFsc2UgfVwiPlxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxuICAgICAgICA8aDM+e3tfdGFibGVTZWxlY3RlZD8oJ0FicFVpOjpFZGl0JyB8IGFicExvY2FsaXphdGlvbik6KCdDbXM6Ok5ldycgfCBhYnBMb2NhbGl6YXRpb24pfX08L2gzPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxuICAgICAgICA8bmctdGVtcGxhdGUgI2xvYWRlclJlZj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPjxpIGNsYXNzPVwiZmEgZmEtcHVsc2UgZmEtc3Bpbm5lclwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRhYmxlU2VsZWN0Rm9ybTsgZWxzZSBsb2FkZXJSZWZcIj5cbiAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwic2l0ZXMtbW9kYWwtZm9ybVwiICNteUZvcm09XCJuZ0Zvcm1cIiBbZm9ybUdyb3VwXT1cInRhYmxlU2VsZWN0Rm9ybVwiXG4gICAgICAgICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KClcIiAoc3VibWl0KT1cImNyZWF0ZU9yRWRpdFNhdmUoKVwiPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiICN0YWJsZVNlbGVjdE1vZGFsU3VibWl0IHN0eWxlPVwiZGlzcGxheTogbm9uZVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJDdXJyZW50U2VsZWN0aW9uVGFibGVDb250cm9sTmFtZSYmdGFibGVTZWxlY3RGb3JtXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkZi1keW5hbWljIFt0eXBlXT1cIkN1cnJlbnRTZWxlY3Rpb25UYWJsZUNvbnRyb2xOYW1lXCIgXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJfdGFibGVTZWxlY3RlZFwiIFtmb3JtR3JvdXBdPVwidGFibGVTZWxlY3RGb3JtXCIgW2VudGl0eV09XCJ0YWJsZVNlbGVjdEZvcm1cIj48L2RmLWR5bmFtaWM+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNhYnBGb290ZXI+XG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiBhYnBDbG9zZT57eydBYnBVaTo6Q2xvc2UnIHwgYWJwTG9jYWxpemF0aW9ufX08L2J1dHRvbj5cbiAgICAgICAgPGFicC1idXR0b24gaWNvbkNsYXNzPVwiZmEgZmEtY2hlY2tcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRhYmxlU2VsZWN0TW9kYWxTdWJtaXQubmF0aXZlRWxlbWVudC5jbGljaygpXCI+e3snQWJwVWk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9ufX08L2FicC1idXR0b24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvYWJwLW1vZGFsPiJdfQ==
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29uZmlnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ntcy9zcmMvbGliL2NvbXBvbmVudHMvZHluYW1pYy1mb3JtL3RhYmxlL3RhYmxlLWNvbmZpZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbXMvc3JjL2xpYi9jb21wb25lbnRzL2R5bmFtaWMtZm9ybS90YWJsZS90YWJsZS1jb25maWcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFbkcsT0FBTyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFRL0QsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixZQUNVLEVBQWUsRUFDZixjQUE2QixFQUM3QixzQkFBNkM7UUFGN0MsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBQzdCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBdUI7UUF5Qy9DLFFBQUcsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQWlEeEMsZUFBZTtRQUNmLG9CQUFlLEdBQVksS0FBSyxDQUFBO1FBRWhDLHFCQUFxQjtRQUNyQixjQUFTLEdBQVksS0FBSyxDQUFBO0lBN0Z0QixDQUFDO0lBR0wsSUFDVyxNQUFNLENBQUMsQ0FBWTtRQUM1QixJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7SUFDbkIsQ0FBQztJQUdELElBQ1csUUFBUSxDQUFDLENBQU07UUFDeEIsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNOLEtB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TUFBTSxDQUFDLEtBQUssQ0FBQTtRQUM5QixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN2RCxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2hDLElBQUksU0FBUyxDQUFDLEtBQUs7WUFBRSxPQUFNO1FBQzNCLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDOUIsQ0FBQzs4R0FwS1Usb0JBQW9CO2tHQUFwQixvQkFBb0Isc1dDWGpDLG9zS0FvRlk7OzJGRHpFQyxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UsaUJBQWlCO2dKQWFoQixNQUFNO3NCQURoQixLQUFLO2dCQVFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBa0JLLElBQUk7c0JBRGQsS0FBSztnQkFXc0MsV0FBVztzQkFBdEQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQWdFYyxzQkFBc0I7c0JBQTdFLFNBQVM7dUJBQUMsd0JBQXdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvciAqL1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUYWJsZUNvbmZpZywgVGFibGVGb3JtQ29udHJvbCB9IGZyb20gJy4vdGFibGUtY29uZmlnJztcbmltcG9ydCB7IENtc0FwaVNlcnZpY2UsIEZpZWxkQWJzdHJhY3RzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGYtdGFibGUtY29uZmlnJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLWNvbmZpZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLWNvbmZpZy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29uZmlnQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBfQ21zQXBpU2VydmljZTogQ21zQXBpU2VydmljZSxcbiAgICBwcml2YXRlIF9GaWVsZEFic3RyYWN0c1NlcnZpY2U6IEZpZWxkQWJzdHJhY3RzU2VydmljZSxcbiAgKSB7IH1cbiAgLyoq6KGo5Y2V5a6e5L2TICovXG4gIF9FbnRpdHk6IEZvcm1Hcm91cCB8IHVuZGVmaW5lZFxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IEVudGl0eSh2OiBGb3JtR3JvdXApIHtcbiAgICB0aGlzLl9FbnRpdHkgPSB2O1xuICAgIHRoaXMuZGF0YUxvYWRlZCgpXG4gIH1cbiAgLyoq6YCJ5oup55qE6KGo5Y2V5L+h5oGvICovXG4gIF9zZWxlY3RlZDogYW55XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWQodjogYW55KSB7XG4gICAgaWYgKHYpIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IGluIHYuZm9ybUNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgaWYoQXJyYXkuaXNBcnJheSh2LmZvcm1Db25maWd1cmF0aW9uW2tleV0pKXtcbiAgICAgICAgICB2LmZvcm1Db25maWd1cmF0aW9uW2tleV09dGhpcy5fQ21zQXBpU2VydmljZS5jb252ZXJ0S2V5c1RvQ2FtZWxDYXNlKHYuZm9ybUNvbmZpZ3VyYXRpb25ba2V5XSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB2XG4gICAgICB0aGlzLmRhdGFMb2FkZWQoKVxuICAgIH1cbiAgfVxuICAvKirooajljZXmjqfku7bnu4QgKi9cbiAgX2ZpZWxkQ29udHJvbEdyb3VwOiBhbnlbXVxuXG4gIC8qKuihqOWNleaOp+S7tuexu+WeiyAqL1xuICBfdHlwZTogYW55XG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgdHlwZSh2OiBhbnkpIHtcbiAgICB0aGlzLl90eXBlID0gdlxuICAgIHRoaXMuZGF0YUxvYWRlZCgpXG4gIH1cbiAgZ2V0IGZvcm1Db25maWd1cmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9FbnRpdHk/LmdldCgnZm9ybUNvbmZpZ3VyYXRpb24nKSBhcyBGb3JtR3JvdXBcbiAgfVxuICBnZXQgVGFibGVDb2x1bW5zKCkge1xuICAgIHJldHVybiB0aGlzLmZvcm1Db25maWd1cmF0aW9uLmNvbnRyb2xzWydUYWJsZUNvbHVtbnMnXSBhcyBGb3JtQXJyYXlcbiAgfVxuICBAVmlld0NoaWxkKCdzdWJtaXRjbGljaycsIHsgc3RhdGljOiB0cnVlIH0pIHN1Ym1pdGNsaWNrOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgYXN5bmMgZGF0YUxvYWRlZCgpIHtcbiAgICBpZiAodGhpcy5fRW50aXR5ICYmIHRoaXMuX3R5cGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuQWZ0ZXJJbml0KCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7IC8vIOaJi+WKqOinpuWPkeWPmOabtOajgOa1i1xuICAgICAgdGhpcy5zdWJtaXRjbGljaz8ubmF0aXZlRWxlbWVudD8uY2xpY2soKTtcbiAgICB9XG4gIH1cbiAgLyoq5aKe5Yqg6YCJ6aG5ICovXG4gIGFkZFRhYmxlQ29sdW1ucygpIHtcbiAgICB0aGlzLlRhYmxlQ29sdW1ucy5wdXNoKHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgLi4ubmV3IFRhYmxlRm9ybUNvbnRyb2woKSxcbiAgICAgIGZvcm1Db25maWd1cmF0aW9uOiBbe31dXG4gICAgfSkpXG4gIH1cbiAgLyoq5Yig6Zmk5p+Q5Liq6YCJ6aG5ICovXG4gIGRlbGV0ZVRhYmxlQ29sdW1ucyhpbmRleCkge1xuICAgIHRoaXMuVGFibGVDb2x1bW5zLnJlbW92ZUF0KGluZGV4KVxuICB9XG5cbiAgQWZ0ZXJJbml0KCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0cykgPT4ge1xuICAgICAgdGhpcy5fRW50aXR5Py5zZXRDb250cm9sKCdmb3JtQ29uZmlndXJhdGlvbicsIHRoaXMuZmIuZ3JvdXAobmV3IFRhYmxlQ29uZmlnKCkpKVxuICAgICAgdGhpcy5fZmllbGRDb250cm9sR3JvdXAgPSB0aGlzLl9GaWVsZEFic3RyYWN0c1NlcnZpY2UuZ2V0RXhjbHVkZUFzc2lnbkNvbnRyb2wodGhpcy5fdHlwZSlcbiAgICAgIGlmICh0aGlzLl9zZWxlY3RlZCAmJiB0aGlzLl9zZWxlY3RlZC5mb3JtQ29udHJvbE5hbWUgPT0gdGhpcy5fdHlwZSkge1xuICAgICAgICB0aGlzLl9zZWxlY3RlZC5mb3JtQ29uZmlndXJhdGlvblsnVGFibGVDb2x1bW5zJ10uZm9yRWFjaChlbCA9PiB7XG4gICAgICAgICAgdGhpcy5hZGRUYWJsZUNvbHVtbnMoKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5mb3JtQ29uZmlndXJhdGlvbi5wYXRjaFZhbHVlKHRoaXMuX3NlbGVjdGVkLmZvcm1Db25maWd1cmF0aW9uKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hZGRUYWJsZUNvbHVtbnMoKVxuICAgICAgfVxuICAgICAgcmVzb2x2ZSh0cnVlKVxuICAgIH0pXG4gIH1cbiAgaXRlbUZvcm06IGFueVxuICAvKirpgInmi6nooajmoLznmoTooajljZXmjqfku7YgKi9cbiAgc2VsZWN0VGFibGVDb250cm9sKGV2ZW50LCBpLCBpdGVtKSB7XG4gICAgdGhpcy5DdXJyZW50U2VsZWN0aW9uVGFibGVDb250cm9sTmFtZSA9IGV2ZW50LnRhcmdldC52YWx1ZVxuICAgIHRoaXMudGFibGVTZWxlY3RPcGVuID0gdHJ1ZVxuICAgIHRoaXMudGFibGVTZWxlY3RGb3JtID0gdGhpcy5mYi5ncm91cChuZXcgVGFibGVGb3JtQ29udHJvbCgpKVxuICAgIHRoaXMuVGFibGVDb2x1bW5zSW5kZXggPSBpXG4gICAgdGhpcy5pdGVtRm9ybSA9IGl0ZW1cbiAgfVxuXG4gIEN1cnJlbnRTZWxlY3Rpb25UYWJsZUNvbnRyb2xOYW1lOiBhbnlcblxuICAvKirmraPlnKjliJvlu7rmiJbnvJbovpHnmoTooajmoLzpobnkuIvmoIcgKi9cbiAgVGFibGVDb2x1bW5zSW5kZXg6IGFueVxuICAvKirliJvlu7rnq5nngrnmqKHmgIHmoYbnirbmgIEgKi9cbiAgdGFibGVTZWxlY3RPcGVuOiBib29sZWFuID0gZmFsc2VcblxuICAvKirnlKjkuo7noa7lrprmqKHmgIHnmoTnuYHlv5nnirbmgIHmmK/lkKbkuLrnnJ8gKi9cbiAgbW9kYWxCdXN5OiBib29sZWFuID0gZmFsc2VcbiAgLyoq5Yib5bu656uZ54K56KGo5Y2VICovXG4gIHRhYmxlU2VsZWN0Rm9ybTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkO1xuXG4gIC8qKuihqOagvOW3sumAieaLqeaVsOaNriAqL1xuICBfdGFibGVTZWxlY3RlZDogYW55XG5cblxuICAvKirooajljZXmjqfku7bmqKHmnb8t5Yqo5oCB6LWL5YC86KGo5Y2V5o6n5Lu2ICovXG4gIEBWaWV3Q2hpbGQoJ3RhYmxlU2VsZWN0TW9kYWxTdWJtaXQnLCB7IHN0YXRpYzogZmFsc2UgfSkgdGFibGVTZWxlY3RNb2RhbFN1Ym1pdDogRWxlbWVudFJlZjtcblxuXG4gIC8qKuWIm+W7uuermeeCueaooeaAgeahhueKtuaAgeaUueWPmCAqL1xuICB0YWJsZVNlbGVjdFZpc2libGVDaGFuZ2UoZXZlbnQpIHtcbiAgICBpZiAoIWV2ZW50KSB7XG4gICAgICB0aGlzLl90YWJsZVNlbGVjdGVkID0gdW5kZWZpbmVkXG4gICAgICB0aGlzLnRhYmxlU2VsZWN0Rm9ybSA9IHVuZGVmaW5lZFxuICAgICAgdGhpcy5DdXJyZW50U2VsZWN0aW9uVGFibGVDb250cm9sTmFtZSA9IHVuZGVmaW5lZFxuICAgICAgdGhpcy5UYWJsZUNvbHVtbnNJbmRleCA9IHVuZGVmaW5lZFxuICAgICAgcmV0dXJuXG4gICAgfVxuICB9XG4gIC8qKuihqOWNleS/neWtmOaPkOS6pCAqL1xuICBjcmVhdGVPckVkaXRTYXZlKCkge1xuICAgIGNvbnN0IGZvcm1Hcm91cCA9IHRoaXMuVGFibGVDb2x1bW5zLmF0KHRoaXMuVGFibGVDb2x1bW5zSW5kZXgpIGFzIEZvcm1Hcm91cDtcbiAgICBsZXQgZm9ybUNvbmZpZ3VyYXRpb25ncm91cCA9IGZvcm1Hcm91cC5nZXQoJ2Zvcm1Db25maWd1cmF0aW9uJykgYXMgRm9ybUdyb3VwXG5cbiAgICBmb3JtQ29uZmlndXJhdGlvbmdyb3VwLnNldFZhbHVlKHtcbiAgICAgIC4uLnRoaXMudGFibGVTZWxlY3RGb3JtPy52YWx1ZVsnZm9ybUNvbmZpZ3VyYXRpb24nXSxcbiAgICB9KTtcbiAgICB0aGlzLnRhYmxlU2VsZWN0T3BlbiA9IGZhbHNlXG4gIH1cblxuICAvKirnvJbovpHnq5nngrnmjInpkq4gKi9cbiAgRWRpdFNpdGVzQnRuKHJvd3MsIGkpIHtcblxuICAgIHRoaXMuQ3VycmVudFNlbGVjdGlvblRhYmxlQ29udHJvbE5hbWUgPSByb3dzLmdldCgnZm9ybUNvbnRyb2xOYW1lJykudmFsdWVcbiAgICB0aGlzLnRhYmxlU2VsZWN0Rm9ybSA9IHRoaXMuZmIuZ3JvdXAobmV3IFRhYmxlRm9ybUNvbnRyb2woKSlcbiAgICB0aGlzLnRhYmxlU2VsZWN0Rm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIC4uLnJvd3MudmFsdWVcbiAgICB9KVxuICAgIHRoaXMudGFibGVTZWxlY3RGb3JtLmdldCgnZm9ybUNvbmZpZ3VyYXRpb24nKT8ucGF0Y2hWYWx1ZSh7XG4gICAgICAuLi5yb3dzLnZhbHVlWydmb3JtQ29uZmlndXJhdGlvbiddXG4gICAgfSlcbiAgICB0aGlzLl90YWJsZVNlbGVjdGVkID0gcm93cy52YWx1ZVxuICAgIHRoaXMuVGFibGVDb2x1bW5zSW5kZXggPSBpXG4gICAgdGhpcy50YWJsZVNlbGVjdE9wZW4gPSB0cnVlXG4gIH1cblxuXG4gIC8qKuiwg+aVtOihqOagvOS9jee9riAqL1xuICBUYWJsZUFycm93VXBPckRvd24odHlwZSwgaW5kZXgpIHtcbiAgICBsZXQgY29udHJvbEF0ID0gdGhpcy5UYWJsZUNvbHVtbnMuYXQoaW5kZXgpXG4gICAgdGhpcy5UYWJsZUNvbHVtbnMucmVtb3ZlQXQoaW5kZXgpXG4gICAgbGV0IGxhc3RpbmRleCA9IHR5cGUgPT0gJ3VwJyA/IGluZGV4IC0gMSA6IGluZGV4ICsgMVxuICAgIHRoaXMuVGFibGVDb2x1bW5zLmluc2VydChsYXN0aW5kZXgsIGNvbnRyb2xBdClcbiAgfVxuXG5cbiAgLyoq5a2X5q615qCH562+aW5wdXTlpLHljrvmoIfngrnnlJ/miJDlrZfmrrXlkI3lrZcgKi9cbiAgZGlzUGxheU5hbWVJbnB1dEJsdXIoZXZlbnQsIGl0ZW0pIHtcbiAgICBsZXQgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWVcbiAgICBsZXQgcGlueWluID0gdGhpcy5fQ21zQXBpU2VydmljZS5jaGluZXNlVG9QaW55aW4odmFsdWUpXG4gICAgbGV0IG5hbWVJbnB1dCA9IGl0ZW0uZ2V0KCduYW1lJylcbiAgICBpZiAobmFtZUlucHV0LnZhbHVlKSByZXR1cm5cbiAgICBuYW1lSW5wdXQucGF0Y2hWYWx1ZShwaW55aW4pXG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiX0VudGl0eVwiPlxuICAgIDxkaXYgZm9ybUdyb3VwTmFtZT1cImZvcm1Db25maWd1cmF0aW9uXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+e3snRGlnbml0ZUFicEZvcm1zOjpTZWxlY3RMaXN0SXRlbScgfCBhYnBMb2NhbGl6YXRpb259fTwvbGFiZWw+XG4gICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZVwiPlxuICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRoIHNjb3BlPVwiY29sXCI+e3snQ21zOjpUYWJsZUNvbHVtbkRpc3BsYXlOYW1lJyB8IGFicExvY2FsaXphdGlvbn19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPnt7J0Ntczo6VGFibGVDb2x1bW5OYW1lJyB8IGFicExvY2FsaXphdGlvbn19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiPnt7J0Ntczo6VGFibGVDb2x1bW5Gb3JtJyB8IGFicExvY2FsaXphdGlvbn19PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBzY29wZT1cImNvbFwiIGNsYXNzPVwiZmxleC1lbmRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc21cIiAoY2xpY2suc3RvcCk9XCJhZGRUYWJsZUNvbHVtbnMoKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICA8dGJvZHkgZm9ybUFycmF5TmFtZT1cIlRhYmxlQ29sdW1uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIFRhYmxlQ29sdW1ucy5jb250cm9scztsZXQgaT1pbmRleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRyIFtmb3JtR3JvdXBOYW1lXT1cImlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJkaXNwbGF5TmFtZVwiICAoYmx1cik9XCJkaXNQbGF5TmFtZUlucHV0Qmx1cigkZXZlbnQsaXRlbSlcIiA+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCI+PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cImZvcm1Db250cm9sTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNlbGVjdFRhYmxlQ29udHJvbCgkZXZlbnQsaSxpdGVtKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdEZyb208L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW1fZiBvZiBfZmllbGRDb250cm9sR3JvdXA7bGV0IGlfZiA9aW5kZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFt2YWx1ZV09XCJpdGVtX2YubmFtZVwiPnt7aXRlbV9mLmRpc3BsYXlOYW1lfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBzY29wZT1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1zdGFydFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIFwiIChjbGljay5zdG9wKT1cIkVkaXRTaXRlc0J0bihpdGVtLGkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZWRpdFwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIG1zLTFcIiAoY2xpY2suc3RvcCk9XCJkZWxldGVUYWJsZUNvbHVtbnMoaSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1taW51c1wiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgYnRuLXNtIG1zLTFcIiAqbmdJZj1cImkhPT0wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2suc3RvcCk9XCJUYWJsZUFycm93VXBPckRvd24oJ3VwJyxpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWFycm93LXVwXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gbXMtMVwiICpuZ0lmPVwiaSE9PVRhYmxlQ29sdW1ucy5jb250cm9scy5sZW5ndGgtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrLnN0b3ApPVwiVGFibGVBcnJvd1VwT3JEb3duKCdkb3duJyxpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWFycm93LWRvd25cIj48L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgKGFicEluaXQpPVwic3VibWl0Y2xpY2s/Lm5hdGl2ZUVsZW1lbnQ/LmNsaWNrKClcIiBzdHlsZT1cImRpc3BsYXk6IG5vbmU7XCJcbiAgICAgICAgICAgICNzdWJtaXRjbGljaz48L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZm9ybT5cblxuXG48YWJwLW1vZGFsIFsodmlzaWJsZSldPVwidGFibGVTZWxlY3RPcGVuXCIgW2J1c3ldPVwibW9kYWxCdXN5XCIgKHZpc2libGVDaGFuZ2UpPVwidGFibGVTZWxlY3RWaXNpYmxlQ2hhbmdlKCRldmVudClcIiBbb3B0aW9uc109XCJ7IHNpemU6IEN1cnJlbnRTZWxlY3Rpb25UYWJsZUNvbnRyb2xOYW1lPT0nTWF0cml4Jz8neGwnOicnICxzY3JvbGxhYmxlOmZhbHNlIH1cIj5cbiAgICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cbiAgICAgICAgPGgzPnt7X3RhYmxlU2VsZWN0ZWQ/KCdBYnBVaTo6RWRpdCcgfCBhYnBMb2NhbGl6YXRpb24pOignQ21zOjpOZXcnIHwgYWJwTG9jYWxpemF0aW9uKX19PC9oMz5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNsb2FkZXJSZWY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj48aSBjbGFzcz1cImZhIGZhLXB1bHNlIGZhLXNwaW5uZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+PC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0YWJsZVNlbGVjdEZvcm07IGVsc2UgbG9hZGVyUmVmXCI+XG4gICAgICAgICAgICA8Zm9ybSBjbGFzcz1cInNpdGVzLW1vZGFsLWZvcm1cIiAjbXlGb3JtPVwibmdGb3JtXCIgW2Zvcm1Hcm91cF09XCJ0YWJsZVNlbGVjdEZvcm1cIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIiRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCIgKHN1Ym1pdCk9XCJjcmVhdGVPckVkaXRTYXZlKClcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiAjdGFibGVTZWxlY3RNb2RhbFN1Ym1pdCBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIj48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiQ3VycmVudFNlbGVjdGlvblRhYmxlQ29udHJvbE5hbWUmJnRhYmxlU2VsZWN0Rm9ybVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGYtZHluYW1pYyBbdHlwZV09XCJDdXJyZW50U2VsZWN0aW9uVGFibGVDb250cm9sTmFtZVwiIFxuICAgICAgICAgICAgICAgICAgICBbc2VsZWN0ZWRdPVwiX3RhYmxlU2VsZWN0ZWRcIiBbZm9ybUdyb3VwXT1cInRhYmxlU2VsZWN0Rm9ybVwiIFtlbnRpdHldPVwidGFibGVTZWxlY3RGb3JtXCI+PC9kZi1keW5hbWljPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCIgYWJwQ2xvc2U+e3snQWJwVWk6OkNsb3NlJyB8IGFicExvY2FsaXphdGlvbn19PC9idXR0b24+XG4gICAgICAgIDxhYnAtYnV0dG9uIGljb25DbGFzcz1cImZhIGZhLWNoZWNrXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0YWJsZVNlbGVjdE1vZGFsU3VibWl0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKVwiPnt7J0FicFVpOjpTYXZlJyB8IGFicExvY2FsaXphdGlvbn19PC9hYnAtYnV0dG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2FicC1tb2RhbD4iXX0=
|
|
@@ -13,7 +13,7 @@ export class TableConfig {
|
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
export class TableFormControl {
|
|
16
|
-
constructor(
|
|
16
|
+
constructor() {
|
|
17
17
|
/**列标题 */
|
|
18
18
|
this.displayName = ['', [Validators.required]];
|
|
19
19
|
/**空间配置 */
|
|
@@ -26,13 +26,6 @@ export class TableFormControl {
|
|
|
26
26
|
this.required = [false];
|
|
27
27
|
/**描述 */
|
|
28
28
|
this.description = [''];
|
|
29
|
-
if (data) {
|
|
30
|
-
for (const key in data) {
|
|
31
|
-
if (data.hasOwnProperty(key)) {
|
|
32
|
-
this[key] = data[key];
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
29
|
}
|
|
37
30
|
}
|
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY21zL3NyYy9saWIvY29tcG9uZW50cy9keW5hbWljLWZvcm0vdGFibGUvdGFibGUtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQWUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRS9FLE1BQU0sT0FBTyxXQUFXO0lBT3BCLFlBQVksSUFBa0I7UUFIOUIsS0FBSztRQUNMLGlCQUFZLEdBQVEsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7UUFHakMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNQLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUMxQixDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0NBQ0o7QUFDRCxNQUFNLE9BQU8sZ0JBQWdCO0lBZ0J6QjtRQWZBLFNBQVM7UUFDVCxnQkFBVyxHQUFRLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDL0MsVUFBVTtRQUNWLHNCQUFpQixHQUFRLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQzFDLFFBQVE7UUFDUixTQUFJLEdBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztRQUN4QyxNQUFNO1FBQ04sb0JBQWUsR0FBUSxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBRW5ELFVBQVU7UUFDVixhQUFRLEdBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixRQUFRO1FBQ1IsZ0JBQVcsR0FBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBR1QsQ0FBQztDQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9ycyB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRhYmxlQ29uZmlnIHtcclxuXHJcblxyXG5cclxuICAgIC8vIOmAiemhuVxyXG4gICAgVGFibGVDb2x1bW5zOiBhbnkgPSBuZXcgRm9ybUFycmF5KFtdKVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKGRhdGE/OiBUYWJsZUNvbmZpZykge1xyXG4gICAgICAgIGlmIChkYXRhKSB7XHJcbiAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGRhdGEpIHtcclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzW2tleV0gPSBkYXRhW2tleV07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0IGNsYXNzIFRhYmxlRm9ybUNvbnRyb2wge1xyXG4gICAgLyoq5YiX5qCH6aKYICovXHJcbiAgICBkaXNwbGF5TmFtZTogYW55ID0gWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dO1xyXG4gICAgLyoq56m66Ze06YWN572uICovXHJcbiAgICBmb3JtQ29uZmlndXJhdGlvbjogYW55ID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuICAgIC8qKuWIl+WQjSAqL1xyXG4gICAgbmFtZTogYW55ID0gWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dO1xyXG4gICAgLy/mjqfku7bmoIfor4ZcclxuICAgIGZvcm1Db250cm9sTmFtZTogYW55ID0gWycnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dO1xyXG5cclxuICAgIC8qKuaYr+WQpuW/heWhqyAqL1xyXG4gICAgcmVxdWlyZWQ6IGFueSA9IFtmYWxzZV07XHJcbiAgICAvKirmj4/ov7AgKi9cclxuICAgIGRlc2NyaXB0aW9uOiBhbnkgPSBbJyddO1xyXG5cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHt9XHJcbn0iXX0=
|