@hitsoft/fbdocumentflow 0.0.1
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/README.md +24 -0
- package/config/enums/index.d.ts +1 -0
- package/config/enums/route-names.d.ts +3 -0
- package/config/fbdocumentflow-config.module.d.ts +8 -0
- package/config/index.d.ts +5 -0
- package/config/providers/document-scenario-route.provider.d.ts +9 -0
- package/config/providers/document-transfer-route.provider.d.ts +9 -0
- package/config/providers/index.d.ts +6 -0
- package/config/providers/partner-mapping-route.provider.d.ts +9 -0
- package/config/providers/project-parameter-route.provider.d.ts +9 -0
- package/config/providers/route.provider.d.ts +8 -0
- package/config/providers/sap-company-profile-route.provider.d.ts +9 -0
- package/config/public-api.d.ts +3 -0
- package/esm2020/config/enums/index.mjs +2 -0
- package/esm2020/config/enums/route-names.mjs +2 -0
- package/esm2020/config/fbdocumentflow-config.module.mjs +30 -0
- package/esm2020/config/hitsoft-fbdocumentflow-config.mjs +5 -0
- package/esm2020/config/providers/document-scenario-route.provider.mjs +20 -0
- package/esm2020/config/providers/document-transfer-route.provider.mjs +20 -0
- package/esm2020/config/providers/index.mjs +7 -0
- package/esm2020/config/providers/partner-mapping-route.provider.mjs +20 -0
- package/esm2020/config/providers/project-parameter-route.provider.mjs +20 -0
- package/esm2020/config/providers/route.provider.mjs +24 -0
- package/esm2020/config/providers/sap-company-profile-route.provider.mjs +20 -0
- package/esm2020/config/public-api.mjs +4 -0
- package/esm2020/hitsoft-fbdocumentflow.mjs +5 -0
- package/esm2020/lib/components/fbdocumentflow.component.mjs +42 -0
- package/esm2020/lib/components/hit-document-scenarios/components/hit-document-scenario.component.mjs +151 -0
- package/esm2020/lib/components/hit-document-scenarios/hit-document-scenario-routing.module.mjs +26 -0
- package/esm2020/lib/components/hit-document-scenarios/hit-document-scenario.module.mjs +24 -0
- package/esm2020/lib/components/hit-document-transfers/components/hit-document-transfer-detail.component.mjs +474 -0
- package/esm2020/lib/components/hit-document-transfers/components/hit-document-transfer.component.mjs +241 -0
- package/esm2020/lib/components/hit-document-transfers/hit-document-transfer-routing.module.mjs +33 -0
- package/esm2020/lib/components/hit-document-transfers/hit-document-transfer.module.mjs +25 -0
- package/esm2020/lib/components/hit-partner-mappings/components/hit-partner-mapping.component.mjs +115 -0
- package/esm2020/lib/components/hit-partner-mappings/hit-partner-mapping-routing.module.mjs +26 -0
- package/esm2020/lib/components/hit-partner-mappings/hit-partner-mapping.module.mjs +24 -0
- package/esm2020/lib/components/hit-project-parameters/components/hit-project-parameter.component.mjs +125 -0
- package/esm2020/lib/components/hit-project-parameters/hit-project-parameter-routing.module.mjs +26 -0
- package/esm2020/lib/components/hit-project-parameters/hit-project-parameter.module.mjs +24 -0
- package/esm2020/lib/components/hit-sap-company-profiles/components/hit-sap-company-profile.component.mjs +88 -0
- package/esm2020/lib/components/hit-sap-company-profiles/hit-sap-company-profile-routing.module.mjs +26 -0
- package/esm2020/lib/components/hit-sap-company-profiles/hit-sap-company-profile.module.mjs +24 -0
- package/esm2020/lib/fbdocumentflow-routing.module.mjs +35 -0
- package/esm2020/lib/fbdocumentflow.module.mjs +29 -0
- package/esm2020/lib/proxy/document-scenarios/document-scenario.service.mjs +27 -0
- package/esm2020/lib/proxy/document-scenarios/index.mjs +3 -0
- package/esm2020/lib/proxy/document-scenarios/models.mjs +6 -0
- package/esm2020/lib/proxy/document-transfers/document-transfer.service.mjs +54 -0
- package/esm2020/lib/proxy/document-transfers/index.mjs +3 -0
- package/esm2020/lib/proxy/document-transfers/models.mjs +32 -0
- package/esm2020/lib/proxy/partner-mappings/index.mjs +3 -0
- package/esm2020/lib/proxy/partner-mappings/models.mjs +2 -0
- package/esm2020/lib/proxy/partner-mappings/partner-mapping.service.mjs +27 -0
- package/esm2020/lib/proxy/project-parameters/index.mjs +3 -0
- package/esm2020/lib/proxy/project-parameters/models.mjs +2 -0
- package/esm2020/lib/proxy/project-parameters/sap-project-parameter.service.mjs +25 -0
- package/esm2020/lib/proxy/sap-company-profiles/index.mjs +3 -0
- package/esm2020/lib/proxy/sap-company-profiles/models.mjs +7 -0
- package/esm2020/lib/proxy/sap-company-profiles/sap-company-profile.service.mjs +27 -0
- package/esm2020/lib/services/fbdocumentflow.service.mjs +21 -0
- package/esm2020/public-api.mjs +7 -0
- package/fesm2015/hitsoft-fbdocumentflow-config.mjs +144 -0
- package/fesm2015/hitsoft-fbdocumentflow-config.mjs.map +1 -0
- package/fesm2015/hitsoft-fbdocumentflow.mjs +1647 -0
- package/fesm2015/hitsoft-fbdocumentflow.mjs.map +1 -0
- package/fesm2020/hitsoft-fbdocumentflow-config.mjs +144 -0
- package/fesm2020/hitsoft-fbdocumentflow-config.mjs.map +1 -0
- package/fesm2020/hitsoft-fbdocumentflow.mjs +1621 -0
- package/fesm2020/hitsoft-fbdocumentflow.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/fbdocumentflow.component.d.ts +13 -0
- package/lib/components/hit-document-scenarios/components/hit-document-scenario.component.d.ts +41 -0
- package/lib/components/hit-document-scenarios/hit-document-scenario-routing.module.d.ts +7 -0
- package/lib/components/hit-document-scenarios/hit-document-scenario.module.d.ts +13 -0
- package/lib/components/hit-document-transfers/components/hit-document-transfer-detail.component.d.ts +88 -0
- package/lib/components/hit-document-transfers/components/hit-document-transfer.component.d.ts +61 -0
- package/lib/components/hit-document-transfers/hit-document-transfer-routing.module.d.ts +7 -0
- package/lib/components/hit-document-transfers/hit-document-transfer.module.d.ts +14 -0
- package/lib/components/hit-partner-mappings/components/hit-partner-mapping.component.d.ts +29 -0
- package/lib/components/hit-partner-mappings/hit-partner-mapping-routing.module.d.ts +7 -0
- package/lib/components/hit-partner-mappings/hit-partner-mapping.module.d.ts +13 -0
- package/lib/components/hit-project-parameters/components/hit-project-parameter.component.d.ts +36 -0
- package/lib/components/hit-project-parameters/hit-project-parameter-routing.module.d.ts +7 -0
- package/lib/components/hit-project-parameters/hit-project-parameter.module.d.ts +13 -0
- package/lib/components/hit-sap-company-profiles/components/hit-sap-company-profile.component.d.ts +28 -0
- package/lib/components/hit-sap-company-profiles/hit-sap-company-profile-routing.module.d.ts +7 -0
- package/lib/components/hit-sap-company-profiles/hit-sap-company-profile.module.d.ts +13 -0
- package/lib/fbdocumentflow-routing.module.d.ts +7 -0
- package/lib/fbdocumentflow.module.d.ts +13 -0
- package/lib/proxy/document-scenarios/document-scenario.service.d.ts +16 -0
- package/lib/proxy/document-scenarios/index.d.ts +2 -0
- package/lib/proxy/document-scenarios/models.d.ts +38 -0
- package/lib/proxy/document-transfers/document-transfer.service.d.ts +26 -0
- package/lib/proxy/document-transfers/index.d.ts +2 -0
- package/lib/proxy/document-transfers/models.d.ts +119 -0
- package/lib/proxy/partner-mappings/index.d.ts +2 -0
- package/lib/proxy/partner-mappings/models.d.ts +23 -0
- package/lib/proxy/partner-mappings/partner-mapping.service.d.ts +16 -0
- package/lib/proxy/project-parameters/index.d.ts +2 -0
- package/lib/proxy/project-parameters/models.d.ts +25 -0
- package/lib/proxy/project-parameters/sap-project-parameter.service.d.ts +14 -0
- package/lib/proxy/sap-company-profiles/index.d.ts +2 -0
- package/lib/proxy/sap-company-profiles/models.d.ts +26 -0
- package/lib/proxy/sap-company-profiles/sap-company-profile.service.d.ts +16 -0
- package/lib/services/fbdocumentflow.service.d.ts +10 -0
- package/package.json +41 -0
- package/public-api.d.ts +3 -0
package/esm2020/lib/components/hit-partner-mappings/components/hit-partner-mapping.component.mjs
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { Confirmation } from '@abp/ng.theme.shared';
|
|
3
|
+
import { finalize, filter, switchMap } from 'rxjs/operators';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../../proxy/partner-mappings";
|
|
6
|
+
import * as i2 from "../../../proxy/sap-company-profiles";
|
|
7
|
+
import * as i3 from "@abp/ng.theme.shared";
|
|
8
|
+
import * as i4 from "@angular/common";
|
|
9
|
+
import * as i5 from "@angular/forms";
|
|
10
|
+
import * as i6 from "devextreme-angular";
|
|
11
|
+
import * as i7 from "devextreme-angular/ui/nested";
|
|
12
|
+
import * as i8 from "devextreme-angular/core";
|
|
13
|
+
import * as i9 from "@abp/ng.core";
|
|
14
|
+
export class HitPartnerMappingComponent {
|
|
15
|
+
constructor(service, companyService, confirmation) {
|
|
16
|
+
this.service = service;
|
|
17
|
+
this.companyService = companyService;
|
|
18
|
+
this.confirmation = confirmation;
|
|
19
|
+
this.data = [];
|
|
20
|
+
this.companies = [];
|
|
21
|
+
this.isLoading = false;
|
|
22
|
+
this.isModalOpen = false;
|
|
23
|
+
this.isSaving = false;
|
|
24
|
+
this.editingId = null;
|
|
25
|
+
this.form = this.buildEmptyForm();
|
|
26
|
+
}
|
|
27
|
+
ngOnInit() {
|
|
28
|
+
this.companyService.getList({ maxResultCount: 1000, skipCount: 0, isActive: true }).subscribe(result => {
|
|
29
|
+
this.companies = result.items;
|
|
30
|
+
// Belge Aktarımı ekranından "muhatap eşleştirmesi bulunamadı" durumunda buraya yönlendirilmiş
|
|
31
|
+
// olabilir (spec §5) - şirket seçimini tekrar yaptırmadan doğrudan yeni kayıt formunu açar.
|
|
32
|
+
this.applyRedirectState();
|
|
33
|
+
});
|
|
34
|
+
this.loadData();
|
|
35
|
+
}
|
|
36
|
+
applyRedirectState() {
|
|
37
|
+
const state = history.state;
|
|
38
|
+
if (!state?.sourceCompanyId) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
this.openCreate();
|
|
42
|
+
this.form.sourceCompanyId = state.sourceCompanyId;
|
|
43
|
+
if (state.relatedCompanyId) {
|
|
44
|
+
this.form.relatedCompanyId = state.relatedCompanyId;
|
|
45
|
+
}
|
|
46
|
+
// customerCardCode/customerCardName yalnızca ilk hedef çözümlemesi (kaynak OINV.CardCode) eksik
|
|
47
|
+
// olduğunda gelir - bu değerler tahmin değildir, doğrudan kaynak faturanın kendi CardCode/CardName
|
|
48
|
+
// bilgisidir (spec §3/§5). Satıcı CardCode için böyle bir varsayım yapılmaz; hedef şirketin SAP'ında
|
|
49
|
+
// kullanıcı tarafından aranmalıdır.
|
|
50
|
+
if (state.customerCardCode) {
|
|
51
|
+
this.form.customerCardCode = state.customerCardCode;
|
|
52
|
+
}
|
|
53
|
+
if (state.customerCardName) {
|
|
54
|
+
this.form.customerCardName = state.customerCardName;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
loadData() {
|
|
58
|
+
this.isLoading = true;
|
|
59
|
+
this.service
|
|
60
|
+
.getList({ maxResultCount: 1000, skipCount: 0, sorting: 'creationTime desc' })
|
|
61
|
+
.pipe(finalize(() => (this.isLoading = false)))
|
|
62
|
+
.subscribe(result => (this.data = result.items));
|
|
63
|
+
}
|
|
64
|
+
companyName(id) {
|
|
65
|
+
return this.companies.find(c => c.id === id)?.companyName ?? id;
|
|
66
|
+
}
|
|
67
|
+
openCreate() {
|
|
68
|
+
this.editingId = null;
|
|
69
|
+
this.form = this.buildEmptyForm();
|
|
70
|
+
this.isModalOpen = true;
|
|
71
|
+
}
|
|
72
|
+
openEdit(row) {
|
|
73
|
+
this.editingId = row.id;
|
|
74
|
+
this.form = {
|
|
75
|
+
sourceCompanyId: row.sourceCompanyId,
|
|
76
|
+
relatedCompanyId: row.relatedCompanyId,
|
|
77
|
+
customerCardCode: row.customerCardCode,
|
|
78
|
+
customerCardName: row.customerCardName,
|
|
79
|
+
vendorCardCode: row.vendorCardCode,
|
|
80
|
+
vendorCardName: row.vendorCardName,
|
|
81
|
+
};
|
|
82
|
+
this.isModalOpen = true;
|
|
83
|
+
}
|
|
84
|
+
save() {
|
|
85
|
+
this.isSaving = true;
|
|
86
|
+
const request$ = this.editingId ? this.service.update(this.editingId, this.form) : this.service.create(this.form);
|
|
87
|
+
request$.pipe(finalize(() => (this.isSaving = false))).subscribe(() => {
|
|
88
|
+
this.isModalOpen = false;
|
|
89
|
+
this.loadData();
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
delete(row) {
|
|
93
|
+
this.confirmation
|
|
94
|
+
.warn('FBDocumentFlow::DeleteConfirmationMessage', 'FBDocumentFlow::AreYouSure')
|
|
95
|
+
.pipe(filter(status => status === Confirmation.Status.confirm), switchMap(() => this.service.delete(row.id)))
|
|
96
|
+
.subscribe(() => this.loadData());
|
|
97
|
+
}
|
|
98
|
+
buildEmptyForm() {
|
|
99
|
+
return {
|
|
100
|
+
sourceCompanyId: '',
|
|
101
|
+
relatedCompanyId: '',
|
|
102
|
+
customerCardCode: '',
|
|
103
|
+
customerCardName: '',
|
|
104
|
+
vendorCardCode: '',
|
|
105
|
+
vendorCardName: '',
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
HitPartnerMappingComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitPartnerMappingComponent, deps: [{ token: i1.PartnerMappingService }, { token: i2.SapCompanyProfileService }, { token: i3.ConfirmationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
110
|
+
HitPartnerMappingComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitPartnerMappingComponent, selector: "hit-partner-mapping", ngImport: i0, template: "<div class=\"card\">\n <div class=\"card-header py-3\">\n <div class=\"row align-items-center\">\n <div class=\"col\">\n <h5 class=\"card-title mb-0\">{{ 'FBDocumentFlow::Menu:PartnerMappings' | abpLocalization }}</h5>\n </div>\n <div class=\"col-auto d-flex align-items-center gap-2\">\n <button class=\"btn btn-sm btn-primary\" (click)=\"openCreate()\">\n <i class=\"fa fa-plus me-1\"></i>Yeni E\u015Fle\u015Ftirme\n </button>\n <button class=\"btn btn-sm btn-outline-primary\" (click)=\"loadData()\" [disabled]=\"isLoading\">\n <i class=\"fa fa-refresh me-1\"></i>{{ 'AbpUi::Refresh' | abpLocalization }}\n </button>\n </div>\n </div>\n </div>\n <div class=\"card-body pt-3\">\n <div *ngIf=\"isLoading\" class=\"text-center py-5\">\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\n <div class=\"mt-2 text-muted\">Y\u00FCkleniyor...</div>\n </div>\n\n <dx-data-grid *ngIf=\"!isLoading\" [dataSource]=\"data\" [showBorders]=\"true\" [showRowLines]=\"true\" [columnAutoWidth]=\"true\">\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [showNavigationButtons]=\"true\"></dxo-pager>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-header-filter [visible]=\"true\"></dxo-header-filter>\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\n\n <dxi-column dataField=\"sourceCompanyName\" caption=\"Bulunulan \u015Eirket\"></dxi-column>\n <dxi-column dataField=\"relatedCompanyName\" caption=\"\u0130li\u015Fkili \u015Eirket\"></dxi-column>\n <dxi-column dataField=\"customerCardCode\" caption=\"M\u00FC\u015Fteri CardCode\"></dxi-column>\n <dxi-column dataField=\"customerCardName\" caption=\"M\u00FC\u015Fteri Ad\u0131\"></dxi-column>\n <dxi-column dataField=\"vendorCardCode\" caption=\"Sat\u0131c\u0131 CardCode\"></dxi-column>\n <dxi-column dataField=\"vendorCardName\" caption=\"Sat\u0131c\u0131 Ad\u0131\"></dxi-column>\n <dxi-column caption=\"\u0130\u015Flemler\" cellTemplate=\"actionsTemplate\" [width]=\"140\" [allowFiltering]=\"false\" [allowSorting]=\"false\"></dxi-column>\n\n <div *dxTemplate=\"let cell of 'actionsTemplate'\">\n <button class=\"btn btn-sm btn-outline-secondary me-1\" (click)=\"openEdit(cell.data)\">\n <i class=\"fa fa-pencil\"></i>\n </button>\n <button class=\"btn btn-sm btn-outline-danger\" (click)=\"delete(cell.data)\">\n <i class=\"fa fa-trash\"></i>\n </button>\n </div>\n </dx-data-grid>\n\n <div class=\"alert alert-secondary mt-3 mb-0\">\n <strong>\u00C7al\u0131\u015Fma Kural\u0131</strong>\n <ul class=\"mb-0\">\n <li>Kaynak OINV.CardCode hedef \u015Firketin kim oldu\u011Funu belirler.</li>\n <li>Hedef \u015Firket DB'sindeki OPCH.CardCode, \"bulunulan \u015Firket + ili\u015Fkili \u015Firket\" e\u015Fle\u015Ftirmesindeki Sat\u0131c\u0131 CardCode de\u011Ferinden al\u0131n\u0131r.</li>\n <li>Ayn\u0131 \u015Firket i\u00E7inde sonraki OINV olu\u015Fturulacaksa, sonraki hedef \u015Firketin M\u00FC\u015Fteri CardCode e\u015Fle\u015Ftirmesi kullan\u0131l\u0131r.</li>\n <li>E\u015Fle\u015Ftirme bulunamazsa sistem rastgele CardCode se\u00E7mez; aktar\u0131m \u00F6ncesinde kullan\u0131c\u0131ya se\u00E7im yapt\u0131r\u0131l\u0131r.</li>\n </ul>\n </div>\n </div>\n</div>\n\n<abp-modal [(visible)]=\"isModalOpen\">\n <ng-template #abpHeader>\n <h3>{{ editingId ? 'E\u015Fle\u015Ftirme D\u00FCzenle' : 'Yeni Muhatap E\u015Fle\u015Ftirmesi' }}</h3>\n </ng-template>\n\n <ng-template #abpBody>\n <form>\n <div class=\"mb-3\">\n <label class=\"form-label\">Bulunulan \u015Eirket</label>\n <select class=\"form-select\" [(ngModel)]=\"form.sourceCompanyId\" name=\"sourceCompanyId\" required>\n <option [ngValue]=\"''\" disabled>Se\u00E7iniz</option>\n <option *ngFor=\"let c of companies\" [ngValue]=\"c.id\">{{ c.companyName }}</option>\n </select>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">\u0130li\u015Fkili \u015Eirket</label>\n <select class=\"form-select\" [(ngModel)]=\"form.relatedCompanyId\" name=\"relatedCompanyId\" required>\n <option [ngValue]=\"''\" disabled>Se\u00E7iniz</option>\n <option *ngFor=\"let c of companies\" [ngValue]=\"c.id\">{{ c.companyName }}</option>\n </select>\n </div>\n <div class=\"row\">\n <div class=\"col-6 mb-3\">\n <label class=\"form-label\">M\u00FC\u015Fteri CardCode</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.customerCardCode\" name=\"customerCardCode\" />\n </div>\n <div class=\"col-6 mb-3\">\n <label class=\"form-label\">M\u00FC\u015Fteri Ad\u0131</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.customerCardName\" name=\"customerCardName\" />\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-6 mb-3\">\n <label class=\"form-label\">Sat\u0131c\u0131 CardCode</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.vendorCardCode\" name=\"vendorCardCode\" />\n </div>\n <div class=\"col-6 mb-3\">\n <label class=\"form-label\">Sat\u0131c\u0131 Ad\u0131</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.vendorCardName\" name=\"vendorCardName\" />\n </div>\n </div>\n </form>\n </ng-template>\n\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{ 'AbpUi::Cancel' | abpLocalization }}</button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"save()\" [disabled]=\"isSaving\">\n <span *ngIf=\"isSaving\" class=\"spinner-border spinner-border-sm me-1\"></span>\n {{ 'AbpUi::Save' | abpLocalization }}\n </button>\n </ng-template>\n</abp-modal>\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i5.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i5.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i3.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "directive", type: i3.ModalCloseDirective, selector: "[abpClose]" }, { kind: "component", type: i6.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "customizeExportData", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "focusStateEnabled", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExported", "onExporting", "onFileSaving", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "customizeExportDataChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "focusStateEnabledChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i7.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i7.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "dataSource", "groupInterval", "height", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i7.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i7.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i7.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "component", type: i7.DxoSortingComponent, selector: "dxo-sorting", inputs: ["ascendingText", "clearText", "descendingText", "mode", "showSortIndexes"] }, { kind: "directive", type: i8.DxTemplateDirective, selector: "[dxTemplate]", inputs: ["dxTemplateOf"] }, { kind: "pipe", type: i9.LocalizationPipe, name: "abpLocalization" }] });
|
|
111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitPartnerMappingComponent, decorators: [{
|
|
112
|
+
type: Component,
|
|
113
|
+
args: [{ selector: 'hit-partner-mapping', template: "<div class=\"card\">\n <div class=\"card-header py-3\">\n <div class=\"row align-items-center\">\n <div class=\"col\">\n <h5 class=\"card-title mb-0\">{{ 'FBDocumentFlow::Menu:PartnerMappings' | abpLocalization }}</h5>\n </div>\n <div class=\"col-auto d-flex align-items-center gap-2\">\n <button class=\"btn btn-sm btn-primary\" (click)=\"openCreate()\">\n <i class=\"fa fa-plus me-1\"></i>Yeni E\u015Fle\u015Ftirme\n </button>\n <button class=\"btn btn-sm btn-outline-primary\" (click)=\"loadData()\" [disabled]=\"isLoading\">\n <i class=\"fa fa-refresh me-1\"></i>{{ 'AbpUi::Refresh' | abpLocalization }}\n </button>\n </div>\n </div>\n </div>\n <div class=\"card-body pt-3\">\n <div *ngIf=\"isLoading\" class=\"text-center py-5\">\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\n <div class=\"mt-2 text-muted\">Y\u00FCkleniyor...</div>\n </div>\n\n <dx-data-grid *ngIf=\"!isLoading\" [dataSource]=\"data\" [showBorders]=\"true\" [showRowLines]=\"true\" [columnAutoWidth]=\"true\">\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [showNavigationButtons]=\"true\"></dxo-pager>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-header-filter [visible]=\"true\"></dxo-header-filter>\n <dxo-sorting mode=\"multiple\"></dxo-sorting>\n\n <dxi-column dataField=\"sourceCompanyName\" caption=\"Bulunulan \u015Eirket\"></dxi-column>\n <dxi-column dataField=\"relatedCompanyName\" caption=\"\u0130li\u015Fkili \u015Eirket\"></dxi-column>\n <dxi-column dataField=\"customerCardCode\" caption=\"M\u00FC\u015Fteri CardCode\"></dxi-column>\n <dxi-column dataField=\"customerCardName\" caption=\"M\u00FC\u015Fteri Ad\u0131\"></dxi-column>\n <dxi-column dataField=\"vendorCardCode\" caption=\"Sat\u0131c\u0131 CardCode\"></dxi-column>\n <dxi-column dataField=\"vendorCardName\" caption=\"Sat\u0131c\u0131 Ad\u0131\"></dxi-column>\n <dxi-column caption=\"\u0130\u015Flemler\" cellTemplate=\"actionsTemplate\" [width]=\"140\" [allowFiltering]=\"false\" [allowSorting]=\"false\"></dxi-column>\n\n <div *dxTemplate=\"let cell of 'actionsTemplate'\">\n <button class=\"btn btn-sm btn-outline-secondary me-1\" (click)=\"openEdit(cell.data)\">\n <i class=\"fa fa-pencil\"></i>\n </button>\n <button class=\"btn btn-sm btn-outline-danger\" (click)=\"delete(cell.data)\">\n <i class=\"fa fa-trash\"></i>\n </button>\n </div>\n </dx-data-grid>\n\n <div class=\"alert alert-secondary mt-3 mb-0\">\n <strong>\u00C7al\u0131\u015Fma Kural\u0131</strong>\n <ul class=\"mb-0\">\n <li>Kaynak OINV.CardCode hedef \u015Firketin kim oldu\u011Funu belirler.</li>\n <li>Hedef \u015Firket DB'sindeki OPCH.CardCode, \"bulunulan \u015Firket + ili\u015Fkili \u015Firket\" e\u015Fle\u015Ftirmesindeki Sat\u0131c\u0131 CardCode de\u011Ferinden al\u0131n\u0131r.</li>\n <li>Ayn\u0131 \u015Firket i\u00E7inde sonraki OINV olu\u015Fturulacaksa, sonraki hedef \u015Firketin M\u00FC\u015Fteri CardCode e\u015Fle\u015Ftirmesi kullan\u0131l\u0131r.</li>\n <li>E\u015Fle\u015Ftirme bulunamazsa sistem rastgele CardCode se\u00E7mez; aktar\u0131m \u00F6ncesinde kullan\u0131c\u0131ya se\u00E7im yapt\u0131r\u0131l\u0131r.</li>\n </ul>\n </div>\n </div>\n</div>\n\n<abp-modal [(visible)]=\"isModalOpen\">\n <ng-template #abpHeader>\n <h3>{{ editingId ? 'E\u015Fle\u015Ftirme D\u00FCzenle' : 'Yeni Muhatap E\u015Fle\u015Ftirmesi' }}</h3>\n </ng-template>\n\n <ng-template #abpBody>\n <form>\n <div class=\"mb-3\">\n <label class=\"form-label\">Bulunulan \u015Eirket</label>\n <select class=\"form-select\" [(ngModel)]=\"form.sourceCompanyId\" name=\"sourceCompanyId\" required>\n <option [ngValue]=\"''\" disabled>Se\u00E7iniz</option>\n <option *ngFor=\"let c of companies\" [ngValue]=\"c.id\">{{ c.companyName }}</option>\n </select>\n </div>\n <div class=\"mb-3\">\n <label class=\"form-label\">\u0130li\u015Fkili \u015Eirket</label>\n <select class=\"form-select\" [(ngModel)]=\"form.relatedCompanyId\" name=\"relatedCompanyId\" required>\n <option [ngValue]=\"''\" disabled>Se\u00E7iniz</option>\n <option *ngFor=\"let c of companies\" [ngValue]=\"c.id\">{{ c.companyName }}</option>\n </select>\n </div>\n <div class=\"row\">\n <div class=\"col-6 mb-3\">\n <label class=\"form-label\">M\u00FC\u015Fteri CardCode</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.customerCardCode\" name=\"customerCardCode\" />\n </div>\n <div class=\"col-6 mb-3\">\n <label class=\"form-label\">M\u00FC\u015Fteri Ad\u0131</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.customerCardName\" name=\"customerCardName\" />\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-6 mb-3\">\n <label class=\"form-label\">Sat\u0131c\u0131 CardCode</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.vendorCardCode\" name=\"vendorCardCode\" />\n </div>\n <div class=\"col-6 mb-3\">\n <label class=\"form-label\">Sat\u0131c\u0131 Ad\u0131</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.vendorCardName\" name=\"vendorCardName\" />\n </div>\n </div>\n </form>\n </ng-template>\n\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" abpClose>{{ 'AbpUi::Cancel' | abpLocalization }}</button>\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"save()\" [disabled]=\"isSaving\">\n <span *ngIf=\"isSaving\" class=\"spinner-border spinner-border-sm me-1\"></span>\n {{ 'AbpUi::Save' | abpLocalization }}\n </button>\n </ng-template>\n</abp-modal>\n" }]
|
|
114
|
+
}], ctorParameters: function () { return [{ type: i1.PartnerMappingService }, { type: i2.SapCompanyProfileService }, { type: i3.ConfirmationService }]; } });
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXBhcnRuZXItbWFwcGluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mYmRvY3VtZW50Zmxvdy9zcmMvbGliL2NvbXBvbmVudHMvaGl0LXBhcnRuZXItbWFwcGluZ3MvY29tcG9uZW50cy9oaXQtcGFydG5lci1tYXBwaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZiZG9jdW1lbnRmbG93L3NyYy9saWIvY29tcG9uZW50cy9oaXQtcGFydG5lci1tYXBwaW5ncy9jb21wb25lbnRzL2hpdC1wYXJ0bmVyLW1hcHBpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUF1QixNQUFNLHNCQUFzQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7OztBQVE3RCxNQUFNLE9BQU8sMEJBQTBCO0lBVXJDLFlBQ1UsT0FBOEIsRUFDOUIsY0FBd0MsRUFDeEMsWUFBaUM7UUFGakMsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQTBCO1FBQ3hDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQVozQyxTQUFJLEdBQXdCLEVBQUUsQ0FBQztRQUMvQixjQUFTLEdBQTJCLEVBQUUsQ0FBQztRQUN2QyxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFFaEMsU0FBSSxHQUFrQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7SUFNekQsQ0FBQztJQUVKLFFBQVE7UUFD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QixnQkFBZ0IsRUFBRSxFQUFFO1lBQ3BCLGNBQWMsRUFBRSxFQUFFO1lBQ2xCLGNBQWMsRUFBRSxFQUFFO1NBQ25CLENBQUM7SUFDSixDQUFDOzt1SEE5R1UsMEJBQTBCOzJHQUExQiwwQkFBMEIsMkRDVnZDLHU1TEErR0E7MkZEckdhLDBCQUEwQjtrQkFKdEMsU0FBUzsrQkFDRSxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uLCBDb25maXJtYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xuaW1wb3J0IHsgZmluYWxpemUsIGZpbHRlciwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ3JlYXRlVXBkYXRlUGFydG5lck1hcHBpbmdEdG8sIFBhcnRuZXJNYXBwaW5nRHRvLCBQYXJ0bmVyTWFwcGluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9wYXJ0bmVyLW1hcHBpbmdzJztcbmltcG9ydCB7IFNhcENvbXBhbnlQcm9maWxlRHRvLCBTYXBDb21wYW55UHJvZmlsZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9wcm94eS9zYXAtY29tcGFueS1wcm9maWxlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hpdC1wYXJ0bmVyLW1hcHBpbmcnLFxuICB0ZW1wbGF0ZVVybDogJy4vaGl0LXBhcnRuZXItbWFwcGluZy5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIEhpdFBhcnRuZXJNYXBwaW5nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgZGF0YTogUGFydG5lck1hcHBpbmdEdG9bXSA9IFtdO1xuICBjb21wYW5pZXM6IFNhcENvbXBhbnlQcm9maWxlRHRvW10gPSBbXTtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIGlzTW9kYWxPcGVuID0gZmFsc2U7XG4gIGlzU2F2aW5nID0gZmFsc2U7XG4gIGVkaXRpbmdJZDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgZm9ybTogQ3JlYXRlVXBkYXRlUGFydG5lck1hcHBpbmdEdG8gPSB0aGlzLmJ1aWxkRW1wdHlGb3JtKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZXJ2aWNlOiBQYXJ0bmVyTWFwcGluZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21wYW55U2VydmljZTogU2FwQ29tcGFueVByb2ZpbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29uZmlybWF0aW9uOiBDb25maXJtYXRpb25TZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNvbXBhbnlTZXJ2aWNlLmdldExpc3QoeyBtYXhSZXN1bHRDb3VudDogMTAwMCwgc2tpcENvdW50OiAwLCBpc0FjdGl2ZTogdHJ1ZSB9KS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIHRoaXMuY29tcGFuaWVzID0gcmVzdWx0Lml0ZW1zO1xuICAgICAgLy8gQmVsZ2UgQWt0YXLEsW3EsSBla3JhbsSxbmRhbiBcIm11aGF0YXAgZcWfbGXFn3Rpcm1lc2kgYnVsdW5hbWFkxLFcIiBkdXJ1bXVuZGEgYnVyYXlhIHnDtm5sZW5kaXJpbG1pxZ9cbiAgICAgIC8vIG9sYWJpbGlyIChzcGVjIMKnNSkgLSDFn2lya2V0IHNlw6dpbWluaSB0ZWtyYXIgeWFwdMSxcm1hZGFuIGRvxJ9ydWRhbiB5ZW5pIGthecSxdCBmb3JtdW51IGHDp2FyLlxuICAgICAgdGhpcy5hcHBseVJlZGlyZWN0U3RhdGUoKTtcbiAgICB9KTtcbiAgICB0aGlzLmxvYWREYXRhKCk7XG4gIH1cblxuICBwcml2YXRlIGFwcGx5UmVkaXJlY3RTdGF0ZSgpIHtcbiAgICBjb25zdCBzdGF0ZSA9IGhpc3Rvcnkuc3RhdGUgYXNcbiAgICAgIHwgeyBzb3VyY2VDb21wYW55SWQ/OiBzdHJpbmc7IHJlbGF0ZWRDb21wYW55SWQ/OiBzdHJpbmc7IGN1c3RvbWVyQ2FyZENvZGU/OiBzdHJpbmc7IGN1c3RvbWVyQ2FyZE5hbWU/OiBzdHJpbmcgfVxuICAgICAgfCB1bmRlZmluZWQ7XG4gICAgaWYgKCFzdGF0ZT8uc291cmNlQ29tcGFueUlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5vcGVuQ3JlYXRlKCk7XG4gICAgdGhpcy5mb3JtLnNvdXJjZUNvbXBhbnlJZCA9IHN0YXRlLnNvdXJjZUNvbXBhbnlJZDtcbiAgICBpZiAoc3RhdGUucmVsYXRlZENvbXBhbnlJZCkge1xuICAgICAgdGhpcy5mb3JtLnJlbGF0ZWRDb21wYW55SWQgPSBzdGF0ZS5yZWxhdGVkQ29tcGFueUlkO1xuICAgIH1cbiAgICAvLyBjdXN0b21lckNhcmRDb2RlL2N1c3RvbWVyQ2FyZE5hbWUgeWFsbsSxemNhIGlsayBoZWRlZiDDp8O2esO8bWxlbWVzaSAoa2F5bmFrIE9JTlYuQ2FyZENvZGUpIGVrc2lrXG4gICAgLy8gb2xkdcSfdW5kYSBnZWxpciAtIGJ1IGRlxJ9lcmxlciB0YWhtaW4gZGXEn2lsZGlyLCBkb8SfcnVkYW4ga2F5bmFrIGZhdHVyYW7EsW4ga2VuZGkgQ2FyZENvZGUvQ2FyZE5hbWVcbiAgICAvLyBiaWxnaXNpZGlyIChzcGVjIMKnMy/CpzUpLiBTYXTEsWPEsSBDYXJkQ29kZSBpw6dpbiBiw7Z5bGUgYmlyIHZhcnNhecSxbSB5YXDEsWxtYXo7IGhlZGVmIMWfaXJrZXRpbiBTQVAnxLFuZGFcbiAgICAvLyBrdWxsYW7EsWPEsSB0YXJhZsSxbmRhbiBhcmFubWFsxLFkxLFyLlxuICAgIGlmIChzdGF0ZS5jdXN0b21lckNhcmRDb2RlKSB7XG4gICAgICB0aGlzLmZvcm0uY3VzdG9tZXJDYXJkQ29kZSA9IHN0YXRlLmN1c3RvbWVyQ2FyZENvZGU7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5jdXN0b21lckNhcmROYW1lKSB7XG4gICAgICB0aGlzLmZvcm0uY3VzdG9tZXJDYXJkTmFtZSA9IHN0YXRlLmN1c3RvbWVyQ2FyZE5hbWU7XG4gICAgfVxuICB9XG5cbiAgbG9hZERhdGEoKSB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuc2VydmljZVxuICAgICAgLmdldExpc3QoeyBtYXhSZXN1bHRDb3VudDogMTAwMCwgc2tpcENvdW50OiAwLCBzb3J0aW5nOiAnY3JlYXRpb25UaW1lIGRlc2MnIH0pXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiAodGhpcy5pc0xvYWRpbmcgPSBmYWxzZSkpKVxuICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4gKHRoaXMuZGF0YSA9IHJlc3VsdC5pdGVtcykpO1xuICB9XG5cbiAgY29tcGFueU5hbWUoaWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuY29tcGFuaWVzLmZpbmQoYyA9PiBjLmlkID09PSBpZCk/LmNvbXBhbnlOYW1lID8/IGlkO1xuICB9XG5cbiAgb3BlbkNyZWF0ZSgpIHtcbiAgICB0aGlzLmVkaXRpbmdJZCA9IG51bGw7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5idWlsZEVtcHR5Rm9ybSgpO1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xuICB9XG5cbiAgb3BlbkVkaXQocm93OiBQYXJ0bmVyTWFwcGluZ0R0bykge1xuICAgIHRoaXMuZWRpdGluZ0lkID0gcm93LmlkO1xuICAgIHRoaXMuZm9ybSA9IHtcbiAgICAgIHNvdXJjZUNvbXBhbnlJZDogcm93LnNvdXJjZUNvbXBhbnlJZCxcbiAgICAgIHJlbGF0ZWRDb21wYW55SWQ6IHJvdy5yZWxhdGVkQ29tcGFueUlkLFxuICAgICAgY3VzdG9tZXJDYXJkQ29kZTogcm93LmN1c3RvbWVyQ2FyZENvZGUsXG4gICAgICBjdXN0b21lckNhcmROYW1lOiByb3cuY3VzdG9tZXJDYXJkTmFtZSxcbiAgICAgIHZlbmRvckNhcmRDb2RlOiByb3cudmVuZG9yQ2FyZENvZGUsXG4gICAgICB2ZW5kb3JDYXJkTmFtZTogcm93LnZlbmRvckNhcmROYW1lLFxuICAgIH07XG4gICAgdGhpcy5pc01vZGFsT3BlbiA9IHRydWU7XG4gIH1cblxuICBzYXZlKCkge1xuICAgIHRoaXMuaXNTYXZpbmcgPSB0cnVlO1xuICAgIGNvbnN0IHJlcXVlc3QkID0gdGhpcy5lZGl0aW5nSWQgPyB0aGlzLnNlcnZpY2UudXBkYXRlKHRoaXMuZWRpdGluZ0lkLCB0aGlzLmZvcm0pIDogdGhpcy5zZXJ2aWNlLmNyZWF0ZSh0aGlzLmZvcm0pO1xuICAgIHJlcXVlc3QkLnBpcGUoZmluYWxpemUoKCkgPT4gKHRoaXMuaXNTYXZpbmcgPSBmYWxzZSkpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5pc01vZGFsT3BlbiA9IGZhbHNlO1xuICAgICAgdGhpcy5sb2FkRGF0YSgpO1xuICAgIH0pO1xuICB9XG5cbiAgZGVsZXRlKHJvdzogUGFydG5lck1hcHBpbmdEdG8pIHtcbiAgICB0aGlzLmNvbmZpcm1hdGlvblxuICAgICAgLndhcm4oJ0ZCRG9jdW1lbnRGbG93OjpEZWxldGVDb25maXJtYXRpb25NZXNzYWdlJywgJ0ZCRG9jdW1lbnRGbG93OjpBcmVZb3VTdXJlJylcbiAgICAgIC5waXBlKFxuICAgICAgICBmaWx0ZXIoc3RhdHVzID0+IHN0YXR1cyA9PT0gQ29uZmlybWF0aW9uLlN0YXR1cy5jb25maXJtKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuc2VydmljZS5kZWxldGUocm93LmlkKSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5sb2FkRGF0YSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRFbXB0eUZvcm0oKTogQ3JlYXRlVXBkYXRlUGFydG5lck1hcHBpbmdEdG8ge1xuICAgIHJldHVybiB7XG4gICAgICBzb3VyY2VDb21wYW55SWQ6ICcnLFxuICAgICAgcmVsYXRlZENvbXBhbnlJZDogJycsXG4gICAgICBjdXN0b21lckNhcmRDb2RlOiAnJyxcbiAgICAgIGN1c3RvbWVyQ2FyZE5hbWU6ICcnLFxuICAgICAgdmVuZG9yQ2FyZENvZGU6ICcnLFxuICAgICAgdmVuZG9yQ2FyZE5hbWU6ICcnLFxuICAgIH07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBweS0zXCI+XG4gICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgPGg1IGNsYXNzPVwiY2FyZC10aXRsZSBtYi0wXCI+e3sgJ0ZCRG9jdW1lbnRGbG93OjpNZW51OlBhcnRuZXJNYXBwaW5ncycgfCBhYnBMb2NhbGl6YXRpb24gfX08L2g1PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG8gZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiIChjbGljayk9XCJvcGVuQ3JlYXRlKClcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXBsdXMgbWUtMVwiPjwvaT5ZZW5pIEXFn2xlxZ90aXJtZVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLW91dGxpbmUtcHJpbWFyeVwiIChjbGljayk9XCJsb2FkRGF0YSgpXCIgW2Rpc2FibGVkXT1cImlzTG9hZGluZ1wiPlxuICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtcmVmcmVzaCBtZS0xXCI+PC9pPnt7ICdBYnBVaTo6UmVmcmVzaCcgfCBhYnBMb2NhbGl6YXRpb24gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHQtM1wiPlxuICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdcIiBjbGFzcz1cInRleHQtY2VudGVyIHB5LTVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciB0ZXh0LXByaW1hcnlcIiByb2xlPVwic3RhdHVzXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibXQtMiB0ZXh0LW11dGVkXCI+WcO8a2xlbml5b3IuLi48L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkeC1kYXRhLWdyaWQgKm5nSWY9XCIhaXNMb2FkaW5nXCIgW2RhdGFTb3VyY2VdPVwiZGF0YVwiIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCIgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCI+XG4gICAgICA8ZHhvLXBhZ2luZyBbcGFnZVNpemVdPVwiNTBcIj48L2R4by1wYWdpbmc+XG4gICAgICA8ZHhvLXBhZ2VyIFt2aXNpYmxlXT1cInRydWVcIiBbc2hvd0luZm9dPVwidHJ1ZVwiIFtzaG93TmF2aWdhdGlvbkJ1dHRvbnNdPVwidHJ1ZVwiPjwvZHhvLXBhZ2VyPlxuICAgICAgPGR4by1maWx0ZXItcm93IFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1maWx0ZXItcm93PlxuICAgICAgPGR4by1oZWFkZXItZmlsdGVyIFt2aXNpYmxlXT1cInRydWVcIj48L2R4by1oZWFkZXItZmlsdGVyPlxuICAgICAgPGR4by1zb3J0aW5nIG1vZGU9XCJtdWx0aXBsZVwiPjwvZHhvLXNvcnRpbmc+XG5cbiAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInNvdXJjZUNvbXBhbnlOYW1lXCIgY2FwdGlvbj1cIkJ1bHVudWxhbiDFnmlya2V0XCI+PC9keGktY29sdW1uPlxuICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwicmVsYXRlZENvbXBhbnlOYW1lXCIgY2FwdGlvbj1cIsSwbGnFn2tpbGkgxZ5pcmtldFwiPjwvZHhpLWNvbHVtbj5cbiAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cImN1c3RvbWVyQ2FyZENvZGVcIiBjYXB0aW9uPVwiTcO8xZ90ZXJpIENhcmRDb2RlXCI+PC9keGktY29sdW1uPlxuICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiY3VzdG9tZXJDYXJkTmFtZVwiIGNhcHRpb249XCJNw7zFn3RlcmkgQWTEsVwiPjwvZHhpLWNvbHVtbj5cbiAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInZlbmRvckNhcmRDb2RlXCIgY2FwdGlvbj1cIlNhdMSxY8SxIENhcmRDb2RlXCI+PC9keGktY29sdW1uPlxuICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwidmVuZG9yQ2FyZE5hbWVcIiBjYXB0aW9uPVwiU2F0xLFjxLEgQWTEsVwiPjwvZHhpLWNvbHVtbj5cbiAgICAgIDxkeGktY29sdW1uIGNhcHRpb249XCLEsMWfbGVtbGVyXCIgY2VsbFRlbXBsYXRlPVwiYWN0aW9uc1RlbXBsYXRlXCIgW3dpZHRoXT1cIjE0MFwiIFthbGxvd0ZpbHRlcmluZ109XCJmYWxzZVwiIFthbGxvd1NvcnRpbmddPVwiZmFsc2VcIj48L2R4aS1jb2x1bW4+XG5cbiAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgY2VsbCBvZiAnYWN0aW9uc1RlbXBsYXRlJ1wiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1zZWNvbmRhcnkgbWUtMVwiIChjbGljayk9XCJvcGVuRWRpdChjZWxsLmRhdGEpXCI+XG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wZW5jaWxcIj48L2k+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tb3V0bGluZS1kYW5nZXJcIiAoY2xpY2spPVwiZGVsZXRlKGNlbGwuZGF0YSlcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRyYXNoXCI+PC9pPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZHgtZGF0YS1ncmlkPlxuXG4gICAgPGRpdiBjbGFzcz1cImFsZXJ0IGFsZXJ0LXNlY29uZGFyeSBtdC0zIG1iLTBcIj5cbiAgICAgIDxzdHJvbmc+w4dhbMSxxZ9tYSBLdXJhbMSxPC9zdHJvbmc+XG4gICAgICA8dWwgY2xhc3M9XCJtYi0wXCI+XG4gICAgICAgIDxsaT5LYXluYWsgT0lOVi5DYXJkQ29kZSBoZWRlZiDFn2lya2V0aW4ga2ltIG9sZHXEn3VudSBiZWxpcmxlci48L2xpPlxuICAgICAgICA8bGk+SGVkZWYgxZ9pcmtldCBEQidzaW5kZWtpIE9QQ0guQ2FyZENvZGUsIFwiYnVsdW51bGFuIMWfaXJrZXQgKyBpbGnFn2tpbGkgxZ9pcmtldFwiIGXFn2xlxZ90aXJtZXNpbmRla2kgU2F0xLFjxLEgQ2FyZENvZGUgZGXEn2VyaW5kZW4gYWzEsW7EsXIuPC9saT5cbiAgICAgICAgPGxpPkF5bsSxIMWfaXJrZXQgacOnaW5kZSBzb25yYWtpIE9JTlYgb2x1xZ90dXJ1bGFjYWtzYSwgc29ucmFraSBoZWRlZiDFn2lya2V0aW4gTcO8xZ90ZXJpIENhcmRDb2RlIGXFn2xlxZ90aXJtZXNpIGt1bGxhbsSxbMSxci48L2xpPlxuICAgICAgICA8bGk+RcWfbGXFn3Rpcm1lIGJ1bHVuYW1henNhIHNpc3RlbSByYXN0Z2VsZSBDYXJkQ29kZSBzZcOnbWV6OyBha3RhcsSxbSDDtm5jZXNpbmRlIGt1bGxhbsSxY8SxeWEgc2XDp2ltIHlhcHTEsXLEsWzEsXIuPC9saT5cbiAgICAgIDwvdWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxhYnAtbW9kYWwgWyh2aXNpYmxlKV09XCJpc01vZGFsT3BlblwiPlxuICA8bmctdGVtcGxhdGUgI2FicEhlYWRlcj5cbiAgICA8aDM+e3sgZWRpdGluZ0lkID8gJ0XFn2xlxZ90aXJtZSBEw7x6ZW5sZScgOiAnWWVuaSBNdWhhdGFwIEXFn2xlxZ90aXJtZXNpJyB9fTwvaDM+XG4gIDwvbmctdGVtcGxhdGU+XG5cbiAgPG5nLXRlbXBsYXRlICNhYnBCb2R5PlxuICAgIDxmb3JtPlxuICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkJ1bHVudWxhbiDFnmlya2V0PC9sYWJlbD5cbiAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgWyhuZ01vZGVsKV09XCJmb3JtLnNvdXJjZUNvbXBhbnlJZFwiIG5hbWU9XCJzb3VyY2VDb21wYW55SWRcIiByZXF1aXJlZD5cbiAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIicnXCIgZGlzYWJsZWQ+U2XDp2luaXo8L29wdGlvbj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjIG9mIGNvbXBhbmllc1wiIFtuZ1ZhbHVlXT1cImMuaWRcIj57eyBjLmNvbXBhbnlOYW1lIH19PC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+xLBsacWfa2lsaSDFnmlya2V0PC9sYWJlbD5cbiAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgWyhuZ01vZGVsKV09XCJmb3JtLnJlbGF0ZWRDb21wYW55SWRcIiBuYW1lPVwicmVsYXRlZENvbXBhbnlJZFwiIHJlcXVpcmVkPlxuICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwiJydcIiBkaXNhYmxlZD5TZcOnaW5pejwvb3B0aW9uPlxuICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGMgb2YgY29tcGFuaWVzXCIgW25nVmFsdWVdPVwiYy5pZFwiPnt7IGMuY29tcGFueU5hbWUgfX08L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IG1iLTNcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+TcO8xZ90ZXJpIENhcmRDb2RlPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiZm9ybS5jdXN0b21lckNhcmRDb2RlXCIgbmFtZT1cImN1c3RvbWVyQ2FyZENvZGVcIiAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IG1iLTNcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+TcO8xZ90ZXJpIEFkxLE8L2xhYmVsPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJmb3JtLmN1c3RvbWVyQ2FyZE5hbWVcIiBuYW1lPVwiY3VzdG9tZXJDYXJkTmFtZVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNiBtYi0zXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlNhdMSxY8SxIENhcmRDb2RlPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiZm9ybS52ZW5kb3JDYXJkQ29kZVwiIG5hbWU9XCJ2ZW5kb3JDYXJkQ29kZVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgbWItM1wiPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5TYXTEsWPEsSBBZMSxPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiZm9ybS52ZW5kb3JDYXJkTmFtZVwiIG5hbWU9XCJ2ZW5kb3JDYXJkTmFtZVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9mb3JtPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiBhYnBDbG9zZT57eyAnQWJwVWk6OkNhbmNlbCcgfCBhYnBMb2NhbGl6YXRpb24gfX08L2J1dHRvbj5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzYXZlKClcIiBbZGlzYWJsZWRdPVwiaXNTYXZpbmdcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwiaXNTYXZpbmdcIiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtIG1lLTFcIj48L3NwYW4+XG4gICAgICB7eyAnQWJwVWk6OlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19XG4gICAgPC9idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG48L2FicC1tb2RhbD5cbiJdfQ==
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AuthGuard, PermissionGuard } from '@abp/ng.core';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { RouterModule } from '@angular/router';
|
|
4
|
+
import { HitPartnerMappingComponent } from './components/hit-partner-mapping.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/router";
|
|
7
|
+
const routes = [
|
|
8
|
+
{
|
|
9
|
+
path: '',
|
|
10
|
+
component: HitPartnerMappingComponent,
|
|
11
|
+
canActivate: [AuthGuard, PermissionGuard],
|
|
12
|
+
},
|
|
13
|
+
];
|
|
14
|
+
export class HitPartnerMappingRoutingModule {
|
|
15
|
+
}
|
|
16
|
+
HitPartnerMappingRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitPartnerMappingRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17
|
+
HitPartnerMappingRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: HitPartnerMappingRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
|
|
18
|
+
HitPartnerMappingRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitPartnerMappingRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitPartnerMappingRoutingModule, decorators: [{
|
|
20
|
+
type: NgModule,
|
|
21
|
+
args: [{
|
|
22
|
+
imports: [RouterModule.forChild(routes)],
|
|
23
|
+
exports: [RouterModule],
|
|
24
|
+
}]
|
|
25
|
+
}] });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXBhcnRuZXItbWFwcGluZy1yb3V0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZiZG9jdW1lbnRmbG93L3NyYy9saWIvY29tcG9uZW50cy9oaXQtcGFydG5lci1tYXBwaW5ncy9oaXQtcGFydG5lci1tYXBwaW5nLXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOzs7QUFFeEYsTUFBTSxNQUFNLEdBQVc7SUFDckI7UUFDRSxJQUFJLEVBQUUsRUFBRTtRQUNSLFNBQVMsRUFBRSwwQkFBMEI7UUFDckMsV0FBVyxFQUFFLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQztLQUMxQztDQUNGLENBQUM7QUFNRixNQUFNLE9BQU8sOEJBQThCOzsySEFBOUIsOEJBQThCOzRIQUE5Qiw4QkFBOEIsd0NBRi9CLFlBQVk7NEhBRVgsOEJBQThCLFlBSC9CLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQzdCLFlBQVk7MkZBRVgsOEJBQThCO2tCQUoxQyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoR3VhcmQsIFBlcm1pc3Npb25HdWFyZCB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSGl0UGFydG5lck1hcHBpbmdDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvaGl0LXBhcnRuZXItbWFwcGluZy5jb21wb25lbnQnO1xuXG5jb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAge1xuICAgIHBhdGg6ICcnLFxuICAgIGNvbXBvbmVudDogSGl0UGFydG5lck1hcHBpbmdDb21wb25lbnQsXG4gICAgY2FuQWN0aXZhdGU6IFtBdXRoR3VhcmQsIFBlcm1pc3Npb25HdWFyZF0sXG4gIH0sXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxuICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgSGl0UGFydG5lck1hcHBpbmdSb3V0aW5nTW9kdWxlIHt9XG4iXX0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { CoreModule } from '@abp/ng.core';
|
|
2
|
+
import { ThemeSharedModule } from '@abp/ng.theme.shared';
|
|
3
|
+
import { NgModule } from '@angular/core';
|
|
4
|
+
import { FormsModule } from '@angular/forms';
|
|
5
|
+
import { DxDataGridModule } from 'devextreme-angular';
|
|
6
|
+
import { HitPartnerMappingComponent } from './components/hit-partner-mapping.component';
|
|
7
|
+
import { HitPartnerMappingRoutingModule } from './hit-partner-mapping-routing.module';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class HitPartnerMappingModule {
|
|
10
|
+
}
|
|
11
|
+
HitPartnerMappingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitPartnerMappingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12
|
+
HitPartnerMappingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: HitPartnerMappingModule, declarations: [HitPartnerMappingComponent], imports: [HitPartnerMappingRoutingModule, CoreModule, ThemeSharedModule, FormsModule, DxDataGridModule] });
|
|
13
|
+
HitPartnerMappingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitPartnerMappingModule, imports: [HitPartnerMappingRoutingModule, CoreModule, ThemeSharedModule, FormsModule, DxDataGridModule] });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitPartnerMappingModule, decorators: [{
|
|
15
|
+
type: NgModule,
|
|
16
|
+
args: [{
|
|
17
|
+
declarations: [HitPartnerMappingComponent],
|
|
18
|
+
imports: [HitPartnerMappingRoutingModule, CoreModule, ThemeSharedModule, FormsModule, DxDataGridModule],
|
|
19
|
+
}]
|
|
20
|
+
}] });
|
|
21
|
+
export function loadHitPartnerMappingModuleAsChild() {
|
|
22
|
+
return Promise.resolve(HitPartnerMappingModule);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXBhcnRuZXItbWFwcGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mYmRvY3VtZW50Zmxvdy9zcmMvbGliL2NvbXBvbmVudHMvaGl0LXBhcnRuZXItbWFwcGluZ3MvaGl0LXBhcnRuZXItbWFwcGluZy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN4RixPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFNdEYsTUFBTSxPQUFPLHVCQUF1Qjs7b0hBQXZCLHVCQUF1QjtxSEFBdkIsdUJBQXVCLGlCQUhuQiwwQkFBMEIsYUFDL0IsOEJBQThCLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxnQkFBZ0I7cUhBRTNGLHVCQUF1QixZQUZ4Qiw4QkFBOEIsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGdCQUFnQjsyRkFFM0YsdUJBQXVCO2tCQUpuQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLDBCQUEwQixDQUFDO29CQUMxQyxPQUFPLEVBQUUsQ0FBQyw4QkFBOEIsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixDQUFDO2lCQUN4Rzs7QUFHRCxNQUFNLFVBQVUsa0NBQWtDO0lBQ2hELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQ2xELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3JlTW9kdWxlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IFRoZW1lU2hhcmVkTW9kdWxlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRHhEYXRhR3JpZE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhcic7XG5pbXBvcnQgeyBIaXRQYXJ0bmVyTWFwcGluZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9oaXQtcGFydG5lci1tYXBwaW5nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBIaXRQYXJ0bmVyTWFwcGluZ1JvdXRpbmdNb2R1bGUgfSBmcm9tICcuL2hpdC1wYXJ0bmVyLW1hcHBpbmctcm91dGluZy5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtIaXRQYXJ0bmVyTWFwcGluZ0NvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtIaXRQYXJ0bmVyTWFwcGluZ1JvdXRpbmdNb2R1bGUsIENvcmVNb2R1bGUsIFRoZW1lU2hhcmVkTW9kdWxlLCBGb3Jtc01vZHVsZSwgRHhEYXRhR3JpZE1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEhpdFBhcnRuZXJNYXBwaW5nTW9kdWxlIHt9XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkSGl0UGFydG5lck1hcHBpbmdNb2R1bGVBc0NoaWxkKCkge1xuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKEhpdFBhcnRuZXJNYXBwaW5nTW9kdWxlKTtcbn1cbiJdfQ==
|
package/esm2020/lib/components/hit-project-parameters/components/hit-project-parameter.component.mjs
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { Component } from '@angular/core';
|
|
2
|
+
import { finalize } from 'rxjs/operators';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../../proxy/project-parameters";
|
|
5
|
+
import * as i2 from "../../../proxy/sap-company-profiles";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
import * as i4 from "@angular/forms";
|
|
8
|
+
import * as i5 from "@abp/ng.theme.shared";
|
|
9
|
+
import * as i6 from "devextreme-angular";
|
|
10
|
+
import * as i7 from "devextreme-angular/ui/nested";
|
|
11
|
+
import * as i8 from "@abp/ng.core";
|
|
12
|
+
export class HitProjectParameterComponent {
|
|
13
|
+
constructor(service, companyService) {
|
|
14
|
+
this.service = service;
|
|
15
|
+
this.companyService = companyService;
|
|
16
|
+
this.companies = [];
|
|
17
|
+
this.selectedCompanyId = '';
|
|
18
|
+
this.data = [];
|
|
19
|
+
this.isLoading = false;
|
|
20
|
+
this.isSaving = false;
|
|
21
|
+
// SAP'ta Code alanı benzersiz anahtardır ve oluşturulduktan sonra değiştirilemez (DevExtreme'in inline
|
|
22
|
+
// grid düzenlemesinde bu "E4017 - Keys cannot be modified" hatasına yol açıyordu). Bu yüzden ekleme/
|
|
23
|
+
// güncelleme artık ayrı bir modal üzerinden yapılır; güncellemede Proje Kodu/Adı salt-okunur gösterilir.
|
|
24
|
+
this.isModalOpen = false;
|
|
25
|
+
this.modalMode = 'create';
|
|
26
|
+
this.form = { prjCode: '', prjName: '' };
|
|
27
|
+
// DevExtreme grid buton sütunu, tıklama olayını { row: { data } } şeklinde bir event objesiyle çağırır.
|
|
28
|
+
this.onEditButtonClick = (e) => {
|
|
29
|
+
this.openUpdateModal(e.row.data);
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
ngOnInit() {
|
|
33
|
+
this.companyService.getList({ maxResultCount: 1000, skipCount: 0, isActive: true }).subscribe(result => {
|
|
34
|
+
this.companies = result.items;
|
|
35
|
+
if (this.companies.length > 0) {
|
|
36
|
+
this.selectedCompanyId = this.companies[0].id;
|
|
37
|
+
this.loadData();
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
loadData() {
|
|
42
|
+
if (!this.selectedCompanyId) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
// Sorgu her tetiklendiğinde listeyi önce temizleriz: istek hata alırsa (önceki şirkete ait) eski veri
|
|
46
|
+
// ekranda kalıp "şirket değişmiyor" izlenimi vermesin.
|
|
47
|
+
this.data = [];
|
|
48
|
+
const requestedCompanyId = this.selectedCompanyId;
|
|
49
|
+
this.isLoading = true;
|
|
50
|
+
this.service
|
|
51
|
+
.getList({ companyId: requestedCompanyId })
|
|
52
|
+
.pipe(finalize(() => (this.isLoading = false)))
|
|
53
|
+
.subscribe(result => {
|
|
54
|
+
// Kullanıcı yanıt gelmeden şirketi tekrar değiştirmişse, artık geçersiz olan bu sonucu yok say.
|
|
55
|
+
if (requestedCompanyId === this.selectedCompanyId) {
|
|
56
|
+
this.data = result.items;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
hasUndefinedIncreaseRate() {
|
|
61
|
+
return this.data.some(x => !x.increaseRate);
|
|
62
|
+
}
|
|
63
|
+
openCreateModal() {
|
|
64
|
+
this.modalMode = 'create';
|
|
65
|
+
this.form = { prjCode: '', prjName: '', ebaId: '', increaseRate: undefined, cardCode: '', currency: '' };
|
|
66
|
+
this.isModalOpen = true;
|
|
67
|
+
}
|
|
68
|
+
openUpdateModal(row) {
|
|
69
|
+
this.modalMode = 'update';
|
|
70
|
+
// Formu mevcut SAP değerleriyle doldururuz; kullanıcı yalnızca değiştirmek istediği alanı düzenler,
|
|
71
|
+
// dokunmadığı alanlar olduğu gibi geri gönderilir (SAP'taki diğer alanları boşaltmaz).
|
|
72
|
+
this.form = {
|
|
73
|
+
prjCode: row.prjCode ?? '',
|
|
74
|
+
prjName: row.prjName ?? '',
|
|
75
|
+
ebaId: row.ebaId ?? '',
|
|
76
|
+
increaseRate: row.increaseRate,
|
|
77
|
+
cardCode: row.cardCode ?? '',
|
|
78
|
+
currency: row.currency ?? '',
|
|
79
|
+
};
|
|
80
|
+
this.isModalOpen = true;
|
|
81
|
+
}
|
|
82
|
+
cancelModal() {
|
|
83
|
+
this.isModalOpen = false;
|
|
84
|
+
}
|
|
85
|
+
saveModal() {
|
|
86
|
+
if (!this.form.prjCode || !this.form.prjName) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
this.isSaving = true;
|
|
90
|
+
const onSaved = () => {
|
|
91
|
+
this.isSaving = false;
|
|
92
|
+
this.isModalOpen = false;
|
|
93
|
+
this.loadData();
|
|
94
|
+
};
|
|
95
|
+
const onError = () => (this.isSaving = false);
|
|
96
|
+
if (this.modalMode === 'create') {
|
|
97
|
+
this.service
|
|
98
|
+
.create(this.selectedCompanyId, {
|
|
99
|
+
prjCode: this.form.prjCode,
|
|
100
|
+
prjName: this.form.prjName,
|
|
101
|
+
ebaId: this.form.ebaId || undefined,
|
|
102
|
+
increaseRate: this.form.increaseRate,
|
|
103
|
+
cardCode: this.form.cardCode || undefined,
|
|
104
|
+
currency: this.form.currency || undefined,
|
|
105
|
+
})
|
|
106
|
+
.subscribe({ next: onSaved, error: onError });
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
this.service
|
|
110
|
+
.update(this.selectedCompanyId, this.form.prjCode, {
|
|
111
|
+
increaseRate: this.form.increaseRate,
|
|
112
|
+
cardCode: this.form.cardCode || undefined,
|
|
113
|
+
currency: this.form.currency || undefined,
|
|
114
|
+
})
|
|
115
|
+
.subscribe({ next: onSaved, error: onError });
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
HitProjectParameterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitProjectParameterComponent, deps: [{ token: i1.SapProjectParameterService }, { token: i2.SapCompanyProfileService }], target: i0.ɵɵFactoryTarget.Component });
|
|
120
|
+
HitProjectParameterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitProjectParameterComponent, selector: "hit-project-parameter", ngImport: i0, template: "<div class=\"card\">\n <div class=\"card-header py-3\">\n <h5 class=\"card-title mb-0\">{{ 'FBDocumentFlow::Menu:ProjectParameters' | abpLocalization }}</h5>\n </div>\n <div class=\"card-body pt-3\">\n <div class=\"row g-3 align-items-end mb-3\">\n <div class=\"col-md-4\">\n <label class=\"form-label\">\u015Eirket</label>\n <select class=\"form-select\" [(ngModel)]=\"selectedCompanyId\" (ngModelChange)=\"loadData()\">\n <option *ngFor=\"let c of companies\" [ngValue]=\"c.id\">{{ c.companyName }}</option>\n </select>\n </div>\n <div class=\"col-auto\">\n <button class=\"btn btn-outline-primary\" (click)=\"loadData()\" [disabled]=\"isLoading || !selectedCompanyId\" title=\"Listeyi yenile\">\n <i class=\"fa fa-refresh me-1\"></i>Yenile\n </button>\n </div>\n </div>\n\n <div class=\"d-flex justify-content-between align-items-center mb-2\">\n <h6 class=\"mb-0\">SAP B1 Proje Parametreleri</h6>\n <button class=\"btn btn-primary btn-sm\" (click)=\"openCreateModal()\" [disabled]=\"!selectedCompanyId\">\n <i class=\"fa fa-plus me-1\"></i>Yeni Proje Ekle\n </button>\n </div>\n\n <div *ngIf=\"isLoading\" class=\"text-center py-5\">\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\n <div class=\"mt-2 text-muted\">SAP B1 proje parametreleri y\u00FCkleniyor...</div>\n </div>\n\n <dx-data-grid *ngIf=\"!isLoading\" [dataSource]=\"data\" [showBorders]=\"true\" [showRowLines]=\"true\" [columnAutoWidth]=\"true\" keyExpr=\"prjCode\">\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [showNavigationButtons]=\"true\"></dxo-pager>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-header-filter [visible]=\"true\"></dxo-header-filter>\n\n <dxi-column dataField=\"prjCode\" caption=\"Proje Kodu\" [width]=\"120\"></dxi-column>\n <dxi-column dataField=\"prjName\" caption=\"Proje Ad\u0131\"></dxi-column>\n <dxi-column dataField=\"ebaId\" caption=\"EBA ID\" [width]=\"120\"></dxi-column>\n <dxi-column dataField=\"increaseRate\" caption=\"Art\u0131r\u0131m Oran\u0131\" dataType=\"number\" [width]=\"130\"></dxi-column>\n <dxi-column dataField=\"cardCode\" caption=\"Muhatap Kodu\" [width]=\"140\"></dxi-column>\n <dxi-column dataField=\"currency\" caption=\"Para Birimi\" [width]=\"110\"></dxi-column>\n <dxi-column type=\"buttons\" caption=\"\" [width]=\"60\">\n <dxi-button icon=\"edit\" hint=\"D\u00FCzenle\" [onClick]=\"onEditButtonClick\"></dxi-button>\n </dxi-column>\n </dx-data-grid>\n\n <div class=\"alert alert-warning mt-3\" *ngIf=\"hasUndefinedIncreaseRate()\">\n 0 / NULL art\u0131r\u0131m oran\u0131 ak\u0131\u015F\u0131 bloklamaz. Aktar\u0131m baca\u011F\u0131nda k\u0131rm\u0131z\u0131 uyar\u0131 g\u00F6sterilir ve art\u0131r\u0131m uygulanmadan devam i\u00E7in kullan\u0131c\u0131 onay\u0131 al\u0131n\u0131r.\n </div>\n\n <small class=\"text-muted d-block mt-2\">\n Proje Kodu/Ad\u0131/EBA ID SAP'ta olu\u015Fturulduktan sonra bu ekrandan de\u011Fi\u015Ftirilemez (SAP anahtar/bilgi alanlar\u0131d\u0131r); yaln\u0131zca\n Art\u0131r\u0131m Oran\u0131, Muhatap Kodu ve Para Birimi g\u00FCncellenebilir.\n <br />\n U_CardCode varsay\u0131lan proje muhatab\u0131d\u0131r; Intercompany hedef OPCH.CardCode \u00E7\u00F6z\u00FCm\u00FCnde esas kaynak Muhatap E\u015Fle\u015Ftirmeleridir.\n </small>\n </div>\n</div>\n\n<abp-modal [(visible)]=\"isModalOpen\">\n <ng-template #abpHeader>\n <h3>{{ modalMode === 'create' ? 'Yeni Proje Ekle' : 'Proje Parametrelerini G\u00FCncelle' }}</h3>\n </ng-template>\n\n <ng-template #abpBody>\n <div class=\"row g-3\">\n <div class=\"col-md-6\">\n <label class=\"form-label\">Proje Kodu</label>\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"form.prjCode\"\n [disabled]=\"modalMode === 'update'\"\n [readOnly]=\"modalMode === 'update'\"\n />\n </div>\n <div class=\"col-md-6\">\n <label class=\"form-label\">Proje Ad\u0131</label>\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"form.prjName\"\n [disabled]=\"modalMode === 'update'\"\n [readOnly]=\"modalMode === 'update'\"\n />\n </div>\n <div class=\"col-md-6\">\n <label class=\"form-label\">EBA ID</label>\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"form.ebaId\"\n [disabled]=\"modalMode === 'update'\"\n [readOnly]=\"modalMode === 'update'\"\n />\n </div>\n <div class=\"col-md-6\">\n <label class=\"form-label\">Art\u0131r\u0131m Oran\u0131 (U_Oran)</label>\n <input type=\"number\" step=\"0.01\" class=\"form-control\" [(ngModel)]=\"form.increaseRate\" />\n </div>\n <div class=\"col-md-6\">\n <label class=\"form-label\">Muhatap Kodu (U_CardCode)</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.cardCode\" />\n </div>\n <div class=\"col-md-6\">\n <label class=\"form-label\">Para Birimi (U_Currency)</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.currency\" />\n </div>\n </div>\n\n <div class=\"alert alert-info small mt-3\" *ngIf=\"modalMode === 'update'\">\n Proje Kodu/Ad\u0131/EBA ID SAP'ta de\u011Fi\u015Ftirilemeyen alanlard\u0131r; yaln\u0131zca Art\u0131r\u0131m Oran\u0131, Muhatap Kodu ve Para Birimi g\u00FCncellenir.\n Dokunmad\u0131\u011F\u0131n\u0131z alanlar mevcut SAP de\u011Feriyle oldu\u011Fu gibi g\u00F6nderilir.\n </div>\n </ng-template>\n\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"cancelModal()\">Vazge\u00E7</button>\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"saveModal()\"\n [disabled]=\"isSaving || !form.prjCode || !form.prjName\"\n >\n <span *ngIf=\"isSaving\" class=\"spinner-border spinner-border-sm me-1\"></span>\n Kaydet\n </button>\n </ng-template>\n</abp-modal>\n", dependencies: [{ 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.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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { 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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.ModalComponent, selector: "abp-modal", inputs: ["visible", "busy", "options", "suppressUnsavedChangesWarning"], outputs: ["visibleChange", "init", "appear", "disappear"] }, { kind: "component", type: i6.DxDataGridComponent, selector: "dx-data-grid", inputs: ["accessKey", "activeStateEnabled", "allowColumnReordering", "allowColumnResizing", "autoNavigateToFocusedRow", "cacheEnabled", "cellHintEnabled", "columnAutoWidth", "columnChooser", "columnFixing", "columnHidingEnabled", "columnMinWidth", "columnResizingMode", "columns", "columnWidth", "customizeColumns", "customizeExportData", "dataRowTemplate", "dataSource", "dateSerializationFormat", "disabled", "editing", "elementAttr", "errorRowEnabled", "export", "filterBuilder", "filterBuilderPopup", "filterPanel", "filterRow", "filterSyncEnabled", "filterValue", "focusedColumnIndex", "focusedRowEnabled", "focusedRowIndex", "focusedRowKey", "focusStateEnabled", "grouping", "groupPanel", "headerFilter", "height", "highlightChanges", "hint", "hoverStateEnabled", "keyboardNavigation", "keyExpr", "loadPanel", "masterDetail", "noDataText", "pager", "paging", "remoteOperations", "renderAsync", "repaintChangesOnly", "rowAlternationEnabled", "rowDragging", "rowTemplate", "rtlEnabled", "scrolling", "searchPanel", "selectedRowKeys", "selection", "selectionFilter", "showBorders", "showColumnHeaders", "showColumnLines", "showRowLines", "sortByGroupSummaryInfo", "sorting", "stateStoring", "summary", "syncLookupFilterValues", "tabIndex", "toolbar", "twoWayBindingEnabled", "visible", "width", "wordWrapEnabled"], outputs: ["onAdaptiveDetailRowPreparing", "onCellClick", "onCellDblClick", "onCellHoverChanged", "onCellPrepared", "onContentReady", "onContextMenuPreparing", "onDataErrorOccurred", "onDisposing", "onEditCanceled", "onEditCanceling", "onEditingStart", "onEditorPrepared", "onEditorPreparing", "onExported", "onExporting", "onFileSaving", "onFocusedCellChanged", "onFocusedCellChanging", "onFocusedRowChanged", "onFocusedRowChanging", "onInitialized", "onInitNewRow", "onKeyDown", "onOptionChanged", "onRowClick", "onRowCollapsed", "onRowCollapsing", "onRowDblClick", "onRowExpanded", "onRowExpanding", "onRowInserted", "onRowInserting", "onRowPrepared", "onRowRemoved", "onRowRemoving", "onRowUpdated", "onRowUpdating", "onRowValidating", "onSaved", "onSaving", "onSelectionChanged", "onToolbarPreparing", "accessKeyChange", "activeStateEnabledChange", "allowColumnReorderingChange", "allowColumnResizingChange", "autoNavigateToFocusedRowChange", "cacheEnabledChange", "cellHintEnabledChange", "columnAutoWidthChange", "columnChooserChange", "columnFixingChange", "columnHidingEnabledChange", "columnMinWidthChange", "columnResizingModeChange", "columnsChange", "columnWidthChange", "customizeColumnsChange", "customizeExportDataChange", "dataRowTemplateChange", "dataSourceChange", "dateSerializationFormatChange", "disabledChange", "editingChange", "elementAttrChange", "errorRowEnabledChange", "exportChange", "filterBuilderChange", "filterBuilderPopupChange", "filterPanelChange", "filterRowChange", "filterSyncEnabledChange", "filterValueChange", "focusedColumnIndexChange", "focusedRowEnabledChange", "focusedRowIndexChange", "focusedRowKeyChange", "focusStateEnabledChange", "groupingChange", "groupPanelChange", "headerFilterChange", "heightChange", "highlightChangesChange", "hintChange", "hoverStateEnabledChange", "keyboardNavigationChange", "keyExprChange", "loadPanelChange", "masterDetailChange", "noDataTextChange", "pagerChange", "pagingChange", "remoteOperationsChange", "renderAsyncChange", "repaintChangesOnlyChange", "rowAlternationEnabledChange", "rowDraggingChange", "rowTemplateChange", "rtlEnabledChange", "scrollingChange", "searchPanelChange", "selectedRowKeysChange", "selectionChange", "selectionFilterChange", "showBordersChange", "showColumnHeadersChange", "showColumnLinesChange", "showRowLinesChange", "sortByGroupSummaryInfoChange", "sortingChange", "stateStoringChange", "summaryChange", "syncLookupFilterValuesChange", "tabIndexChange", "toolbarChange", "twoWayBindingEnabledChange", "visibleChange", "widthChange", "wordWrapEnabledChange"] }, { kind: "component", type: i7.DxiColumnComponent, selector: "dxi-column", inputs: ["alignment", "allowEditing", "allowExporting", "allowFiltering", "allowFixing", "allowGrouping", "allowHeaderFiltering", "allowHiding", "allowReordering", "allowResizing", "allowSearch", "allowSorting", "autoExpandGroup", "buttons", "calculateCellValue", "calculateDisplayValue", "calculateFilterExpression", "calculateGroupValue", "calculateSortValue", "caption", "cellTemplate", "columns", "cssClass", "customizeText", "dataField", "dataType", "editCellTemplate", "editorOptions", "encodeHtml", "falseText", "filterOperations", "filterType", "filterValue", "filterValues", "fixed", "fixedPosition", "format", "formItem", "groupCellTemplate", "groupIndex", "headerCellTemplate", "headerFilter", "hidingPriority", "isBand", "lookup", "minWidth", "name", "ownerBand", "renderAsync", "selectedFilterOperation", "setCellValue", "showEditorAlways", "showInColumnChooser", "showWhenGrouped", "sortIndex", "sortingMethod", "sortOrder", "trueText", "type", "validationRules", "visible", "visibleIndex", "width"], outputs: ["filterValueChange", "filterValuesChange", "groupIndexChange", "selectedFilterOperationChange", "sortIndexChange", "sortOrderChange", "visibleChange", "visibleIndexChange"] }, { kind: "component", type: i7.DxiButtonComponent, selector: "dxi-button", inputs: ["location", "name", "options", "cssClass", "disabled", "hint", "icon", "onClick", "template", "text", "visible"] }, { kind: "component", type: i7.DxoHeaderFilterComponent, selector: "dxo-header-filter", inputs: ["allowSearch", "dataSource", "groupInterval", "height", "searchMode", "width", "searchTimeout", "texts", "visible", "showRelevantValues"] }, { kind: "component", type: i7.DxoFilterRowComponent, selector: "dxo-filter-row", inputs: ["applyFilter", "applyFilterText", "betweenEndText", "betweenStartText", "operationDescriptions", "resetOperationText", "showAllText", "showOperationChooser", "visible"] }, { kind: "component", type: i7.DxoPagerComponent, selector: "dxo-pager", inputs: ["allowedPageSizes", "displayMode", "infoText", "showInfo", "showNavigationButtons", "showPageSizeSelector", "visible"] }, { kind: "component", type: i7.DxoPagingComponent, selector: "dxo-paging", inputs: ["enabled", "pageIndex", "pageSize"], outputs: ["pageIndexChange", "pageSizeChange"] }, { kind: "pipe", type: i8.LocalizationPipe, name: "abpLocalization" }] });
|
|
121
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitProjectParameterComponent, decorators: [{
|
|
122
|
+
type: Component,
|
|
123
|
+
args: [{ selector: 'hit-project-parameter', template: "<div class=\"card\">\n <div class=\"card-header py-3\">\n <h5 class=\"card-title mb-0\">{{ 'FBDocumentFlow::Menu:ProjectParameters' | abpLocalization }}</h5>\n </div>\n <div class=\"card-body pt-3\">\n <div class=\"row g-3 align-items-end mb-3\">\n <div class=\"col-md-4\">\n <label class=\"form-label\">\u015Eirket</label>\n <select class=\"form-select\" [(ngModel)]=\"selectedCompanyId\" (ngModelChange)=\"loadData()\">\n <option *ngFor=\"let c of companies\" [ngValue]=\"c.id\">{{ c.companyName }}</option>\n </select>\n </div>\n <div class=\"col-auto\">\n <button class=\"btn btn-outline-primary\" (click)=\"loadData()\" [disabled]=\"isLoading || !selectedCompanyId\" title=\"Listeyi yenile\">\n <i class=\"fa fa-refresh me-1\"></i>Yenile\n </button>\n </div>\n </div>\n\n <div class=\"d-flex justify-content-between align-items-center mb-2\">\n <h6 class=\"mb-0\">SAP B1 Proje Parametreleri</h6>\n <button class=\"btn btn-primary btn-sm\" (click)=\"openCreateModal()\" [disabled]=\"!selectedCompanyId\">\n <i class=\"fa fa-plus me-1\"></i>Yeni Proje Ekle\n </button>\n </div>\n\n <div *ngIf=\"isLoading\" class=\"text-center py-5\">\n <div class=\"spinner-border text-primary\" role=\"status\"></div>\n <div class=\"mt-2 text-muted\">SAP B1 proje parametreleri y\u00FCkleniyor...</div>\n </div>\n\n <dx-data-grid *ngIf=\"!isLoading\" [dataSource]=\"data\" [showBorders]=\"true\" [showRowLines]=\"true\" [columnAutoWidth]=\"true\" keyExpr=\"prjCode\">\n <dxo-paging [pageSize]=\"50\"></dxo-paging>\n <dxo-pager [visible]=\"true\" [showInfo]=\"true\" [showNavigationButtons]=\"true\"></dxo-pager>\n <dxo-filter-row [visible]=\"true\"></dxo-filter-row>\n <dxo-header-filter [visible]=\"true\"></dxo-header-filter>\n\n <dxi-column dataField=\"prjCode\" caption=\"Proje Kodu\" [width]=\"120\"></dxi-column>\n <dxi-column dataField=\"prjName\" caption=\"Proje Ad\u0131\"></dxi-column>\n <dxi-column dataField=\"ebaId\" caption=\"EBA ID\" [width]=\"120\"></dxi-column>\n <dxi-column dataField=\"increaseRate\" caption=\"Art\u0131r\u0131m Oran\u0131\" dataType=\"number\" [width]=\"130\"></dxi-column>\n <dxi-column dataField=\"cardCode\" caption=\"Muhatap Kodu\" [width]=\"140\"></dxi-column>\n <dxi-column dataField=\"currency\" caption=\"Para Birimi\" [width]=\"110\"></dxi-column>\n <dxi-column type=\"buttons\" caption=\"\" [width]=\"60\">\n <dxi-button icon=\"edit\" hint=\"D\u00FCzenle\" [onClick]=\"onEditButtonClick\"></dxi-button>\n </dxi-column>\n </dx-data-grid>\n\n <div class=\"alert alert-warning mt-3\" *ngIf=\"hasUndefinedIncreaseRate()\">\n 0 / NULL art\u0131r\u0131m oran\u0131 ak\u0131\u015F\u0131 bloklamaz. Aktar\u0131m baca\u011F\u0131nda k\u0131rm\u0131z\u0131 uyar\u0131 g\u00F6sterilir ve art\u0131r\u0131m uygulanmadan devam i\u00E7in kullan\u0131c\u0131 onay\u0131 al\u0131n\u0131r.\n </div>\n\n <small class=\"text-muted d-block mt-2\">\n Proje Kodu/Ad\u0131/EBA ID SAP'ta olu\u015Fturulduktan sonra bu ekrandan de\u011Fi\u015Ftirilemez (SAP anahtar/bilgi alanlar\u0131d\u0131r); yaln\u0131zca\n Art\u0131r\u0131m Oran\u0131, Muhatap Kodu ve Para Birimi g\u00FCncellenebilir.\n <br />\n U_CardCode varsay\u0131lan proje muhatab\u0131d\u0131r; Intercompany hedef OPCH.CardCode \u00E7\u00F6z\u00FCm\u00FCnde esas kaynak Muhatap E\u015Fle\u015Ftirmeleridir.\n </small>\n </div>\n</div>\n\n<abp-modal [(visible)]=\"isModalOpen\">\n <ng-template #abpHeader>\n <h3>{{ modalMode === 'create' ? 'Yeni Proje Ekle' : 'Proje Parametrelerini G\u00FCncelle' }}</h3>\n </ng-template>\n\n <ng-template #abpBody>\n <div class=\"row g-3\">\n <div class=\"col-md-6\">\n <label class=\"form-label\">Proje Kodu</label>\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"form.prjCode\"\n [disabled]=\"modalMode === 'update'\"\n [readOnly]=\"modalMode === 'update'\"\n />\n </div>\n <div class=\"col-md-6\">\n <label class=\"form-label\">Proje Ad\u0131</label>\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"form.prjName\"\n [disabled]=\"modalMode === 'update'\"\n [readOnly]=\"modalMode === 'update'\"\n />\n </div>\n <div class=\"col-md-6\">\n <label class=\"form-label\">EBA ID</label>\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"form.ebaId\"\n [disabled]=\"modalMode === 'update'\"\n [readOnly]=\"modalMode === 'update'\"\n />\n </div>\n <div class=\"col-md-6\">\n <label class=\"form-label\">Art\u0131r\u0131m Oran\u0131 (U_Oran)</label>\n <input type=\"number\" step=\"0.01\" class=\"form-control\" [(ngModel)]=\"form.increaseRate\" />\n </div>\n <div class=\"col-md-6\">\n <label class=\"form-label\">Muhatap Kodu (U_CardCode)</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.cardCode\" />\n </div>\n <div class=\"col-md-6\">\n <label class=\"form-label\">Para Birimi (U_Currency)</label>\n <input type=\"text\" class=\"form-control\" [(ngModel)]=\"form.currency\" />\n </div>\n </div>\n\n <div class=\"alert alert-info small mt-3\" *ngIf=\"modalMode === 'update'\">\n Proje Kodu/Ad\u0131/EBA ID SAP'ta de\u011Fi\u015Ftirilemeyen alanlard\u0131r; yaln\u0131zca Art\u0131r\u0131m Oran\u0131, Muhatap Kodu ve Para Birimi g\u00FCncellenir.\n Dokunmad\u0131\u011F\u0131n\u0131z alanlar mevcut SAP de\u011Feriyle oldu\u011Fu gibi g\u00F6nderilir.\n </div>\n </ng-template>\n\n <ng-template #abpFooter>\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"cancelModal()\">Vazge\u00E7</button>\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"saveModal()\"\n [disabled]=\"isSaving || !form.prjCode || !form.prjName\"\n >\n <span *ngIf=\"isSaving\" class=\"spinner-border spinner-border-sm me-1\"></span>\n Kaydet\n </button>\n </ng-template>\n</abp-modal>\n" }]
|
|
124
|
+
}], ctorParameters: function () { return [{ type: i1.SapProjectParameterService }, { type: i2.SapCompanyProfileService }]; } });
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXByb2plY3QtcGFyYW1ldGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZiZG9jdW1lbnRmbG93L3NyYy9saWIvY29tcG9uZW50cy9oaXQtcHJvamVjdC1wYXJhbWV0ZXJzL2NvbXBvbmVudHMvaGl0LXByb2plY3QtcGFyYW1ldGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZiZG9jdW1lbnRmbG93L3NyYy9saWIvY29tcG9uZW50cy9oaXQtcHJvamVjdC1wYXJhbWV0ZXJzL2NvbXBvbmVudHMvaGl0LXByb2plY3QtcGFyYW1ldGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBaUIxQyxNQUFNLE9BQU8sNEJBQTRCO0lBY3ZDLFlBQW9CLE9BQW1DLEVBQVUsY0FBd0M7UUFBckYsWUFBTyxHQUFQLE9BQU8sQ0FBNEI7UUFBVSxtQkFBYyxHQUFkLGNBQWMsQ0FBMEI7UUFiekcsY0FBUyxHQUEyQixFQUFFLENBQUM7UUFDdkMsc0JBQWlCLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLFNBQUksR0FBNkIsRUFBRSxDQUFDO1FBQ3BDLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQix1R0FBdUc7UUFDdkcscUdBQXFHO1FBQ3JHLHlHQUF5RztRQUN6RyxnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUNwQixjQUFTLEdBQXdCLFFBQVEsQ0FBQztRQUMxQyxTQUFJLEdBQThCLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLENBQUM7UUE2RC9ELHdHQUF3RztRQUN4RyxzQkFBaUIs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QUFDLE9BQU87aUJBQ1QsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDakQsWUFBWSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTtnQkFDcEMsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLFNBQVM7Z0JBQ3pDLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsSUFBSSxTQUFTO2FBQzFDLENBQUM7aUJBQ0QsU0FBUyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNqRDtJQUNILENBQUM7O3lIQW5IVSw0QkFBNEI7NkdBQTVCLDRCQUE0Qiw2RENsQnpDLDhvTUFtSUE7MkZEakhhLDRCQUE0QjtrQkFKeEMsU0FBUzsrQkFDRSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZmluYWxpemUgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTYXBQcm9qZWN0UGFyYW1ldGVyRHRvLCBTYXBQcm9qZWN0UGFyYW1ldGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3Byb3h5L3Byb2plY3QtcGFyYW1ldGVycyc7XG5pbXBvcnQgeyBTYXBDb21wYW55UHJvZmlsZUR0bywgU2FwQ29tcGFueVByb2ZpbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcHJveHkvc2FwLWNvbXBhbnktcHJvZmlsZXMnO1xuXG5pbnRlcmZhY2UgUHJvamVjdFBhcmFtZXRlckZvcm1Nb2RlbCB7XG4gIHByakNvZGU6IHN0cmluZztcbiAgcHJqTmFtZTogc3RyaW5nO1xuICBlYmFJZD86IHN0cmluZztcbiAgaW5jcmVhc2VSYXRlPzogbnVtYmVyO1xuICBjYXJkQ29kZT86IHN0cmluZztcbiAgY3VycmVuY3k/OiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2hpdC1wcm9qZWN0LXBhcmFtZXRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9oaXQtcHJvamVjdC1wYXJhbWV0ZXIuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBIaXRQcm9qZWN0UGFyYW1ldGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgY29tcGFuaWVzOiBTYXBDb21wYW55UHJvZmlsZUR0b1tdID0gW107XG4gIHNlbGVjdGVkQ29tcGFueUlkID0gJyc7XG4gIGRhdGE6IFNhcFByb2plY3RQYXJhbWV0ZXJEdG9bXSA9IFtdO1xuICBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgaXNTYXZpbmcgPSBmYWxzZTtcblxuICAvLyBTQVAndGEgQ29kZSBhbGFuxLEgYmVuemVyc2l6IGFuYWh0YXJkxLFyIHZlIG9sdcWfdHVydWxkdWt0YW4gc29ucmEgZGXEn2nFn3RpcmlsZW1leiAoRGV2RXh0cmVtZSdpbiBpbmxpbmVcbiAgLy8gZ3JpZCBkw7x6ZW5sZW1lc2luZGUgYnUgXCJFNDAxNyAtIEtleXMgY2Fubm90IGJlIG1vZGlmaWVkXCIgaGF0YXPEsW5hIHlvbCBhw6fEsXlvcmR1KS4gQnUgecO8emRlbiBla2xlbWUvXG4gIC8vIGfDvG5jZWxsZW1lIGFydMSxayBheXLEsSBiaXIgbW9kYWwgw7x6ZXJpbmRlbiB5YXDEsWzEsXI7IGfDvG5jZWxsZW1lZGUgUHJvamUgS29kdS9BZMSxIHNhbHQtb2t1bnVyIGfDtnN0ZXJpbGlyLlxuICBpc01vZGFsT3BlbiA9IGZhbHNlO1xuICBtb2RhbE1vZGU6ICdjcmVhdGUnIHwgJ3VwZGF0ZScgPSAnY3JlYXRlJztcbiAgZm9ybTogUHJvamVjdFBhcmFtZXRlckZvcm1Nb2RlbCA9IHsgcHJqQ29kZTogJycsIHByak5hbWU6ICcnIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzZXJ2aWNlOiBTYXBQcm9qZWN0UGFyYW1ldGVyU2VydmljZSwgcHJpdmF0ZSBjb21wYW55U2VydmljZTogU2FwQ29tcGFueVByb2ZpbGVTZXJ2aWNlKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY29tcGFueVNlcnZpY2UuZ2V0TGlzdCh7IG1heFJlc3VsdENvdW50OiAxMDAwLCBza2lwQ291bnQ6IDAsIGlzQWN0aXZlOiB0cnVlIH0pLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5jb21wYW5pZXMgPSByZXN1bHQuaXRlbXM7XG4gICAgICBpZiAodGhpcy5jb21wYW5pZXMubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkQ29tcGFueUlkID0gdGhpcy5jb21wYW5pZXNbMF0uaWQ7XG4gICAgICAgIHRoaXMubG9hZERhdGEoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGxvYWREYXRhKCkge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZENvbXBhbnlJZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIFNvcmd1IGhlciB0ZXRpa2xlbmRpxJ9pbmRlIGxpc3RleWkgw7ZuY2UgdGVtaXpsZXJpejogaXN0ZWsgaGF0YSBhbMSxcnNhICjDtm5jZWtpIMWfaXJrZXRlIGFpdCkgZXNraSB2ZXJpXG4gICAgLy8gZWtyYW5kYSBrYWzEsXAgXCLFn2lya2V0IGRlxJ9pxZ9taXlvclwiIGl6bGVuaW1pIHZlcm1lc2luLlxuICAgIHRoaXMuZGF0YSA9IFtdO1xuICAgIGNvbnN0IHJlcXVlc3RlZENvbXBhbnlJZCA9IHRoaXMuc2VsZWN0ZWRDb21wYW55SWQ7XG5cbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5zZXJ2aWNlXG4gICAgICAuZ2V0TGlzdCh7IGNvbXBhbnlJZDogcmVxdWVzdGVkQ29tcGFueUlkIH0pXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiAodGhpcy5pc0xvYWRpbmcgPSBmYWxzZSkpKVxuICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgICAvLyBLdWxsYW7EsWPEsSB5YW7EsXQgZ2VsbWVkZW4gxZ9pcmtldGkgdGVrcmFyIGRlxJ9pxZ90aXJtacWfc2UsIGFydMSxayBnZcOnZXJzaXogb2xhbiBidSBzb251Y3UgeW9rIHNheS5cbiAgICAgICAgaWYgKHJlcXVlc3RlZENvbXBhbnlJZCA9PT0gdGhpcy5zZWxlY3RlZENvbXBhbnlJZCkge1xuICAgICAgICAgIHRoaXMuZGF0YSA9IHJlc3VsdC5pdGVtcztcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBoYXNVbmRlZmluZWRJbmNyZWFzZVJhdGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YS5zb21lKHggPT4gIXguaW5jcmVhc2VSYXRlKTtcbiAgfVxuXG4gIG9wZW5DcmVhdGVNb2RhbCgpIHtcbiAgICB0aGlzLm1vZGFsTW9kZSA9ICdjcmVhdGUnO1xuICAgIHRoaXMuZm9ybSA9IHsgcHJqQ29kZTogJycsIHByak5hbWU6ICcnLCBlYmFJZDogJycsIGluY3JlYXNlUmF0ZTogdW5kZWZpbmVkLCBjYXJkQ29kZTogJycsIGN1cnJlbmN5OiAnJyB9O1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xuICB9XG5cbiAgb3BlblVwZGF0ZU1vZGFsKHJvdzogU2FwUHJvamVjdFBhcmFtZXRlckR0bykge1xuICAgIHRoaXMubW9kYWxNb2RlID0gJ3VwZGF0ZSc7XG4gICAgLy8gRm9ybXUgbWV2Y3V0IFNBUCBkZcSfZXJsZXJpeWxlIGRvbGR1cnVydXo7IGt1bGxhbsSxY8SxIHlhbG7EsXpjYSBkZcSfacWfdGlybWVrIGlzdGVkacSfaSBhbGFuxLEgZMO8emVubGVyLFxuICAgIC8vIGRva3VubWFkxLHEn8SxIGFsYW5sYXIgb2xkdcSfdSBnaWJpIGdlcmkgZ8O2bmRlcmlsaXIgKFNBUCd0YWtpIGRpxJ9lciBhbGFubGFyxLEgYm/Fn2FsdG1heikuXG4gICAgdGhpcy5mb3JtID0ge1xuICAgICAgcHJqQ29kZTogcm93LnByakNvZGUgPz8gJycsXG4gICAgICBwcmpOYW1lOiByb3cucHJqTmFtZSA/PyAnJyxcbiAgICAgIGViYUlkOiByb3cuZWJhSWQgPz8gJycsXG4gICAgICBpbmNyZWFzZVJhdGU6IHJvdy5pbmNyZWFzZVJhdGUsXG4gICAgICBjYXJkQ29kZTogcm93LmNhcmRDb2RlID8/ICcnLFxuICAgICAgY3VycmVuY3k6IHJvdy5jdXJyZW5jeSA/PyAnJyxcbiAgICB9O1xuICAgIHRoaXMuaXNNb2RhbE9wZW4gPSB0cnVlO1xuICB9XG5cbiAgLy8gRGV2RXh0cmVtZSBncmlkIGJ1dG9uIHPDvHR1bnUsIHTEsWtsYW1hIG9sYXnEsW7EsSB7IHJvdzogeyBkYXRhIH0gfSDFn2VrbGluZGUgYmlyIGV2ZW50IG9iamVzaXlsZSDDp2HEn8SxcsSxci5cbiAgb25FZGl0QnV0dG9uQ2xpY2sgPSAoZTogYW55KSA9PiB7XG4gICAgdGhpcy5vcGVuVXBkYXRlTW9kYWwoZS5yb3cuZGF0YSk7XG4gIH07XG5cbiAgY2FuY2VsTW9kYWwoKSB7XG4gICAgdGhpcy5pc01vZGFsT3BlbiA9IGZhbHNlO1xuICB9XG5cbiAgc2F2ZU1vZGFsKCkge1xuICAgIGlmICghdGhpcy5mb3JtLnByakNvZGUgfHwgIXRoaXMuZm9ybS5wcmpOYW1lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1NhdmluZyA9IHRydWU7XG4gICAgY29uc3Qgb25TYXZlZCA9ICgpID0+IHtcbiAgICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMuaXNNb2RhbE9wZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMubG9hZERhdGEoKTtcbiAgICB9O1xuICAgIGNvbnN0IG9uRXJyb3IgPSAoKSA9PiAodGhpcy5pc1NhdmluZyA9IGZhbHNlKTtcblxuICAgIGlmICh0aGlzLm1vZGFsTW9kZSA9PT0gJ2NyZWF0ZScpIHtcbiAgICAgIHRoaXMuc2VydmljZVxuICAgICAgICAuY3JlYXRlKHRoaXMuc2VsZWN0ZWRDb21wYW55SWQsIHtcbiAgICAgICAgICBwcmpDb2RlOiB0aGlzLmZvcm0ucHJqQ29kZSxcbiAgICAgICAgICBwcmpOYW1lOiB0aGlzLmZvcm0ucHJqTmFtZSxcbiAgICAgICAgICBlYmFJZDogdGhpcy5mb3JtLmViYUlkIHx8IHVuZGVmaW5lZCxcbiAgICAgICAgICBpbmNyZWFzZVJhdGU6IHRoaXMuZm9ybS5pbmNyZWFzZVJhdGUsXG4gICAgICAgICAgY2FyZENvZGU6IHRoaXMuZm9ybS5jYXJkQ29kZSB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgY3VycmVuY3k6IHRoaXMuZm9ybS5jdXJyZW5jeSB8fCB1bmRlZmluZWQsXG4gICAgICAgIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoeyBuZXh0OiBvblNhdmVkLCBlcnJvcjogb25FcnJvciB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZXJ2aWNlXG4gICAgICAgIC51cGRhdGUodGhpcy5zZWxlY3RlZENvbXBhbnlJZCwgdGhpcy5mb3JtLnByakNvZGUsIHtcbiAgICAgICAgICBpbmNyZWFzZVJhdGU6IHRoaXMuZm9ybS5pbmNyZWFzZVJhdGUsXG4gICAgICAgICAgY2FyZENvZGU6IHRoaXMuZm9ybS5jYXJkQ29kZSB8fCB1bmRlZmluZWQsXG4gICAgICAgICAgY3VycmVuY3k6IHRoaXMuZm9ybS5jdXJyZW5jeSB8fCB1bmRlZmluZWQsXG4gICAgICAgIH0pXG4gICAgICAgIC5zdWJzY3JpYmUoeyBuZXh0OiBvblNhdmVkLCBlcnJvcjogb25FcnJvciB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjYXJkXCI+XG4gIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBweS0zXCI+XG4gICAgPGg1IGNsYXNzPVwiY2FyZC10aXRsZSBtYi0wXCI+e3sgJ0ZCRG9jdW1lbnRGbG93OjpNZW51OlByb2plY3RQYXJhbWV0ZXJzJyB8IGFicExvY2FsaXphdGlvbiB9fTwvaDU+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB0LTNcIj5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGctMyBhbGlnbi1pdGVtcy1lbmQgbWItM1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj7Fnmlya2V0PC9sYWJlbD5cbiAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZENvbXBhbnlJZFwiIChuZ01vZGVsQ2hhbmdlKT1cImxvYWREYXRhKClcIj5cbiAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjIG9mIGNvbXBhbmllc1wiIFtuZ1ZhbHVlXT1cImMuaWRcIj57eyBjLmNvbXBhbnlOYW1lIH19PC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLWF1dG9cIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1wcmltYXJ5XCIgKGNsaWNrKT1cImxvYWREYXRhKClcIiBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nIHx8ICFzZWxlY3RlZENvbXBhbnlJZFwiIHRpdGxlPVwiTGlzdGV5aSB5ZW5pbGVcIj5cbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXJlZnJlc2ggbWUtMVwiPjwvaT5ZZW5pbGVcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cbiAgICAgIDxoNiBjbGFzcz1cIm1iLTBcIj5TQVAgQjEgUHJvamUgUGFyYW1ldHJlbGVyaTwvaDY+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiIChjbGljayk9XCJvcGVuQ3JlYXRlTW9kYWwoKVwiIFtkaXNhYmxlZF09XCIhc2VsZWN0ZWRDb21wYW55SWRcIj5cbiAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1wbHVzIG1lLTFcIj48L2k+WWVuaSBQcm9qZSBFa2xlXG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgKm5nSWY9XCJpc0xvYWRpbmdcIiBjbGFzcz1cInRleHQtY2VudGVyIHB5LTVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzcGlubmVyLWJvcmRlciB0ZXh0LXByaW1hcnlcIiByb2xlPVwic3RhdHVzXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibXQtMiB0ZXh0LW11dGVkXCI+U0FQIEIxIHByb2plIHBhcmFtZXRyZWxlcmkgecO8a2xlbml5b3IuLi48L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkeC1kYXRhLWdyaWQgKm5nSWY9XCIhaXNMb2FkaW5nXCIgW2RhdGFTb3VyY2VdPVwiZGF0YVwiIFtzaG93Qm9yZGVyc109XCJ0cnVlXCIgW3Nob3dSb3dMaW5lc109XCJ0cnVlXCIgW2NvbHVtbkF1dG9XaWR0aF09XCJ0cnVlXCIga2V5RXhwcj1cInByakNvZGVcIj5cbiAgICAgIDxkeG8tcGFnaW5nIFtwYWdlU2l6ZV09XCI1MFwiPjwvZHhvLXBhZ2luZz5cbiAgICAgIDxkeG8tcGFnZXIgW3Zpc2libGVdPVwidHJ1ZVwiIFtzaG93SW5mb109XCJ0cnVlXCIgW3Nob3dOYXZpZ2F0aW9uQnV0dG9uc109XCJ0cnVlXCI+PC9keG8tcGFnZXI+XG4gICAgICA8ZHhvLWZpbHRlci1yb3cgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWZpbHRlci1yb3c+XG4gICAgICA8ZHhvLWhlYWRlci1maWx0ZXIgW3Zpc2libGVdPVwidHJ1ZVwiPjwvZHhvLWhlYWRlci1maWx0ZXI+XG5cbiAgICAgIDxkeGktY29sdW1uIGRhdGFGaWVsZD1cInByakNvZGVcIiBjYXB0aW9uPVwiUHJvamUgS29kdVwiIFt3aWR0aF09XCIxMjBcIj48L2R4aS1jb2x1bW4+XG4gICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJwcmpOYW1lXCIgY2FwdGlvbj1cIlByb2plIEFkxLFcIj48L2R4aS1jb2x1bW4+XG4gICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJlYmFJZFwiIGNhcHRpb249XCJFQkEgSURcIiBbd2lkdGhdPVwiMTIwXCI+PC9keGktY29sdW1uPlxuICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiaW5jcmVhc2VSYXRlXCIgY2FwdGlvbj1cIkFydMSxcsSxbSBPcmFuxLFcIiBkYXRhVHlwZT1cIm51bWJlclwiIFt3aWR0aF09XCIxMzBcIj48L2R4aS1jb2x1bW4+XG4gICAgICA8ZHhpLWNvbHVtbiBkYXRhRmllbGQ9XCJjYXJkQ29kZVwiIGNhcHRpb249XCJNdWhhdGFwIEtvZHVcIiBbd2lkdGhdPVwiMTQwXCI+PC9keGktY29sdW1uPlxuICAgICAgPGR4aS1jb2x1bW4gZGF0YUZpZWxkPVwiY3VycmVuY3lcIiBjYXB0aW9uPVwiUGFyYSBCaXJpbWlcIiBbd2lkdGhdPVwiMTEwXCI+PC9keGktY29sdW1uPlxuICAgICAgPGR4aS1jb2x1bW4gdHlwZT1cImJ1dHRvbnNcIiBjYXB0aW9uPVwiXCIgW3dpZHRoXT1cIjYwXCI+XG4gICAgICAgIDxkeGktYnV0dG9uIGljb249XCJlZGl0XCIgaGludD1cIkTDvHplbmxlXCIgW29uQ2xpY2tdPVwib25FZGl0QnV0dG9uQ2xpY2tcIj48L2R4aS1idXR0b24+XG4gICAgICA8L2R4aS1jb2x1bW4+XG4gICAgPC9keC1kYXRhLWdyaWQ+XG5cbiAgICA8ZGl2IGNsYXNzPVwiYWxlcnQgYWxlcnQtd2FybmluZyBtdC0zXCIgKm5nSWY9XCJoYXNVbmRlZmluZWRJbmNyZWFzZVJhdGUoKVwiPlxuICAgICAgMCAvIE5VTEwgYXJ0xLFyxLFtIG9yYW7EsSBha8SxxZ/EsSBibG9rbGFtYXouIEFrdGFyxLFtIGJhY2HEn8SxbmRhIGvEsXJtxLF6xLEgdXlhcsSxIGfDtnN0ZXJpbGlyIHZlIGFydMSxcsSxbSB1eWd1bGFubWFkYW4gZGV2YW0gacOnaW4ga3VsbGFuxLFjxLEgb25hecSxIGFsxLFuxLFyLlxuICAgIDwvZGl2PlxuXG4gICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZCBkLWJsb2NrIG10LTJcIj5cbiAgICAgIFByb2plIEtvZHUvQWTEsS9FQkEgSUQgU0FQJ3RhIG9sdcWfdHVydWxkdWt0YW4gc29ucmEgYnUgZWtyYW5kYW4gZGXEn2nFn3RpcmlsZW1leiAoU0FQIGFuYWh0YXIvYmlsZ2kgYWxhbmxhcsSxZMSxcik7IHlhbG7EsXpjYVxuICAgICAgQXJ0xLFyxLFtIE9yYW7EsSwgTXVoYXRhcCBLb2R1IHZlIFBhcmEgQmlyaW1pIGfDvG5jZWxsZW5lYmlsaXIuXG4gICAgICA8YnIgLz5cbiAgICAgIFVfQ2FyZENvZGUgdmFyc2F5xLFsYW4gcHJvamUgbXVoYXRhYsSxZMSxcjsgSW50ZXJjb21wYW55IGhlZGVmIE9QQ0guQ2FyZENvZGUgw6fDtnrDvG3DvG5kZSBlc2FzIGtheW5hayBNdWhhdGFwIEXFn2xlxZ90aXJtZWxlcmlkaXIuXG4gICAgPC9zbWFsbD5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGFicC1tb2RhbCBbKHZpc2libGUpXT1cImlzTW9kYWxPcGVuXCI+XG4gIDxuZy10ZW1wbGF0ZSAjYWJwSGVhZGVyPlxuICAgIDxoMz57eyBtb2RhbE1vZGUgPT09ICdjcmVhdGUnID8gJ1llbmkgUHJvamUgRWtsZScgOiAnUHJvamUgUGFyYW1ldHJlbGVyaW5pIEfDvG5jZWxsZScgfX08L2gzPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSAjYWJwQm9keT5cbiAgICA8ZGl2IGNsYXNzPVwicm93IGctM1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5Qcm9qZSBLb2R1PC9sYWJlbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm0ucHJqQ29kZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIm1vZGFsTW9kZSA9PT0gJ3VwZGF0ZSdcIlxuICAgICAgICAgIFtyZWFkT25seV09XCJtb2RhbE1vZGUgPT09ICd1cGRhdGUnXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5Qcm9qZSBBZMSxPC9sYWJlbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcm0ucHJqTmFtZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIm1vZGFsTW9kZSA9PT0gJ3VwZGF0ZSdcIlxuICAgICAgICAgIFtyZWFkT25seV09XCJtb2RhbE1vZGUgPT09ICd1cGRhdGUnXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5FQkEgSUQ8L2xhYmVsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9ybS5lYmFJZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIm1vZGFsTW9kZSA9PT0gJ3VwZGF0ZSdcIlxuICAgICAgICAgIFtyZWFkT25seV09XCJtb2RhbE1vZGUgPT09ICd1cGRhdGUnXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5BcnTEsXLEsW0gT3JhbsSxIChVX09yYW4pPC9sYWJlbD5cbiAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBzdGVwPVwiMC4wMVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJmb3JtLmluY3JlYXNlUmF0ZVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCI+TXVoYXRhcCBLb2R1IChVX0NhcmRDb2RlKTwvbGFiZWw+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJmb3JtLmNhcmRDb2RlXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIj5QYXJhIEJpcmltaSAoVV9DdXJyZW5jeSk8L2xhYmVsPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiZm9ybS5jdXJyZW5jeVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvIHNtYWxsIG10LTNcIiAqbmdJZj1cIm1vZGFsTW9kZSA9PT0gJ3VwZGF0ZSdcIj5cbiAgICAgIFByb2plIEtvZHUvQWTEsS9FQkEgSUQgU0FQJ3RhIGRlxJ9pxZ90aXJpbGVtZXllbiBhbGFubGFyZMSxcjsgeWFsbsSxemNhIEFydMSxcsSxbSBPcmFuxLEsIE11aGF0YXAgS29kdSB2ZSBQYXJhIEJpcmltaSBnw7xuY2VsbGVuaXIuXG4gICAgICBEb2t1bm1hZMSxxJ/EsW7EsXogYWxhbmxhciBtZXZjdXQgU0FQIGRlxJ9lcml5bGUgb2xkdcSfdSBnaWJpIGfDtm5kZXJpbGlyLlxuICAgIDwvZGl2PlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDxuZy10ZW1wbGF0ZSAjYWJwRm9vdGVyPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIiAoY2xpY2spPVwiY2FuY2VsTW9kYWwoKVwiPlZhemdlw6c8L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgIChjbGljayk9XCJzYXZlTW9kYWwoKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiaXNTYXZpbmcgfHwgIWZvcm0ucHJqQ29kZSB8fCAhZm9ybS5wcmpOYW1lXCJcbiAgICA+XG4gICAgICA8c3BhbiAqbmdJZj1cImlzU2F2aW5nXCIgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbSBtZS0xXCI+PC9zcGFuPlxuICAgICAgS2F5ZGV0XG4gICAgPC9idXR0b24+XG4gIDwvbmctdGVtcGxhdGU+XG48L2FicC1tb2RhbD5cbiJdfQ==
|
package/esm2020/lib/components/hit-project-parameters/hit-project-parameter-routing.module.mjs
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AuthGuard, PermissionGuard } from '@abp/ng.core';
|
|
2
|
+
import { NgModule } from '@angular/core';
|
|
3
|
+
import { RouterModule } from '@angular/router';
|
|
4
|
+
import { HitProjectParameterComponent } from './components/hit-project-parameter.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/router";
|
|
7
|
+
const routes = [
|
|
8
|
+
{
|
|
9
|
+
path: '',
|
|
10
|
+
component: HitProjectParameterComponent,
|
|
11
|
+
canActivate: [AuthGuard, PermissionGuard],
|
|
12
|
+
},
|
|
13
|
+
];
|
|
14
|
+
export class HitProjectParameterRoutingModule {
|
|
15
|
+
}
|
|
16
|
+
HitProjectParameterRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitProjectParameterRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
17
|
+
HitProjectParameterRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: HitProjectParameterRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
|
|
18
|
+
HitProjectParameterRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitProjectParameterRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] });
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitProjectParameterRoutingModule, decorators: [{
|
|
20
|
+
type: NgModule,
|
|
21
|
+
args: [{
|
|
22
|
+
imports: [RouterModule.forChild(routes)],
|
|
23
|
+
exports: [RouterModule],
|
|
24
|
+
}]
|
|
25
|
+
}] });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXByb2plY3QtcGFyYW1ldGVyLXJvdXRpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZmJkb2N1bWVudGZsb3cvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1wcm9qZWN0LXBhcmFtZXRlcnMvaGl0LXByb2plY3QtcGFyYW1ldGVyLXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDOzs7QUFFNUYsTUFBTSxNQUFNLEdBQVc7SUFDckI7UUFDRSxJQUFJLEVBQUUsRUFBRTtRQUNSLFNBQVMsRUFBRSw0QkFBNEI7UUFDdkMsV0FBVyxFQUFFLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQztLQUMxQztDQUNGLENBQUM7QUFNRixNQUFNLE9BQU8sZ0NBQWdDOzs2SEFBaEMsZ0NBQWdDOzhIQUFoQyxnQ0FBZ0Msd0NBRmpDLFlBQVk7OEhBRVgsZ0NBQWdDLFlBSGpDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQzdCLFlBQVk7MkZBRVgsZ0NBQWdDO2tCQUo1QyxRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQ3hDLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztpQkFDeEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdXRoR3VhcmQsIFBlcm1pc3Npb25HdWFyZCB9IGZyb20gJ0BhYnAvbmcuY29yZSc7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSGl0UHJvamVjdFBhcmFtZXRlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9oaXQtcHJvamVjdC1wYXJhbWV0ZXIuY29tcG9uZW50JztcblxuY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gIHtcbiAgICBwYXRoOiAnJyxcbiAgICBjb21wb25lbnQ6IEhpdFByb2plY3RQYXJhbWV0ZXJDb21wb25lbnQsXG4gICAgY2FuQWN0aXZhdGU6IFtBdXRoR3VhcmQsIFBlcm1pc3Npb25HdWFyZF0sXG4gIH0sXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvckNoaWxkKHJvdXRlcyldLFxuICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXSxcbn0pXG5leHBvcnQgY2xhc3MgSGl0UHJvamVjdFBhcmFtZXRlclJvdXRpbmdNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { CoreModule } from '@abp/ng.core';
|
|
2
|
+
import { ThemeSharedModule } from '@abp/ng.theme.shared';
|
|
3
|
+
import { NgModule } from '@angular/core';
|
|
4
|
+
import { FormsModule } from '@angular/forms';
|
|
5
|
+
import { DxDataGridModule } from 'devextreme-angular';
|
|
6
|
+
import { HitProjectParameterComponent } from './components/hit-project-parameter.component';
|
|
7
|
+
import { HitProjectParameterRoutingModule } from './hit-project-parameter-routing.module';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class HitProjectParameterModule {
|
|
10
|
+
}
|
|
11
|
+
HitProjectParameterModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitProjectParameterModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12
|
+
HitProjectParameterModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: HitProjectParameterModule, declarations: [HitProjectParameterComponent], imports: [HitProjectParameterRoutingModule, CoreModule, ThemeSharedModule, FormsModule, DxDataGridModule] });
|
|
13
|
+
HitProjectParameterModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitProjectParameterModule, imports: [HitProjectParameterRoutingModule, CoreModule, ThemeSharedModule, FormsModule, DxDataGridModule] });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitProjectParameterModule, decorators: [{
|
|
15
|
+
type: NgModule,
|
|
16
|
+
args: [{
|
|
17
|
+
declarations: [HitProjectParameterComponent],
|
|
18
|
+
imports: [HitProjectParameterRoutingModule, CoreModule, ThemeSharedModule, FormsModule, DxDataGridModule],
|
|
19
|
+
}]
|
|
20
|
+
}] });
|
|
21
|
+
export function loadHitProjectParameterModuleAsChild() {
|
|
22
|
+
return Promise.resolve(HitProjectParameterModule);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LXByb2plY3QtcGFyYW1ldGVyLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2ZiZG9jdW1lbnRmbG93L3NyYy9saWIvY29tcG9uZW50cy9oaXQtcHJvamVjdC1wYXJhbWV0ZXJzL2hpdC1wcm9qZWN0LXBhcmFtZXRlci5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMxQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUM1RixPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7QUFNMUYsTUFBTSxPQUFPLHlCQUF5Qjs7c0hBQXpCLHlCQUF5Qjt1SEFBekIseUJBQXlCLGlCQUhyQiw0QkFBNEIsYUFDakMsZ0NBQWdDLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxnQkFBZ0I7dUhBRTdGLHlCQUF5QixZQUYxQixnQ0FBZ0MsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGdCQUFnQjsyRkFFN0YseUJBQXlCO2tCQUpyQyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLDRCQUE0QixDQUFDO29CQUM1QyxPQUFPLEVBQUUsQ0FBQyxnQ0FBZ0MsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixDQUFDO2lCQUMxRzs7QUFHRCxNQUFNLFVBQVUsb0NBQW9DO0lBQ2xELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO0FBQ3BELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb3JlTW9kdWxlIH0gZnJvbSAnQGFicC9uZy5jb3JlJztcbmltcG9ydCB7IFRoZW1lU2hhcmVkTW9kdWxlIH0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRHhEYXRhR3JpZE1vZHVsZSB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhcic7XG5pbXBvcnQgeyBIaXRQcm9qZWN0UGFyYW1ldGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2hpdC1wcm9qZWN0LXBhcmFtZXRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSGl0UHJvamVjdFBhcmFtZXRlclJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL2hpdC1wcm9qZWN0LXBhcmFtZXRlci1yb3V0aW5nLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0hpdFByb2plY3RQYXJhbWV0ZXJDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbSGl0UHJvamVjdFBhcmFtZXRlclJvdXRpbmdNb2R1bGUsIENvcmVNb2R1bGUsIFRoZW1lU2hhcmVkTW9kdWxlLCBGb3Jtc01vZHVsZSwgRHhEYXRhR3JpZE1vZHVsZV0sXG59KVxuZXhwb3J0IGNsYXNzIEhpdFByb2plY3RQYXJhbWV0ZXJNb2R1bGUge31cblxuZXhwb3J0IGZ1bmN0aW9uIGxvYWRIaXRQcm9qZWN0UGFyYW1ldGVyTW9kdWxlQXNDaGlsZCgpIHtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShIaXRQcm9qZWN0UGFyYW1ldGVyTW9kdWxlKTtcbn1cbiJdfQ==
|