@posiwise/smart-crm 0.0.2 → 0.0.4
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/private/components/smart-crm-accounts/smart-crm-account-details/smart-crm-account-details.component.mjs +4 -4
- package/esm2022/lib/private/components/smart-crm-accounts/smart-crm-account-files/smart-crm-account-files.component.mjs +7 -7
- package/esm2022/lib/private/components/smart-crm-accounts/smart-crm-account-info/smart-crm-account-info.component.mjs +7 -7
- package/esm2022/lib/private/components/smart-crm-accounts/smart-crm-accounts.component.mjs +5 -5
- package/esm2022/lib/private/components/smart-crm-competition/smart-crm-competition/smart-crm-competition.component.mjs +4 -4
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-actions/smart-crm-actions-details/smart-crm-actions-details.component.mjs +5 -5
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-actions/smart-crm-actions.component.mjs +14 -5
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-configuration.component.mjs +4 -4
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-opportunity-categories/smart-crm-opportunity-categories-details/smart-crm-opportunity-categories-details.component.mjs +4 -4
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-opportunity-categories/smart-crm-opportunity-categories.component.mjs +14 -5
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-source/smart-crm-source-details/smart-crm-source-details.component.mjs +4 -4
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-source/smart-crm-source.component.mjs +14 -5
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-stages/smart-crm-stage-details/smart-crm-stage-details.component.mjs +4 -4
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-stages/smart-crm-stages.component.mjs +13 -5
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-widgets/smart-crm-widgets-details/smart-crm-widgets-details.component.mjs +4 -4
- package/esm2022/lib/private/components/smart-crm-configuration/smart-crm-widgets/smart-crm-widgets.component.mjs +5 -5
- package/esm2022/lib/private/components/smart-crm-contacts/smart-crm-contact-details/smart-crm-contact-details.component.mjs +4 -4
- package/esm2022/lib/private/components/smart-crm-contacts/smart-crm-contact-info/smart-crm-contact-info.component.mjs +5 -5
- package/esm2022/lib/private/components/smart-crm-contacts/smart-crm-contacts.component.mjs +5 -5
- package/esm2022/lib/private/components/smart-crm-customer/smart-crm-customer-success/smart-crm-customer-success.component.mjs +4 -4
- package/esm2022/lib/private/components/smart-crm-insight/smart-crm-insight.component.mjs +4 -4
- package/esm2022/lib/private/components/smart-crm-insight/smart-crm-overview/smart-crm-overview.component.mjs +5 -5
- package/esm2022/lib/private/components/smart-crm-leads/smart-crm-leads-details/smart-crm-leads-details.component.mjs +5 -5
- package/esm2022/lib/private/components/smart-crm-leads/smart-crm-leads.component.mjs +5 -5
- package/esm2022/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-contacts/smart-crm-marketing-contacts.component.mjs +5 -5
- package/esm2022/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-details/smart-crm-marketing-details.component.mjs +4 -4
- package/esm2022/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-list.component.mjs +5 -5
- package/esm2022/lib/private/components/smart-crm-marketing/smart-crm-marketing-list/smart-crm-marketing-view-details/smart-crm-marketing-view-details.component.mjs +4 -4
- package/esm2022/lib/private/components/smart-crm-marketing/smart-crm-marketing.component.mjs +4 -4
- package/esm2022/lib/private/components/smart-crm-opportunities/smart-crm-board/smart-crm-board.component.mjs +32 -16
- package/esm2022/lib/private/components/smart-crm-opportunities/smart-crm-opportunities-list/smart-crm-opportunities-details/smart-crm-opportunities-details.component.mjs +41 -15
- package/esm2022/lib/private/components/smart-crm-opportunities/smart-crm-opportunities-list/smart-crm-opportunities-info/smart-crm-opportunities-info.component.mjs +5 -5
- package/esm2022/lib/private/components/smart-crm-opportunities/smart-crm-opportunities-list/smart-crm-opportunities-list.component.mjs +82 -22
- package/esm2022/lib/private/components/smart-crm-opportunities/smart-crm-opportunities.component.mjs +4 -4
- package/esm2022/lib/private/components/smart-crm-summary/smart-crm-summary-actions/smart-crm-summary-actions.component.mjs +5 -5
- package/esm2022/lib/private/components/smart-crm-summary/smart-crm-summary-others/smart-crm-summary-others.component.mjs +5 -5
- package/esm2022/lib/private/components/smart-crm-summary/smart-crm-summary.component.mjs +4 -4
- package/esm2022/lib/private/components/smart-crm-tabs/smart-crm-tabs.component.mjs +4 -4
- package/esm2022/lib/private/smart-crm-private.module.mjs +5 -5
- package/esm2022/lib/private/smart-crm-private.routing.module.mjs +5 -5
- package/esm2022/lib/public/components/smart-crm-newsletter-confirmation/smart-crm-newsletter-confirmation.component.mjs +4 -4
- package/esm2022/lib/public/components/smart-crm-newsletter-unsubscribe/smart-crm-newsletter-unsubscribe.component.mjs +4 -4
- package/esm2022/lib/public/components/smart-crm-signup/smart-crm-signup.component.mjs +4 -4
- package/esm2022/lib/public/smart-crm-public.module.mjs +5 -5
- package/esm2022/lib/public/smart-crm-public.routing.module.mjs +5 -5
- package/esm2022/lib/shared/models/smart-crm.model.mjs +6 -3
- package/fesm2022/posiwise-smart-crm.mjs +330 -192
- package/fesm2022/posiwise-smart-crm.mjs.map +1 -1
- package/lib/private/components/smart-crm-accounts/smart-crm-account-files/smart-crm-account-files.component.d.ts +1 -1
- package/lib/private/components/smart-crm-accounts/smart-crm-account-info/smart-crm-account-info.component.d.ts +1 -1
- package/lib/private/components/smart-crm-configuration/smart-crm-actions/smart-crm-actions.component.d.ts +1 -0
- package/lib/private/components/smart-crm-configuration/smart-crm-opportunity-categories/smart-crm-opportunity-categories.component.d.ts +1 -0
- package/lib/private/components/smart-crm-configuration/smart-crm-source/smart-crm-source.component.d.ts +1 -0
- package/lib/private/components/smart-crm-configuration/smart-crm-stages/smart-crm-stages.component.d.ts +1 -0
- package/lib/private/components/smart-crm-opportunities/smart-crm-board/smart-crm-board.component.d.ts +2 -2
- package/lib/private/components/smart-crm-opportunities/smart-crm-opportunities-list/smart-crm-opportunities-details/smart-crm-opportunities-details.component.d.ts +3 -1
- package/lib/private/components/smart-crm-opportunities/smart-crm-opportunities-list/smart-crm-opportunities-list.component.d.ts +11 -1
- package/lib/private/components/smart-crm-summary/smart-crm-summary-others/smart-crm-summary-others.component.d.ts +7 -7
- package/lib/shared/models/smart-crm.model.d.ts +2 -1
- package/package.json +3 -3
|
@@ -114,11 +114,11 @@ export class SmartCrmWidgetsComponent extends AppBaseComponent {
|
|
|
114
114
|
ngOnDestroy() {
|
|
115
115
|
super.ngOnDestroy();
|
|
116
116
|
}
|
|
117
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
118
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.
|
|
117
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmWidgetsComponent, deps: [{ token: i0.Injector }, { token: i1.CrmService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
118
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartCrmWidgetsComponent, selector: "pw-smart-crm-widgets", usesInheritance: true, ngImport: i0, template: "<div class=\"row\">\n <div class=\"col-12 mb-3\">\n <p>Please define the widgets you want to use.</p>\n <a class=\"btn btn-sm btn-outline-primary float-end\"\n data-cy=\"add-contact\"\n [routerLink]=\"['/' + subscription?.slug + routers.widgetsDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i>\n {{ 'Crm.Widgets.AddWidgets' | transloco }}\n </a>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div class=\"col-12\">\n <div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.crm_widget_relationships\"\n [paginator]=\"data.object_count !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search source...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"crm_widget_id\">\n {{ 'Crm.Widgets.CrmWidget' | transloco }}\n <p-sortIcon field=\"crm_widget_id\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"position\">\n {{ 'Crm.Widgets.Position' | transloco }}\n <p-sortIcon field=\"position\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"visible\">\n {{ 'Crm.Widgets.Visible' | transloco }}\n <p-sortIcon field=\"visible\"></p-sortIcon>\n </th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-widget>\n <tr>\n <td data-head=\"Crm Widget\">{{ widget.crm_widget }}</td>\n <td data-head=\"Position\">\n <span class=\"badge\"\n [appDynamicBadge]=\"{\n itemsArray: positions,\n item: widget?.position\n }\"\n color=\"default\">{{ widget.position }}</span>\n </td>\n <td data-head=\"Visible\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: widget?.visible\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ !!widget?.visible }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline\">\n <ng-container *ngIf=\"hasAccess\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[\n '/' + subscription?.slug + routers.widgetsDetails,\n widget.id\n ]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (click)=\"onDelete(widget.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ng-container>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"data.object_count === 0 && data.unfiltered_count !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span class=\"total-records-count\"*ngIf=\"data.object_count !== 0\">{{ 'Label.Total' | transloco }}: {{ data.object_count }}</span>\n </div>\n </div>\n</div>\n<div *ngIf=\"data.unfiltered_count === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.Widgets.NoDataMessage' | transloco\"> </pw-no-data>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.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: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "directive", type: i5.DynamicBadgeDirective, selector: "[appDynamicBadge]", inputs: ["appDynamicBadge", "color"] }, { kind: "directive", type: i6.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i7.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i8.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "component", type: i9.ProgressSpinner, selector: "p-progressSpinner", inputs: ["styleClass", "style", "strokeWidth", "fill", "animationDuration", "ariaLabel"] }, { kind: "component", type: i10.Table, selector: "p-table", inputs: ["frozenColumns", "frozenValue", "style", "styleClass", "tableStyle", "tableStyleClass", "paginator", "pageLinks", "rowsPerPageOptions", "alwaysShowPaginator", "paginatorPosition", "paginatorStyleClass", "paginatorDropdownAppendTo", "paginatorDropdownScrollHeight", "currentPageReportTemplate", "showCurrentPageReport", "showJumpToPageDropdown", "showJumpToPageInput", "showFirstLastIcon", "showPageLinks", "defaultSortOrder", "sortMode", "resetPageOnSort", "selectionMode", "selectionPageOnly", "contextMenuSelection", "contextMenuSelectionMode", "dataKey", "metaKeySelection", "rowSelectable", "rowTrackBy", "lazy", "lazyLoadOnInit", "compareSelectionBy", "csvSeparator", "exportFilename", "filters", "globalFilterFields", "filterDelay", "filterLocale", "expandedRowKeys", "editingRowKeys", "rowExpandMode", "scrollable", "scrollDirection", "rowGroupMode", "scrollHeight", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "virtualScrollDelay", "frozenWidth", "responsive", "contextMenu", "resizableColumns", "columnResizeMode", "reorderableColumns", "loading", "loadingIcon", "showLoader", "rowHover", "customSort", "showInitialSortBadge", "autoLayout", "exportFunction", "exportHeader", "stateKey", "stateStorage", "editMode", "groupRowsBy", "groupRowsByOrder", "responsiveLayout", "breakpoint", "paginatorLocale", "value", "columns", "first", "rows", "totalRecords", "sortField", "sortOrder", "multiSortMeta", "selection", "selectAll", "virtualRowHeight"], outputs: ["contextMenuSelectionChange", "selectAllChange", "selectionChange", "onRowSelect", "onRowUnselect", "onPage", "onSort", "onFilter", "onLazyLoad", "onRowExpand", "onRowCollapse", "onContextMenuSelect", "onColResize", "onColReorder", "onRowReorder", "onEditInit", "onEditComplete", "onEditCancel", "onHeaderCheckboxToggle", "sortFunction", "firstChange", "rowsChange", "onStateSave", "onStateRestore"] }, { kind: "directive", type: i10.SortableColumn, selector: "[pSortableColumn]", inputs: ["pSortableColumn", "pSortableColumnDisabled"] }, { kind: "component", type: i10.SortIcon, selector: "p-sortIcon", inputs: ["field"] }, { kind: "component", type: i11.NoDataComponent, selector: "pw-no-data", inputs: ["message", "description", "withImage"] }, { kind: "pipe", type: i12.TranslocoPipe, name: "transloco" }] }); }
|
|
119
119
|
}
|
|
120
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
120
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmWidgetsComponent, decorators: [{
|
|
121
121
|
type: Component,
|
|
122
|
-
args: [{ selector: 'pw-smart-crm-widgets', template: "<div class=\"row\">\n <div class=\"col-12 mb-3\">\n <p>Please define the widgets you want to use.</p>\n <a class=\"btn btn-sm btn-outline-primary float-end\"\n data-cy=\"add-contact\"\n [routerLink]=\"['/' + subscription?.slug + routers.widgetsDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i>\n {{ 'Crm.Widgets.AddWidgets' | transloco }}\n </a>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div class=\"col-12\">\n <div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.crm_widget_relationships\"\n [paginator]=\"
|
|
122
|
+
args: [{ selector: 'pw-smart-crm-widgets', template: "<div class=\"row\">\n <div class=\"col-12 mb-3\">\n <p>Please define the widgets you want to use.</p>\n <a class=\"btn btn-sm btn-outline-primary float-end\"\n data-cy=\"add-contact\"\n [routerLink]=\"['/' + subscription?.slug + routers.widgetsDetails + 'add']\">\n <i class=\"fa fa-plus-circle\" aria-hidden=\"true\"></i>\n {{ 'Crm.Widgets.AddWidgets' | transloco }}\n </a>\n </div>\n <div class=\"w-100 text-center mt-3\"\n *ngIf=\"!isLoaded\">\n <p-progressSpinner strokeWidth=\"2\"> </p-progressSpinner>\n </div>\n <div class=\"col-12\">\n <div class=\"primeng-datatable-container table-responsive\"\n [class.hideTable]=\"data.unfiltered_count === 0\">\n <p-table #dt\n [value]=\"data.crm_widget_relationships\"\n [paginator]=\"data.object_count !== 0\"\n [lazy]=\"true\"\n [rows]=\"PAGE_SIZE\"\n [totalRecords]=\"data.object_count\"\n [loading]=\"loading\"\n [filterDelay]=\"1000\"\n (onLazyLoad)=\"onLazyLoad($event)\"\n [customSort]=\"true\">\n <ng-template pTemplate=\"caption\">\n <div class=\"text-end\">\n <i class=\"fa fa-search mt-2 me-2\" aria-hidden=\"true\"></i>\n <input type=\"text\"\n [(ngModel)]=\"searchText\"\n pInputText\n size=\"50\"\n placeholder=\"Search source...\"\n (input)=\"dt.filterGlobal($event.target.value, 'contains')\"\n class=\"mw-90\" />\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\">\n <tr>\n <th scope=\"true\"\n pSortableColumn=\"crm_widget_id\">\n {{ 'Crm.Widgets.CrmWidget' | transloco }}\n <p-sortIcon field=\"crm_widget_id\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"position\">\n {{ 'Crm.Widgets.Position' | transloco }}\n <p-sortIcon field=\"position\"></p-sortIcon>\n </th>\n <th scope=\"true\"\n pSortableColumn=\"visible\">\n {{ 'Crm.Widgets.Visible' | transloco }}\n <p-sortIcon field=\"visible\"></p-sortIcon>\n </th>\n <th scope=\"true\">{{ 'Label.Actions' | transloco }}</th>\n </tr>\n </ng-template>\n <ng-template pTemplate=\"body\"\n let-widget>\n <tr>\n <td data-head=\"Crm Widget\">{{ widget.crm_widget }}</td>\n <td data-head=\"Position\">\n <span class=\"badge\"\n [appDynamicBadge]=\"{\n itemsArray: positions,\n item: widget?.position\n }\"\n color=\"default\">{{ widget.position }}</span>\n </td>\n <td data-head=\"Visible\">\n <span [appDynamicBadge]=\"{\n itemsArray: [true, false],\n item: widget?.visible\n }\"\n color=\"success-danger\"\n class=\"badge\">{{ !!widget?.visible }}</span>\n </td>\n <td data-head=\"Action\">\n <ul class=\"list-unstyled list-inline\">\n <ng-container *ngIf=\"hasAccess\">\n <li ngbTooltip=\"Edit\"\n class=\"me-2 me-sm-3\"\n [routerLink]=\"[\n '/' + subscription?.slug + routers.widgetsDetails,\n widget.id\n ]\">\n <i class=\"fa fa-edit edit-icon\" aria-hidden=\"true\"></i>\n </li>\n <li ngbTooltip=\"Delete\"\n class=\"me-2 me-sm-3\">\n <i\n class=\"fa fa-trash delete-icon\"\n (click)=\"onDelete(widget.id)\"\n aria-hidden=\"true\"\n ></i>\n </li>\n </ng-container>\n </ul>\n </td>\n </tr>\n </ng-template>\n </p-table>\n <div *ngIf=\"data.object_count === 0 && data.unfiltered_count !== 0\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Search.NoDataMessage'| transloco\" [description]=\"'Search.NoDataDescription' | transloco\" >\n </pw-no-data>\n </div>\n <span class=\"total-records-count\"*ngIf=\"data.object_count !== 0\">{{ 'Label.Total' | transloco }}: {{ data.object_count }}</span>\n </div>\n </div>\n</div>\n<div *ngIf=\"data.unfiltered_count === 0 && isLoaded\">\n <pw-no-data [withImage]=\"true\" [message]=\"'Crm.Widgets.NoDataMessage' | transloco\"> </pw-no-data>\n</div>\n" }]
|
|
123
123
|
}], ctorParameters: () => [{ type: i0.Injector }, { type: i1.CrmService }, { type: i0.ChangeDetectorRef }] });
|
|
124
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY3JtLXdpZGdldHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zbWFydC1jcm0vc3JjL2xpYi9wcml2YXRlL2NvbXBvbmVudHMvc21hcnQtY3JtLWNvbmZpZ3VyYXRpb24vc21hcnQtY3JtLXdpZGdldHMvc21hcnQtY3JtLXdpZGdldHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zbWFydC1jcm0vc3JjL2xpYi9wcml2YXRlL2NvbXBvbmVudHMvc21hcnQtY3JtLWNvbmZpZ3VyYXRpb24vc21hcnQtY3JtLXdpZGdldHMvc21hcnQtY3JtLXdpZGdldHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUdYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHeEQsT0FBTyxFQUFFLFNBQVMsRUFBd0IsTUFBTSw0QkFBNEIsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBTXpELE1BQU0sT0FBTyx3QkFDVCxTQUFRLGdCQUFnQjtJQTZCeEIsWUFDSSxRQUFrQixFQUNWLFVBQXNCLEVBQ3RCLEdBQXNCO1FBRTlCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUhSLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUE3QmxDLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsWUFBTyxHQUFHLElBQUksQ0FBQztR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dXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSW5qZWN0b3IsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJPVVRFUlMgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvcm91dGVycy9yb3V0ZXJzJztcbmltcG9ydCB7IENybVNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2Uvc21hcnQtY3JtLXNoYXJlZCc7XG5pbXBvcnQgeyBMYXp5TG9hZEV2ZW50IH0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5pbXBvcnQgeyBQQUdFX1NJWkUsIFBhZ2luZywgU3Vic2NyaXB0aW9uIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgQ3JtV2lkZ2V0UmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlL2NybS13aWRnZXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LXNtYXJ0LWNybS13aWRnZXRzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc21hcnQtY3JtLXdpZGdldHMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0Q3JtV2lkZ2V0c0NvbXBvbmVudFxuICAgIGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWRcbntcbiAgICBzZWFyY2hUZXh0ID0gJyc7XG5cbiAgICBsb2FkaW5nID0gdHJ1ZTtcblxuICAgIGRhdGE6IENybVdpZGdldFJlc3BvbnNlID0ge1xuICAgICAgICBjcm1fd2lkZ2V0X3JlbGF0aW9uc2hpcHM6IFtdLFxuICAgICAgICBvYmplY3RfY291bnQ6IDAsXG4gICAgICAgIHVuZmlsdGVyZWRfY291bnQ6IDBcbiAgICB9O1xuXG4gICAgaGFzQWNjZXNzID0gZmFsc2U7XG5cbiAgICBpc0xvYWRlZCA9IGZhbHNlO1xuXG4gICAgc3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcblxuICAgIGFsbFdpZGdldHM6IGFueVtdO1xuXG4gICAgcG9zaXRpb25zID0gW107XG5cbiAgICBwcml2YXRlIHBhZ2UgPSAxO1xuXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICByb3V0ZXJzID0gUk9VVEVSUztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgY3JtU2VydmljZTogQ3JtU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5nZXRVc2VyU3Vic2NyaXB0aW9uKCkuc3Vic2NyaWJlKHN1YnNjcmlwdGlvbiA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHN1YnNjcmlwdGlvbjtcbiAgICAgICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbj8uaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhc0FjY2VzcyA9IHRoaXMuaGFzQWRtaW5BY2Nlc3ModGhpcy5zdWJzY3JpcHRpb24/LmlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgb25MYXp5TG9hZChldmVudDogTGF6eUxvYWRFdmVudCkge1xuICAgICAgICBjb25zdCBwYWdlRGV0YWlscyA9IEhlbHBlclNlcnZpY2Uub25UYWJsZUxhenlMb2FkKGV2ZW50KTtcbiAgICAgICAgdGhpcy5wYWdlID0gcGFnZURldGFpbHMucGFnZTtcbiAgICAgICAgdGhpcy5nZXRBbGxTdWJzY3JpcHRpb25XaWRnZXRzKHtcbiAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnZSxcbiAgICAgICAgICAgIHBhZ2Vfc2l6ZTogUEFHRV9TSVpFLFxuICAgICAgICAgICAgb3JkZXJfYnk6IHBhZ2VEZXRhaWxzLnNvcnRGaWVsZCxcbiAgICAgICAgICAgIG9yZGVyX2RpcmVjdGlvbjogcGFnZURldGFpbHMuc29ydE9yZGVyLFxuICAgICAgICAgICAgc2VhcmNoOiB0aGlzLnNlYXJjaFRleHRcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ2V0V2lkZ2V0UG9zaXRpb25zKCk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGdldCBhbGwgd2lkZ2V0cyAqL1xuICAgIHByaXZhdGUgZ2V0QWxsU3Vic2NyaXB0aW9uV2lkZ2V0cyhwYWdpbmc6IFBhZ2luZykge1xuICAgICAgICB0aGlzLmdldFVzZXJTdWJzY3JpcHRpb25JZCgpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gcmVzcG9uc2U7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNybVNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgLmdldEFsbFN1YnNjcmlwdGlvbldpZGdldHModGhpcy5zdWJzY3JpcHRpb25JZCwgcGFnaW5nKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFsbFdpZGdldHMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YSA9IHJlcztcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmFkZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGdldCBhbGwgd2lkZ2V0cyAqL1xuICAgIHByaXZhdGUgZ2V0QWxsV2lkZ2V0cygpIHtcbiAgICAgICAgdGhpcy5jcm1TZXJ2aWNlLmdldEFsbFdpZGdldHModGhpcy5zdWJzY3JpcHRpb25JZCkuc3Vic2NyaWJlKHdpZGdldHMgPT4ge1xuICAgICAgICAgICAgdGhpcy5hbGxXaWRnZXRzID0gd2lkZ2V0cy5jcm1fd2lkZ2V0cyB8fCBbXTtcbiAgICAgICAgICAgIHRoaXMuZGF0YS5jcm1fd2lkZ2V0X3JlbGF0aW9uc2hpcHM/LmZvckVhY2goc3Vic2NyaXB0aW9uV2lkZ2V0ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFsbFdpZGdldHM/LmZvckVhY2god2lkZ2V0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1YnNjcmlwdGlvbldpZGdldC5jcm1fd2lkZ2V0X2lkID09PSB3aWRnZXQuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbldpZGdldFsnY3JtX3dpZGdldCddID0gd2lkZ2V0Lm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdG8gZGVsZXRlIHdpZGdldCAqL1xuICAgIG9uRGVsZXRlKGlkOiBudW1iZXIpIHtcbiAgICAgICAgSGVscGVyU2VydmljZS5yYWlzZURlbGV0ZVBvcHVwKCkudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JtU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAuZGVsZXRlU3Vic2NyaXB0aW9uV2lkZ2V0KGlkLCB0aGlzLnN1YnNjcmlwdGlvbj8uaWQpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBbGxTdWJzY3JpcHRpb25XaWRnZXRzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZV9zaXplOiBQQUdFX1NJWkVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlKCdDcm0uV2lkZ2V0cy5EZWxldGVkTWVzc2FnZScpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGdldCBwb3NpdGlvbnMgKi9cbiAgICBwcml2YXRlIGdldFdpZGdldFBvc2l0aW9ucygpIHtcbiAgICAgICAgdGhpcy5jcm1TZXJ2aWNlLmdldFdpZGdldFBvc2l0aW9ucyh0aGlzLnN1YnNjcmlwdGlvbklkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSByZXNwb25zZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTNcIj5cbiAgICA8cD5QbGVhc2UgZGVmaW5lIHRoZSB3aWRnZXRzIHlvdSB3YW50IHRvIHVzZS48L3A+XG4gICAgPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnkgZmxvYXQtZW5kXCJcbiAgICAgIGRhdGEtY3k9XCJhZGQtY29udGFjdFwiXG4gICAgICBbcm91dGVyTGlua109XCJbJy8nICsgc3Vic2NyaXB0aW9uPy5zbHVnICsgcm91dGVycy53aWRnZXRzRGV0YWlscyArICdhZGQnXVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzLWNpcmNsZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgIHt7ICdDcm0uV2lkZ2V0cy5BZGRXaWRnZXRzJyB8IHRyYW5zbG9jbyB9fVxuICAgIDwvYT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCJcbiAgICAqbmdJZj1cIiFpc0xvYWRlZFwiPlxuICAgIDxwLXByb2dyZXNzU3Bpbm5lciBzdHJva2VXaWR0aD1cIjJcIj4gPC9wLXByb2dyZXNzU3Bpbm5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicHJpbWVuZy1kYXRhdGFibGUtY29udGFpbmVyIHRhYmxlLXJlc3BvbnNpdmVcIlxuICAgICAgW2NsYXNzLmhpZGVUYWJsZV09XCJkYXRhLnVuZmlsdGVyZWRfY291bnQgPT09IDBcIj5cbiAgICAgIDxwLXRhYmxlICNkdFxuICAgICAgICBbdmFsdWVdPVwiZGF0YS5jcm1fd2lkZ2V0X3JlbGF0aW9uc2hpcHNcIlxuICAgICAgICBbcGFnaW5hdG9yXT1cInRydWVcIlxuICAgICAgICBbbGF6eV09XCJ0cnVlXCJcbiAgICAgICAgW3Jvd3NdPVwiUEFHRV9TSVpFXCJcbiAgICAgICAgW3RvdGFsUmVjb3Jkc109XCJkYXRhLm9iamVjdF9jb3VudFwiXG4gICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgICAgICBbZmlsdGVyRGVsYXldPVwiMTAwMFwiXG4gICAgICAgIChvbkxhenlMb2FkKT1cIm9uTGF6eUxvYWQoJGV2ZW50KVwiXG4gICAgICAgIFtjdXN0b21Tb3J0XT1cInRydWVcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1lbmRcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtc2VhcmNoIG10LTIgbWUtMlwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwic2VhcmNoVGV4dFwiXG4gICAgICAgICAgICAgIHBJbnB1dFRleHRcbiAgICAgICAgICAgICAgc2l6ZT1cIjUwXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggc291cmNlLi4uXCJcbiAgICAgICAgICAgICAgKGlucHV0KT1cImR0LmZpbHRlckdsb2JhbCgkZXZlbnQudGFyZ2V0LnZhbHVlLCAnY29udGFpbnMnKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwibXctOTBcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCI+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cImNybV93aWRnZXRfaWRcIj5cbiAgICAgICAgICAgICAge3sgJ0NybS5XaWRnZXRzLkNybVdpZGdldCcgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgICAgICAgPHAtc29ydEljb24gZmllbGQ9XCJjcm1fd2lkZ2V0X2lkXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJwb3NpdGlvblwiPlxuICAgICAgICAgICAgICB7eyAnQ3JtLldpZGdldHMuUG9zaXRpb24nIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwicG9zaXRpb25cIj48L3Atc29ydEljb24+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIHBTb3J0YWJsZUNvbHVtbj1cInZpc2libGVcIj5cbiAgICAgICAgICAgICAge3sgJ0NybS5XaWRnZXRzLlZpc2libGUnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwidmlzaWJsZVwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCI+e3sgJ0xhYmVsLkFjdGlvbnMnIHwgdHJhbnNsb2NvIH19PC90aD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiYm9keVwiXG4gICAgICAgICAgbGV0LXdpZGdldD5cbiAgICAgICAgICA8dHI+XG4gICAgICAgICAgICA8dGQgZGF0YS1oZWFkPVwiQ3JtIFdpZGdldFwiPnt7IHdpZGdldC5jcm1fd2lkZ2V0IH19PC90ZD5cbiAgICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJQb3NpdGlvblwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlXCJcbiAgICAgICAgICAgICAgICBbYXBwRHluYW1pY0JhZGdlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zQXJyYXk6IHBvc2l0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW06IHdpZGdldD8ucG9zaXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJkZWZhdWx0XCI+e3sgd2lkZ2V0LnBvc2l0aW9uIH19PC9zcGFuPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJWaXNpYmxlXCI+XG4gICAgICAgICAgICAgIDxzcGFuIFthcHBEeW5hbWljQmFkZ2VdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNBcnJheTogW3RydWUsIGZhbHNlXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW06IHdpZGdldD8udmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICBjb2xvcj1cInN1Y2Nlc3MtZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlXCI+e3sgISF3aWRnZXQ/LnZpc2libGUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgPHRkIGRhdGEtaGVhZD1cIkFjdGlvblwiPlxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIGxpc3QtaW5saW5lXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhhc0FjY2Vzc1wiPlxuICAgICAgICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJFZGl0XCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZS0yIG1lLXNtLTNcIlxuICAgICAgICAgICAgICAgICAgICBbcm91dGVyTGlua109XCJbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvJyArIHN1YnNjcmlwdGlvbj8uc2x1ZyArIHJvdXRlcnMud2lkZ2V0c0RldGFpbHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZGdldC5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cIj5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lZGl0IGVkaXQtaWNvblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICA8bGkgbmdiVG9vbHRpcD1cIkRlbGV0ZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtdHJhc2ggZGVsZXRlLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGUod2lkZ2V0LmlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaT5cbiAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDwvdHI+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L3AtdGFibGU+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZGF0YS5vYmplY3RfY291bnQgPT09IDAgJiYgZGF0YS51bmZpbHRlcmVkX2NvdW50ICE9PSAwXCI+XG4gICAgICAgIDxwdy1uby1kYXRhIG1lc3NhZ2U9XCJObyBSZXN1bHRcIj4gPC9wdy1uby1kYXRhPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cInRvdGFsLXJlY29yZHMtY291bnRcIj57eyAnTGFiZWwuVG90YWwnIHwgdHJhbnNsb2NvIH19OiB7eyBkYXRhLm9iamVjdF9jb3VudCB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJkYXRhLnVuZmlsdGVyZWRfY291bnQgPT09IDAgJiYgaXNMb2FkZWRcIj5cbiAgPHB3LW5vLWRhdGEgW21lc3NhZ2VdPVwiJ0NybS5XaWRnZXRzLk5vRGF0YU1lc3NhZ2UnIHwgdHJhbnNsb2NvXCI+IDwvcHctbm8tZGF0YT5cbjwvZGl2PlxuIl19
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY3JtLXdpZGdldHMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zbWFydC1jcm0vc3JjL2xpYi9wcml2YXRlL2NvbXBvbmVudHMvc21hcnQtY3JtLWNvbmZpZ3VyYXRpb24vc21hcnQtY3JtLXdpZGdldHMvc21hcnQtY3JtLXdpZGdldHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9zbWFydC1jcm0vc3JjL2xpYi9wcml2YXRlL2NvbXBvbmVudHMvc21hcnQtY3JtLWNvbmZpZ3VyYXRpb24vc21hcnQtY3JtLXdpZGdldHMvc21hcnQtY3JtLXdpZGdldHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsUUFBUSxFQUdYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUM3RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHeEQsT0FBTyxFQUFFLFNBQVMsRUFBd0IsTUFBTSw0QkFBNEIsQ0FBQztBQUU3RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7Ozs7Ozs7Ozs7O0FBTXpELE1BQU0sT0FBTyx3QkFDVCxTQUFRLGdCQUFnQjtJQTZCeEIsWUFDSSxRQUFrQixFQUNWLFVBQXNCLEVBQ3RCLEdBQXNCO1FBRTlCLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUhSLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUE3QmxDLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFFaEIsWUFBTyxHQUFHLElBQUksQ0FBQztR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dXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgSW5qZWN0b3IsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJPVVRFUlMgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvcm91dGVycy9yb3V0ZXJzJztcbmltcG9ydCB7IENybVNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2Uvc21hcnQtY3JtLXNoYXJlZCc7XG5pbXBvcnQgeyBMYXp5TG9hZEV2ZW50IH0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5pbXBvcnQgeyBQQUdFX1NJWkUsIFBhZ2luZywgU3Vic2NyaXB0aW9uIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi11dGlsaXRpZXMnO1xuaW1wb3J0IHsgQ3JtV2lkZ2V0UmVzcG9uc2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlL2NybS13aWRnZXQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IEhlbHBlclNlcnZpY2UgfSBmcm9tICdAcG9zaXdpc2UvaGVscGVyLXNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3B3LXNtYXJ0LWNybS13aWRnZXRzJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc21hcnQtY3JtLXdpZGdldHMuY29tcG9uZW50Lmh0bWwnXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0Q3JtV2lkZ2V0c0NvbXBvbmVudFxuICAgIGV4dGVuZHMgQXBwQmFzZUNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0NoZWNrZWRcbntcbiAgICBzZWFyY2hUZXh0ID0gJyc7XG5cbiAgICBsb2FkaW5nID0gdHJ1ZTtcblxuICAgIGRhdGE6IENybVdpZGdldFJlc3BvbnNlID0ge1xuICAgICAgICBjcm1fd2lkZ2V0X3JlbGF0aW9uc2hpcHM6IFtdLFxuICAgICAgICBvYmplY3RfY291bnQ6IDAsXG4gICAgICAgIHVuZmlsdGVyZWRfY291bnQ6IDBcbiAgICB9O1xuXG4gICAgaGFzQWNjZXNzID0gZmFsc2U7XG5cbiAgICBpc0xvYWRlZCA9IGZhbHNlO1xuXG4gICAgc3Vic2NyaXB0aW9uSWQ6IG51bWJlcjtcblxuICAgIGFsbFdpZGdldHM6IGFueVtdO1xuXG4gICAgcG9zaXRpb25zID0gW107XG5cbiAgICBwcml2YXRlIHBhZ2UgPSAxO1xuXG4gICAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICByb3V0ZXJzID0gUk9VVEVSUztcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3IsXG4gICAgICAgIHByaXZhdGUgY3JtU2VydmljZTogQ3JtU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGluamVjdG9yKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5nZXRVc2VyU3Vic2NyaXB0aW9uKCkuc3Vic2NyaWJlKHN1YnNjcmlwdGlvbiA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHN1YnNjcmlwdGlvbjtcbiAgICAgICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbj8uaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhc0FjY2VzcyA9IHRoaXMuaGFzQWRtaW5BY2Nlc3ModGhpcy5zdWJzY3JpcHRpb24/LmlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgb25MYXp5TG9hZChldmVudDogTGF6eUxvYWRFdmVudCkge1xuICAgICAgICBjb25zdCBwYWdlRGV0YWlscyA9IEhlbHBlclNlcnZpY2Uub25UYWJsZUxhenlMb2FkKGV2ZW50KTtcbiAgICAgICAgdGhpcy5wYWdlID0gcGFnZURldGFpbHMucGFnZTtcbiAgICAgICAgdGhpcy5nZXRBbGxTdWJzY3JpcHRpb25XaWRnZXRzKHtcbiAgICAgICAgICAgIHBhZ2U6IHRoaXMucGFnZSxcbiAgICAgICAgICAgIHBhZ2Vfc2l6ZTogUEFHRV9TSVpFLFxuICAgICAgICAgICAgb3JkZXJfYnk6IHBhZ2VEZXRhaWxzLnNvcnRGaWVsZCxcbiAgICAgICAgICAgIG9yZGVyX2RpcmVjdGlvbjogcGFnZURldGFpbHMuc29ydE9yZGVyLFxuICAgICAgICAgICAgc2VhcmNoOiB0aGlzLnNlYXJjaFRleHRcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZ2V0V2lkZ2V0UG9zaXRpb25zKCk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGdldCBhbGwgd2lkZ2V0cyAqL1xuICAgIHByaXZhdGUgZ2V0QWxsU3Vic2NyaXB0aW9uV2lkZ2V0cyhwYWdpbmc6IFBhZ2luZykge1xuICAgICAgICB0aGlzLmdldFVzZXJTdWJzY3JpcHRpb25JZCgpLnN1YnNjcmliZShyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbklkID0gcmVzcG9uc2U7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNybVNlcnZpY2VcbiAgICAgICAgICAgICAgICAgICAgLmdldEFsbFN1YnNjcmlwdGlvbldpZGdldHModGhpcy5zdWJzY3JpcHRpb25JZCwgcGFnaW5nKVxuICAgICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldEFsbFdpZGdldHMoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YSA9IHJlcztcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgLmFkZCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGdldCBhbGwgd2lkZ2V0cyAqL1xuICAgIHByaXZhdGUgZ2V0QWxsV2lkZ2V0cygpIHtcbiAgICAgICAgdGhpcy5jcm1TZXJ2aWNlLmdldEFsbFdpZGdldHModGhpcy5zdWJzY3JpcHRpb25JZCkuc3Vic2NyaWJlKHdpZGdldHMgPT4ge1xuICAgICAgICAgICAgdGhpcy5hbGxXaWRnZXRzID0gd2lkZ2V0cy5jcm1fd2lkZ2V0cyB8fCBbXTtcbiAgICAgICAgICAgIHRoaXMuZGF0YS5jcm1fd2lkZ2V0X3JlbGF0aW9uc2hpcHM/LmZvckVhY2goc3Vic2NyaXB0aW9uV2lkZ2V0ID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmFsbFdpZGdldHM/LmZvckVhY2god2lkZ2V0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHN1YnNjcmlwdGlvbldpZGdldC5jcm1fd2lkZ2V0X2lkID09PSB3aWRnZXQuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbldpZGdldFsnY3JtX3dpZGdldCddID0gd2lkZ2V0Lm5hbWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogRnVuY3Rpb24gdG8gZGVsZXRlIHdpZGdldCAqL1xuICAgIG9uRGVsZXRlKGlkOiBudW1iZXIpIHtcbiAgICAgICAgSGVscGVyU2VydmljZS5yYWlzZURlbGV0ZVBvcHVwKCkudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgaWYgKHJlcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY3JtU2VydmljZVxuICAgICAgICAgICAgICAgICAgICAuZGVsZXRlU3Vic2NyaXB0aW9uV2lkZ2V0KGlkLCB0aGlzLnN1YnNjcmlwdGlvbj8uaWQpXG4gICAgICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRBbGxTdWJzY3JpcHRpb25XaWRnZXRzKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiB0aGlzLnBhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZV9zaXplOiBQQUdFX1NJWkVcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlKCdDcm0uV2lkZ2V0cy5EZWxldGVkTWVzc2FnZScpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGdldCBwb3NpdGlvbnMgKi9cbiAgICBwcml2YXRlIGdldFdpZGdldFBvc2l0aW9ucygpIHtcbiAgICAgICAgdGhpcy5jcm1TZXJ2aWNlLmdldFdpZGdldFBvc2l0aW9ucyh0aGlzLnN1YnNjcmlwdGlvbklkKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5wb3NpdGlvbnMgPSByZXNwb25zZTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTNcIj5cbiAgICA8cD5QbGVhc2UgZGVmaW5lIHRoZSB3aWRnZXRzIHlvdSB3YW50IHRvIHVzZS48L3A+XG4gICAgPGEgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1vdXRsaW5lLXByaW1hcnkgZmxvYXQtZW5kXCJcbiAgICAgIGRhdGEtY3k9XCJhZGQtY29udGFjdFwiXG4gICAgICBbcm91dGVyTGlua109XCJbJy8nICsgc3Vic2NyaXB0aW9uPy5zbHVnICsgcm91dGVycy53aWRnZXRzRGV0YWlscyArICdhZGQnXVwiPlxuICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzLWNpcmNsZVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cbiAgICAgIHt7ICdDcm0uV2lkZ2V0cy5BZGRXaWRnZXRzJyB8IHRyYW5zbG9jbyB9fVxuICAgIDwvYT5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ3LTEwMCB0ZXh0LWNlbnRlciBtdC0zXCJcbiAgICAqbmdJZj1cIiFpc0xvYWRlZFwiPlxuICAgIDxwLXByb2dyZXNzU3Bpbm5lciBzdHJva2VXaWR0aD1cIjJcIj4gPC9wLXByb2dyZXNzU3Bpbm5lcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicHJpbWVuZy1kYXRhdGFibGUtY29udGFpbmVyIHRhYmxlLXJlc3BvbnNpdmVcIlxuICAgICAgW2NsYXNzLmhpZGVUYWJsZV09XCJkYXRhLnVuZmlsdGVyZWRfY291bnQgPT09IDBcIj5cbiAgICAgIDxwLXRhYmxlICNkdFxuICAgICAgICBbdmFsdWVdPVwiZGF0YS5jcm1fd2lkZ2V0X3JlbGF0aW9uc2hpcHNcIlxuICAgICAgICBbcGFnaW5hdG9yXT1cImRhdGEub2JqZWN0X2NvdW50ICE9PSAwXCJcbiAgICAgICAgW2xhenldPVwidHJ1ZVwiXG4gICAgICAgIFtyb3dzXT1cIlBBR0VfU0laRVwiXG4gICAgICAgIFt0b3RhbFJlY29yZHNdPVwiZGF0YS5vYmplY3RfY291bnRcIlxuICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgICAgICAgW2ZpbHRlckRlbGF5XT1cIjEwMDBcIlxuICAgICAgICAob25MYXp5TG9hZCk9XCJvbkxhenlMb2FkKCRldmVudClcIlxuICAgICAgICBbY3VzdG9tU29ydF09XCJ0cnVlXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJjYXB0aW9uXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZW5kXCI+XG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXNlYXJjaCBtdC0yIG1lLTJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInNlYXJjaFRleHRcIlxuICAgICAgICAgICAgICBwSW5wdXRUZXh0XG4gICAgICAgICAgICAgIHNpemU9XCI1MFwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIHNvdXJjZS4uLlwiXG4gICAgICAgICAgICAgIChpbnB1dCk9XCJkdC5maWx0ZXJHbG9iYWwoJGV2ZW50LnRhcmdldC52YWx1ZSwgJ2NvbnRhaW5zJylcIlxuICAgICAgICAgICAgICBjbGFzcz1cIm13LTkwXCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImhlYWRlclwiPlxuICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJjcm1fd2lkZ2V0X2lkXCI+XG4gICAgICAgICAgICAgIHt7ICdDcm0uV2lkZ2V0cy5Dcm1XaWRnZXQnIHwgdHJhbnNsb2NvIH19XG4gICAgICAgICAgICAgIDxwLXNvcnRJY29uIGZpZWxkPVwiY3JtX3dpZGdldF9pZFwiPjwvcC1zb3J0SWNvbj5cbiAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICA8dGggc2NvcGU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgcFNvcnRhYmxlQ29sdW1uPVwicG9zaXRpb25cIj5cbiAgICAgICAgICAgICAge3sgJ0NybS5XaWRnZXRzLlBvc2l0aW9uJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInBvc2l0aW9uXCI+PC9wLXNvcnRJY29uPlxuICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgIDx0aCBzY29wZT1cInRydWVcIlxuICAgICAgICAgICAgICBwU29ydGFibGVDb2x1bW49XCJ2aXNpYmxlXCI+XG4gICAgICAgICAgICAgIHt7ICdDcm0uV2lkZ2V0cy5WaXNpYmxlJyB8IHRyYW5zbG9jbyB9fVxuICAgICAgICAgICAgICA8cC1zb3J0SWNvbiBmaWVsZD1cInZpc2libGVcIj48L3Atc29ydEljb24+XG4gICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgPHRoIHNjb3BlPVwidHJ1ZVwiPnt7ICdMYWJlbC5BY3Rpb25zJyB8IHRyYW5zbG9jbyB9fTwvdGg+XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIlxuICAgICAgICAgIGxldC13aWRnZXQ+XG4gICAgICAgICAgPHRyPlxuICAgICAgICAgICAgPHRkIGRhdGEtaGVhZD1cIkNybSBXaWRnZXRcIj57eyB3aWRnZXQuY3JtX3dpZGdldCB9fTwvdGQ+XG4gICAgICAgICAgICA8dGQgZGF0YS1oZWFkPVwiUG9zaXRpb25cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZVwiXG4gICAgICAgICAgICAgICAgW2FwcER5bmFtaWNCYWRnZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtc0FycmF5OiBwb3NpdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtOiB3aWRnZXQ/LnBvc2l0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIGNvbG9yPVwiZGVmYXVsdFwiPnt7IHdpZGdldC5wb3NpdGlvbiB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICA8dGQgZGF0YS1oZWFkPVwiVmlzaWJsZVwiPlxuICAgICAgICAgICAgICA8c3BhbiBbYXBwRHluYW1pY0JhZGdlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zQXJyYXk6IFt0cnVlLCBmYWxzZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtOiB3aWRnZXQ/LnZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJzdWNjZXNzLWRhbmdlclwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZVwiPnt7ICEhd2lkZ2V0Py52aXNpYmxlIH19PC9zcGFuPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDx0ZCBkYXRhLWhlYWQ9XCJBY3Rpb25cIj5cbiAgICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC11bnN0eWxlZCBsaXN0LWlubGluZVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJoYXNBY2Nlc3NcIj5cbiAgICAgICAgICAgICAgICAgIDxsaSBuZ2JUb29sdGlwPVwiRWRpdFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMiBtZS1zbS0zXCJcbiAgICAgICAgICAgICAgICAgICAgW3JvdXRlckxpbmtdPVwiW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLycgKyBzdWJzY3JpcHRpb24/LnNsdWcgKyByb3V0ZXJzLndpZGdldHNEZXRhaWxzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWRnZXQuaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWRpdCBlZGl0LWljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgPGxpIG5nYlRvb2x0aXA9XCJEZWxldGVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTIgbWUtc20tM1wiPlxuICAgICAgICAgICAgICAgICAgICA8aVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZhIGZhLXRyYXNoIGRlbGV0ZS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlKHdpZGdldC5pZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2k+XG4gICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICA8L3RyPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9wLXRhYmxlPlxuICAgICAgPGRpdiAqbmdJZj1cImRhdGEub2JqZWN0X2NvdW50ID09PSAwICYmIGRhdGEudW5maWx0ZXJlZF9jb3VudCAhPT0gMFwiPlxuICAgICAgICA8cHctbm8tZGF0YSBbd2l0aEltYWdlXT1cInRydWVcIiBbbWVzc2FnZV09XCInU2VhcmNoLk5vRGF0YU1lc3NhZ2UnfCB0cmFuc2xvY29cIiBbZGVzY3JpcHRpb25dPVwiJ1NlYXJjaC5Ob0RhdGFEZXNjcmlwdGlvbicgfCB0cmFuc2xvY29cIiA+XG4gICAgPC9wdy1uby1kYXRhPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cInRvdGFsLXJlY29yZHMtY291bnRcIipuZ0lmPVwiZGF0YS5vYmplY3RfY291bnQgIT09IDBcIj57eyAnTGFiZWwuVG90YWwnIHwgdHJhbnNsb2NvIH19OiB7eyBkYXRhLm9iamVjdF9jb3VudCB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgKm5nSWY9XCJkYXRhLnVuZmlsdGVyZWRfY291bnQgPT09IDAgJiYgaXNMb2FkZWRcIj5cbiAgPHB3LW5vLWRhdGEgW3dpdGhJbWFnZV09XCJ0cnVlXCIgW21lc3NhZ2VdPVwiJ0NybS5XaWRnZXRzLk5vRGF0YU1lc3NhZ2UnIHwgdHJhbnNsb2NvXCI+IDwvcHctbm8tZGF0YT5cbjwvZGl2PlxuIl19
|
|
@@ -130,8 +130,8 @@ export class SmartCrmContactDetailsComponent extends AppBaseComponent {
|
|
|
130
130
|
ngOnDestroy() {
|
|
131
131
|
super.ngOnDestroy();
|
|
132
132
|
}
|
|
133
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.
|
|
134
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.6", type: SmartCrmContactDetailsComponent, selector: "pw-smart-crm-contact-details", usesInheritance: true, ngImport: i0, template: "<div class=\"me-auto col-xs-6\">\n <a href=\"javascript:void(0)\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"m-subheader__title m-subheader__title--separator\">\n <span>{{ 'Crm.ContactMessage.Contact' | transloco }}:\n {{\n data?.first_name\n ? data?.first_name + ' ' + data.last_name\n : ('Label.AddNew' | transloco)\n }}</span>\n </h3>\n</div>\n<div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.FirstName' | transloco\"\n name=\"first_name\"\n [errorMsg]=\"'Crm.ContactMessage.FirstNameErrorMessage' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"first_name\"\n id=\"first_name\"\n [ngClass]=\"{ 'is-invalid': submitted && f['first_name'].errors }\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.LastName' | transloco\"\n name=\"last_name\"\n [errorMsg]=\"'Crm.ContactMessage.LastNameErrorMessage' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"last_name\"\n id=\"last_name\"\n [ngClass]=\"{ 'is-invalid': submitted && f['last_name'].errors }\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.Headline' | transloco\"\n name=\"headline\"\n [errorMsg]=\"'Crm.ContactMessage.HeadlineErrorMessage' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"headline\"\n id=\"headline\"\n [ngClass]=\"{ 'is-invalid': submitted && f['headline'].errors }\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4 col-lg-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.Tel' | transloco\"\n name=\"tel\"\n [errorMsg]=\"'Crm.ContactMessage.TelErrorMessage' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"tel\"\n id=\"tel\"\n [ngClass]=\"{ 'is-invalid': submitted && f['tel'].errors }\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.Email' | transloco\"\n name=\"email\"\n errorMsg=\"{{\n f['email']?.errors?.required ? 'Please enter email' : 'Please Enter valid email'\n }}\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"email\"\n id=\"email\"\n [ngClass]=\"{ 'is-invalid': submitted && f['email'].errors }\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4\">\n <div class=\"mb-3\">\n <pw-input-container [label]=\"'Crm.ContactMessage.EmailVerified' | transloco\"\n class=\"nowrap\"\n name=\"email_verified\">\n <ui-switch formControlName=\"email_verified\"\n name=\"email_verified\"\n [ngClass]=\"{ 'is-invalid': submitted && f['email_verified'].errors }\">\n </ui-switch>\n </pw-input-container>\n </div>\n </div>\n\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.LinkedInUrl' | transloco\"\n name=\"linkedin_url\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"linkedin_url\"\n id=\"linkedin_url\" />\n </pw-input-container>\n </div>\n\n <div class=\"ui-fluid skills-modal col-sm-4\">\n <label class=\"mb-2\">{{ 'Crm.ContactMessage.Account' | transloco\n }}<span class=\"text-danger\">*</span></label>\n <p-autoComplete [suggestions]=\"filteredAccounts\"\n formControlName=\"crm_account_id\"\n dataKey=\"id\"\n field=\"name\"\n [dropdown]=\"true\"\n (completeMethod)=\"search($event)\"\n styleClass=\"w-100\"\n placeholder=\"Search accounts\"\n [multiple]=\"false\"\n autocomplete=\"off\">\n </p-autoComplete>\n </div>\n\n <div class=\"col-12 col-sm-4 col-lg-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.Department' | transloco\"\n name=\"department_id\"\n *ngIf=\"departments$ | async as departments\">\n <select class=\"form-select\"\n formControlName=\"department_id\"\n [ngClass]=\"{ 'is-invalid': submitted && f['department_id'].errors }\">\n <option *ngFor=\"let option of departments['organization_departments']\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4 col-lg-4\">\n <label>{{ 'Crm.ContactMessage.Potential' | transloco }}</label>\n <select formControlName=\"potential\"\n class=\"form-control form-select\"\n [ngClass]=\"{ 'is-invalid': submitted && f['potential'].errors }\">\n <option *ngFor=\"let option of potentials\"\n [value]=\"option\">{{ option }}</option>\n </select>\n </div>\n\n <div class=\"col-12 col-sm-4 col-lg-4\">\n <label>{{ 'Crm.ContactMessage.Labels' | transloco }} </label>\n <p-multiSelect [options]=\"labels\"\n formControlName=\"labels\"\n appendTo=\"body\"></p-multiSelect>\n </div>\n\n <div class=\"col-12 col-sm-4 col-lg-4\"\n *ngIf=\"crmSources$ | async as source\">\n <label>{{ 'Crm.ContactMessage.Source' | transloco }}</label>\n <select formControlName=\"crm_source_id\"\n class=\"form-control form-select\"\n [ngClass]=\"{ 'is-invalid': submitted && f['crm_source_id'].errors }\">\n <option value=\"\">select crm source</option>\n <option *ngFor=\"let option of source['crm_sources']\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\n </div>\n\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.DateOfBirth' | transloco\"\n name=\"dob\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"yyyy-mm-dd\"\n formControlName=\"dob\"\n ngbDatepicker\n #d=\"ngbDatepicker\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"d.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"back()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"form.invalid\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i5.UiSwitchComponent, selector: "ui-switch", inputs: ["size", "color", "switchOffColor", "switchColor", "defaultBgColor", "defaultBoColor", "checkedLabel", "uncheckedLabel", "checkedTextColor", "uncheckedTextColor", "beforeChange", "ariaLabel", "checked", "disabled", "reverse", "loading"], outputs: ["change", "changeEvent", "valueChange"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i6.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "component", type: i7.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: i8.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "component", type: i9.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
133
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmContactDetailsComponent, deps: [{ token: i1.CommonService }, { token: i2.CrmService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
134
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.11", type: SmartCrmContactDetailsComponent, selector: "pw-smart-crm-contact-details", usesInheritance: true, ngImport: i0, template: "<div class=\"me-auto col-xs-6\">\n <a href=\"javascript:void(0)\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"m-subheader__title m-subheader__title--separator\">\n <span>{{ 'Crm.ContactMessage.Contact' | transloco }}:\n {{\n data?.first_name\n ? data?.first_name + ' ' + data.last_name\n : ('Label.AddNew' | transloco)\n }}</span>\n </h3>\n</div>\n<div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.FirstName' | transloco\"\n name=\"first_name\"\n [errorMsg]=\"'Crm.ContactMessage.FirstNameErrorMessage' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"first_name\"\n id=\"first_name\"\n [ngClass]=\"{ 'is-invalid': submitted && f['first_name'].errors }\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.LastName' | transloco\"\n name=\"last_name\"\n [errorMsg]=\"'Crm.ContactMessage.LastNameErrorMessage' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"last_name\"\n id=\"last_name\"\n [ngClass]=\"{ 'is-invalid': submitted && f['last_name'].errors }\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.Headline' | transloco\"\n name=\"headline\"\n [errorMsg]=\"'Crm.ContactMessage.HeadlineErrorMessage' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"headline\"\n id=\"headline\"\n [ngClass]=\"{ 'is-invalid': submitted && f['headline'].errors }\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4 col-lg-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.Tel' | transloco\"\n name=\"tel\"\n [errorMsg]=\"'Crm.ContactMessage.TelErrorMessage' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"tel\"\n id=\"tel\"\n [ngClass]=\"{ 'is-invalid': submitted && f['tel'].errors }\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.Email' | transloco\"\n name=\"email\"\n errorMsg=\"{{\n f['email']?.errors?.required ? 'Please enter email' : 'Please Enter valid email'\n }}\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"email\"\n id=\"email\"\n [ngClass]=\"{ 'is-invalid': submitted && f['email'].errors }\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4\">\n <div class=\"mb-3\">\n <pw-input-container [label]=\"'Crm.ContactMessage.EmailVerified' | transloco\"\n class=\"nowrap\"\n name=\"email_verified\">\n <ui-switch formControlName=\"email_verified\"\n name=\"email_verified\"\n [ngClass]=\"{ 'is-invalid': submitted && f['email_verified'].errors }\">\n </ui-switch>\n </pw-input-container>\n </div>\n </div>\n\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.LinkedInUrl' | transloco\"\n name=\"linkedin_url\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"linkedin_url\"\n id=\"linkedin_url\" />\n </pw-input-container>\n </div>\n\n <div class=\"ui-fluid skills-modal col-sm-4\">\n <label class=\"mb-2\">{{ 'Crm.ContactMessage.Account' | transloco\n }}<span class=\"text-danger\">*</span></label>\n <p-autoComplete [suggestions]=\"filteredAccounts\"\n formControlName=\"crm_account_id\"\n dataKey=\"id\"\n field=\"name\"\n [dropdown]=\"true\"\n (completeMethod)=\"search($event)\"\n styleClass=\"w-100\"\n placeholder=\"Search accounts\"\n [multiple]=\"false\"\n autocomplete=\"off\">\n </p-autoComplete>\n </div>\n\n <div class=\"col-12 col-sm-4 col-lg-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.Department' | transloco\"\n name=\"department_id\"\n *ngIf=\"departments$ | async as departments\">\n <select class=\"form-select\"\n formControlName=\"department_id\"\n [ngClass]=\"{ 'is-invalid': submitted && f['department_id'].errors }\">\n <option *ngFor=\"let option of departments['organization_departments']\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4 col-lg-4\">\n <label>{{ 'Crm.ContactMessage.Potential' | transloco }}</label>\n <select formControlName=\"potential\"\n class=\"form-control form-select\"\n [ngClass]=\"{ 'is-invalid': submitted && f['potential'].errors }\">\n <option *ngFor=\"let option of potentials\"\n [value]=\"option\">{{ option }}</option>\n </select>\n </div>\n\n <div class=\"col-12 col-sm-4 col-lg-4\">\n <label>{{ 'Crm.ContactMessage.Labels' | transloco }} </label>\n <p-multiSelect [options]=\"labels\"\n formControlName=\"labels\"\n appendTo=\"body\"></p-multiSelect>\n </div>\n\n <div class=\"col-12 col-sm-4 col-lg-4\"\n *ngIf=\"crmSources$ | async as source\">\n <label>{{ 'Crm.ContactMessage.Source' | transloco }}</label>\n <select formControlName=\"crm_source_id\"\n class=\"form-control form-select\"\n [ngClass]=\"{ 'is-invalid': submitted && f['crm_source_id'].errors }\">\n <option value=\"\">select crm source</option>\n <option *ngFor=\"let option of source['crm_sources']\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\n </div>\n\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.DateOfBirth' | transloco\"\n name=\"dob\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"yyyy-mm-dd\"\n formControlName=\"dob\"\n ngbDatepicker\n #d=\"ngbDatepicker\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"d.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"back()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"form.invalid\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n</div>\n", dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i5.UiSwitchComponent, selector: "ui-switch", inputs: ["size", "color", "switchOffColor", "switchColor", "defaultBgColor", "defaultBoColor", "checkedLabel", "uncheckedLabel", "checkedTextColor", "uncheckedTextColor", "beforeChange", "ariaLabel", "checked", "disabled", "reverse", "loading"], outputs: ["change", "changeEvent", "valueChange"] }, { kind: "directive", type: i4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i6.NgbInputDatepicker, selector: "input[ngbDatepicker]", inputs: ["autoClose", "contentTemplate", "datepickerClass", "dayTemplate", "dayTemplateData", "displayMonths", "firstDayOfWeek", "footerTemplate", "markDisabled", "minDate", "maxDate", "navigation", "outsideDays", "placement", "popperOptions", "restoreFocus", "showWeekNumbers", "startDate", "container", "positionTarget", "weekdays", "disabled"], outputs: ["dateSelect", "navigate", "closed"], exportAs: ["ngbDatepicker"] }, { kind: "component", type: i7.MultiSelect, selector: "p-multiSelect", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "component", type: i8.AutoComplete, selector: "p-autoComplete", inputs: ["minLength", "delay", "style", "panelStyle", "styleClass", "panelStyleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "readonly", "disabled", "scrollHeight", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "maxlength", "name", "required", "size", "appendTo", "autoHighlight", "forceSelection", "type", "autoZIndex", "baseZIndex", "ariaLabel", "dropdownAriaLabel", "ariaLabelledBy", "dropdownIcon", "unique", "group", "completeOnFocus", "showClear", "field", "dropdown", "showEmptyMessage", "dropdownMode", "multiple", "tabindex", "dataKey", "emptyMessage", "showTransitionOptions", "hideTransitionOptions", "autofocus", "autocomplete", "optionGroupChildren", "optionGroupLabel", "overlayOptions", "suggestions", "itemSize", "optionLabel", "optionValue", "id", "searchMessage", "emptySelectionMessage", "selectionMessage", "autoOptionFocus", "selectOnFocus", "searchLocale", "optionDisabled", "focusOnHover", "variant"], outputs: ["completeMethod", "onSelect", "onUnselect", "onFocus", "onBlur", "onDropdownClick", "onClear", "onKeyUp", "onShow", "onHide", "onLazyLoad"] }, { kind: "component", type: i9.InputContainerComponent, selector: "pw-input-container", inputs: ["name", "label", "labelClass", "tooltipPosition", "required", "errorMsg", "isReadOnly", "showTooltip", "tooltipText", "showTriangle", "afterLabel", "showAfterLabel", "showTriangleText"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.TranslocoPipe, name: "transloco" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
135
135
|
}
|
|
136
136
|
__decorate([
|
|
137
137
|
ValidateForm('form'),
|
|
@@ -139,8 +139,8 @@ __decorate([
|
|
|
139
139
|
__metadata("design:paramtypes", []),
|
|
140
140
|
__metadata("design:returntype", void 0)
|
|
141
141
|
], SmartCrmContactDetailsComponent.prototype, "onSave", null);
|
|
142
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.
|
|
142
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartCrmContactDetailsComponent, decorators: [{
|
|
143
143
|
type: Component,
|
|
144
144
|
args: [{ selector: 'pw-smart-crm-contact-details', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"me-auto col-xs-6\">\n <a href=\"javascript:void(0)\"\n (click)=\"back()\"\n class=\"previous\"><i class=\"fa fa-arrow-alt-circle-left\" aria-hidden=\"true\"></i></a>\n <h3 class=\"m-subheader__title m-subheader__title--separator\">\n <span>{{ 'Crm.ContactMessage.Contact' | transloco }}:\n {{\n data?.first_name\n ? data?.first_name + ' ' + data.last_name\n : ('Label.AddNew' | transloco)\n }}</span>\n </h3>\n</div>\n<div class=\"p-2 mt-3\">\n <form [formGroup]=\"form\"\n (ngSubmit)=\"onSave()\">\n <div class=\"row\">\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.FirstName' | transloco\"\n name=\"first_name\"\n [errorMsg]=\"'Crm.ContactMessage.FirstNameErrorMessage' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"first_name\"\n id=\"first_name\"\n [ngClass]=\"{ 'is-invalid': submitted && f['first_name'].errors }\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.LastName' | transloco\"\n name=\"last_name\"\n [errorMsg]=\"'Crm.ContactMessage.LastNameErrorMessage' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"last_name\"\n id=\"last_name\"\n [ngClass]=\"{ 'is-invalid': submitted && f['last_name'].errors }\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.Headline' | transloco\"\n name=\"headline\"\n [errorMsg]=\"'Crm.ContactMessage.HeadlineErrorMessage' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"headline\"\n id=\"headline\"\n [ngClass]=\"{ 'is-invalid': submitted && f['headline'].errors }\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4 col-lg-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.Tel' | transloco\"\n name=\"tel\"\n [errorMsg]=\"'Crm.ContactMessage.TelErrorMessage' | transloco\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"tel\"\n id=\"tel\"\n [ngClass]=\"{ 'is-invalid': submitted && f['tel'].errors }\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.Email' | transloco\"\n name=\"email\"\n errorMsg=\"{{\n f['email']?.errors?.required ? 'Please enter email' : 'Please Enter valid email'\n }}\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"email\"\n id=\"email\"\n [ngClass]=\"{ 'is-invalid': submitted && f['email'].errors }\" />\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4\">\n <div class=\"mb-3\">\n <pw-input-container [label]=\"'Crm.ContactMessage.EmailVerified' | transloco\"\n class=\"nowrap\"\n name=\"email_verified\">\n <ui-switch formControlName=\"email_verified\"\n name=\"email_verified\"\n [ngClass]=\"{ 'is-invalid': submitted && f['email_verified'].errors }\">\n </ui-switch>\n </pw-input-container>\n </div>\n </div>\n\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.LinkedInUrl' | transloco\"\n name=\"linkedin_url\">\n <input type=\"text\"\n class=\"form-control\"\n formControlName=\"linkedin_url\"\n id=\"linkedin_url\" />\n </pw-input-container>\n </div>\n\n <div class=\"ui-fluid skills-modal col-sm-4\">\n <label class=\"mb-2\">{{ 'Crm.ContactMessage.Account' | transloco\n }}<span class=\"text-danger\">*</span></label>\n <p-autoComplete [suggestions]=\"filteredAccounts\"\n formControlName=\"crm_account_id\"\n dataKey=\"id\"\n field=\"name\"\n [dropdown]=\"true\"\n (completeMethod)=\"search($event)\"\n styleClass=\"w-100\"\n placeholder=\"Search accounts\"\n [multiple]=\"false\"\n autocomplete=\"off\">\n </p-autoComplete>\n </div>\n\n <div class=\"col-12 col-sm-4 col-lg-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.Department' | transloco\"\n name=\"department_id\"\n *ngIf=\"departments$ | async as departments\">\n <select class=\"form-select\"\n formControlName=\"department_id\"\n [ngClass]=\"{ 'is-invalid': submitted && f['department_id'].errors }\">\n <option *ngFor=\"let option of departments['organization_departments']\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 col-sm-4 col-lg-4\">\n <label>{{ 'Crm.ContactMessage.Potential' | transloco }}</label>\n <select formControlName=\"potential\"\n class=\"form-control form-select\"\n [ngClass]=\"{ 'is-invalid': submitted && f['potential'].errors }\">\n <option *ngFor=\"let option of potentials\"\n [value]=\"option\">{{ option }}</option>\n </select>\n </div>\n\n <div class=\"col-12 col-sm-4 col-lg-4\">\n <label>{{ 'Crm.ContactMessage.Labels' | transloco }} </label>\n <p-multiSelect [options]=\"labels\"\n formControlName=\"labels\"\n appendTo=\"body\"></p-multiSelect>\n </div>\n\n <div class=\"col-12 col-sm-4 col-lg-4\"\n *ngIf=\"crmSources$ | async as source\">\n <label>{{ 'Crm.ContactMessage.Source' | transloco }}</label>\n <select formControlName=\"crm_source_id\"\n class=\"form-control form-select\"\n [ngClass]=\"{ 'is-invalid': submitted && f['crm_source_id'].errors }\">\n <option value=\"\">select crm source</option>\n <option *ngFor=\"let option of source['crm_sources']\"\n [value]=\"option.id\">\n {{ option.name }}\n </option>\n </select>\n </div>\n\n <div class=\"col-12 col-sm-4\">\n <pw-input-container [label]=\"'Crm.ContactMessage.DateOfBirth' | transloco\"\n name=\"dob\">\n <div class=\"input-group\">\n <input class=\"form-control\"\n placeholder=\"yyyy-mm-dd\"\n formControlName=\"dob\"\n ngbDatepicker\n #d=\"ngbDatepicker\" />\n <div class=\"input-group-append\">\n <button class=\"btn btn-primary\"\n (click)=\"d.toggle()\"\n type=\"button\">\n <i class=\"fa fa-calendar\" aria-hidden=\"true\"></i>\n </button>\n </div>\n </div>\n </pw-input-container>\n </div>\n\n <div class=\"col-12 text-end mt-3\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"back()\">\n {{ 'Button.Cancel' | transloco }}\n </button>\n <button type=\"submit\"\n class=\"btn btn-primary\"\n [disabled]=\"form.invalid\">\n {{ 'Button.Submit' | transloco }}\n </button>\n </div>\n </div>\n </form>\n</div>\n" }]
|
|
145
145
|
}], ctorParameters: () => [{ type: i1.CommonService }, { type: i2.CrmService }, { type: i0.Injector }], propDecorators: { onSave: [] } });
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY3JtLWNvbnRhY3QtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NtYXJ0LWNybS9zcmMvbGliL3ByaXZhdGUvY29tcG9uZW50cy9zbWFydC1jcm0tY29udGFjdHMvc21hcnQtY3JtLWNvbnRhY3QtZGV0YWlscy9zbWFydC1jcm0tY29udGFjdC1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc21hcnQtY3JtL3NyYy9saWIvcHJpdmF0ZS9jb21wb25lbnRzL3NtYXJ0LWNybS1jb250YWN0cy9zbWFydC1jcm0tY29udGFjdC1kZXRhaWxzL3NtYXJ0LWNybS1jb250YWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUdoRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBS3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7Ozs7QUFPL0MsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLGdCQUFnQjtJQTJCakUsb0NBQW9DO0lBQ3BDLElBQUksQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDOUIsQ0FBQztJQUVELFlBQ1ksYUFBNEIsRUFDNUIsVUFB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Y3RvciwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOZ2JEYXRlU3RydWN0IH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgQXBwU21hcnRDcm0gfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvbW9kZWxzL3NtYXJ0LWNybS5tb2RlbCc7XG5pbXBvcnQgeyBDcm1TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL3NtYXJ0LWNybS1zaGFyZWQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDcm1BY2NvdW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZS9jcm0tYWNjb3VudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ3JtQ29udGFjdCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9pbnRlcmZhY2UvY3JtLWNvbnRhY3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcbmltcG9ydCB7IFZhbGlkYXRlRm9ybSB9IGZyb20gJ0Bwb3Npd2lzZS91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctc21hcnQtY3JtLWNvbnRhY3QtZGV0YWlscycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LWNybS1jb250YWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0Q3JtQ29udGFjdERldGFpbHNDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgICBkYXRhOiBDcm1Db250YWN0O1xuXG4gICAgaWQ6IG51bWJlcjtcblxuICAgIHVzZXI6IFVzZXI7XG5cbiAgICBzdWJtaXR0ZWQgPSBmYWxzZTtcblxuICAgIGRlcGFydG1lbnRzJDogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gICAgYWNjb3VudHM6IENybUFjY291bnRbXTtcblxuICAgIHN1YnNjcmlwdGlvbklkOiBudW1iZXI7XG5cbiAgICBhY2NvdW50SWQ6IG51bWJlcjtcblxuICAgIGZpbHRlcmVkQWNjb3VudHM6IGFueSA9IFtdO1xuXG4gICAgcG90ZW50aWFscyA9IFtdO1xuXG4gICAgbGFiZWxzID0gW107XG5cbiAgICBjcm1Tb3VyY2VzJDogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGdldCBmb3JtIGNvbnRyb2xzICovXG4gICAgZ2V0IGYoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHM7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjcm1TZXJ2aWNlOiBDcm1TZXJ2aWNlLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3JcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgICAgICB0aGlzLmZvcm0gPSBBcHBTbWFydENybS5nZXRDb250YWN0c0Zvcm0oKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgdGhpcy5pZCA9IE51bWJlcihkYXRhWydpZCddKTtcbiAgICAgICAgICAgIHRoaXMuYWNjb3VudElkID0gTnVtYmVyKGRhdGFbJ2FjY291bnRJZCddKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGVwYXJ0bWVudHMkID0gdGhpcy5jb21tb25TZXJ2aWNlLmdldE9yZ2FuaXphdGlvbkRlcGFydG1lbnRzKCk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2NybV9hY2NvdW50X2lkJykuc2V0VmFsdWUobnVsbCk7XG5cbiAgICAgICAgdGhpcy5nZXRVc2VyU3Vic2NyaXB0aW9uSWQoKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgdGhpcy5jcm1Tb3VyY2VzJCA9IHRoaXMuY3JtU2VydmljZS5nZXRBbGxBY2NvdW50U291cmNlKHRoaXMuc3Vic2NyaXB0aW9uSWQpO1xuICAgICAgICAgICAgdGhpcy5nZXREZWZhdWx0VmFsdWVzKHRoaXMuc3Vic2NyaXB0aW9uSWQpO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uSWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldEFjY291bnRzQnlTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGdldCB0aGUgbGlzdCBvZiBhY2NvdW50cyBieSBzdWJzY3JpcHRpb25JZCAqL1xuICAgIHByaXZhdGUgZ2V0QWNjb3VudHNCeVN1YnNjcmlwdGlvbigpIHtcbiAgICAgICAgdGhpcy5jcm1TZXJ2aWNlLmdldEFjY291bnRzQnlTdWJzY3JpcHRpb24odGhpcy5zdWJzY3JpcHRpb25JZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmFjY291bnRzID0gcmVzLmFjY291bnRzO1xuICAgICAgICAgICAgaWYgKHRoaXMuaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldENvbnRhY3REZXRhaWxzKHRoaXMuaWQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFjY291bnRJZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjY291bnR5RGF0YSA9IHRoaXMuYWNjb3VudHMuZmluZCh4ID0+IHguaWQgPT09IHRoaXMuYWNjb3VudElkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdjcm1fYWNjb3VudF9pZCcpLnBhdGNoVmFsdWUoYWNjb3VudHlEYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGV4ZWN1dGUgb24gZm9ybSBzdWJtaXNzaW9uICovXG4gICAgQFZhbGlkYXRlRm9ybSgnZm9ybScpXG4gICAgb25TYXZlKCkge1xuICAgICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2NybV9hY2NvdW50X2lkJykuc2V0VmFsdWUodGhpcy5mb3JtLmdldCgnY3JtX2FjY291bnRfaWQnKS52YWx1ZS5pZCk7XG4gICAgICAgIHRoaXMuZm9ybS52YWx1ZS5jcm1fYWNjb3VudF9pZCA9IE51bWJlcih0aGlzLmZvcm0udmFsdWUuY3JtX2FjY291bnRfaWQpO1xuICAgICAgICBjb25zdCBkYXRhID0geyAuLi50aGlzLmZvcm0udmFsdWUgfTtcbiAgICAgICAgZGF0YS5kb2IgPSBIZWxwZXJTZXJ2aWNlLmRhdGVGb3JtYXQodGhpcy5mb3JtLmdldCgnZG9iJykudmFsdWUpO1xuICAgICAgICBjb25zdCBzdWIkID0gdGhpcy5pZFxuICAgICAgICAgICAgPyB0aGlzLmNybVNlcnZpY2UudXBkYXRlQ29udGFjdCh0aGlzLnN1YnNjcmlwdGlvbklkLCB0aGlzLmlkLCBkYXRhKVxuICAgICAgICAgICAgOiB0aGlzLmNybVNlcnZpY2UucG9zdE5ld0NvbnRhY3QodGhpcy5zdWJzY3JpcHRpb25JZCwgZGF0YSk7XG4gICAgICAgIHN1YiQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYmFjaygpO1xuICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlKCdDcm0uQ29udGFjdE1lc3NhZ2UuVXBkYXRlZE1lc3NhZ2UnKSk7XG4gICAgICAgIH0pLmFkZCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0byBnZXQgdGhlIHNwZWNpZmljIGNvbnRhY3QgZGV0YWlscyBvbiBlZGl0IGZvcm0gKi9cbiAgICBwcml2YXRlIGdldENvbnRhY3REZXRhaWxzKGlkKSB7XG4gICAgICAgIHRoaXMuY3JtU2VydmljZS5nZXRDb250YWN0QnlJZCh0aGlzLnN1YnNjcmlwdGlvbklkLCBpZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgbGV0IGRvYk9iamVjdDogTmdiRGF0ZVN0cnVjdDtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5kb2IpIHtcbiAgICAgICAgICAgICAgICBkb2JPYmplY3QgPSB7XG4gICAgICAgICAgICAgICAgICAgIHllYXI6IE51bWJlcihyZXNwb25zZS5kb2Iuc3Vic3RyaW5nKDAsIDQpKSxcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6IE51bWJlcihyZXNwb25zZS5kb2Iuc3Vic3RyaW5nKDUsIDcpKSxcbiAgICAgICAgICAgICAgICAgICAgZGF5OiBOdW1iZXIocmVzcG9uc2UuZG9iLnN1YnN0cmluZyg4LCAxMCkpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgZG9iOiBkb2JPYmplY3QgfSk7XG4gICAgICAgICAgICB0aGlzLmFjY291bnRzLmZvckVhY2goYWNjb3VudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5jcm1fYWNjb3VudF9pZCA9PT0gYWNjb3VudC5pZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdjcm1fYWNjb3VudF9pZCcpLnBhdGNoVmFsdWUoYWNjb3VudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBzZWFyY2ggYWNjb3VudHMgKi9cbiAgICBzZWFyY2goZXZlbnQpIHtcbiAgICAgICAgbGV0IGRhdGEgPSBbXTtcbiAgICAgICAgaWYgKGV2ZW50LnF1ZXJ5KSB7XG4gICAgICAgICAgICBkYXRhID0gdGhpcy5hY2NvdW50cy5maWx0ZXIoKHg6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB4Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC5xdWVyeS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hY2NvdW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgIGRhdGEucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsdGVyZWRBY2NvdW50cyA9IGRhdGE7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFZhbHVlcyhpZCkge1xuICAgICAgICB0aGlzLmNybVNlcnZpY2UuZ2V0Q3JtQ29udGFjdERlZmF1bHRWYWx1ZXMoaWQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5wb3RlbnRpYWxzID0gcmVzWydwb3RlbnRpYWwnXTtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gcmVzWydsYWJlbHMnXTtcbiAgICAgICAgICAgIGxhYmVsLmZvckVhY2godmFsID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogdmFsLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVscy5wdXNoKGRhdGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtZS1hdXRvIGNvbC14cy02XCI+XG4gIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgIChjbGljayk9XCJiYWNrKClcIlxuICAgIGNsYXNzPVwicHJldmlvdXNcIj48aSBjbGFzcz1cImZhIGZhLWFycm93LWFsdC1jaXJjbGUtbGVmdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XG4gIDxoMyBjbGFzcz1cIm0tc3ViaGVhZGVyX190aXRsZSBtLXN1YmhlYWRlcl9fdGl0bGUtLXNlcGFyYXRvclwiPlxuICAgIDxzcGFuPnt7ICdDcm0uQ29udGFjdE1lc3NhZ2UuQ29udGFjdCcgfCB0cmFuc2xvY28gfX06XG4gICAgICB7e1xuICAgICAgICAgICAgICAgIGRhdGE/LmZpcnN0X25hbWVcbiAgICAgICAgICAgICAgICAgICAgPyBkYXRhPy5maXJzdF9uYW1lICsgJyAnICsgZGF0YS5sYXN0X25hbWVcbiAgICAgICAgICAgICAgICAgICAgOiAoJ0xhYmVsLkFkZE5ldycgfCB0cmFuc2xvY28pXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgPC9oMz5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInAtMiBtdC0zXCI+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgKG5nU3VibWl0KT1cIm9uU2F2ZSgpXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNFwiPlxuICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtsYWJlbF09XCInQ3JtLkNvbnRhY3RNZXNzYWdlLkZpcnN0TmFtZScgfCB0cmFuc2xvY29cIlxuICAgICAgICAgIG5hbWU9XCJmaXJzdF9uYW1lXCJcbiAgICAgICAgICBbZXJyb3JNc2ddPVwiJ0NybS5Db250YWN0TWVzc2FnZS5GaXJzdE5hbWVFcnJvck1lc3NhZ2UnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImZpcnN0X25hbWVcIlxuICAgICAgICAgICAgaWQ9XCJmaXJzdF9uYW1lXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnZmlyc3RfbmFtZSddLmVycm9ycyB9XCIgLz5cbiAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNFwiPlxuICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtsYWJlbF09XCInQ3JtLkNvbnRhY3RNZXNzYWdlLkxhc3ROYW1lJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgbmFtZT1cImxhc3RfbmFtZVwiXG4gICAgICAgICAgW2Vycm9yTXNnXT1cIidDcm0uQ29udGFjdE1lc3NhZ2UuTGFzdE5hbWVFcnJvck1lc3NhZ2UnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxhc3RfbmFtZVwiXG4gICAgICAgICAgICBpZD1cImxhc3RfbmFtZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2xhc3RfbmFtZSddLmVycm9ycyB9XCIgLz5cbiAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNFwiPlxuICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtsYWJlbF09XCInQ3JtLkNvbnRhY3RNZXNzYWdlLkhlYWRsaW5lJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgbmFtZT1cImhlYWRsaW5lXCJcbiAgICAgICAgICBbZXJyb3JNc2ddPVwiJ0NybS5Db250YWN0TWVzc2FnZS5IZWFkbGluZUVycm9yTWVzc2FnZScgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaGVhZGxpbmVcIlxuICAgICAgICAgICAgaWQ9XCJoZWFkbGluZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2hlYWRsaW5lJ10uZXJyb3JzIH1cIiAvPlxuICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00IGNvbC1sZy00XCI+XG4gICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW2xhYmVsXT1cIidDcm0uQ29udGFjdE1lc3NhZ2UuVGVsJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgbmFtZT1cInRlbFwiXG4gICAgICAgICAgW2Vycm9yTXNnXT1cIidDcm0uQ29udGFjdE1lc3NhZ2UuVGVsRXJyb3JNZXNzYWdlJyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0ZWxcIlxuICAgICAgICAgICAgaWQ9XCJ0ZWxcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWyd0ZWwnXS5lcnJvcnMgfVwiIC8+XG4gICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTRcIj5cbiAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ0NybS5Db250YWN0TWVzc2FnZS5FbWFpbCcgfCB0cmFuc2xvY29cIlxuICAgICAgICAgIG5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgZXJyb3JNc2c9XCJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgZlsnZW1haWwnXT8uZXJyb3JzPy5yZXF1aXJlZCA/ICdQbGVhc2UgZW50ZXIgZW1haWwnIDogJ1BsZWFzZSBFbnRlciB2YWxpZCBlbWFpbCdcbiAgICAgICAgICAgICAgICAgICAgfX1cIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIlxuICAgICAgICAgICAgaWQ9XCJlbWFpbFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2VtYWlsJ10uZXJyb3JzIH1cIiAvPlxuICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ0NybS5Db250YWN0TWVzc2FnZS5FbWFpbFZlcmlmaWVkJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICBjbGFzcz1cIm5vd3JhcFwiXG4gICAgICAgICAgICBuYW1lPVwiZW1haWxfdmVyaWZpZWRcIj5cbiAgICAgICAgICAgIDx1aS1zd2l0Y2ggZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxfdmVyaWZpZWRcIlxuICAgICAgICAgICAgICBuYW1lPVwiZW1haWxfdmVyaWZpZWRcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2VtYWlsX3ZlcmlmaWVkJ10uZXJyb3JzIH1cIj5cbiAgICAgICAgICAgIDwvdWktc3dpdGNoPlxuICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00XCI+XG4gICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW2xhYmVsXT1cIidDcm0uQ29udGFjdE1lc3NhZ2UuTGlua2VkSW5VcmwnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICBuYW1lPVwibGlua2VkaW5fdXJsXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxpbmtlZGluX3VybFwiXG4gICAgICAgICAgICBpZD1cImxpbmtlZGluX3VybFwiIC8+XG4gICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ1aS1mbHVpZCBza2lsbHMtbW9kYWwgY29sLXNtLTRcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwibWItMlwiPnt7ICdDcm0uQ29udGFjdE1lc3NhZ2UuQWNjb3VudCcgfCB0cmFuc2xvY29cbiAgICAgICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICA8cC1hdXRvQ29tcGxldGUgW3N1Z2dlc3Rpb25zXT1cImZpbHRlcmVkQWNjb3VudHNcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNybV9hY2NvdW50X2lkXCJcbiAgICAgICAgICBkYXRhS2V5PVwiaWRcIlxuICAgICAgICAgIGZpZWxkPVwibmFtZVwiXG4gICAgICAgICAgW2Ryb3Bkb3duXT1cInRydWVcIlxuICAgICAgICAgIChjb21wbGV0ZU1ldGhvZCk9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAgICAgc3R5bGVDbGFzcz1cInctMTAwXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBhY2NvdW50c1wiXG4gICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcbiAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIj5cbiAgICAgICAgPC9wLWF1dG9Db21wbGV0ZT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00IGNvbC1sZy00XCI+XG4gICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW2xhYmVsXT1cIidDcm0uQ29udGFjdE1lc3NhZ2UuRGVwYXJ0bWVudCcgfCB0cmFuc2xvY29cIlxuICAgICAgICAgIG5hbWU9XCJkZXBhcnRtZW50X2lkXCJcbiAgICAgICAgICAqbmdJZj1cImRlcGFydG1lbnRzJCB8IGFzeW5jIGFzIGRlcGFydG1lbnRzXCI+XG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlcGFydG1lbnRfaWRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydkZXBhcnRtZW50X2lkJ10uZXJyb3JzIH1cIj5cbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBkZXBhcnRtZW50c1snb3JnYW5pemF0aW9uX2RlcGFydG1lbnRzJ11cIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLmlkXCI+XG4gICAgICAgICAgICAgIHt7IG9wdGlvbi5uYW1lIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNCBjb2wtbGctNFwiPlxuICAgICAgICA8bGFiZWw+e3sgJ0NybS5Db250YWN0TWVzc2FnZS5Qb3RlbnRpYWwnIHwgdHJhbnNsb2NvIH19PC9sYWJlbD5cbiAgICAgICAgPHNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJwb3RlbnRpYWxcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tc2VsZWN0XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ3BvdGVudGlhbCddLmVycm9ycyB9XCI+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHBvdGVudGlhbHNcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiPnt7IG9wdGlvbiB9fTwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00IGNvbC1sZy00XCI+XG4gICAgICAgIDxsYWJlbD57eyAnQ3JtLkNvbnRhY3RNZXNzYWdlLkxhYmVscycgfCB0cmFuc2xvY28gfX0gPC9sYWJlbD5cbiAgICAgICAgPHAtbXVsdGlTZWxlY3QgW29wdGlvbnNdPVwibGFiZWxzXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsYWJlbHNcIlxuICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1tdWx0aVNlbGVjdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00IGNvbC1sZy00XCJcbiAgICAgICAgKm5nSWY9XCJjcm1Tb3VyY2VzJCB8IGFzeW5jIGFzIHNvdXJjZVwiPlxuICAgICAgICA8bGFiZWw+e3sgJ0NybS5Db250YWN0TWVzc2FnZS5Tb3VyY2UnIHwgdHJhbnNsb2NvIH19PC9sYWJlbD5cbiAgICAgICAgPHNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJjcm1fc291cmNlX2lkXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLXNlbGVjdFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydjcm1fc291cmNlX2lkJ10uZXJyb3JzIH1cIj5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+c2VsZWN0IGNybSBzb3VyY2U8L29wdGlvbj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygc291cmNlWydjcm1fc291cmNlcyddXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24uaWRcIj5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5uYW1lIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTRcIj5cbiAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ0NybS5Db250YWN0TWVzc2FnZS5EYXRlT2ZCaXJ0aCcgfCB0cmFuc2xvY29cIlxuICAgICAgICAgIG5hbWU9XCJkb2JcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwieXl5eS1tbS1kZFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRvYlwiXG4gICAgICAgICAgICAgIG5nYkRhdGVwaWNrZXJcbiAgICAgICAgICAgICAgI2Q9XCJuZ2JEYXRlcGlja2VyXCIgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImQudG9nZ2xlKClcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNhbGVuZGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHRleHQtZW5kIG10LTNcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kZWZhdWx0IG1lLTJcIlxuICAgICAgICAgIChjbGljayk9XCJiYWNrKClcIj5cbiAgICAgICAgICB7eyAnQnV0dG9uLkNhbmNlbCcgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIj5cbiAgICAgICAgICB7eyAnQnV0dG9uLlN1Ym1pdCcgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9kaXY+XG4iXX0=
|
|
146
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtY3JtLWNvbnRhY3QtZGV0YWlscy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3NtYXJ0LWNybS9zcmMvbGliL3ByaXZhdGUvY29tcG9uZW50cy9zbWFydC1jcm0tY29udGFjdHMvc21hcnQtY3JtLWNvbnRhY3QtZGV0YWlscy9zbWFydC1jcm0tY29udGFjdC1kZXRhaWxzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvc21hcnQtY3JtL3NyYy9saWIvcHJpdmF0ZS9jb21wb25lbnRzL3NtYXJ0LWNybS1jb250YWN0cy9zbWFydC1jcm0tY29udGFjdC1kZXRhaWxzL3NtYXJ0LWNybS1jb250YWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUdoRyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDeEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBS3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7Ozs7Ozs7Ozs7QUFPL0MsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLGdCQUFnQjtJQTJCakUsb0NBQW9DO0lBQ3BDLElBQUksQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDOUIsQ0FBQztJQUVELFlBQ1ksYUFBNEIsRUFDNUIsVUFB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Y3RvciwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFVudHlwZWRGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBOZ2JEYXRlU3RydWN0IH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgQXBwU21hcnRDcm0gfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvbW9kZWxzL3NtYXJ0LWNybS5tb2RlbCc7XG5pbXBvcnQgeyBDcm1TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL3NtYXJ0LWNybS1zaGFyZWQnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDcm1BY2NvdW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZS9jcm0tYWNjb3VudC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ3JtQ29udGFjdCB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9pbnRlcmZhY2UvY3JtLWNvbnRhY3QuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFwcEJhc2VDb21wb25lbnQgfSBmcm9tICdAcG9zaXdpc2UvYXBwLWJhc2UtY29tcG9uZW50JztcbmltcG9ydCB7IFVzZXIgfSBmcm9tICdAcG9zaXdpc2UvY29tbW9uLXV0aWxpdGllcyc7XG5pbXBvcnQgeyBDb21tb25TZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2NvbW1vbi1zZXJ2aWNlcyc7XG5pbXBvcnQgeyBIZWxwZXJTZXJ2aWNlIH0gZnJvbSAnQHBvc2l3aXNlL2hlbHBlci1zZXJ2aWNlJztcbmltcG9ydCB7IFZhbGlkYXRlRm9ybSB9IGZyb20gJ0Bwb3Npd2lzZS91dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAncHctc21hcnQtY3JtLWNvbnRhY3QtZGV0YWlscycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LWNybS1jb250YWN0LWRldGFpbHMuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFNtYXJ0Q3JtQ29udGFjdERldGFpbHNDb21wb25lbnQgZXh0ZW5kcyBBcHBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIGZvcm06IFVudHlwZWRGb3JtR3JvdXA7XG5cbiAgICBkYXRhOiBDcm1Db250YWN0O1xuXG4gICAgaWQ6IG51bWJlcjtcblxuICAgIHVzZXI6IFVzZXI7XG5cbiAgICBzdWJtaXR0ZWQgPSBmYWxzZTtcblxuICAgIGRlcGFydG1lbnRzJDogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gICAgYWNjb3VudHM6IENybUFjY291bnRbXTtcblxuICAgIHN1YnNjcmlwdGlvbklkOiBudW1iZXI7XG5cbiAgICBhY2NvdW50SWQ6IG51bWJlcjtcblxuICAgIGZpbHRlcmVkQWNjb3VudHM6IGFueSA9IFtdO1xuXG4gICAgcG90ZW50aWFscyA9IFtdO1xuXG4gICAgbGFiZWxzID0gW107XG5cbiAgICBjcm1Tb3VyY2VzJDogT2JzZXJ2YWJsZTxhbnk+O1xuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGdldCBmb3JtIGNvbnRyb2xzICovXG4gICAgZ2V0IGYoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY29udHJvbHM7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgY29tbW9uU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjcm1TZXJ2aWNlOiBDcm1TZXJ2aWNlLFxuICAgICAgICBpbmplY3RvcjogSW5qZWN0b3JcbiAgICApIHtcbiAgICAgICAgc3VwZXIoaW5qZWN0b3IpO1xuICAgICAgICB0aGlzLmZvcm0gPSBBcHBTbWFydENybS5nZXRDb250YWN0c0Zvcm0oKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgICAgICAgdGhpcy5pZCA9IE51bWJlcihkYXRhWydpZCddKTtcbiAgICAgICAgICAgIHRoaXMuYWNjb3VudElkID0gTnVtYmVyKGRhdGFbJ2FjY291bnRJZCddKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuZGVwYXJ0bWVudHMkID0gdGhpcy5jb21tb25TZXJ2aWNlLmdldE9yZ2FuaXphdGlvbkRlcGFydG1lbnRzKCk7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2NybV9hY2NvdW50X2lkJykuc2V0VmFsdWUobnVsbCk7XG5cbiAgICAgICAgdGhpcy5nZXRVc2VyU3Vic2NyaXB0aW9uSWQoKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25JZCA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgdGhpcy5jcm1Tb3VyY2VzJCA9IHRoaXMuY3JtU2VydmljZS5nZXRBbGxBY2NvdW50U291cmNlKHRoaXMuc3Vic2NyaXB0aW9uSWQpO1xuICAgICAgICAgICAgdGhpcy5nZXREZWZhdWx0VmFsdWVzKHRoaXMuc3Vic2NyaXB0aW9uSWQpO1xuICAgICAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uSWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldEFjY291bnRzQnlTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGdldCB0aGUgbGlzdCBvZiBhY2NvdW50cyBieSBzdWJzY3JpcHRpb25JZCAqL1xuICAgIHByaXZhdGUgZ2V0QWNjb3VudHNCeVN1YnNjcmlwdGlvbigpIHtcbiAgICAgICAgdGhpcy5jcm1TZXJ2aWNlLmdldEFjY291bnRzQnlTdWJzY3JpcHRpb24odGhpcy5zdWJzY3JpcHRpb25JZCkuc3Vic2NyaWJlKHJlcyA9PiB7XG4gICAgICAgICAgICB0aGlzLmFjY291bnRzID0gcmVzLmFjY291bnRzO1xuICAgICAgICAgICAgaWYgKHRoaXMuaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldENvbnRhY3REZXRhaWxzKHRoaXMuaWQpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFjY291bnRJZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjY291bnR5RGF0YSA9IHRoaXMuYWNjb3VudHMuZmluZCh4ID0+IHguaWQgPT09IHRoaXMuYWNjb3VudElkKTtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdjcm1fYWNjb3VudF9pZCcpLnBhdGNoVmFsdWUoYWNjb3VudHlEYXRhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEZ1bmN0aW9uIHRvIGV4ZWN1dGUgb24gZm9ybSBzdWJtaXNzaW9uICovXG4gICAgQFZhbGlkYXRlRm9ybSgnZm9ybScpXG4gICAgb25TYXZlKCkge1xuICAgICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuZm9ybS5nZXQoJ2NybV9hY2NvdW50X2lkJykuc2V0VmFsdWUodGhpcy5mb3JtLmdldCgnY3JtX2FjY291bnRfaWQnKS52YWx1ZS5pZCk7XG4gICAgICAgIHRoaXMuZm9ybS52YWx1ZS5jcm1fYWNjb3VudF9pZCA9IE51bWJlcih0aGlzLmZvcm0udmFsdWUuY3JtX2FjY291bnRfaWQpO1xuICAgICAgICBjb25zdCBkYXRhID0geyAuLi50aGlzLmZvcm0udmFsdWUgfTtcbiAgICAgICAgZGF0YS5kb2IgPSBIZWxwZXJTZXJ2aWNlLmRhdGVGb3JtYXQodGhpcy5mb3JtLmdldCgnZG9iJykudmFsdWUpO1xuICAgICAgICBjb25zdCBzdWIkID0gdGhpcy5pZFxuICAgICAgICAgICAgPyB0aGlzLmNybVNlcnZpY2UudXBkYXRlQ29udGFjdCh0aGlzLnN1YnNjcmlwdGlvbklkLCB0aGlzLmlkLCBkYXRhKVxuICAgICAgICAgICAgOiB0aGlzLmNybVNlcnZpY2UucG9zdE5ld0NvbnRhY3QodGhpcy5zdWJzY3JpcHRpb25JZCwgZGF0YSk7XG4gICAgICAgIHN1YiQuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYmFjaygpO1xuICAgICAgICAgICAgdGhpcy50b2FzdC5zdWNjZXNzKHRoaXMudHJhbnNsYXRpb24udHJhbnNsYXRlKCdDcm0uQ29udGFjdE1lc3NhZ2UuVXBkYXRlZE1lc3NhZ2UnKSk7XG4gICAgICAgIH0pLmFkZCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBGdW5jdGlvbiB0byBnZXQgdGhlIHNwZWNpZmljIGNvbnRhY3QgZGV0YWlscyBvbiBlZGl0IGZvcm0gKi9cbiAgICBwcml2YXRlIGdldENvbnRhY3REZXRhaWxzKGlkKSB7XG4gICAgICAgIHRoaXMuY3JtU2VydmljZS5nZXRDb250YWN0QnlJZCh0aGlzLnN1YnNjcmlwdGlvbklkLCBpZCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgICAgIHRoaXMuZGF0YSA9IHJlc3BvbnNlO1xuICAgICAgICAgICAgbGV0IGRvYk9iamVjdDogTmdiRGF0ZVN0cnVjdDtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5kb2IpIHtcbiAgICAgICAgICAgICAgICBkb2JPYmplY3QgPSB7XG4gICAgICAgICAgICAgICAgICAgIHllYXI6IE51bWJlcihyZXNwb25zZS5kb2Iuc3Vic3RyaW5nKDAsIDQpKSxcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6IE51bWJlcihyZXNwb25zZS5kb2Iuc3Vic3RyaW5nKDUsIDcpKSxcbiAgICAgICAgICAgICAgICAgICAgZGF5OiBOdW1iZXIocmVzcG9uc2UuZG9iLnN1YnN0cmluZyg4LCAxMCkpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHJlc3BvbnNlKTtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgZG9iOiBkb2JPYmplY3QgfSk7XG4gICAgICAgICAgICB0aGlzLmFjY291bnRzLmZvckVhY2goYWNjb3VudCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YS5jcm1fYWNjb3VudF9pZCA9PT0gYWNjb3VudC5pZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdjcm1fYWNjb3VudF9pZCcpLnBhdGNoVmFsdWUoYWNjb3VudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBzZWFyY2ggYWNjb3VudHMgKi9cbiAgICBzZWFyY2goZXZlbnQpIHtcbiAgICAgICAgbGV0IGRhdGEgPSBbXTtcbiAgICAgICAgaWYgKGV2ZW50LnF1ZXJ5KSB7XG4gICAgICAgICAgICBkYXRhID0gdGhpcy5hY2NvdW50cy5maWx0ZXIoKHg6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB4Lm5hbWUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhldmVudC5xdWVyeS50b0xvd2VyQ2FzZSgpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hY2NvdW50cy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgIGRhdGEucHVzaChlbGVtZW50KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZmlsdGVyZWRBY2NvdW50cyA9IGRhdGE7XG4gICAgfVxuXG4gICAgZ2V0RGVmYXVsdFZhbHVlcyhpZCkge1xuICAgICAgICB0aGlzLmNybVNlcnZpY2UuZ2V0Q3JtQ29udGFjdERlZmF1bHRWYWx1ZXMoaWQpLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5wb3RlbnRpYWxzID0gcmVzWydwb3RlbnRpYWwnXTtcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gcmVzWydsYWJlbHMnXTtcbiAgICAgICAgICAgIGxhYmVsLmZvckVhY2godmFsID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbDogdmFsLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB0aGlzLmxhYmVscy5wdXNoKGRhdGEpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG92ZXJyaWRlIG5nT25EZXN0cm95KCkge1xuICAgICAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtZS1hdXRvIGNvbC14cy02XCI+XG4gIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxuICAgIChjbGljayk9XCJiYWNrKClcIlxuICAgIGNsYXNzPVwicHJldmlvdXNcIj48aSBjbGFzcz1cImZhIGZhLWFycm93LWFsdC1jaXJjbGUtbGVmdFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT48L2E+XG4gIDxoMyBjbGFzcz1cIm0tc3ViaGVhZGVyX190aXRsZSBtLXN1YmhlYWRlcl9fdGl0bGUtLXNlcGFyYXRvclwiPlxuICAgIDxzcGFuPnt7ICdDcm0uQ29udGFjdE1lc3NhZ2UuQ29udGFjdCcgfCB0cmFuc2xvY28gfX06XG4gICAgICB7e1xuICAgICAgICAgICAgICAgIGRhdGE/LmZpcnN0X25hbWVcbiAgICAgICAgICAgICAgICAgICAgPyBkYXRhPy5maXJzdF9uYW1lICsgJyAnICsgZGF0YS5sYXN0X25hbWVcbiAgICAgICAgICAgICAgICAgICAgOiAoJ0xhYmVsLkFkZE5ldycgfCB0cmFuc2xvY28pXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgPC9oMz5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInAtMiBtdC0zXCI+XG4gIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgKG5nU3VibWl0KT1cIm9uU2F2ZSgpXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNFwiPlxuICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtsYWJlbF09XCInQ3JtLkNvbnRhY3RNZXNzYWdlLkZpcnN0TmFtZScgfCB0cmFuc2xvY29cIlxuICAgICAgICAgIG5hbWU9XCJmaXJzdF9uYW1lXCJcbiAgICAgICAgICBbZXJyb3JNc2ddPVwiJ0NybS5Db250YWN0TWVzc2FnZS5GaXJzdE5hbWVFcnJvck1lc3NhZ2UnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImZpcnN0X25hbWVcIlxuICAgICAgICAgICAgaWQ9XCJmaXJzdF9uYW1lXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOiBzdWJtaXR0ZWQgJiYgZlsnZmlyc3RfbmFtZSddLmVycm9ycyB9XCIgLz5cbiAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNFwiPlxuICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtsYWJlbF09XCInQ3JtLkNvbnRhY3RNZXNzYWdlLkxhc3ROYW1lJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgbmFtZT1cImxhc3RfbmFtZVwiXG4gICAgICAgICAgW2Vycm9yTXNnXT1cIidDcm0uQ29udGFjdE1lc3NhZ2UuTGFzdE5hbWVFcnJvck1lc3NhZ2UnIHwgdHJhbnNsb2NvXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxhc3RfbmFtZVwiXG4gICAgICAgICAgICBpZD1cImxhc3RfbmFtZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2xhc3RfbmFtZSddLmVycm9ycyB9XCIgLz5cbiAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNFwiPlxuICAgICAgICA8cHctaW5wdXQtY29udGFpbmVyIFtsYWJlbF09XCInQ3JtLkNvbnRhY3RNZXNzYWdlLkhlYWRsaW5lJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgbmFtZT1cImhlYWRsaW5lXCJcbiAgICAgICAgICBbZXJyb3JNc2ddPVwiJ0NybS5Db250YWN0TWVzc2FnZS5IZWFkbGluZUVycm9yTWVzc2FnZScgfCB0cmFuc2xvY29cIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaGVhZGxpbmVcIlxuICAgICAgICAgICAgaWQ9XCJoZWFkbGluZVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2hlYWRsaW5lJ10uZXJyb3JzIH1cIiAvPlxuICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00IGNvbC1sZy00XCI+XG4gICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW2xhYmVsXT1cIidDcm0uQ29udGFjdE1lc3NhZ2UuVGVsJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgbmFtZT1cInRlbFwiXG4gICAgICAgICAgW2Vycm9yTXNnXT1cIidDcm0uQ29udGFjdE1lc3NhZ2UuVGVsRXJyb3JNZXNzYWdlJyB8IHRyYW5zbG9jb1wiPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0ZWxcIlxuICAgICAgICAgICAgaWQ9XCJ0ZWxcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWyd0ZWwnXS5lcnJvcnMgfVwiIC8+XG4gICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTRcIj5cbiAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ0NybS5Db250YWN0TWVzc2FnZS5FbWFpbCcgfCB0cmFuc2xvY29cIlxuICAgICAgICAgIG5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgZXJyb3JNc2c9XCJ7e1xuICAgICAgICAgICAgICAgICAgICAgICAgZlsnZW1haWwnXT8uZXJyb3JzPy5yZXF1aXJlZCA/ICdQbGVhc2UgZW50ZXIgZW1haWwnIDogJ1BsZWFzZSBFbnRlciB2YWxpZCBlbWFpbCdcbiAgICAgICAgICAgICAgICAgICAgfX1cIj5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIlxuICAgICAgICAgICAgaWQ9XCJlbWFpbFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2VtYWlsJ10uZXJyb3JzIH1cIiAvPlxuICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ0NybS5Db250YWN0TWVzc2FnZS5FbWFpbFZlcmlmaWVkJyB8IHRyYW5zbG9jb1wiXG4gICAgICAgICAgICBjbGFzcz1cIm5vd3JhcFwiXG4gICAgICAgICAgICBuYW1lPVwiZW1haWxfdmVyaWZpZWRcIj5cbiAgICAgICAgICAgIDx1aS1zd2l0Y2ggZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxfdmVyaWZpZWRcIlxuICAgICAgICAgICAgICBuYW1lPVwiZW1haWxfdmVyaWZpZWRcIlxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ2VtYWlsX3ZlcmlmaWVkJ10uZXJyb3JzIH1cIj5cbiAgICAgICAgICAgIDwvdWktc3dpdGNoPlxuICAgICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00XCI+XG4gICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW2xhYmVsXT1cIidDcm0uQ29udGFjdE1lc3NhZ2UuTGlua2VkSW5VcmwnIHwgdHJhbnNsb2NvXCJcbiAgICAgICAgICBuYW1lPVwibGlua2VkaW5fdXJsXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxpbmtlZGluX3VybFwiXG4gICAgICAgICAgICBpZD1cImxpbmtlZGluX3VybFwiIC8+XG4gICAgICAgIDwvcHctaW5wdXQtY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJ1aS1mbHVpZCBza2lsbHMtbW9kYWwgY29sLXNtLTRcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwibWItMlwiPnt7ICdDcm0uQ29udGFjdE1lc3NhZ2UuQWNjb3VudCcgfCB0cmFuc2xvY29cbiAgICAgICAgICAgICAgICAgICAgfX08c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+Kjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICA8cC1hdXRvQ29tcGxldGUgW3N1Z2dlc3Rpb25zXT1cImZpbHRlcmVkQWNjb3VudHNcIlxuICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNybV9hY2NvdW50X2lkXCJcbiAgICAgICAgICBkYXRhS2V5PVwiaWRcIlxuICAgICAgICAgIGZpZWxkPVwibmFtZVwiXG4gICAgICAgICAgW2Ryb3Bkb3duXT1cInRydWVcIlxuICAgICAgICAgIChjb21wbGV0ZU1ldGhvZCk9XCJzZWFyY2goJGV2ZW50KVwiXG4gICAgICAgICAgc3R5bGVDbGFzcz1cInctMTAwXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlYXJjaCBhY2NvdW50c1wiXG4gICAgICAgICAgW211bHRpcGxlXT1cImZhbHNlXCJcbiAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIj5cbiAgICAgICAgPC9wLWF1dG9Db21wbGV0ZT5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00IGNvbC1sZy00XCI+XG4gICAgICAgIDxwdy1pbnB1dC1jb250YWluZXIgW2xhYmVsXT1cIidDcm0uQ29udGFjdE1lc3NhZ2UuRGVwYXJ0bWVudCcgfCB0cmFuc2xvY29cIlxuICAgICAgICAgIG5hbWU9XCJkZXBhcnRtZW50X2lkXCJcbiAgICAgICAgICAqbmdJZj1cImRlcGFydG1lbnRzJCB8IGFzeW5jIGFzIGRlcGFydG1lbnRzXCI+XG4gICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCJcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRlcGFydG1lbnRfaWRcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydkZXBhcnRtZW50X2lkJ10uZXJyb3JzIH1cIj5cbiAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBkZXBhcnRtZW50c1snb3JnYW5pemF0aW9uX2RlcGFydG1lbnRzJ11cIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLmlkXCI+XG4gICAgICAgICAgICAgIHt7IG9wdGlvbi5uYW1lIH19XG4gICAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPC9wdy1pbnB1dC1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtc20tNCBjb2wtbGctNFwiPlxuICAgICAgICA8bGFiZWw+e3sgJ0NybS5Db250YWN0TWVzc2FnZS5Qb3RlbnRpYWwnIHwgdHJhbnNsb2NvIH19PC9sYWJlbD5cbiAgICAgICAgPHNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJwb3RlbnRpYWxcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tc2VsZWN0XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzogc3VibWl0dGVkICYmIGZbJ3BvdGVudGlhbCddLmVycm9ycyB9XCI+XG4gICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIHBvdGVudGlhbHNcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cIm9wdGlvblwiPnt7IG9wdGlvbiB9fTwvb3B0aW9uPlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00IGNvbC1sZy00XCI+XG4gICAgICAgIDxsYWJlbD57eyAnQ3JtLkNvbnRhY3RNZXNzYWdlLkxhYmVscycgfCB0cmFuc2xvY28gfX0gPC9sYWJlbD5cbiAgICAgICAgPHAtbXVsdGlTZWxlY3QgW29wdGlvbnNdPVwibGFiZWxzXCJcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJsYWJlbHNcIlxuICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiPjwvcC1tdWx0aVNlbGVjdD5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1zbS00IGNvbC1sZy00XCJcbiAgICAgICAgKm5nSWY9XCJjcm1Tb3VyY2VzJCB8IGFzeW5jIGFzIHNvdXJjZVwiPlxuICAgICAgICA8bGFiZWw+e3sgJ0NybS5Db250YWN0TWVzc2FnZS5Tb3VyY2UnIHwgdHJhbnNsb2NvIH19PC9sYWJlbD5cbiAgICAgICAgPHNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJjcm1fc291cmNlX2lkXCJcbiAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLXNlbGVjdFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6IHN1Ym1pdHRlZCAmJiBmWydjcm1fc291cmNlX2lkJ10uZXJyb3JzIH1cIj5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+c2VsZWN0IGNybSBzb3VyY2U8L29wdGlvbj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2Ygc291cmNlWydjcm1fc291cmNlcyddXCJcbiAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24uaWRcIj5cbiAgICAgICAgICAgIHt7IG9wdGlvbi5uYW1lIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLXNtLTRcIj5cbiAgICAgICAgPHB3LWlucHV0LWNvbnRhaW5lciBbbGFiZWxdPVwiJ0NybS5Db250YWN0TWVzc2FnZS5EYXRlT2ZCaXJ0aCcgfCB0cmFuc2xvY29cIlxuICAgICAgICAgIG5hbWU9XCJkb2JcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwieXl5eS1tbS1kZFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRvYlwiXG4gICAgICAgICAgICAgIG5nYkRhdGVwaWNrZXJcbiAgICAgICAgICAgICAgI2Q9XCJuZ2JEYXRlcGlja2VyXCIgLz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImQudG9nZ2xlKClcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNhbGVuZGFyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3B3LWlucHV0LWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIHRleHQtZW5kIG10LTNcIj5cbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1kZWZhdWx0IG1lLTJcIlxuICAgICAgICAgIChjbGljayk9XCJiYWNrKClcIj5cbiAgICAgICAgICB7eyAnQnV0dG9uLkNhbmNlbCcgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIj5cbiAgICAgICAgICB7eyAnQnV0dG9uLlN1Ym1pdCcgfCB0cmFuc2xvY28gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9mb3JtPlxuPC9kaXY+XG4iXX0=
|