@hitsoft/uretim-yonetimi 1.0.28 → 1.0.30
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/config/enums/route-names.d.ts +5 -1
- package/config/providers/boiler-ym-product-waste-route.provider.d.ts +9 -0
- package/config/providers/component-wastage-route.provider.d.ts +9 -0
- package/config/providers/filling-control-route.provider.d.ts +9 -0
- package/config/providers/filling-receipt-from-production-route.provider.d.ts +9 -0
- package/esm2020/config/enums/route-names.mjs +1 -1
- package/esm2020/config/providers/boiler-ym-product-waste-route.provider.mjs +19 -0
- package/esm2020/config/providers/component-wastage-route.provider.mjs +19 -0
- package/esm2020/config/providers/filling-control-route.provider.mjs +19 -0
- package/esm2020/config/providers/filling-receipt-from-production-route.provider.mjs +19 -0
- package/esm2020/config/providers/receipt-from-production-route.provider.mjs +2 -2
- package/esm2020/config/providers/route.provider.mjs +9 -2
- package/esm2020/config/uretim-yonetimi-config.module.mjs +9 -1
- package/esm2020/lib/components/hit-boiler-ym-product-waste/hit-boiler-ym-product-waste-routing.module.mjs +26 -0
- package/esm2020/lib/components/hit-boiler-ym-product-waste/hit-boiler-ym-product-waste.component.mjs +252 -0
- package/esm2020/lib/components/hit-boiler-ym-product-waste/hit-boiler-ym-product-waste.module.mjs +65 -0
- package/esm2020/lib/components/hit-component-wastage/hit-component-wastage-routing.module.mjs +24 -0
- package/esm2020/lib/components/hit-component-wastage/hit-component-wastage.component.mjs +241 -0
- package/esm2020/lib/components/hit-component-wastage/hit-component-wastage.module.mjs +74 -0
- package/esm2020/lib/components/hit-filling-control/hit-filling-control-routing.module.mjs +26 -0
- package/esm2020/lib/components/hit-filling-control/hit-filling-control.component.mjs +358 -0
- package/esm2020/lib/components/hit-filling-control/hit-filling-control.module.mjs +65 -0
- package/esm2020/lib/components/hit-filling-receipt-from-production/hit-filling-receipt-from-production-routing.module.mjs +26 -0
- package/esm2020/lib/components/hit-filling-receipt-from-production/hit-filling-receipt-from-production.component.mjs +202 -0
- package/esm2020/lib/components/hit-filling-receipt-from-production/hit-filling-receipt-from-production.module.mjs +65 -0
- package/esm2020/lib/components/hit-production-orders/hit-production-orders.component.mjs +3 -3
- package/esm2020/lib/components/hit-receipt-from-productions/hit-receipt-from-productions.component.mjs +3 -3
- package/esm2020/lib/hit-proxy/hit-boiler-ym-product-waste/hit-boiler-ym-product-waste.service.mjs +35 -0
- package/esm2020/lib/hit-proxy/hit-boiler-ym-product-waste/models.mjs +3 -0
- package/esm2020/lib/hit-proxy/hit-component-wastage/hit-component-wastage.service.mjs +33 -0
- package/esm2020/lib/hit-proxy/hit-component-wastage/models.mjs +17 -0
- package/esm2020/lib/hit-proxy/hit-filling-control/hit-filling-control.service.mjs +40 -0
- package/esm2020/lib/hit-proxy/hit-filling-control/models.mjs +3 -0
- package/esm2020/lib/hit-proxy/hit-filling-receipt-from-production/hit-filling-receipt-from-production.service.mjs +28 -0
- package/esm2020/lib/hit-proxy/hit-production-orders/hit-production-orders.service.mjs +5 -1
- package/esm2020/lib/hit-proxy/hit-receipt-from-productions/models.mjs +1 -1
- package/esm2020/lib/hit-proxy/models.mjs +42 -47
- package/esm2020/lib/uretim-yonetimi-routing.module.mjs +10 -2
- package/esm2020/lib/uretim-yonetimi.module.mjs +21 -1
- package/fesm2015/hitsoft-uretim-yonetimi-config.mjs +92 -13
- package/fesm2015/hitsoft-uretim-yonetimi-config.mjs.map +1 -1
- package/fesm2015/hitsoft-uretim-yonetimi.mjs +1602 -99
- package/fesm2015/hitsoft-uretim-yonetimi.mjs.map +1 -1
- package/fesm2020/hitsoft-uretim-yonetimi-config.mjs +92 -13
- package/fesm2020/hitsoft-uretim-yonetimi-config.mjs.map +1 -1
- package/fesm2020/hitsoft-uretim-yonetimi.mjs +1580 -99
- package/fesm2020/hitsoft-uretim-yonetimi.mjs.map +1 -1
- package/lib/components/hit-boiler-ym-product-waste/hit-boiler-ym-product-waste-routing.module.d.ts +7 -0
- package/lib/components/hit-boiler-ym-product-waste/hit-boiler-ym-product-waste.component.d.ts +38 -0
- package/lib/components/hit-boiler-ym-product-waste/hit-boiler-ym-product-waste.module.d.ts +16 -0
- package/lib/components/hit-component-wastage/hit-component-wastage-routing.module.d.ts +7 -0
- package/lib/components/hit-component-wastage/hit-component-wastage.component.d.ts +39 -0
- package/lib/components/hit-component-wastage/hit-component-wastage.module.d.ts +16 -0
- package/lib/components/hit-filling-control/hit-filling-control-routing.module.d.ts +7 -0
- package/lib/components/hit-filling-control/hit-filling-control.component.d.ts +40 -0
- package/lib/components/hit-filling-control/hit-filling-control.module.d.ts +16 -0
- package/lib/components/hit-filling-receipt-from-production/hit-filling-receipt-from-production-routing.module.d.ts +7 -0
- package/lib/components/hit-filling-receipt-from-production/hit-filling-receipt-from-production.component.d.ts +36 -0
- package/lib/components/hit-filling-receipt-from-production/hit-filling-receipt-from-production.module.d.ts +16 -0
- package/lib/hit-proxy/hit-boiler-ym-product-waste/hit-boiler-ym-product-waste.service.d.ts +16 -0
- package/lib/hit-proxy/hit-boiler-ym-product-waste/models.d.ts +22 -0
- package/lib/hit-proxy/hit-component-wastage/hit-component-wastage.service.d.ts +15 -0
- package/lib/hit-proxy/hit-component-wastage/models.d.ts +40 -0
- package/lib/hit-proxy/hit-filling-control/hit-filling-control.service.d.ts +17 -0
- package/lib/hit-proxy/hit-filling-control/models.d.ts +42 -0
- package/lib/hit-proxy/hit-filling-receipt-from-production/hit-filling-receipt-from-production.service.d.ts +52 -0
- package/lib/hit-proxy/hit-production-orders/hit-production-orders.service.d.ts +1 -0
- package/lib/hit-proxy/hit-receipt-from-productions/models.d.ts +1 -0
- package/package.json +2 -2
package/esm2020/lib/components/hit-boiler-ym-product-waste/hit-boiler-ym-product-waste.component.mjs
ADDED
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
import { Component, ViewChild } from '@angular/core';
|
|
2
|
+
import notify from 'devextreme/ui/notify';
|
|
3
|
+
import { Confirmation } from '@abp/ng.theme.shared';
|
|
4
|
+
import { BoilerYMProductWastePostDto } from "../../hit-proxy/hit-boiler-ym-product-waste/models";
|
|
5
|
+
import { YmProduct } from "../../hit-proxy/hit-filling-control/models";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../../hit-proxy/hit-boiler-ym-product-waste/hit-boiler-ym-product-waste.service";
|
|
8
|
+
import * as i2 from "@abp/ng.theme.shared";
|
|
9
|
+
import * as i3 from "../../hit-proxy/hit-production-orders/hit-production-orders.service";
|
|
10
|
+
import * as i4 from "../../hit-proxy/hit-filling-control/hit-filling-control.service";
|
|
11
|
+
import * as i5 from "@angular/common";
|
|
12
|
+
import * as i6 from "@abp/ng.components/page";
|
|
13
|
+
import * as i7 from "devextreme-angular";
|
|
14
|
+
import * as i8 from "@abp/ng.core";
|
|
15
|
+
export class HitBoilerYMProductWasteComponent {
|
|
16
|
+
constructor(service, confirmation, ngZone, productionOrdersService, fillingControlService) {
|
|
17
|
+
this.service = service;
|
|
18
|
+
this.confirmation = confirmation;
|
|
19
|
+
this.ngZone = ngZone;
|
|
20
|
+
this.productionOrdersService = productionOrdersService;
|
|
21
|
+
this.fillingControlService = fillingControlService;
|
|
22
|
+
this.options = {
|
|
23
|
+
hideYesBtn: true,
|
|
24
|
+
cancelText: 'Kapat',
|
|
25
|
+
dismissible: false,
|
|
26
|
+
};
|
|
27
|
+
this.isLoading = false;
|
|
28
|
+
this.isSaving = false;
|
|
29
|
+
this.isEmriBarkoduGecerliMi = false;
|
|
30
|
+
this.searcheBasildiMi = false;
|
|
31
|
+
this.boilerYMProductWastePostDto = new BoilerYMProductWastePostDto;
|
|
32
|
+
this.ymProduct = new YmProduct;
|
|
33
|
+
}
|
|
34
|
+
ngAfterViewInit() {
|
|
35
|
+
this.focusWorkOrder();
|
|
36
|
+
}
|
|
37
|
+
getProductionOrder() {
|
|
38
|
+
if (!this.isEmriBarkodu) {
|
|
39
|
+
this.focusWorkOrder();
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
this.isLoading = true;
|
|
43
|
+
this.isEmriBarkoduGecerliMi = false;
|
|
44
|
+
this.searcheBasildiMi = true;
|
|
45
|
+
this.productionOrder = null;
|
|
46
|
+
this.productionOrdersService.get(this.isEmriBarkodu).subscribe({
|
|
47
|
+
next: (response) => {
|
|
48
|
+
if (response?.isSuccessful && response.items) {
|
|
49
|
+
this.fillingControlService.getYmProduct(response.items.absoluteEntry).subscribe({
|
|
50
|
+
next: (responseYM) => {
|
|
51
|
+
if (responseYM?.isSuccessful && responseYM.items) {
|
|
52
|
+
this.ymProduct = responseYM.items;
|
|
53
|
+
this.productionOrder = response.items;
|
|
54
|
+
this.isEmriBarkoduGecerliMi = true;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
this.confirmation.error('', 'YM ürün bilgileri alınamadı.', this.options).subscribe(() => {
|
|
58
|
+
this.clearAll();
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
error: () => {
|
|
63
|
+
this.confirmation.error('', 'YM ürün bilgileri alınamadı.', this.options).subscribe(() => {
|
|
64
|
+
this.clearAll();
|
|
65
|
+
});
|
|
66
|
+
},
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
const message = response?.errors?.length
|
|
71
|
+
? response.errors.join('\n')
|
|
72
|
+
: 'İş emri bilgileri alınamadı.';
|
|
73
|
+
this.showError(message);
|
|
74
|
+
this.focusWorkOrder();
|
|
75
|
+
}
|
|
76
|
+
this.isLoading = false;
|
|
77
|
+
this.searcheBasildiMi = false;
|
|
78
|
+
},
|
|
79
|
+
error: () => {
|
|
80
|
+
this.showError('İş emri bilgileri alınamadı.');
|
|
81
|
+
this.focusWorkOrder();
|
|
82
|
+
this.isLoading = false;
|
|
83
|
+
this.searcheBasildiMi = false;
|
|
84
|
+
},
|
|
85
|
+
complete: () => {
|
|
86
|
+
this.isLoading = false;
|
|
87
|
+
this.searcheBasildiMi = false;
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
save() {
|
|
92
|
+
if (!this.isEmriBarkoduGecerliMi || !this.productionOrder || this.isSaving) {
|
|
93
|
+
this.focusWorkOrder();
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
this.confirmation.warn('', 'Fire kaydını yapmak istediğinizden emin misiniz?', {
|
|
97
|
+
yesText: 'Evet',
|
|
98
|
+
cancelText: 'Hayır'
|
|
99
|
+
}).subscribe((status) => {
|
|
100
|
+
if (status !== Confirmation.Status.confirm) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
this.isSaving = true;
|
|
104
|
+
this.isLoading = true;
|
|
105
|
+
this.service.create(this.productionOrder.absoluteEntry).subscribe({
|
|
106
|
+
next: (response) => {
|
|
107
|
+
if (response?.isSuccessful) {
|
|
108
|
+
this.confirmation
|
|
109
|
+
.success('', 'İşlem başarıyla tamamlandı.', this.options)
|
|
110
|
+
.subscribe(() => this.clearAll());
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
const message = response?.errors?.length
|
|
114
|
+
? response.errors.join('\n')
|
|
115
|
+
: 'Fire işlemi sırasında bir hata oluştu.';
|
|
116
|
+
this.showError(message);
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
error: (error) => {
|
|
120
|
+
this.isSaving = false;
|
|
121
|
+
this.isLoading = false;
|
|
122
|
+
},
|
|
123
|
+
complete: () => {
|
|
124
|
+
this.clearAll();
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
clearAll() {
|
|
130
|
+
this.isLoading = false;
|
|
131
|
+
this.isSaving = false;
|
|
132
|
+
this.isEmriBarkoduGecerliMi = false;
|
|
133
|
+
this.searcheBasildiMi = false;
|
|
134
|
+
this.isEmriBarkodu = null;
|
|
135
|
+
this.productionOrder = null;
|
|
136
|
+
this.boilerYMProductWastePostDto = new BoilerYMProductWastePostDto;
|
|
137
|
+
this.ngZone.run(() => {
|
|
138
|
+
setTimeout(() => {
|
|
139
|
+
this.nmbBoxBarkodNumarasi.instance.focus();
|
|
140
|
+
}, 0);
|
|
141
|
+
});
|
|
142
|
+
this.focusWorkOrder();
|
|
143
|
+
}
|
|
144
|
+
focusWorkOrder() {
|
|
145
|
+
this.ngZone.runOutsideAngular(() => {
|
|
146
|
+
setTimeout(() => {
|
|
147
|
+
this.nmbBoxBarkodNumarasi?.instance?.focus();
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
showError(message) {
|
|
152
|
+
this.confirmation.error('', message, this.options);
|
|
153
|
+
notify({ message, type: 'error' });
|
|
154
|
+
}
|
|
155
|
+
finishWorkOrderAndSaveWaste() {
|
|
156
|
+
debugger;
|
|
157
|
+
if (!this.isEmriBarkoduGecerliMi || !this.productionOrder || this.isSaving) {
|
|
158
|
+
this.focusWorkOrder();
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
this.confirmation.warn('', 'İş emrini bitirmek ve fireyi kaydetmek istediğinizden emin misiniz?', {
|
|
162
|
+
yesText: 'Evet',
|
|
163
|
+
cancelText: 'Hayır'
|
|
164
|
+
}).subscribe((status) => {
|
|
165
|
+
if (status !== Confirmation.Status.confirm) {
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
this.isSaving = true;
|
|
169
|
+
this.isLoading = true;
|
|
170
|
+
this.service.finishWorkOrderAndSaveWaste(this.productionOrder.absoluteEntry).subscribe({
|
|
171
|
+
next: (response) => {
|
|
172
|
+
debugger;
|
|
173
|
+
if (response?.isSuccessful) {
|
|
174
|
+
this.confirmation
|
|
175
|
+
.success('', 'İş emri bitirildi ve fire kaydedildi.', this.options)
|
|
176
|
+
.subscribe(() => this.clearAll());
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
const message = response?.errors?.length
|
|
180
|
+
? response.errors.join('\n')
|
|
181
|
+
: 'İş emri bitirme işlemi sırasında bir hata oluştu.';
|
|
182
|
+
this.showError(message);
|
|
183
|
+
this.isSaving = false;
|
|
184
|
+
this.isLoading = false;
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
error: (error) => {
|
|
188
|
+
debugger;
|
|
189
|
+
let message = error.error.error.message;
|
|
190
|
+
message = message.length
|
|
191
|
+
? message
|
|
192
|
+
: 'İş emri bitirme işlemi sırasında bir hata oluştu.';
|
|
193
|
+
this.isSaving = false;
|
|
194
|
+
this.isLoading = false;
|
|
195
|
+
this.showError(message);
|
|
196
|
+
},
|
|
197
|
+
complete: () => {
|
|
198
|
+
this.clearAll();
|
|
199
|
+
},
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
finishWorkOrderWithoutSavingWaste() {
|
|
204
|
+
if (!this.isEmriBarkoduGecerliMi || !this.productionOrder || this.isSaving) {
|
|
205
|
+
this.focusWorkOrder();
|
|
206
|
+
return;
|
|
207
|
+
}
|
|
208
|
+
this.confirmation.warn('', 'İş emrini bitirmek istediğinizden emin misiniz? (Fire kaydedilmeyecek)', {
|
|
209
|
+
yesText: 'Evet',
|
|
210
|
+
cancelText: 'Hayır'
|
|
211
|
+
}).subscribe((status) => {
|
|
212
|
+
if (status !== Confirmation.Status.confirm) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
this.isSaving = true;
|
|
216
|
+
this.isLoading = true;
|
|
217
|
+
this.service.finishWorkOrderWithoutSavingWaste(this.productionOrder.absoluteEntry).subscribe({
|
|
218
|
+
next: (response) => {
|
|
219
|
+
if (response?.isSuccessful) {
|
|
220
|
+
this.confirmation
|
|
221
|
+
.success('', 'İş emri bitirildi.', this.options)
|
|
222
|
+
.subscribe(() => this.clearAll());
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
const message = response?.errors?.length
|
|
226
|
+
? response.errors.join('\n')
|
|
227
|
+
: 'İş emri bitirme işlemi sırasında bir hata oluştu.';
|
|
228
|
+
this.showError(message);
|
|
229
|
+
}
|
|
230
|
+
},
|
|
231
|
+
error: (error) => {
|
|
232
|
+
this.showError('İş emri bitirme işlemi sırasında bir hata oluştu.');
|
|
233
|
+
this.isSaving = false;
|
|
234
|
+
this.isLoading = false;
|
|
235
|
+
},
|
|
236
|
+
complete: () => {
|
|
237
|
+
this.clearAll();
|
|
238
|
+
},
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
HitBoilerYMProductWasteComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitBoilerYMProductWasteComponent, deps: [{ token: i1.HitBoilerYMProductWasteService }, { token: i2.ConfirmationService }, { token: i0.NgZone }, { token: i3.HitProductionOrdersService }, { token: i4.HitFillingControlService }], target: i0.ɵɵFactoryTarget.Component });
|
|
244
|
+
HitBoilerYMProductWasteComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: HitBoilerYMProductWasteComponent, selector: "lib-hit-boiler-ym-product-waste", viewQueries: [{ propertyName: "nmbBoxBarkodNumarasi", first: true, predicate: ["barkodNumarasiRef"], descendants: true }], ngImport: i0, template: "<abp-page [breadcrumb]=\"false\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row\">\r\n <h3 class=\"page-title\">\r\n {{ 'UretimYonetimi::BoilerYMProductWaste.Title' | abpLocalization }}\r\n </h3>\r\n </div>\r\n <div class=\"row pt-2 g-2\">\r\n <div class=\"col-12 col-md-6 col-lg-3\">\r\n <button class=\"btn btn-success btn-sm w-100\" type=\"button\" (click)=\"save()\"\r\n [disabled]=\"!isEmriBarkoduGecerliMi || isSaving\">\r\n <i class=\"fa fa-save me-1\"></i>\r\n {{ 'UretimYonetimi::BoilerYMProductWaste.Save' | abpLocalization }}\r\n </button>\r\n </div>\r\n <div class=\"col-12 col-md-6 col-lg-3\">\r\n <button class=\"btn btn-primary btn-sm w-100\" type=\"button\" (click)=\"finishWorkOrderAndSaveWaste()\"\r\n [disabled]=\"!isEmriBarkoduGecerliMi || isSaving\">\r\n <i class=\"fa fa-check-double me-1\"></i>\r\n \u0130\u015F Emrini Bitir ve Fireyi Kaydet\r\n </button>\r\n </div>\r\n <div class=\"col-12 col-md-6 col-lg-3\">\r\n <button class=\"btn btn-info btn-sm w-100\" type=\"button\" (click)=\"finishWorkOrderWithoutSavingWaste()\"\r\n [disabled]=\"!isEmriBarkoduGecerliMi || isSaving\">\r\n <i class=\"fa fa-check me-1\"></i>\r\n \u0130\u015F Emrini Bitir ve Fireyi Kaydetme\r\n </button>\r\n </div>\r\n <div class=\"col-12 col-md-6 col-lg-3\">\r\n <button class=\"btn btn-warning btn-sm w-100\" type=\"button\" (click)=\"clearAll()\"\r\n [disabled]=\"isLoading\">\r\n <i class=\"fa fa-broom me-1\"></i>\r\n {{ 'UretimYonetimi::BoilerYMProductWaste.Clean' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"card mt-2\">\r\n <div class=\"card-body\">\r\n <div style=\"display: flex; align-items: center;\">\r\n <dx-number-box #barkodNumarasiRef class=\"me-1\" style=\"width:100%;\" [min]=\"1\"\r\n [label]=\"'UretimYonetimi::BoilerYMProductWaste.WorkOrderNo' | abpLocalization\"\r\n [(value)]=\"isEmriBarkodu\" (onEnterKey)=\"getProductionOrder()\"\r\n [disabled]=\"searcheBasildiMi || isEmriBarkoduGecerliMi\">\r\n </dx-number-box>\r\n <dx-button style=\"margin-top: 7.5px;\" icon=\"search\" type=\"default\" (onClick)=\"getProductionOrder()\"\r\n [disabled]=\"searcheBasildiMi || isEmriBarkoduGecerliMi\">\r\n </dx-button>\r\n </div>\r\n <div class=\"mt-3\" *ngIf=\"isEmriBarkoduGecerliMi\">\r\n <dx-text-box style=\"width:100%;\"\r\n [label]=\"'UretimYonetimi::BoilerYMProductWaste.ConveyorInformation' | abpLocalization\"\r\n [(value)]=\"productionOrder.u_Hat\"\r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-text-box style=\"width:100%;\"\r\n [label]=\"'UretimYonetimi::BoilerYMProductWaste.ProductDescription' | abpLocalization\"\r\n [(value)]=\"productionOrder.productDescription\"\r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-text-box style=\"width:100%;\"\r\n [label]=\"'UretimYonetimi::BoilerYMProductWaste.BatchNumber' | abpLocalization\"\r\n [(value)]=\"ymProduct.batchNumber\"\r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-text-box style=\"width:100%;\"\r\n [label]=\"'UretimYonetimi::BoilerYMProductWaste.ItemCode' | abpLocalization\"\r\n [(value)]=\"ymProduct.itemCode\"\r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-number-box style=\"width:100%;\"\r\n [label]=\"'UretimYonetimi::BoilerYMProductWaste.ProductQuantity' | abpLocalization\"\r\n [(value)]=\"ymProduct.batchQuantity\"\r\n [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n", styles: [":host{display:block}dx-number-box,dx-text-box{width:100%}dx-data-grid{width:100%}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i6.PageComponent, selector: "abp-page", inputs: ["title", "toolbar", "breadcrumb"] }, { kind: "component", type: i6.PageToolbarContainerComponent, selector: "abp-page-toolbar-container" }, { kind: "component", type: i7.DxTextBoxComponent, selector: "dx-text-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "inputAttr", "isValid", "label", "labelMode", "mask", "maskChar", "maskInvalidMessage", "maskRules", "maxLength", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showMaskMode", "spellcheck", "stylingMode", "tabIndex", "text", "useMaskedValue", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "isValidChange", "labelChange", "labelModeChange", "maskChange", "maskCharChange", "maskInvalidMessageChange", "maskRulesChange", "maxLengthChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showMaskModeChange", "spellcheckChange", "stylingModeChange", "tabIndexChange", "textChange", "useMaskedValueChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "component", type: i7.DxButtonComponent, selector: "dx-button", inputs: ["accessKey", "activeStateEnabled", "disabled", "elementAttr", "focusStateEnabled", "height", "hint", "hoverStateEnabled", "icon", "rtlEnabled", "stylingMode", "tabIndex", "template", "text", "type", "useSubmitBehavior", "validationGroup", "visible", "width"], outputs: ["onClick", "onContentReady", "onDisposing", "onInitialized", "onOptionChanged", "accessKeyChange", "activeStateEnabledChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "heightChange", "hintChange", "hoverStateEnabledChange", "iconChange", "rtlEnabledChange", "stylingModeChange", "tabIndexChange", "templateChange", "textChange", "typeChange", "useSubmitBehaviorChange", "validationGroupChange", "visibleChange", "widthChange"] }, { kind: "component", type: i7.DxNumberBoxComponent, selector: "dx-number-box", inputs: ["accessKey", "activeStateEnabled", "buttons", "disabled", "elementAttr", "focusStateEnabled", "format", "height", "hint", "hoverStateEnabled", "inputAttr", "invalidValueMessage", "isValid", "label", "labelMode", "max", "min", "mode", "name", "placeholder", "readOnly", "rtlEnabled", "showClearButton", "showSpinButtons", "step", "stylingMode", "tabIndex", "text", "useLargeSpinButtons", "validationError", "validationErrors", "validationMessageMode", "validationMessagePosition", "validationStatus", "value", "valueChangeEvent", "visible", "width"], outputs: ["onChange", "onContentReady", "onCopy", "onCut", "onDisposing", "onEnterKey", "onFocusIn", "onFocusOut", "onInitialized", "onInput", "onKeyDown", "onKeyUp", "onOptionChanged", "onPaste", "onValueChanged", "accessKeyChange", "activeStateEnabledChange", "buttonsChange", "disabledChange", "elementAttrChange", "focusStateEnabledChange", "formatChange", "heightChange", "hintChange", "hoverStateEnabledChange", "inputAttrChange", "invalidValueMessageChange", "isValidChange", "labelChange", "labelModeChange", "maxChange", "minChange", "modeChange", "nameChange", "placeholderChange", "readOnlyChange", "rtlEnabledChange", "showClearButtonChange", "showSpinButtonsChange", "stepChange", "stylingModeChange", "tabIndexChange", "textChange", "useLargeSpinButtonsChange", "validationErrorChange", "validationErrorsChange", "validationMessageModeChange", "validationMessagePositionChange", "validationStatusChange", "valueChange", "valueChangeEventChange", "visibleChange", "widthChange", "onBlur"] }, { kind: "pipe", type: i8.LocalizationPipe, name: "abpLocalization" }] });
|
|
245
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitBoilerYMProductWasteComponent, decorators: [{
|
|
246
|
+
type: Component,
|
|
247
|
+
args: [{ selector: 'lib-hit-boiler-ym-product-waste', template: "<abp-page [breadcrumb]=\"false\">\r\n <abp-page-toolbar-container class=\"col\">\r\n <div class=\"row\">\r\n <h3 class=\"page-title\">\r\n {{ 'UretimYonetimi::BoilerYMProductWaste.Title' | abpLocalization }}\r\n </h3>\r\n </div>\r\n <div class=\"row pt-2 g-2\">\r\n <div class=\"col-12 col-md-6 col-lg-3\">\r\n <button class=\"btn btn-success btn-sm w-100\" type=\"button\" (click)=\"save()\"\r\n [disabled]=\"!isEmriBarkoduGecerliMi || isSaving\">\r\n <i class=\"fa fa-save me-1\"></i>\r\n {{ 'UretimYonetimi::BoilerYMProductWaste.Save' | abpLocalization }}\r\n </button>\r\n </div>\r\n <div class=\"col-12 col-md-6 col-lg-3\">\r\n <button class=\"btn btn-primary btn-sm w-100\" type=\"button\" (click)=\"finishWorkOrderAndSaveWaste()\"\r\n [disabled]=\"!isEmriBarkoduGecerliMi || isSaving\">\r\n <i class=\"fa fa-check-double me-1\"></i>\r\n \u0130\u015F Emrini Bitir ve Fireyi Kaydet\r\n </button>\r\n </div>\r\n <div class=\"col-12 col-md-6 col-lg-3\">\r\n <button class=\"btn btn-info btn-sm w-100\" type=\"button\" (click)=\"finishWorkOrderWithoutSavingWaste()\"\r\n [disabled]=\"!isEmriBarkoduGecerliMi || isSaving\">\r\n <i class=\"fa fa-check me-1\"></i>\r\n \u0130\u015F Emrini Bitir ve Fireyi Kaydetme\r\n </button>\r\n </div>\r\n <div class=\"col-12 col-md-6 col-lg-3\">\r\n <button class=\"btn btn-warning btn-sm w-100\" type=\"button\" (click)=\"clearAll()\"\r\n [disabled]=\"isLoading\">\r\n <i class=\"fa fa-broom me-1\"></i>\r\n {{ 'UretimYonetimi::BoilerYMProductWaste.Clean' | abpLocalization }}\r\n </button>\r\n </div>\r\n </div>\r\n </abp-page-toolbar-container>\r\n\r\n <div class=\"card mt-2\">\r\n <div class=\"card-body\">\r\n <div style=\"display: flex; align-items: center;\">\r\n <dx-number-box #barkodNumarasiRef class=\"me-1\" style=\"width:100%;\" [min]=\"1\"\r\n [label]=\"'UretimYonetimi::BoilerYMProductWaste.WorkOrderNo' | abpLocalization\"\r\n [(value)]=\"isEmriBarkodu\" (onEnterKey)=\"getProductionOrder()\"\r\n [disabled]=\"searcheBasildiMi || isEmriBarkoduGecerliMi\">\r\n </dx-number-box>\r\n <dx-button style=\"margin-top: 7.5px;\" icon=\"search\" type=\"default\" (onClick)=\"getProductionOrder()\"\r\n [disabled]=\"searcheBasildiMi || isEmriBarkoduGecerliMi\">\r\n </dx-button>\r\n </div>\r\n <div class=\"mt-3\" *ngIf=\"isEmriBarkoduGecerliMi\">\r\n <dx-text-box style=\"width:100%;\"\r\n [label]=\"'UretimYonetimi::BoilerYMProductWaste.ConveyorInformation' | abpLocalization\"\r\n [(value)]=\"productionOrder.u_Hat\"\r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-text-box style=\"width:100%;\"\r\n [label]=\"'UretimYonetimi::BoilerYMProductWaste.ProductDescription' | abpLocalization\"\r\n [(value)]=\"productionOrder.productDescription\"\r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-text-box style=\"width:100%;\"\r\n [label]=\"'UretimYonetimi::BoilerYMProductWaste.BatchNumber' | abpLocalization\"\r\n [(value)]=\"ymProduct.batchNumber\"\r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-text-box style=\"width:100%;\"\r\n [label]=\"'UretimYonetimi::BoilerYMProductWaste.ItemCode' | abpLocalization\"\r\n [(value)]=\"ymProduct.itemCode\"\r\n [disabled]=\"true\">\r\n </dx-text-box>\r\n <dx-number-box style=\"width:100%;\"\r\n [label]=\"'UretimYonetimi::BoilerYMProductWaste.ProductQuantity' | abpLocalization\"\r\n [(value)]=\"ymProduct.batchQuantity\"\r\n [disabled]=\"true\">\r\n </dx-number-box>\r\n </div>\r\n </div>\r\n </div>\r\n</abp-page>\r\n", styles: [":host{display:block}dx-number-box,dx-text-box{width:100%}dx-data-grid{width:100%}\n"] }]
|
|
248
|
+
}], ctorParameters: function () { return [{ type: i1.HitBoilerYMProductWasteService }, { type: i2.ConfirmationService }, { type: i0.NgZone }, { type: i3.HitProductionOrdersService }, { type: i4.HitFillingControlService }]; }, propDecorators: { nmbBoxBarkodNumarasi: [{
|
|
249
|
+
type: ViewChild,
|
|
250
|
+
args: ['barkodNumarasiRef', { static: false }]
|
|
251
|
+
}] } });
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWJvaWxlci15bS1wcm9kdWN0LXdhc3RlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VyZXRpbS15b25ldGltaS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LWJvaWxlci15bS1wcm9kdWN0LXdhc3RlL2hpdC1ib2lsZXIteW0tcHJvZHVjdC13YXN0ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91cmV0aW0teW9uZXRpbWkvc3JjL2xpYi9jb21wb25lbnRzL2hpdC1ib2lsZXIteW0tcHJvZHVjdC13YXN0ZS9oaXQtYm9pbGVyLXltLXByb2R1Y3Qtd2FzdGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQVUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRTFFLE9BQU8sTUFBTSxNQUFNLHNCQUFzQixDQUFDO0FBQzFDLE9BQU8sRUFBc0IsWUFBWSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFJdkUsT0FBTyxFQUFDLDJCQUEyQixFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFFL0YsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDRDQUE0QyxDQUFDOzs7Ozs7Ozs7O0FBT3JFLE1BQU0sT0FBTyxnQ0FBZ0M7SUFrQjNDLFlBQ21CLE9BQXVDLEVBQ3ZDLFlBQWlDLEVBQ2pDLE1BQWMsRUFDZCx1QkFBbUQsRUFDbkQscUJBQStDO1FBSi9DLFlBQU8sR0FBUCxPQUFPLENBQWdDO1FBQ3ZDLGlCQUFZLEdBQVosWUFBWSxDQUFxQjtRQUNqQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUE0QjtRQUNuRCwwQkFBcUIsR0FBckIscUJBQXFCLENBQTBCO1FBcEJsRSxZQUFPLEdBQWtDO1lBQ3ZDLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLFVBQVUsRUFBRSxPQUFP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QUksQ0FBQyxJQUFJLENBQUM7NEJBQzVCLENBQUMsQ0FBQyxtREFBbUQsQ0FBQzt3QkFDeEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDekI7Z0JBQ0gsQ0FBQztnQkFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDZixJQUFJLENBQUMsU0FBUyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7b0JBQ3BFLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO29CQUN0QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztnQkFDekIsQ0FBQztnQkFDRCxRQUFRLEVBQUUsR0FBRyxFQUFFO29CQUNiLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDbEIsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7NkhBblFVLGdDQUFnQztpSEFBaEMsZ0NBQWdDLGtNQ2hCN0MsMGxJQWlGQTsyRkRqRWEsZ0NBQWdDO2tCQUw1QyxTQUFTOytCQUNFLGlDQUFpQzs0UEFLTSxvQkFBb0I7c0JBQXBFLFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIE5nWm9uZSwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtEeFRleHRCb3hDb21wb25lbnR9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhcic7XHJcbmltcG9ydCBub3RpZnkgZnJvbSAnZGV2ZXh0cmVtZS91aS9ub3RpZnknO1xyXG5pbXBvcnQge0NvbmZpcm1hdGlvblNlcnZpY2UsIENvbmZpcm1hdGlvbn0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQge0hpdEJvaWxlcllNUHJvZHVjdFdhc3RlU2VydmljZX0gZnJvbSAnLi4vLi4vaGl0LXByb3h5L2hpdC1ib2lsZXIteW0tcHJvZHVjdC13YXN0ZS9oaXQtYm9pbGVyLXltLXByb2R1Y3Qtd2FzdGUuc2VydmljZSc7XHJcbmltcG9ydCB7SGl0UHJvZHVjdGlvbk9yZGVyc1NlcnZpY2V9IGZyb20gXCIuLi8uLi9oaXQtcHJveHkvaGl0LXByb2R1Y3Rpb24tb3JkZXJzL2hpdC1wcm9kdWN0aW9uLW9yZGVycy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7R2V0UHJvZHVjdGlvbk9yZGVyRHRvfSBmcm9tIFwiLi4vLi4vaGl0LXByb3h5L2hpdC1yZWNlaXB0LWZyb20tcHJvZHVjdGlvbnMvbW9kZWxzXCI7XHJcbmltcG9ydCB7Qm9pbGVyWU1Qcm9kdWN0V2FzdGVQb3N0RHRvfSBmcm9tIFwiLi4vLi4vaGl0LXByb3h5L2hpdC1ib2lsZXIteW0tcHJvZHVjdC13YXN0ZS9tb2RlbHNcIjtcclxuaW1wb3J0IHtIaXRGaWxsaW5nQ29udHJvbFNlcnZpY2V9IGZyb20gXCIuLi8uLi9oaXQtcHJveHkvaGl0LWZpbGxpbmctY29udHJvbC9oaXQtZmlsbGluZy1jb250cm9sLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtZbVByb2R1Y3R9IGZyb20gXCIuLi8uLi9oaXQtcHJveHkvaGl0LWZpbGxpbmctY29udHJvbC9tb2RlbHNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWhpdC1ib2lsZXIteW0tcHJvZHVjdC13YXN0ZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2hpdC1ib2lsZXIteW0tcHJvZHVjdC13YXN0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vaGl0LWJvaWxlci15bS1wcm9kdWN0LXdhc3RlLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEhpdEJvaWxlcllNUHJvZHVjdFdhc3RlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnYmFya29kTnVtYXJhc2lSZWYnLCB7c3RhdGljOiBmYWxzZX0pIG5tYkJveEJhcmtvZE51bWFyYXNpOiBEeFRleHRCb3hDb21wb25lbnQ7XHJcblxyXG4gIG9wdGlvbnM6IFBhcnRpYWw8Q29uZmlybWF0aW9uLk9wdGlvbnM+ID0ge1xyXG4gICAgaGlkZVllc0J0bjogdHJ1ZSxcclxuICAgIGNhbmNlbFRleHQ6ICdLYXBhdCcsXHJcbiAgICBkaXNtaXNzaWJsZTogZmFsc2UsXHJcbiAgfTtcclxuXHJcbiAgaXNMb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgaXNTYXZpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBpc0VtcmlCYXJrb2R1R2VjZXJsaU1pOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2VhcmNoZUJhc2lsZGlNaTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGlzRW1yaUJhcmtvZHU6IG51bWJlcjtcclxuICBwcm9kdWN0aW9uT3JkZXI6IEdldFByb2R1Y3Rpb25PcmRlckR0bztcclxuICBib2lsZXJZTVByb2R1Y3RXYXN0ZVBvc3REdG8gPSBuZXcgQm9pbGVyWU1Qcm9kdWN0V2FzdGVQb3N0RHRvO1xyXG4gIHltUHJvZHVjdCA9IG5ldyBZbVByb2R1Y3Q7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBzZXJ2aWNlOiBIaXRCb2lsZXJZTVByb2R1Y3RXYXN0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpcm1hdGlvbjogQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbmdab25lOiBOZ1pvbmUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3Rpb25PcmRlcnNTZXJ2aWNlOiBIaXRQcm9kdWN0aW9uT3JkZXJzU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgZmlsbGluZ0NvbnRyb2xTZXJ2aWNlOiBIaXRGaWxsaW5nQ29udHJvbFNlcnZpY2UsXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvY3VzV29ya09yZGVyKCk7XHJcbiAgfVxyXG5cclxuICBnZXRQcm9kdWN0aW9uT3JkZXIoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNFbXJpQmFya29kdSkge1xyXG4gICAgICB0aGlzLmZvY3VzV29ya09yZGVyKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcbiAgICB0aGlzLmlzRW1yaUJhcmtvZHVHZWNlcmxpTWkgPSBmYWxzZTtcclxuICAgIHRoaXMuc2VhcmNoZUJhc2lsZGlNaSA9IHRydWU7XHJcbiAgICB0aGlzLnByb2R1Y3Rpb25PcmRlciA9IG51bGw7XHJcblxyXG4gICAgdGhpcy5wcm9kdWN0aW9uT3JkZXJzU2VydmljZS5nZXQodGhpcy5pc0VtcmlCYXJrb2R1KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2U/LmlzU3VjY2Vzc2Z1bCAmJiByZXNwb25zZS5pdGVtcykge1xyXG4gICAgICAgICAgdGhpcy5maWxsaW5nQ29udHJvbFNlcnZpY2UuZ2V0WW1Qcm9kdWN0KHJlc3BvbnNlLml0ZW1zLmFic29sdXRlRW50cnkpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6IChyZXNwb25zZVlNKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlWU0/LmlzU3VjY2Vzc2Z1bCAmJiByZXNwb25zZVlNLml0ZW1zKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnltUHJvZHVjdCA9IHJlc3BvbnNlWU0uaXRlbXM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3Rpb25PcmRlciA9IHJlc3BvbnNlLml0ZW1zO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb24uZXJyb3IoJycsICdZTSDDvHLDvG4gYmlsZ2lsZXJpIGFsxLFuYW1hZMSxLicsIHRoaXMub3B0aW9ucykuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5jbGVhckFsbCgpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCAnWU0gw7xyw7xuIGJpbGdpbGVyaSBhbMSxbmFtYWTEsS4nLCB0aGlzLm9wdGlvbnMpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyQWxsKCk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHJlc3BvbnNlPy5lcnJvcnM/Lmxlbmd0aFxyXG4gICAgICAgICAgICA/IHJlc3BvbnNlLmVycm9ycy5qb2luKCdcXG4nKVxyXG4gICAgICAgICAgICA6ICfEsMWfIGVtcmkgYmlsZ2lsZXJpIGFsxLFuYW1hZMSxLic7XHJcbiAgICAgICAgICB0aGlzLnNob3dFcnJvcihtZXNzYWdlKTtcclxuICAgICAgICAgIHRoaXMuZm9jdXNXb3JrT3JkZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlYXJjaGVCYXNpbGRpTWkgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLnNob3dFcnJvcignxLDFnyBlbXJpIGJpbGdpbGVyaSBhbMSxbmFtYWTEsS4nKTtcclxuICAgICAgICB0aGlzLmZvY3VzV29ya09yZGVyKCk7XHJcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlYXJjaGVCYXNpbGRpTWkgPSBmYWxzZTtcclxuICAgICAgfSxcclxuICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoZUJhc2lsZGlNaSA9IGZhbHNlO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzYXZlKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzRW1yaUJhcmtvZHVHZWNlcmxpTWkgfHwgIXRoaXMucHJvZHVjdGlvbk9yZGVyIHx8IHRoaXMuaXNTYXZpbmcpIHtcclxuICAgICAgdGhpcy5mb2N1c1dvcmtPcmRlcigpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb25maXJtYXRpb24ud2FybihcclxuICAgICAgJycsXHJcbiAgICAgICdGaXJlIGtheWTEsW7EsSB5YXBtYWsgaXN0ZWRpxJ9pbml6ZGVuIGVtaW4gbWlzaW5pej8nLFxyXG4gICAgICB7XHJcbiAgICAgICAgeWVzVGV4dDogJ0V2ZXQnLFxyXG4gICAgICAgIGNhbmNlbFRleHQ6ICdIYXnEsXInXHJcbiAgICAgIH1cclxuICAgICkuc3Vic2NyaWJlKChzdGF0dXMpID0+IHtcclxuICAgICAgaWYgKHN0YXR1cyAhPT0gQ29uZmlybWF0aW9uLlN0YXR1cy5jb25maXJtKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLmlzU2F2aW5nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5zZXJ2aWNlLmNyZWF0ZSh0aGlzLnByb2R1Y3Rpb25PcmRlci5hYnNvbHV0ZUVudHJ5KS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5pc1N1Y2Nlc3NmdWwpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25maXJtYXRpb25cclxuICAgICAgICAgICAgICAuc3VjY2VzcygnJywgJ8SwxZ9sZW0gYmHFn2FyxLF5bGEgdGFtYW1sYW5kxLEuJywgdGhpcy5vcHRpb25zKVxyXG4gICAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jbGVhckFsbCgpKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSByZXNwb25zZT8uZXJyb3JzPy5sZW5ndGhcclxuICAgICAgICAgICAgICA/IHJlc3BvbnNlLmVycm9ycy5qb2luKCdcXG4nKVxyXG4gICAgICAgICAgICAgIDogJ0ZpcmUgacWfbGVtaSBzxLFyYXPEsW5kYSBiaXIgaGF0YSBvbHXFn3R1Lic7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Vycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNsZWFyQWxsKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGNsZWFyQWxsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNTYXZpbmcgPSBmYWxzZTtcclxuICAgIHRoaXMuaXNFbXJpQmFya29kdUdlY2VybGlNaSA9IGZhbHNlO1xyXG4gICAgdGhpcy5zZWFyY2hlQmFzaWxkaU1pID0gZmFsc2U7XHJcbiAgICB0aGlzLmlzRW1yaUJhcmtvZHUgPSBudWxsO1xyXG4gICAgdGhpcy5wcm9kdWN0aW9uT3JkZXIgPSBudWxsO1xyXG4gICAgdGhpcy5ib2lsZXJZTVByb2R1Y3RXYXN0ZVBvc3REdG8gPSBuZXcgQm9pbGVyWU1Qcm9kdWN0V2FzdGVQb3N0RHRvO1xyXG4gICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ubWJCb3hCYXJrb2ROdW1hcmFzaS5pbnN0YW5jZS5mb2N1cygpO1xyXG4gICAgICB9LCAwKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5mb2N1c1dvcmtPcmRlcigpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb2N1c1dvcmtPcmRlcigpOiB2b2lkIHtcclxuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ubWJCb3hCYXJrb2ROdW1hcmFzaT8uaW5zdGFuY2U/LmZvY3VzKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNob3dFcnJvcihtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uLmVycm9yKCcnLCBtZXNzYWdlLCB0aGlzLm9wdGlvbnMpO1xyXG4gICAgbm90aWZ5KHttZXNzYWdlLCB0eXBlOiAnZXJyb3InfSk7XHJcbiAgfVxyXG5cclxuICBmaW5pc2hXb3JrT3JkZXJBbmRTYXZlV2FzdGUoKTogdm9pZCB7XHJcbiAgICBkZWJ1Z2dlcjtcclxuICAgIGlmICghdGhpcy5pc0VtcmlCYXJrb2R1R2VjZXJsaU1pIHx8ICF0aGlzLnByb2R1Y3Rpb25PcmRlciB8fCB0aGlzLmlzU2F2aW5nKSB7XHJcbiAgICAgIHRoaXMuZm9jdXNXb3JrT3JkZXIoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY29uZmlybWF0aW9uLndhcm4oXHJcbiAgICAgICcnLFxyXG4gICAgICAnxLDFnyBlbXJpbmkgYml0aXJtZWsgdmUgZmlyZXlpIGtheWRldG1layBpc3RlZGnEn2luaXpkZW4gZW1pbiBtaXNpbml6PycsXHJcbiAgICAgIHtcclxuICAgICAgICB5ZXNUZXh0OiAnRXZldCcsXHJcbiAgICAgICAgY2FuY2VsVGV4dDogJ0hhecSxcidcclxuICAgICAgfVxyXG4gICAgKS5zdWJzY3JpYmUoKHN0YXR1cykgPT4ge1xyXG4gICAgICBpZiAoc3RhdHVzICE9PSBDb25maXJtYXRpb24uU3RhdHVzLmNvbmZpcm0pIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuaXNTYXZpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLnNlcnZpY2UuZmluaXNoV29ya09yZGVyQW5kU2F2ZVdhc3RlKHRoaXMucHJvZHVjdGlvbk9yZGVyLmFic29sdXRlRW50cnkpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICAgIGlmIChyZXNwb25zZT8uaXNTdWNjZXNzZnVsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uXHJcbiAgICAgICAgICAgICAgLnN1Y2Nlc3MoJycsICfEsMWfIGVtcmkgYml0aXJpbGRpIHZlIGZpcmUga2F5ZGVkaWxkaS4nLCB0aGlzLm9wdGlvbnMpXHJcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNsZWFyQWxsKCkpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IHJlc3BvbnNlPy5lcnJvcnM/Lmxlbmd0aFxyXG4gICAgICAgICAgICAgID8gcmVzcG9uc2UuZXJyb3JzLmpvaW4oJ1xcbicpXHJcbiAgICAgICAgICAgICAgOiAnxLDFnyBlbXJpIGJpdGlybWUgacWfbGVtaSBzxLFyYXPEsW5kYSBiaXIgaGF0YSBvbHXFn3R1Lic7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0Vycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB0aGlzLmlzU2F2aW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICBkZWJ1Z2dlcjtcclxuICAgICAgICAgIGxldCBtZXNzYWdlID0gZXJyb3IuZXJyb3IuZXJyb3IubWVzc2FnZTtcclxuICAgICAgICAgIG1lc3NhZ2UgPSBtZXNzYWdlLmxlbmd0aFxyXG4gICAgICAgICAgICAgID8gbWVzc2FnZVxyXG4gICAgICAgICAgICAgIDogJ8SwxZ8gZW1yaSBiaXRpcm1lIGnFn2xlbWkgc8SxcmFzxLFuZGEgYmlyIGhhdGEgb2x1xZ90dS4nO1xyXG4gICAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd0Vycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2xlYXJBbGwoKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZmluaXNoV29ya09yZGVyV2l0aG91dFNhdmluZ1dhc3RlKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzRW1yaUJhcmtvZHVHZWNlcmxpTWkgfHwgIXRoaXMucHJvZHVjdGlvbk9yZGVyIHx8IHRoaXMuaXNTYXZpbmcpIHtcclxuICAgICAgdGhpcy5mb2N1c1dvcmtPcmRlcigpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jb25maXJtYXRpb24ud2FybihcclxuICAgICAgJycsXHJcbiAgICAgICfEsMWfIGVtcmluaSBiaXRpcm1layBpc3RlZGnEn2luaXpkZW4gZW1pbiBtaXNpbml6PyAoRmlyZSBrYXlkZWRpbG1leWVjZWspJyxcclxuICAgICAge1xyXG4gICAgICAgIHllc1RleHQ6ICdFdmV0JyxcclxuICAgICAgICBjYW5jZWxUZXh0OiAnSGF5xLFyJ1xyXG4gICAgICB9XHJcbiAgICApLnN1YnNjcmliZSgoc3RhdHVzKSA9PiB7XHJcbiAgICAgIGlmIChzdGF0dXMgIT09IENvbmZpcm1hdGlvbi5TdGF0dXMuY29uZmlybSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5pc1NhdmluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcclxuXHJcbiAgICAgIHRoaXMuc2VydmljZS5maW5pc2hXb3JrT3JkZXJXaXRob3V0U2F2aW5nV2FzdGUodGhpcy5wcm9kdWN0aW9uT3JkZXIuYWJzb2x1dGVFbnRyeSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIGlmIChyZXNwb25zZT8uaXNTdWNjZXNzZnVsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uXHJcbiAgICAgICAgICAgICAgLnN1Y2Nlc3MoJycsICfEsMWfIGVtcmkgYml0aXJpbGRpLicsIHRoaXMub3B0aW9ucylcclxuICAgICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2xlYXJBbGwoKSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gcmVzcG9uc2U/LmVycm9ycz8ubGVuZ3RoXHJcbiAgICAgICAgICAgICAgPyByZXNwb25zZS5lcnJvcnMuam9pbignXFxuJylcclxuICAgICAgICAgICAgICA6ICfEsMWfIGVtcmkgYml0aXJtZSBpxZ9sZW1pIHPEsXJhc8SxbmRhIGJpciBoYXRhIG9sdcWfdHUuJztcclxuICAgICAgICAgICAgdGhpcy5zaG93RXJyb3IobWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3dFcnJvcignxLDFnyBlbXJpIGJpdGlybWUgacWfbGVtaSBzxLFyYXPEsW5kYSBiaXIgaGF0YSBvbHXFn3R1LicpO1xyXG4gICAgICAgICAgdGhpcy5pc1NhdmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmNsZWFyQWxsKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIiwiPGFicC1wYWdlIFticmVhZGNydW1iXT1cImZhbHNlXCI+XHJcbiAgPGFicC1wYWdlLXRvb2xiYXItY29udGFpbmVyIGNsYXNzPVwiY29sXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgIDxoMyBjbGFzcz1cInBhZ2UtdGl0bGVcIj5cclxuICAgICAgICB7eyAnVXJldGltWW9uZXRpbWk6OkJvaWxlcllNUHJvZHVjdFdhc3RlLlRpdGxlJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICA8L2gzPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTIgZy0yXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTYgY29sLWxnLTNcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIGJ0bi1zbSB3LTEwMFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwic2F2ZSgpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNFbXJpQmFya29kdUdlY2VybGlNaSB8fCBpc1NhdmluZ1wiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1zYXZlIG1lLTFcIj48L2k+XHJcbiAgICAgICAgICB7eyAnVXJldGltWW9uZXRpbWk6OkJvaWxlcllNUHJvZHVjdFdhc3RlLlNhdmUnIHwgYWJwTG9jYWxpemF0aW9uIH19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC02IGNvbC1sZy0zXCI+XHJcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc20gdy0xMDBcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImZpbmlzaFdvcmtPcmRlckFuZFNhdmVXYXN0ZSgpXCJcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNFbXJpQmFya29kdUdlY2VybGlNaSB8fCBpc1NhdmluZ1wiPlxyXG4gICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1jaGVjay1kb3VibGUgbWUtMVwiPjwvaT5cclxuICAgICAgICAgIMSwxZ8gRW1yaW5pIEJpdGlyIHZlIEZpcmV5aSBLYXlkZXRcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTYgY29sLWxnLTNcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1pbmZvIGJ0bi1zbSB3LTEwMFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiZmluaXNoV29ya09yZGVyV2l0aG91dFNhdmluZ1dhc3RlKClcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0VtcmlCYXJrb2R1R2VjZXJsaU1pIHx8IGlzU2F2aW5nXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZWNrIG1lLTFcIj48L2k+XHJcbiAgICAgICAgICDEsMWfIEVtcmluaSBCaXRpciB2ZSBGaXJleWkgS2F5ZGV0bWVcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTYgY29sLWxnLTNcIj5cclxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi13YXJuaW5nIGJ0bi1zbSB3LTEwMFwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY2xlYXJBbGwoKVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nXCI+XHJcbiAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWJyb29tIG1lLTFcIj48L2k+XHJcbiAgICAgICAgICB7eyAnVXJldGltWW9uZXRpbWk6OkJvaWxlcllNUHJvZHVjdFdhc3RlLkNsZWFuJyB8IGFicExvY2FsaXphdGlvbiB9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvYWJwLXBhZ2UtdG9vbGJhci1jb250YWluZXI+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJjYXJkIG10LTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHlcIj5cclxuICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XHJcbiAgICAgICAgPGR4LW51bWJlci1ib3ggI2JhcmtvZE51bWFyYXNpUmVmIGNsYXNzPVwibWUtMVwiIHN0eWxlPVwid2lkdGg6MTAwJTtcIiBbbWluXT1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInVXJldGltWW9uZXRpbWk6OkJvaWxlcllNUHJvZHVjdFdhc3RlLldvcmtPcmRlck5vJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwiaXNFbXJpQmFya29kdVwiIChvbkVudGVyS2V5KT1cImdldFByb2R1Y3Rpb25PcmRlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2VhcmNoZUJhc2lsZGlNaSB8fCBpc0VtcmlCYXJrb2R1R2VjZXJsaU1pXCI+XHJcbiAgICAgICAgPC9keC1udW1iZXItYm94PlxyXG4gICAgICAgIDxkeC1idXR0b24gc3R5bGU9XCJtYXJnaW4tdG9wOiA3LjVweDtcIiBpY29uPVwic2VhcmNoXCIgdHlwZT1cImRlZmF1bHRcIiAob25DbGljayk9XCJnZXRQcm9kdWN0aW9uT3JkZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic2VhcmNoZUJhc2lsZGlNaSB8fCBpc0VtcmlCYXJrb2R1R2VjZXJsaU1pXCI+XHJcbiAgICAgICAgPC9keC1idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0lmPVwiaXNFbXJpQmFya29kdUdlY2VybGlNaVwiPlxyXG4gICAgICAgIDxkeC10ZXh0LWJveCBzdHlsZT1cIndpZHRoOjEwMCU7XCJcclxuICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidVcmV0aW1Zb25ldGltaTo6Qm9pbGVyWU1Qcm9kdWN0V2FzdGUuQ29udmV5b3JJbmZvcm1hdGlvbicgfCBhYnBMb2NhbGl6YXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJwcm9kdWN0aW9uT3JkZXIudV9IYXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidHJ1ZVwiPlxyXG4gICAgICAgIDwvZHgtdGV4dC1ib3g+XHJcbiAgICAgICAgPGR4LXRleHQtYm94IHN0eWxlPVwid2lkdGg6MTAwJTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1VyZXRpbVlvbmV0aW1pOjpCb2lsZXJZTVByb2R1Y3RXYXN0ZS5Qcm9kdWN0RGVzY3JpcHRpb24nIHwgYWJwTG9jYWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwicHJvZHVjdGlvbk9yZGVyLnByb2R1Y3REZXNjcmlwdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9keC10ZXh0LWJveD5cclxuICAgICAgICA8ZHgtdGV4dC1ib3ggc3R5bGU9XCJ3aWR0aDoxMDAlO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInVXJldGltWW9uZXRpbWk6OkJvaWxlcllNUHJvZHVjdFdhc3RlLkJhdGNoTnVtYmVyJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cInltUHJvZHVjdC5iYXRjaE51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9keC10ZXh0LWJveD5cclxuICAgICAgICA8ZHgtdGV4dC1ib3ggc3R5bGU9XCJ3aWR0aDoxMDAlO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInVXJldGltWW9uZXRpbWk6OkJvaWxlcllNUHJvZHVjdFdhc3RlLkl0ZW1Db2RlJyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cInltUHJvZHVjdC5pdGVtQ29kZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9keC10ZXh0LWJveD5cclxuICAgICAgICA8ZHgtbnVtYmVyLWJveCBzdHlsZT1cIndpZHRoOjEwMCU7XCJcclxuICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidVcmV0aW1Zb25ldGltaTo6Qm9pbGVyWU1Qcm9kdWN0V2FzdGUuUHJvZHVjdFF1YW50aXR5JyB8IGFicExvY2FsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cInltUHJvZHVjdC5iYXRjaFF1YW50aXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIj5cclxuICAgICAgICA8L2R4LW51bWJlci1ib3g+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvYWJwLXBhZ2U+XHJcbiJdfQ==
|
package/esm2020/lib/components/hit-boiler-ym-product-waste/hit-boiler-ym-product-waste.module.mjs
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { CoreModule } from '@abp/ng.core';
|
|
2
|
+
import { ThemeSharedModule } from '@abp/ng.theme.shared';
|
|
3
|
+
import { NgModule } from '@angular/core';
|
|
4
|
+
import { NgbCollapseModule, NgbDatepickerModule, NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap';
|
|
5
|
+
import { NgxValidateCoreModule } from '@ngx-validate/core';
|
|
6
|
+
import { CommercialUiModule } from '@volo/abp.commercial.ng.ui';
|
|
7
|
+
import { PageModule } from '@abp/ng.components/page';
|
|
8
|
+
import { DxButtonModule, DxDataGridModule, DxNumberBoxModule, DxTextBoxModule } from 'devextreme-angular';
|
|
9
|
+
import { HitBoilerYMProductWasteRoutingModule } from './hit-boiler-ym-product-waste-routing.module';
|
|
10
|
+
import { HitBoilerYMProductWasteComponent } from "./hit-boiler-ym-product-waste.component";
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
export class HitBoilerYMProductWasteModule {
|
|
13
|
+
}
|
|
14
|
+
HitBoilerYMProductWasteModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitBoilerYMProductWasteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15
|
+
HitBoilerYMProductWasteModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: HitBoilerYMProductWasteModule, declarations: [HitBoilerYMProductWasteComponent], imports: [HitBoilerYMProductWasteRoutingModule,
|
|
16
|
+
CoreModule,
|
|
17
|
+
ThemeSharedModule,
|
|
18
|
+
CommercialUiModule,
|
|
19
|
+
NgxValidateCoreModule,
|
|
20
|
+
NgbCollapseModule,
|
|
21
|
+
NgbDatepickerModule,
|
|
22
|
+
NgbDropdownModule,
|
|
23
|
+
PageModule,
|
|
24
|
+
DxTextBoxModule,
|
|
25
|
+
DxButtonModule,
|
|
26
|
+
DxDataGridModule,
|
|
27
|
+
DxNumberBoxModule] });
|
|
28
|
+
HitBoilerYMProductWasteModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitBoilerYMProductWasteModule, imports: [HitBoilerYMProductWasteRoutingModule,
|
|
29
|
+
CoreModule,
|
|
30
|
+
ThemeSharedModule,
|
|
31
|
+
CommercialUiModule,
|
|
32
|
+
NgxValidateCoreModule,
|
|
33
|
+
NgbCollapseModule,
|
|
34
|
+
NgbDatepickerModule,
|
|
35
|
+
NgbDropdownModule,
|
|
36
|
+
PageModule,
|
|
37
|
+
DxTextBoxModule,
|
|
38
|
+
DxButtonModule,
|
|
39
|
+
DxDataGridModule,
|
|
40
|
+
DxNumberBoxModule] });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitBoilerYMProductWasteModule, decorators: [{
|
|
42
|
+
type: NgModule,
|
|
43
|
+
args: [{
|
|
44
|
+
declarations: [HitBoilerYMProductWasteComponent],
|
|
45
|
+
imports: [
|
|
46
|
+
HitBoilerYMProductWasteRoutingModule,
|
|
47
|
+
CoreModule,
|
|
48
|
+
ThemeSharedModule,
|
|
49
|
+
CommercialUiModule,
|
|
50
|
+
NgxValidateCoreModule,
|
|
51
|
+
NgbCollapseModule,
|
|
52
|
+
NgbDatepickerModule,
|
|
53
|
+
NgbDropdownModule,
|
|
54
|
+
PageModule,
|
|
55
|
+
DxTextBoxModule,
|
|
56
|
+
DxButtonModule,
|
|
57
|
+
DxDataGridModule,
|
|
58
|
+
DxNumberBoxModule,
|
|
59
|
+
],
|
|
60
|
+
}]
|
|
61
|
+
}] });
|
|
62
|
+
export function loadHitBoilerYMProductWasteAsChild() {
|
|
63
|
+
return Promise.resolve(HitBoilerYMProductWasteModule);
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWJvaWxlci15bS1wcm9kdWN0LXdhc3RlLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VyZXRpbS15b25ldGltaS9zcmMvbGliL2NvbXBvbmVudHMvaGl0LWJvaWxlci15bS1wcm9kdWN0LXdhc3RlL2hpdC1ib2lsZXIteW0tcHJvZHVjdC13YXN0ZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGNBQWMsQ0FBQztBQUN4QyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN2RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQ3JHLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLGVBQWUsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3hHLE9BQU8sRUFBQyxvQ0FBb0MsRUFBQyxNQUFNLDhDQUE4QyxDQUFDO0FBQ2xHLE9BQU8sRUFBQyxnQ0FBZ0MsRUFBQyxNQUFNLHlDQUF5QyxDQUFDOztBQW9CekYsTUFBTSxPQUFPLDZCQUE2Qjs7MEhBQTdCLDZCQUE2QjsySEFBN0IsNkJBQTZCLGlCQWpCekIsZ0NBQWdDLGFBRTdDLG9DQUFvQztRQUNwQyxVQUFVO1FBQ1YsaUJBQWlCO1FBQ2pCLGtCQUFrQjtRQUNsQixxQkFBcUI7UUFDckIsaUJBQWlCO1FBQ2pCLG1CQUFtQjtRQUNuQixpQkFBaUI7UUFDakIsVUFBVTtRQUNWLGVBQWU7UUFDZixjQUFjO1FBQ2QsZ0JBQWdCO1FBQ2hCLGlCQUFpQjsySEFHUiw2QkFBNkIsWUFmdEMsb0NBQW9DO1FBQ3BDLFVBQVU7UUFDVixpQkFBaUI7UUFDakIsa0JBQWtCO1FBQ2xCLHFCQUFxQjtRQUNyQixpQkFBaUI7UUFDakIsbUJBQW1CO1FBQ25CLGlCQUFpQjtRQUNqQixVQUFVO1FBQ1YsZUFBZTtRQUNmLGNBQWM7UUFDZCxnQkFBZ0I7UUFDaEIsaUJBQWlCOzJGQUdSLDZCQUE2QjtrQkFsQnpDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsZ0NBQWdDLENBQUM7b0JBQ2hELE9BQU8sRUFBRTt3QkFDUCxvQ0FBb0M7d0JBQ3BDLFVBQVU7d0JBQ1YsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLHFCQUFxQjt3QkFDckIsaUJBQWlCO3dCQUNqQixtQkFBbUI7d0JBQ25CLGlCQUFpQjt3QkFDakIsVUFBVTt3QkFDVixlQUFlO3dCQUNmLGNBQWM7d0JBQ2QsZ0JBQWdCO3dCQUNoQixpQkFBaUI7cUJBQ2xCO2lCQUNGOztBQUlELE1BQU0sVUFBVSxrQ0FBa0M7SUFDaEQsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLDZCQUE2QixDQUFDLENBQUM7QUFDeEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29yZU1vZHVsZX0gZnJvbSAnQGFicC9uZy5jb3JlJztcclxuaW1wb3J0IHtUaGVtZVNoYXJlZE1vZHVsZX0gZnJvbSAnQGFicC9uZy50aGVtZS5zaGFyZWQnO1xyXG5pbXBvcnQge05nTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtOZ2JDb2xsYXBzZU1vZHVsZSwgTmdiRGF0ZXBpY2tlck1vZHVsZSwgTmdiRHJvcGRvd25Nb2R1bGV9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHtOZ3hWYWxpZGF0ZUNvcmVNb2R1bGV9IGZyb20gJ0BuZ3gtdmFsaWRhdGUvY29yZSc7XHJcbmltcG9ydCB7Q29tbWVyY2lhbFVpTW9kdWxlfSBmcm9tICdAdm9sby9hYnAuY29tbWVyY2lhbC5uZy51aSc7XHJcbmltcG9ydCB7UGFnZU1vZHVsZX0gZnJvbSAnQGFicC9uZy5jb21wb25lbnRzL3BhZ2UnO1xyXG5pbXBvcnQge0R4QnV0dG9uTW9kdWxlLCBEeERhdGFHcmlkTW9kdWxlLCBEeE51bWJlckJveE1vZHVsZSwgRHhUZXh0Qm94TW9kdWxlfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXInO1xyXG5pbXBvcnQge0hpdEJvaWxlcllNUHJvZHVjdFdhc3RlUm91dGluZ01vZHVsZX0gZnJvbSAnLi9oaXQtYm9pbGVyLXltLXByb2R1Y3Qtd2FzdGUtcm91dGluZy5tb2R1bGUnO1xyXG5pbXBvcnQge0hpdEJvaWxlcllNUHJvZHVjdFdhc3RlQ29tcG9uZW50fSBmcm9tIFwiLi9oaXQtYm9pbGVyLXltLXByb2R1Y3Qtd2FzdGUuY29tcG9uZW50XCI7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW0hpdEJvaWxlcllNUHJvZHVjdFdhc3RlQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBIaXRCb2lsZXJZTVByb2R1Y3RXYXN0ZVJvdXRpbmdNb2R1bGUsXHJcbiAgICBDb3JlTW9kdWxlLFxyXG4gICAgVGhlbWVTaGFyZWRNb2R1bGUsXHJcbiAgICBDb21tZXJjaWFsVWlNb2R1bGUsXHJcbiAgICBOZ3hWYWxpZGF0ZUNvcmVNb2R1bGUsXHJcbiAgICBOZ2JDb2xsYXBzZU1vZHVsZSxcclxuICAgIE5nYkRhdGVwaWNrZXJNb2R1bGUsXHJcbiAgICBOZ2JEcm9wZG93bk1vZHVsZSxcclxuICAgIFBhZ2VNb2R1bGUsXHJcbiAgICBEeFRleHRCb3hNb2R1bGUsXHJcbiAgICBEeEJ1dHRvbk1vZHVsZSxcclxuICAgIER4RGF0YUdyaWRNb2R1bGUsXHJcbiAgICBEeE51bWJlckJveE1vZHVsZSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSGl0Qm9pbGVyWU1Qcm9kdWN0V2FzdGVNb2R1bGUge1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbG9hZEhpdEJvaWxlcllNUHJvZHVjdFdhc3RlQXNDaGlsZCgpIHtcclxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKEhpdEJvaWxlcllNUHJvZHVjdFdhc3RlTW9kdWxlKTtcclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { RouterModule } from '@angular/router';
|
|
3
|
+
import { HitComponentWastageComponent } from './hit-component-wastage.component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/router";
|
|
6
|
+
const routes = [
|
|
7
|
+
{
|
|
8
|
+
path: '',
|
|
9
|
+
component: HitComponentWastageComponent,
|
|
10
|
+
},
|
|
11
|
+
];
|
|
12
|
+
export class HitComponentWastageRoutingModule {
|
|
13
|
+
}
|
|
14
|
+
HitComponentWastageRoutingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitComponentWastageRoutingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
15
|
+
HitComponentWastageRoutingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: HitComponentWastageRoutingModule, imports: [i1.RouterModule], exports: [RouterModule] });
|
|
16
|
+
HitComponentWastageRoutingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitComponentWastageRoutingModule, imports: [RouterModule.forChild(routes), RouterModule] });
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: HitComponentWastageRoutingModule, decorators: [{
|
|
18
|
+
type: NgModule,
|
|
19
|
+
args: [{
|
|
20
|
+
imports: [RouterModule.forChild(routes)],
|
|
21
|
+
exports: [RouterModule],
|
|
22
|
+
}]
|
|
23
|
+
}] });
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGl0LWNvbXBvbmVudC13YXN0YWdlLXJvdXRpbmcubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdXJldGltLXlvbmV0aW1pL3NyYy9saWIvY29tcG9uZW50cy9oaXQtY29tcG9uZW50LXdhc3RhZ2UvaGl0LWNvbXBvbmVudC13YXN0YWdlLXJvdXRpbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7QUFFakYsTUFBTSxNQUFNLEdBQVc7SUFDckI7UUFDRSxJQUFJLEVBQUUsRUFBRTtRQUNSLFNBQVMsRUFBRSw0QkFBNEI7S0FDeEM7Q0FDRixDQUFDO0FBTUYsTUFBTSxPQUFPLGdDQUFnQzs7NkhBQWhDLGdDQUFnQzs4SEFBaEMsZ0NBQWdDLHdDQUZqQyxZQUFZOzhIQUVYLGdDQUFnQyxZQUhqQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUM3QixZQUFZOzJGQUVYLGdDQUFnQztrQkFKNUMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN4QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyTW9kdWxlLCBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBIaXRDb21wb25lbnRXYXN0YWdlQ29tcG9uZW50IH0gZnJvbSAnLi9oaXQtY29tcG9uZW50LXdhc3RhZ2UuY29tcG9uZW50JztcclxuXHJcbmNvbnN0IHJvdXRlczogUm91dGVzID0gW1xyXG4gIHtcclxuICAgIHBhdGg6ICcnLFxyXG4gICAgY29tcG9uZW50OiBIaXRDb21wb25lbnRXYXN0YWdlQ29tcG9uZW50LFxyXG4gIH0sXHJcbl07XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtSb3V0ZXJNb2R1bGUuZm9yQ2hpbGQocm91dGVzKV0sXHJcbiAgZXhwb3J0czogW1JvdXRlck1vZHVsZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBIaXRDb21wb25lbnRXYXN0YWdlUm91dGluZ01vZHVsZSB7fVxyXG4iXX0=
|