tango-app-ui-store-builder 1.0.46 → 1.0.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/collection-update-ai/collection-update-ai.component.mjs +3 -3
- package/esm2022/lib/components/collection-update-ai/components/dynamic-filter/dynamic-filter.component.mjs +183 -0
- package/esm2022/lib/components/collection-update-ai/components/store-dropdown/store-dropdown.component.mjs +211 -0
- package/esm2022/lib/components/collection-update-ai/components/store-fixture/store-fixture.component.mjs +422 -0
- package/esm2022/lib/components/collection-update-ai/components/store-select/store-select.component.mjs +148 -0
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/cancel-confirmation-modal/cancel-confirmation-modal.component.mjs +20 -0
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/find-replace-layout.component.mjs +359 -0
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/prepare-template/batch-confirmation-modal/batch-confirmation-modal.component.mjs +23 -0
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/prepare-template/prepare-template.component.mjs +2524 -0
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/review-replace/approve-complete-modal/approve-complete-modal.component.mjs +66 -0
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/review-replace/fixture-before-after/fixture-before-after.component.mjs +85 -0
- package/esm2022/lib/components/collection-update-ai/find-replace-layout/review-replace/review-replace.component.mjs +2039 -0
- package/esm2022/lib/components/collection-update-ai/find-replace-table/find-replace-table.component.mjs +433 -0
- package/esm2022/lib/components/collection-update-ai/find-replace-table/reschedule-modal/reschedule-modal.component.mjs +76 -0
- package/esm2022/lib/components/collection-update-ai/models/find-replace.model.mjs +2 -0
- package/esm2022/lib/components/collection-update-ai/services/data.service.mjs +291 -0
- package/esm2022/lib/components/create-fixture/create-fixture.component.mjs +233 -138
- package/esm2022/lib/components/fixture-template/template-assign-stores/preview-modal/preview-modal.component.mjs +4 -2
- package/esm2022/lib/components/fixture-template/template-assign-stores/template-assign-stores.component.mjs +4 -2
- package/esm2022/lib/components/fixture-template/template-basic-details/template-basic-details.component.mjs +40 -4
- package/esm2022/lib/components/fixture-template/template-products/template-products.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template/template-summary/template-summary.component.mjs +3 -3
- package/esm2022/lib/components/fixture-template/template-vms/template-vms.component.mjs +108 -79
- package/esm2022/lib/components/fixture-template-table/fixture-template-table.component.mjs +33 -4
- package/esm2022/lib/components/fixture-template-tree/fixture-template-tree.component.mjs +7 -3
- package/esm2022/lib/components/manage-plano/rollout-table/rollout-table.component.mjs +25 -3
- package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +4 -2
- package/esm2022/lib/components/manage-store-plano/template-basic-details/template-basic-details.component.mjs +27 -4
- package/esm2022/lib/components/manage-store-plano/template-products/template-products.component.mjs +3 -3
- package/esm2022/lib/components/manage-store-plano/template-vms/template-vms.component.mjs +10 -14
- package/esm2022/lib/components/manage-store-plano/verification-feedback/editable-fixture/editable-fixture.component.mjs +3 -3
- package/esm2022/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.mjs +3 -3
- package/esm2022/lib/components/planogram/merch-compliance/fixture-products/fixture-products.component.mjs +75 -31
- package/esm2022/lib/components/planogram/merch-compliance/merch-compliance.component.mjs +7 -8
- package/esm2022/lib/components/planogram/merch-compliance/product-locator/misplaced-product-fixture/misplaced-product-fixture.component.mjs +234 -0
- package/esm2022/lib/components/planogram/merch-compliance/product-locator/product-locator.component.mjs +1110 -0
- package/esm2022/lib/components/planogram/merch-compliance/product-locator/product-zone-locator/product-zone-locator.component.mjs +52 -0
- package/esm2022/lib/components/planogram/merch-compliance/zone-products/zone-products.component.mjs +36 -10
- package/esm2022/lib/components/planogram/plano-analytics/analytics-popup/analytics-popup.component.mjs +68 -0
- package/esm2022/lib/components/planogram/plano-analytics/date-range-picker/date-range-picker.component.mjs +92 -0
- package/esm2022/lib/components/planogram/plano-analytics/fixture-analytics/fixture-analytics.component.mjs +645 -0
- package/esm2022/lib/components/planogram/plano-analytics/plano-analytics.component.mjs +1276 -0
- package/esm2022/lib/components/planogram/plano-details-parent/plano-details-parent.component.mjs +33 -15
- package/esm2022/lib/components/planogram/plano-overview/fixture-overview/fixture-overview.component.mjs +41 -35
- package/esm2022/lib/components/planogram/plano-overview/plano-comparison/plano-comparison.component.mjs +8 -4
- package/esm2022/lib/components/planogram/plano-overview/plano-overview.component.mjs +19 -12
- package/esm2022/lib/components/planogram/plano-table/plano-table.component.mjs +3 -3
- package/esm2022/lib/components/store-plano/store-plano-tree-view/store-plano-tree-view.component.mjs +3 -2
- package/esm2022/lib/components/store-plano/store-plano.component.mjs +4 -2
- package/esm2022/lib/interfaces/fixture-library.interface.mjs +1 -1
- package/esm2022/lib/services/store-builder.service.mjs +49 -1
- package/esm2022/lib/tango-store-builder-routing.module.mjs +23 -1
- package/esm2022/lib/tango-store-builder.module.mjs +42 -5
- package/fesm2022/tango-app-ui-store-builder.mjs +12677 -2064
- package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
- package/lib/components/collection-update-ai/components/dynamic-filter/dynamic-filter.component.d.ts +51 -0
- package/lib/components/collection-update-ai/components/store-dropdown/store-dropdown.component.d.ts +36 -0
- package/lib/components/collection-update-ai/components/store-fixture/store-fixture.component.d.ts +50 -0
- package/lib/components/collection-update-ai/components/store-select/store-select.component.d.ts +33 -0
- package/lib/components/collection-update-ai/find-replace-layout/cancel-confirmation-modal/cancel-confirmation-modal.component.d.ts +9 -0
- package/lib/components/collection-update-ai/find-replace-layout/find-replace-layout.component.d.ts +58 -0
- package/lib/components/collection-update-ai/find-replace-layout/prepare-template/batch-confirmation-modal/batch-confirmation-modal.component.d.ts +10 -0
- package/lib/components/collection-update-ai/find-replace-layout/prepare-template/prepare-template.component.d.ts +141 -0
- package/lib/components/collection-update-ai/find-replace-layout/review-replace/approve-complete-modal/approve-complete-modal.component.d.ts +18 -0
- package/lib/components/collection-update-ai/find-replace-layout/review-replace/fixture-before-after/fixture-before-after.component.d.ts +19 -0
- package/lib/components/collection-update-ai/find-replace-layout/review-replace/review-replace.component.d.ts +116 -0
- package/lib/components/collection-update-ai/find-replace-table/find-replace-table.component.d.ts +63 -0
- package/lib/components/collection-update-ai/find-replace-table/reschedule-modal/reschedule-modal.component.d.ts +19 -0
- package/lib/components/collection-update-ai/models/find-replace.model.d.ts +55 -0
- package/lib/components/collection-update-ai/services/data.service.d.ts +70 -0
- package/lib/components/create-fixture/create-fixture.component.d.ts +15 -14
- package/lib/components/fixture-template/template-basic-details/template-basic-details.component.d.ts +2 -0
- package/lib/components/fixture-template/template-vms/template-vms.component.d.ts +12 -12
- package/lib/components/fixture-template-table/fixture-template-table.component.d.ts +2 -0
- package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +4 -2
- package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +4 -4
- package/lib/components/manage-store-plano/template-basic-details/template-basic-details.component.d.ts +2 -0
- package/lib/components/manage-store-plano/template-vms/template-vms.component.d.ts +0 -1
- package/lib/components/planogram/merch-compliance/fixture-products/fixture-products.component.d.ts +8 -2
- package/lib/components/planogram/merch-compliance/merch-compliance.component.d.ts +1 -3
- package/lib/components/planogram/merch-compliance/product-locator/misplaced-product-fixture/misplaced-product-fixture.component.d.ts +47 -0
- package/lib/components/planogram/merch-compliance/product-locator/product-locator.component.d.ts +70 -0
- package/lib/components/planogram/merch-compliance/product-locator/product-zone-locator/product-zone-locator.component.d.ts +16 -0
- package/lib/components/planogram/merch-compliance/zone-products/zone-products.component.d.ts +13 -3
- package/lib/components/planogram/plano-analytics/analytics-popup/analytics-popup.component.d.ts +25 -0
- package/lib/components/planogram/plano-analytics/date-range-picker/date-range-picker.component.d.ts +24 -0
- package/lib/components/planogram/plano-analytics/fixture-analytics/fixture-analytics.component.d.ts +93 -0
- package/lib/components/planogram/plano-analytics/plano-analytics.component.d.ts +97 -0
- package/lib/components/planogram/plano-details-parent/plano-details-parent.component.d.ts +8 -3
- package/lib/components/planogram/plano-overview/fixture-overview/fixture-overview.component.d.ts +2 -4
- package/lib/interfaces/fixture-library.interface.d.ts +1 -1
- package/lib/services/store-builder.service.d.ts +25 -0
- package/lib/tango-store-builder.module.d.ts +31 -21
- package/package.json +1 -1
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, ViewChild, } from "@angular/core";
|
|
2
|
+
import { lastValueFrom, Subject, takeUntil } from "rxjs";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../../../../services/store-builder.service";
|
|
5
|
+
import * as i2 from "tango-app-ui-global";
|
|
6
|
+
import * as i3 from "@angular/common";
|
|
7
|
+
export class MisplacedProductFixtureComponent {
|
|
8
|
+
storeBuilderService;
|
|
9
|
+
gs;
|
|
10
|
+
cd;
|
|
11
|
+
fixtureDetails;
|
|
12
|
+
fixtureTemplateDetails;
|
|
13
|
+
selectedProduct;
|
|
14
|
+
targetFixtureFullDetails = new EventEmitter();
|
|
15
|
+
fixtureRoot;
|
|
16
|
+
clientId;
|
|
17
|
+
imgCDN;
|
|
18
|
+
targetPID;
|
|
19
|
+
sectionByZones = [];
|
|
20
|
+
isLayoutInitialized = false;
|
|
21
|
+
isColorsApplied = false;
|
|
22
|
+
isPageLoading = true;
|
|
23
|
+
destroy$ = new Subject();
|
|
24
|
+
constructor(storeBuilderService, gs, cd) {
|
|
25
|
+
this.storeBuilderService = storeBuilderService;
|
|
26
|
+
this.gs = gs;
|
|
27
|
+
this.cd = cd;
|
|
28
|
+
}
|
|
29
|
+
ngOnInit() {
|
|
30
|
+
this.gs.environment
|
|
31
|
+
.pipe(takeUntil(this.destroy$))
|
|
32
|
+
.subscribe((env) => (this.imgCDN = env.planogramCDN));
|
|
33
|
+
this.gs.dataRangeValue
|
|
34
|
+
.pipe(takeUntil(this.destroy$))
|
|
35
|
+
.subscribe(async (data) => {
|
|
36
|
+
if (data?.client) {
|
|
37
|
+
this.clientId = data?.client;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
let headerData = JSON.parse(localStorage.getItem("header-filters"));
|
|
41
|
+
this.clientId = headerData?.client;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
async ngOnChanges(changes) {
|
|
46
|
+
if (changes["fixtureDetails"]?.currentValue) {
|
|
47
|
+
await this.getFixtureShelfDetails(changes["fixtureDetails"].currentValue);
|
|
48
|
+
setTimeout(() => {
|
|
49
|
+
this.updateHeaderFooterSize();
|
|
50
|
+
this.applyShelfColors();
|
|
51
|
+
}, 200);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
ngAfterViewChecked() {
|
|
55
|
+
if (!this.isLayoutInitialized) {
|
|
56
|
+
this.isLayoutInitialized = this.updateHeaderFooterSize();
|
|
57
|
+
}
|
|
58
|
+
if (!this.isColorsApplied) {
|
|
59
|
+
this.isColorsApplied = this.applyShelfColors();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
async getFixtureShelfDetails(data) {
|
|
63
|
+
this.isPageLoading = true;
|
|
64
|
+
let payload = {
|
|
65
|
+
fixtureId: data?._id,
|
|
66
|
+
planoId: data?.planoId,
|
|
67
|
+
floorId: data?.floorId,
|
|
68
|
+
compliance: true,
|
|
69
|
+
...(this.fixtureDetails?.revisionId && {
|
|
70
|
+
revisionId: this.fixtureDetails.revisionId,
|
|
71
|
+
}),
|
|
72
|
+
};
|
|
73
|
+
try {
|
|
74
|
+
const res = await lastValueFrom(this.storeBuilderService.getShelfDetails(payload));
|
|
75
|
+
if (res?.status === "success" && res?.data) {
|
|
76
|
+
this.fixtureTemplateDetails = {
|
|
77
|
+
...res?.data,
|
|
78
|
+
shelfConfig: res?.data?.shelves ?? [],
|
|
79
|
+
};
|
|
80
|
+
this.fixtureTemplateDetails.shelfConfig =
|
|
81
|
+
this.fixtureTemplateDetails.shelfConfig.map((s) => {
|
|
82
|
+
if (s.shelfType !== "shelf" && s.products?.length) {
|
|
83
|
+
s.distributedRows = this.distributeRoundRobin(s.products, s.trayRows);
|
|
84
|
+
}
|
|
85
|
+
return s;
|
|
86
|
+
});
|
|
87
|
+
const allProducts = (this.fixtureTemplateDetails?.shelfConfig ?? []).flatMap((s) => s.products ?? []);
|
|
88
|
+
allProducts.forEach((p, i) => {
|
|
89
|
+
if (!p?.productId) {
|
|
90
|
+
p["productId"] = i;
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
this.targetPID = allProducts[0]._id;
|
|
94
|
+
this.targetFixtureFullDetails.emit(this.fixtureTemplateDetails);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
console.log("@@ ~ getFixtureShelfDetails [ERR]:", error);
|
|
99
|
+
}
|
|
100
|
+
finally {
|
|
101
|
+
this.isPageLoading = false;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
distributeRoundRobin(products, trayRows) {
|
|
105
|
+
const result = Array.from({ length: trayRows }, () => []);
|
|
106
|
+
products.forEach((product, index) => {
|
|
107
|
+
const trayIndex = index % trayRows;
|
|
108
|
+
result[trayIndex].push(product);
|
|
109
|
+
});
|
|
110
|
+
return result;
|
|
111
|
+
}
|
|
112
|
+
updateHeaderFooterSize() {
|
|
113
|
+
const viewPort = this.bodyEl;
|
|
114
|
+
if (!viewPort)
|
|
115
|
+
return false;
|
|
116
|
+
const bodyWidth = viewPort.offsetWidth;
|
|
117
|
+
const header = this.fixtureRoot?.nativeElement?.querySelector("#header-block");
|
|
118
|
+
const footer = this.fixtureRoot?.nativeElement?.querySelector("#footer-block");
|
|
119
|
+
if (header && footer) {
|
|
120
|
+
header.style.width = `${bodyWidth}px`;
|
|
121
|
+
footer.style.width = `${bodyWidth}px`;
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
applyShelfColors() {
|
|
127
|
+
const bodies = this.bodyEl;
|
|
128
|
+
if (!bodies)
|
|
129
|
+
return false;
|
|
130
|
+
const bodyChildren = Array.from(bodies?.children ?? []);
|
|
131
|
+
const shelfDivs = bodyChildren
|
|
132
|
+
.map((div) => div)
|
|
133
|
+
.filter((d) => d?.id.includes("sumShelfContainer"));
|
|
134
|
+
if (!shelfDivs)
|
|
135
|
+
return false;
|
|
136
|
+
const targetIndex = this.fixtureTemplateDetails?.shelfConfig.findIndex((s) => s?._id === this.selectedProduct?.fixtureDetails?.shelfId) ?? 0;
|
|
137
|
+
shelfDivs.forEach((d, i) => {
|
|
138
|
+
if (d) {
|
|
139
|
+
d.style.backgroundColor = targetIndex === i ? "#fef3f2" : "white";
|
|
140
|
+
d.style.border = `1.4px solid ${targetIndex === i ? "#f04438" : "#98a2b3"}`;
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
constructSequentialSection(shelfDivs) {
|
|
146
|
+
const newSectionByZones = [];
|
|
147
|
+
let pZone = null;
|
|
148
|
+
for (let i = 0; i < this.fixtureTemplateDetails?.shelfConfig.length; i++) {
|
|
149
|
+
const s = this.fixtureTemplateDetails?.shelfConfig[i];
|
|
150
|
+
const zone = s.zone || "";
|
|
151
|
+
const shelfId = `${s.shelfType}${s.shelfNumber}`;
|
|
152
|
+
const shelfDiv = shelfDivs.find((d) => d?.id === shelfId);
|
|
153
|
+
if (zone === "")
|
|
154
|
+
continue;
|
|
155
|
+
const shelfCapacity = s.shelfType === "tray"
|
|
156
|
+
? s.productPerShelf * s.trayRows
|
|
157
|
+
: s.productPerShelf;
|
|
158
|
+
if (zone !== pZone) {
|
|
159
|
+
newSectionByZones.push({
|
|
160
|
+
zone,
|
|
161
|
+
section: {
|
|
162
|
+
brands: s.productBrandName ?? [],
|
|
163
|
+
categories: s.productCategory ?? [],
|
|
164
|
+
shelves: [shelfId],
|
|
165
|
+
shelfDivs: [shelfDiv],
|
|
166
|
+
capacity: shelfCapacity,
|
|
167
|
+
color: {
|
|
168
|
+
text: "#009BF3",
|
|
169
|
+
textBg: "#EAF8FF",
|
|
170
|
+
bg: "#DAF1FF",
|
|
171
|
+
border: "#99DAFF",
|
|
172
|
+
},
|
|
173
|
+
// products: structuredClone(s?.products) ?? [],
|
|
174
|
+
// improper: hasImproperProduct,
|
|
175
|
+
},
|
|
176
|
+
});
|
|
177
|
+
pZone = zone;
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
const section = newSectionByZones[newSectionByZones.length - 1].section;
|
|
181
|
+
section.shelves.push(shelfId);
|
|
182
|
+
section.shelfDivs.push(shelfDiv);
|
|
183
|
+
section.capacity += shelfCapacity;
|
|
184
|
+
// if (hasImproperProduct) section.improper = true;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
this.sectionByZones = [...newSectionByZones];
|
|
188
|
+
this.cd.detectChanges();
|
|
189
|
+
}
|
|
190
|
+
groupShelvesByZone(input) {
|
|
191
|
+
const zoneMap = {};
|
|
192
|
+
for (const item of input) {
|
|
193
|
+
const zone = item?.zone ?? "";
|
|
194
|
+
const shelfLabel = `${item.shelfType} ${item.shelfNumber}`;
|
|
195
|
+
if (!zoneMap[zone]) {
|
|
196
|
+
zoneMap[zone] = {
|
|
197
|
+
shelves: [],
|
|
198
|
+
productBrandName: this.fixtureTemplateDetails?.productResolutionLevel === "L2"
|
|
199
|
+
? item.productBrandName
|
|
200
|
+
: [],
|
|
201
|
+
productCategory: this.fixtureTemplateDetails?.productResolutionLevel === "L2"
|
|
202
|
+
? item.productCategory
|
|
203
|
+
: [],
|
|
204
|
+
zone: zone,
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
zoneMap[zone]?.shelves?.push(shelfLabel);
|
|
208
|
+
}
|
|
209
|
+
return Object.values(zoneMap);
|
|
210
|
+
}
|
|
211
|
+
get bodyEl() {
|
|
212
|
+
return (this.fixtureRoot?.nativeElement?.querySelector("#body-block-sum") ?? null);
|
|
213
|
+
}
|
|
214
|
+
ngOnDestroy() {
|
|
215
|
+
this.destroy$.next();
|
|
216
|
+
this.destroy$.complete();
|
|
217
|
+
}
|
|
218
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MisplacedProductFixtureComponent, deps: [{ token: i1.StoreBuilderService }, { token: i2.GlobalStateService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
219
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: MisplacedProductFixtureComponent, selector: "misplaced-product-fixture", inputs: { fixtureDetails: "fixtureDetails", selectedProduct: "selectedProduct" }, outputs: { targetFixtureFullDetails: "targetFixtureFullDetails" }, viewQueries: [{ propertyName: "fixtureRoot", first: true, predicate: ["misplacedFixtureRoot"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<section #misplacedFixtureRoot id=\"fixture-product-details\" *ngIf=\"!isPageLoading\">\r\n <div id=\"vm-products-sum\" class=\"wall-viewport scale-down\">\r\n <!-- Header block -->\r\n <div id=\"header-block\" class=\"header-block\"\r\n *ngIf=\"fixtureTemplateDetails?.header?.isEnabled && fixtureTemplateDetails?.fixtureType === 'wall'\">\r\n <p>{{ fixtureTemplateDetails?.header?.label }}</p>\r\n </div>\r\n\r\n <!-- Body block -->\r\n <div id=\"body-block-sum\" class=\"body-block\">\r\n\r\n <div [id]=\"'sumShelfContainer' + i\" *ngFor=\"let item of fixtureTemplateDetails?.shelfConfig; let i = index\">\r\n @if(item.shelfType === 'tray'){\r\n <div [id]=\"item.shelfType! + (i + 1)\" class=\"block\">\r\n @if(item.products.length){\r\n <div *ngFor=\"let row of item.distributedRows;let r = index\" class=\"tray mb-3\">\r\n <div *ngFor=\"let product of row;let p = index\" class=\"product\"\r\n [class.error]=\"targetPID === product._id\">\r\n <img *ngIf=\"product?.productImageUrl; else placeholder\"\r\n [src]=\"product?.productImageUrl\" alt=\"Product Image\" />\r\n <ng-template #placeholder>\r\n <div></div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n }@else{\r\n <div *ngFor=\"let product of [].constructor(item.trayRows)\" class=\"tray mb-3\">\r\n <div *ngFor=\"let product of [].constructor(item.productPerShelf)\" class=\"product\">\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }@else {\r\n <div [id]=\"item.shelfType + (i + 1)\" class=\"block shelf\">\r\n @if(item.products.length){\r\n <div *ngFor=\"let product of item.products;let p = index\" class=\"product\"\r\n [class.error]=\"targetPID === product._id\">\r\n <img *ngIf=\"product?.productImageUrl; else placeholder\" [src]=\"product?.productImageUrl\"\r\n alt=\"Product Image\" />\r\n <ng-template #placeholder>\r\n <div></div>\r\n </ng-template>\r\n </div>\r\n }@else {\r\n <div *ngFor=\"let product of [].constructor(item.productPerShelf)\" class=\"product\"></div>\r\n }\r\n </div>\r\n }\r\n <!-- @if(item.shelfType ==='shelf'){\r\n <div [id]=\"item.shelfType + (i + 1)\" class=\"block shelf\">\r\n <div *ngFor=\"let product of [].constructor(item.productPerShelf)\" class=\"product\"></div>\r\n </div>\r\n }@else {\r\n <div [id]=\"item.shelfType! + (i + 1)\" class=\"block\">\r\n <div *ngFor=\"let product of [].constructor(item.trayRows)\" class=\"tray mb-3\">\r\n <div *ngFor=\"let product of [].constructor(item.productPerShelf)\" class=\"product\"></div>\r\n </div>\r\n </div>\r\n } -->\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div id=\"footer-block\" class=\"footer-block\"\r\n *ngIf=\"fixtureTemplateDetails?.footer?.isEnabled && fixtureTemplateDetails?.fixtureType === 'wall'\">\r\n <div class=\"sub-footer left-box\"></div>\r\n <div class=\"sub-footer right-box\"></div>\r\n <p>{{ fixtureTemplateDetails?.footer?.label }}</p>\r\n </div>\r\n </div>\r\n</section>\r\n\r\n<section id=\"template-summary-skeleton\" *ngIf=\"isPageLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>", styles: [".header{background:#fff;padding:12px;border-radius:12px;display:flex;align-items:center;justify-content:space-between}.btn{padding:.775rem 1.5rem!important;font-size:1.1rem!important}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;padding:2px 8px;border-radius:16px}.badge.inactive{background:#f2f4f7!important;color:#344054!important}.builder{height:75vh}.builder .cols{background:#fff;border-radius:12px;padding:24px 24px 12px;max-height:75vh;overflow-y:auto}.shelf-container{border-radius:8px;background:var(--Gray-50, #f9fafb);padding:8px 16px;margin-bottom:12px}.counter-container{display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:#fff;padding:10px;border:.49px solid #d0d5dd}.counter-container span{margin:0 18px;font-weight:500;font-size:14px;text-align:center;vertical-align:middle;width:18px}.disable-counter{color:var(--bs-gray-500)!important;background-color:var(--bs-gray-200)!important;border-color:var(--bs-gray-300)!important;pointer-events:none;opacity:1}.disabled-click{pointer-events:none;opacity:.85}.wall-viewport{display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:30px;width:345px;text-align:center}.wall-viewport .wrapper{width:100%;max-width:345px}.wall-viewport .header-info,.wall-viewport .footer-info,.wall-viewport .body-info{width:100%;border:2px solid #f2f4f7;border-bottom:4px solid #ffffff;background:#f2f4f7;max-width:230px;display:flex;align-items:center;justify-content:center;justify-content:start;padding:12px;gap:4px}.wall-viewport .header-info p,.wall-viewport .footer-info p,.wall-viewport .body-info p{margin:0}.wall-viewport .header-info{margin-top:40px}.wall-viewport .sub-footer{border:1px solid #98a2b3;height:100%}.wall-viewport .header-block,.wall-viewport .footer-block{border:1px solid #98a2b3;height:95px;padding:8px;background-color:#f2f4f7;width:100%;display:flex;justify-content:center;align-items:center}.wall-viewport .header-block p,.wall-viewport .footer-block p{color:var(--Gray-600, #475467);font-size:18px;font-weight:600;white-space:normal;word-wrap:break-word;margin:0;background-color:#f2f4f7}.wall-viewport .body-block{width:100%}.wall-viewport .body-block .block{border:1px solid #98a2b3;padding:10px;width:100%;max-width:345px;overflow-x:auto;min-height:52px}.wall-viewport .body-block .tray,.wall-viewport .body-block .shelf{display:flex;gap:4px}.wall-viewport .body-block .tray .product,.wall-viewport .body-block .shelf .product{border:1px solid rgba(152,162,179,.2901960784);min-width:50px}.wall-viewport .body-block .tray .product{min-height:20px}.wall-viewport .body-block .shelf .product{min-height:30px}.wall-viewport .body-block .hide-product{border-color:transparent!important}.wall-viewport .body-block .hide-scroll{overflow-x:hidden!important}.horizontal-dimension{display:flex;align-items:center;justify-content:center;height:30px;position:relative}.horizontal-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.horizontal-dimension .arrow.left{transform:rotate(180deg);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .arrow.right{transform:rotate(0);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;height:1px}.horizontal-dimension .line span{position:absolute;top:-12px;color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:0 4px}.vertical-dimension{display:flex;flex-direction:column;align-items:center;width:30px;position:relative}.vertical-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.vertical-dimension .arrow.up{transform:rotate(-90deg);margin-top:20px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .arrow.down{transform:rotate(90deg);margin-bottom:26px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;width:1px}.vertical-dimension .line span{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:2px 4px}.info-card{padding:12px;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a}.info-card h3{font-weight:600;font-size:18px;line-height:28px;vertical-align:middle}.info-card p{font-weight:500;font-size:14px;line-height:20px;color:#667085;margin:0}.checkbox input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #d0d5dd)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkbox input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00a3ff)!important;background-color:var(--primary-50, #eaf8ff)}.checkbox input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00a3ff;border-right:2px solid #00a3ff;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.nav-pills{display:inline-flex;gap:4px}.nav-pills .nav-item .nav-link{border-radius:0;color:#667085;font-size:14px;font-weight:500;padding:8px 16px;border:none}.nav-pills .nav-item .nav-link:hover{background-color:#00000005}.nav-pills .nav-item .nav-link.active{background-color:#eaf8ff;color:#009bf3;border-bottom:3px solid #009bf3}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 400px);height:100%;padding:16px 24px;display:flex;flex-direction:column}.loader .shimmer{height:150px}.filter-tab{border:1px solid rgb(234,236,240);background:#fff;box-shadow:0 1px 2px #1018280d;border-radius:8px;padding:18px;transition:all ease .2s}.filter-tab:hover{cursor:pointer}.filter-tab.selected{background:#f6fcff;border:1px solid rgb(107,202,255);box-shadow:0 1px 2px #1018280d}.filter-tab h3{color:#000;font-size:20px;font-weight:600;line-height:30px;margin:0}.filter-tab p{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;margin:0}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext[_ngcontent-ng-c2141490359]{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.table-responsive{min-height:calc(100vh - 495px)}.download-link{color:var(--Primary-800, #008edf);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:auto;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer}h3.card-title{color:#101828;font-size:18px;font-weight:600;line-height:28px}p.card-tagline{color:#101828;font-size:14px;font-weight:500;line-height:20px}p.card-description{color:#344054;font-size:14px;font-weight:400;line-height:20px}#list-view .thumbnail{height:40px;width:40px;background:#f2f4f7;margin-right:12px;border-radius:8px}#list-view td{vertical-align:middle}#grid-view .card{box-shadow:0 4px 10px #0000000d;border:1px solid rgb(223,225,231);background:#fff;border-radius:12px;padding:12px;height:100%;transition:all .2s ease}#grid-view .card:hover{cursor:pointer;box-shadow:0 10px 10px #0001;transition:all .2s ease}#grid-view .card-img{margin-bottom:12px;background:#d0d5dd;height:200px;border-radius:6px}#grid-view .card-action{position:absolute;top:20px;right:20px}#grid-view .card-tagline{color:#475467;font-weight:500;font-size:14px;line-height:20px}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;color:#027a48;background:#ecfdf3}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.badge.cluster{background:#f2f4f7;color:#344054}.badge.published{background:#ecfdf3;color:#027a48}.badge.yet-to-publish{background:#f8f9fc;color:#363f72}.indicator{border-radius:16px;padding:2px 8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;width:fit-content;text-align:center;font-size:14px;font-weight:500}.indicator.short{height:14px!important;width:14px!important;border-radius:50%!important;padding:0!important}.indicator.yetToComplete{background:#f2f4f7;color:#667085}.indicator.yetToComplete path{fill:#667085}.indicator.yetToAssign{background:#eaecf5;color:#344054}.indicator.yetToAssign path{fill:#344054}.indicator.taskAssigned{background:#e0eaff;color:#7a5af8}.indicator.taskAssigned path{fill:#7a5af8}.indicator.reviewPending{background:#fef0c7;color:#f79009}.indicator.reviewPending path{fill:#f79009}.indicator.flagged{background:var(--Error-50, #fef3f2);color:var(--Error-700, #b42318)}.indicator.completed{background:#d1fadf;color:#12b76a}.indicator.completed path{fill:#12b76a}.toggle-button{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:8px;background:#fff;border:.89px solid rgb(208,213,221);box-shadow:0 .89px 1.78px #1018280d;transition:all ease .3s}.toggle-button:hover{cursor:pointer}.toggle-button.selected{transition:all ease .3s;background:#eaf8ff;box-shadow:0 0 0 3.56px #d5effe!important;border:.89px solid rgb(234,248,255)}.disabled-click{pointer-events:none;cursor:not-allowed!important;opacity:.6}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);pointer-events:none;color:#888;display:flex;align-items:center;height:1.5rem}.clear-search{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center;height:1.5rem;width:1.5rem}#fixture-product-details #vm-products-sum .wall-viewport{align-items:self-start}#fixture-product-details #vm-products-sum .body-block{width:fit-content}#fixture-product-details #vm-products-sum .body-block .block{border:none}#fixture-product-details #vm-products-sum #fixture-level .brand-category{position:absolute;width:150px;overflow:hidden;padding:4px;border-radius:8px;border:2px solid var(--Primary-200, #99daff);background:var(--White, #fff);top:50%;left:59%;transform:translate(100%,-50%);transition:all .3s ease;cursor:pointer}#fixture-product-details #vm-products-sum #fixture-level .brand,#fixture-product-details #vm-products-sum #fixture-level .category{white-space:nowrap;overflow:hidden;display:block;text-overflow:ellipsis}#fixture-product-details #vm-products-sum #fixture-level .category{margin-top:12px}#fixture-product-details #vm-products-sum #section-level .brand-category{position:absolute;width:150px;overflow:hidden;padding:4px;border-radius:8px;border:2px solid var(--Primary-200, #99daff);transition:all .3s ease;display:flex;flex-direction:column;justify-content:center;align-items:center;cursor:pointer}#fixture-product-details #vm-products-sum #section-level .brand,#fixture-product-details #vm-products-sum #section-level .category{white-space:nowrap;overflow:hidden;display:block;text-overflow:ellipsis;max-width:fit-content;width:100%}#fixture-product-details #vm-products-sum #section-level .brand{color:var(--Gray-500, #667085);font-size:12px;font-style:normal;font-weight:400;line-height:18px;margin:0}#fixture-product-details #vm-products-sum #section-level .category{color:var(--Gray-800, #1d2939);font-size:12px;font-style:normal;font-weight:600;line-height:18px;margin:0}#fixture-product-details #vm-products-sum #section-level .separator{margin:0 4px;font-weight:600}#fixture-product-details #vm-products-sum #section-level #body-loader{height:100%;width:100%;position:absolute;display:flex;justify-content:center;align-items:center;z-index:1;background:#fff3;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(10px)}#fixture-product-details #vm-products-sum #section-level #body-loader .loader{width:30px;height:30px;border:4px solid #f3f3f3;border-top:4px solid #00a3ff;border-radius:50%;animation:spin 1s linear infinite;margin:auto}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}#fixture-product-details #vm-products-sum #shelf-level .brand-category{position:absolute;width:150px;overflow:hidden;padding:8px 4px;border-radius:8px;border:2px solid var(--Primary-200, #99daff);transition:all .3s ease;display:flex;justify-content:center;cursor:pointer}#fixture-product-details #vm-products-sum #shelf-level .brand,#fixture-product-details #vm-products-sum #shelf-level .category{white-space:nowrap;overflow:hidden;display:block;text-overflow:ellipsis;max-width:fit-content;width:100%}#fixture-product-details #vm-products-sum #shelf-level .brand{color:var(--Gray-500, #667085);font-size:12px;font-style:normal;font-weight:400;line-height:18px;margin:0}#fixture-product-details #vm-products-sum #shelf-level .category{color:var(--Gray-800, #1d2939);font-size:12px;font-style:normal;font-weight:600;line-height:18px;margin:0}#fixture-product-details #vm-products-sum #shelf-level .separator{margin:0 4px;font-weight:600}#fixture-product-details #vm-products-sum .header-block{width:fit-content}#fixture-product-details #vm-products-sum .footer-block{position:relative;box-sizing:border-box;justify-content:space-between!important;width:fit-content}#fixture-product-details #vm-products-sum .footer-block p{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#f2f4f7;z-index:1}#fixture-product-details #vm-products-sum .sub-footer{position:relative;width:48%}#fixture-product-details #vm-products-sum img{width:100%;height:100%;display:block}#fixture-product-details #vm-products-sum .product{height:30px;border-radius:4px;border:.52px solid rgb(234,236,240)!important;box-shadow:0 .52px 1.04px #1018280d}#fixture-product-details #vm-products-sum .product img{object-fit:cover;border-radius:4px}#fixture-product-details #vm-products-sum .product.error{border:.52px solid rgb(240,68,56)!important;background-color:#fef3f2}#fixture-product-details .scale-down{transform:scale(.75);transform-origin:top left;width:133.3333333333%;height:133.3333333333%}\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"] }] });
|
|
220
|
+
}
|
|
221
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: MisplacedProductFixtureComponent, decorators: [{
|
|
222
|
+
type: Component,
|
|
223
|
+
args: [{ selector: "misplaced-product-fixture", template: "<section #misplacedFixtureRoot id=\"fixture-product-details\" *ngIf=\"!isPageLoading\">\r\n <div id=\"vm-products-sum\" class=\"wall-viewport scale-down\">\r\n <!-- Header block -->\r\n <div id=\"header-block\" class=\"header-block\"\r\n *ngIf=\"fixtureTemplateDetails?.header?.isEnabled && fixtureTemplateDetails?.fixtureType === 'wall'\">\r\n <p>{{ fixtureTemplateDetails?.header?.label }}</p>\r\n </div>\r\n\r\n <!-- Body block -->\r\n <div id=\"body-block-sum\" class=\"body-block\">\r\n\r\n <div [id]=\"'sumShelfContainer' + i\" *ngFor=\"let item of fixtureTemplateDetails?.shelfConfig; let i = index\">\r\n @if(item.shelfType === 'tray'){\r\n <div [id]=\"item.shelfType! + (i + 1)\" class=\"block\">\r\n @if(item.products.length){\r\n <div *ngFor=\"let row of item.distributedRows;let r = index\" class=\"tray mb-3\">\r\n <div *ngFor=\"let product of row;let p = index\" class=\"product\"\r\n [class.error]=\"targetPID === product._id\">\r\n <img *ngIf=\"product?.productImageUrl; else placeholder\"\r\n [src]=\"product?.productImageUrl\" alt=\"Product Image\" />\r\n <ng-template #placeholder>\r\n <div></div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n }@else{\r\n <div *ngFor=\"let product of [].constructor(item.trayRows)\" class=\"tray mb-3\">\r\n <div *ngFor=\"let product of [].constructor(item.productPerShelf)\" class=\"product\">\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }@else {\r\n <div [id]=\"item.shelfType + (i + 1)\" class=\"block shelf\">\r\n @if(item.products.length){\r\n <div *ngFor=\"let product of item.products;let p = index\" class=\"product\"\r\n [class.error]=\"targetPID === product._id\">\r\n <img *ngIf=\"product?.productImageUrl; else placeholder\" [src]=\"product?.productImageUrl\"\r\n alt=\"Product Image\" />\r\n <ng-template #placeholder>\r\n <div></div>\r\n </ng-template>\r\n </div>\r\n }@else {\r\n <div *ngFor=\"let product of [].constructor(item.productPerShelf)\" class=\"product\"></div>\r\n }\r\n </div>\r\n }\r\n <!-- @if(item.shelfType ==='shelf'){\r\n <div [id]=\"item.shelfType + (i + 1)\" class=\"block shelf\">\r\n <div *ngFor=\"let product of [].constructor(item.productPerShelf)\" class=\"product\"></div>\r\n </div>\r\n }@else {\r\n <div [id]=\"item.shelfType! + (i + 1)\" class=\"block\">\r\n <div *ngFor=\"let product of [].constructor(item.trayRows)\" class=\"tray mb-3\">\r\n <div *ngFor=\"let product of [].constructor(item.productPerShelf)\" class=\"product\"></div>\r\n </div>\r\n </div>\r\n } -->\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div id=\"footer-block\" class=\"footer-block\"\r\n *ngIf=\"fixtureTemplateDetails?.footer?.isEnabled && fixtureTemplateDetails?.fixtureType === 'wall'\">\r\n <div class=\"sub-footer left-box\"></div>\r\n <div class=\"sub-footer right-box\"></div>\r\n <p>{{ fixtureTemplateDetails?.footer?.label }}</p>\r\n </div>\r\n </div>\r\n</section>\r\n\r\n<section id=\"template-summary-skeleton\" *ngIf=\"isPageLoading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>", styles: [".header{background:#fff;padding:12px;border-radius:12px;display:flex;align-items:center;justify-content:space-between}.btn{padding:.775rem 1.5rem!important;font-size:1.1rem!important}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;padding:2px 8px;border-radius:16px}.badge.inactive{background:#f2f4f7!important;color:#344054!important}.builder{height:75vh}.builder .cols{background:#fff;border-radius:12px;padding:24px 24px 12px;max-height:75vh;overflow-y:auto}.shelf-container{border-radius:8px;background:var(--Gray-50, #f9fafb);padding:8px 16px;margin-bottom:12px}.counter-container{display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:#fff;padding:10px;border:.49px solid #d0d5dd}.counter-container span{margin:0 18px;font-weight:500;font-size:14px;text-align:center;vertical-align:middle;width:18px}.disable-counter{color:var(--bs-gray-500)!important;background-color:var(--bs-gray-200)!important;border-color:var(--bs-gray-300)!important;pointer-events:none;opacity:1}.disabled-click{pointer-events:none;opacity:.85}.wall-viewport{display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:30px;width:345px;text-align:center}.wall-viewport .wrapper{width:100%;max-width:345px}.wall-viewport .header-info,.wall-viewport .footer-info,.wall-viewport .body-info{width:100%;border:2px solid #f2f4f7;border-bottom:4px solid #ffffff;background:#f2f4f7;max-width:230px;display:flex;align-items:center;justify-content:center;justify-content:start;padding:12px;gap:4px}.wall-viewport .header-info p,.wall-viewport .footer-info p,.wall-viewport .body-info p{margin:0}.wall-viewport .header-info{margin-top:40px}.wall-viewport .sub-footer{border:1px solid #98a2b3;height:100%}.wall-viewport .header-block,.wall-viewport .footer-block{border:1px solid #98a2b3;height:95px;padding:8px;background-color:#f2f4f7;width:100%;display:flex;justify-content:center;align-items:center}.wall-viewport .header-block p,.wall-viewport .footer-block p{color:var(--Gray-600, #475467);font-size:18px;font-weight:600;white-space:normal;word-wrap:break-word;margin:0;background-color:#f2f4f7}.wall-viewport .body-block{width:100%}.wall-viewport .body-block .block{border:1px solid #98a2b3;padding:10px;width:100%;max-width:345px;overflow-x:auto;min-height:52px}.wall-viewport .body-block .tray,.wall-viewport .body-block .shelf{display:flex;gap:4px}.wall-viewport .body-block .tray .product,.wall-viewport .body-block .shelf .product{border:1px solid rgba(152,162,179,.2901960784);min-width:50px}.wall-viewport .body-block .tray .product{min-height:20px}.wall-viewport .body-block .shelf .product{min-height:30px}.wall-viewport .body-block .hide-product{border-color:transparent!important}.wall-viewport .body-block .hide-scroll{overflow-x:hidden!important}.horizontal-dimension{display:flex;align-items:center;justify-content:center;height:30px;position:relative}.horizontal-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.horizontal-dimension .arrow.left{transform:rotate(180deg);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .arrow.right{transform:rotate(0);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;height:1px}.horizontal-dimension .line span{position:absolute;top:-12px;color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:0 4px}.vertical-dimension{display:flex;flex-direction:column;align-items:center;width:30px;position:relative}.vertical-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.vertical-dimension .arrow.up{transform:rotate(-90deg);margin-top:20px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .arrow.down{transform:rotate(90deg);margin-bottom:26px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;width:1px}.vertical-dimension .line span{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:2px 4px}.info-card{padding:12px;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a}.info-card h3{font-weight:600;font-size:18px;line-height:28px;vertical-align:middle}.info-card p{font-weight:500;font-size:14px;line-height:20px;color:#667085;margin:0}.checkbox input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #d0d5dd)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkbox input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00a3ff)!important;background-color:var(--primary-50, #eaf8ff)}.checkbox input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00a3ff;border-right:2px solid #00a3ff;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.nav-pills{display:inline-flex;gap:4px}.nav-pills .nav-item .nav-link{border-radius:0;color:#667085;font-size:14px;font-weight:500;padding:8px 16px;border:none}.nav-pills .nav-item .nav-link:hover{background-color:#00000005}.nav-pills .nav-item .nav-link.active{background-color:#eaf8ff;color:#009bf3;border-bottom:3px solid #009bf3}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 400px);height:100%;padding:16px 24px;display:flex;flex-direction:column}.loader .shimmer{height:150px}.filter-tab{border:1px solid rgb(234,236,240);background:#fff;box-shadow:0 1px 2px #1018280d;border-radius:8px;padding:18px;transition:all ease .2s}.filter-tab:hover{cursor:pointer}.filter-tab.selected{background:#f6fcff;border:1px solid rgb(107,202,255);box-shadow:0 1px 2px #1018280d}.filter-tab h3{color:#000;font-size:20px;font-weight:600;line-height:30px;margin:0}.filter-tab p{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;margin:0}.nodatamaintext{font-family:Inter;font-size:16px;font-weight:600;line-height:24px;text-align:center;color:#101828}.nodatasubtext[_ngcontent-ng-c2141490359]{font-family:Inter;font-size:14px;font-weight:400;line-height:20px;text-align:center;color:#667085}.table-responsive{min-height:calc(100vh - 495px)}.download-link{color:var(--Primary-800, #008edf);font-size:14px;font-weight:500;line-height:20px;text-decoration-line:underline;text-decoration-style:solid;text-decoration-skip-ink:auto;text-decoration-thickness:auto;text-underline-offset:auto;text-underline-position:from-font;cursor:pointer}h3.card-title{color:#101828;font-size:18px;font-weight:600;line-height:28px}p.card-tagline{color:#101828;font-size:14px;font-weight:500;line-height:20px}p.card-description{color:#344054;font-size:14px;font-weight:400;line-height:20px}#list-view .thumbnail{height:40px;width:40px;background:#f2f4f7;margin-right:12px;border-radius:8px}#list-view td{vertical-align:middle}#grid-view .card{box-shadow:0 4px 10px #0000000d;border:1px solid rgb(223,225,231);background:#fff;border-radius:12px;padding:12px;height:100%;transition:all .2s ease}#grid-view .card:hover{cursor:pointer;box-shadow:0 10px 10px #0001;transition:all .2s ease}#grid-view .card-img{margin-bottom:12px;background:#d0d5dd;height:200px;border-radius:6px}#grid-view .card-action{position:absolute;top:20px;right:20px}#grid-view .card-tagline{color:#475467;font-weight:500;font-size:14px;line-height:20px}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;color:#027a48;background:#ecfdf3}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.badge.cluster{background:#f2f4f7;color:#344054}.badge.published{background:#ecfdf3;color:#027a48}.badge.yet-to-publish{background:#f8f9fc;color:#363f72}.indicator{border-radius:16px;padding:2px 8px;display:flex;justify-content:center;align-items:center;white-space:nowrap;width:fit-content;text-align:center;font-size:14px;font-weight:500}.indicator.short{height:14px!important;width:14px!important;border-radius:50%!important;padding:0!important}.indicator.yetToComplete{background:#f2f4f7;color:#667085}.indicator.yetToComplete path{fill:#667085}.indicator.yetToAssign{background:#eaecf5;color:#344054}.indicator.yetToAssign path{fill:#344054}.indicator.taskAssigned{background:#e0eaff;color:#7a5af8}.indicator.taskAssigned path{fill:#7a5af8}.indicator.reviewPending{background:#fef0c7;color:#f79009}.indicator.reviewPending path{fill:#f79009}.indicator.flagged{background:var(--Error-50, #fef3f2);color:var(--Error-700, #b42318)}.indicator.completed{background:#d1fadf;color:#12b76a}.indicator.completed path{fill:#12b76a}.toggle-button{width:40px;height:40px;display:flex;justify-content:center;align-items:center;border-radius:8px;background:#fff;border:.89px solid rgb(208,213,221);box-shadow:0 .89px 1.78px #1018280d;transition:all ease .3s}.toggle-button:hover{cursor:pointer}.toggle-button.selected{transition:all ease .3s;background:#eaf8ff;box-shadow:0 0 0 3.56px #d5effe!important;border:.89px solid rgb(234,248,255)}.disabled-click{pointer-events:none;cursor:not-allowed!important;opacity:.6}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.search-icon{position:absolute;left:14px;top:50%;transform:translateY(-50%);pointer-events:none;color:#888;display:flex;align-items:center;height:1.5rem}.clear-search{position:absolute;right:14px;top:50%;transform:translateY(-50%);background:none;border:none;padding:0;cursor:pointer;display:flex;align-items:center;height:1.5rem;width:1.5rem}#fixture-product-details #vm-products-sum .wall-viewport{align-items:self-start}#fixture-product-details #vm-products-sum .body-block{width:fit-content}#fixture-product-details #vm-products-sum .body-block .block{border:none}#fixture-product-details #vm-products-sum #fixture-level .brand-category{position:absolute;width:150px;overflow:hidden;padding:4px;border-radius:8px;border:2px solid var(--Primary-200, #99daff);background:var(--White, #fff);top:50%;left:59%;transform:translate(100%,-50%);transition:all .3s ease;cursor:pointer}#fixture-product-details #vm-products-sum #fixture-level .brand,#fixture-product-details #vm-products-sum #fixture-level .category{white-space:nowrap;overflow:hidden;display:block;text-overflow:ellipsis}#fixture-product-details #vm-products-sum #fixture-level .category{margin-top:12px}#fixture-product-details #vm-products-sum #section-level .brand-category{position:absolute;width:150px;overflow:hidden;padding:4px;border-radius:8px;border:2px solid var(--Primary-200, #99daff);transition:all .3s ease;display:flex;flex-direction:column;justify-content:center;align-items:center;cursor:pointer}#fixture-product-details #vm-products-sum #section-level .brand,#fixture-product-details #vm-products-sum #section-level .category{white-space:nowrap;overflow:hidden;display:block;text-overflow:ellipsis;max-width:fit-content;width:100%}#fixture-product-details #vm-products-sum #section-level .brand{color:var(--Gray-500, #667085);font-size:12px;font-style:normal;font-weight:400;line-height:18px;margin:0}#fixture-product-details #vm-products-sum #section-level .category{color:var(--Gray-800, #1d2939);font-size:12px;font-style:normal;font-weight:600;line-height:18px;margin:0}#fixture-product-details #vm-products-sum #section-level .separator{margin:0 4px;font-weight:600}#fixture-product-details #vm-products-sum #section-level #body-loader{height:100%;width:100%;position:absolute;display:flex;justify-content:center;align-items:center;z-index:1;background:#fff3;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(10px)}#fixture-product-details #vm-products-sum #section-level #body-loader .loader{width:30px;height:30px;border:4px solid #f3f3f3;border-top:4px solid #00a3ff;border-radius:50%;animation:spin 1s linear infinite;margin:auto}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}#fixture-product-details #vm-products-sum #shelf-level .brand-category{position:absolute;width:150px;overflow:hidden;padding:8px 4px;border-radius:8px;border:2px solid var(--Primary-200, #99daff);transition:all .3s ease;display:flex;justify-content:center;cursor:pointer}#fixture-product-details #vm-products-sum #shelf-level .brand,#fixture-product-details #vm-products-sum #shelf-level .category{white-space:nowrap;overflow:hidden;display:block;text-overflow:ellipsis;max-width:fit-content;width:100%}#fixture-product-details #vm-products-sum #shelf-level .brand{color:var(--Gray-500, #667085);font-size:12px;font-style:normal;font-weight:400;line-height:18px;margin:0}#fixture-product-details #vm-products-sum #shelf-level .category{color:var(--Gray-800, #1d2939);font-size:12px;font-style:normal;font-weight:600;line-height:18px;margin:0}#fixture-product-details #vm-products-sum #shelf-level .separator{margin:0 4px;font-weight:600}#fixture-product-details #vm-products-sum .header-block{width:fit-content}#fixture-product-details #vm-products-sum .footer-block{position:relative;box-sizing:border-box;justify-content:space-between!important;width:fit-content}#fixture-product-details #vm-products-sum .footer-block p{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#f2f4f7;z-index:1}#fixture-product-details #vm-products-sum .sub-footer{position:relative;width:48%}#fixture-product-details #vm-products-sum img{width:100%;height:100%;display:block}#fixture-product-details #vm-products-sum .product{height:30px;border-radius:4px;border:.52px solid rgb(234,236,240)!important;box-shadow:0 .52px 1.04px #1018280d}#fixture-product-details #vm-products-sum .product img{object-fit:cover;border-radius:4px}#fixture-product-details #vm-products-sum .product.error{border:.52px solid rgb(240,68,56)!important;background-color:#fef3f2}#fixture-product-details .scale-down{transform:scale(.75);transform-origin:top left;width:133.3333333333%;height:133.3333333333%}\n"] }]
|
|
224
|
+
}], ctorParameters: () => [{ type: i1.StoreBuilderService }, { type: i2.GlobalStateService }, { type: i0.ChangeDetectorRef }], propDecorators: { fixtureDetails: [{
|
|
225
|
+
type: Input
|
|
226
|
+
}], selectedProduct: [{
|
|
227
|
+
type: Input
|
|
228
|
+
}], targetFixtureFullDetails: [{
|
|
229
|
+
type: Output
|
|
230
|
+
}], fixtureRoot: [{
|
|
231
|
+
type: ViewChild,
|
|
232
|
+
args: ["misplacedFixtureRoot", { static: false }]
|
|
233
|
+
}] } });
|
|
234
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlzcGxhY2VkLXByb2R1Y3QtZml4dHVyZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1zdG9yZS1idWlsZGVyL3NyYy9saWIvY29tcG9uZW50cy9wbGFub2dyYW0vbWVyY2gtY29tcGxpYW5jZS9wcm9kdWN0LWxvY2F0b3IvbWlzcGxhY2VkLXByb2R1Y3QtZml4dHVyZS9taXNwbGFjZWQtcHJvZHVjdC1maXh0dXJlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL3BsYW5vZ3JhbS9tZXJjaC1jb21wbGlhbmNlL3Byb2R1Y3QtbG9jYXRvci9taXNwbGFjZWQtcHJvZHVjdC1maXh0dXJlL21pc3BsYWNlZC1wcm9kdWN0LWZpeHR1cmUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUdMLFNBQVMsRUFFVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sRUFFTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFRdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7OztBQU96RCxNQUFNLE9BQU8sZ0NBQWdDO0lBbUNqQztJQUNBO0lBQ0E7SUFsQ0QsY0FBYyxDQUFNO0lBQzdCLHNCQUFzQixDQUFNO0lBRW5CLGVBQWUsQ0FBTTtJQUNwQix3QkFBd0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBRzdELFdBQVcsQ0FBMkI7SUFFdEMsUUFBUSxDQUFTO0lBRWpCLE1BQU0sQ0FBUztJQUNmLFNBQVMsQ0FBTTtJQUVmLGNBQWMsR0FVUixFQUFFLENBQUM7SUFFRCxtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFDNUIsZUFBZSxHQUFHLEtBQUssQ0FBQztJ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QUMxRCxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQjt3QkFDdkIsQ0FBQyxDQUFDLEVBQUU7b0JBQ1IsZUFBZSxFQUNiLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxzQkFBc0IsS0FBSyxJQUFJO3dCQUMxRCxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWU7d0JBQ3RCLENBQUMsQ0FBQyxFQUFFO29CQUNSLElBQUksRUFBRSxJQUFJO2lCQUNYLENBQUM7YUFDSDtZQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzFDO1FBRUQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFZLE1BQU07UUFDaEIsT0FBTyxDQUNMLElBQUksQ0FBQyxXQUFXLEVBQUUsYUFBYSxFQUFFLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLElBQUksQ0FDMUUsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7d0dBclJVLGdDQUFnQzs0RkFBaEMsZ0NBQWdDLGdXQzVCN0Msd3NLQWdHVTs7NEZEcEVHLGdDQUFnQztrQkFMNUMsU0FBUzsrQkFDRSwyQkFBMkI7eUpBTzVCLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0csZUFBZTtzQkFBdkIsS0FBSztnQkFDSSx3QkFBd0I7c0JBQWpDLE1BQU07Z0JBR1AsV0FBVztzQkFEVixTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgSW5wdXQsXHJcbiAgT25DaGFuZ2VzLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFNpbXBsZUNoYW5nZXMsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFN0b3JlQnVpbGRlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvc3RvcmUtYnVpbGRlci5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7XHJcbiAgU2hlbGZDb25maWcsXHJcbiAgU2VjdGlvbkNvbmZpZyxcclxufSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vaW50ZXJmYWNlcy9maXh0dXJlLXRlbXBsYXRlLmludGVyZmFjZVwiO1xyXG5cclxuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSBcInRhbmdvLWFwcC11aS1nbG9iYWxcIjtcclxuaW1wb3J0IHsgbGFzdFZhbHVlRnJvbSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcIm1pc3BsYWNlZC1wcm9kdWN0LWZpeHR1cmVcIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL21pc3BsYWNlZC1wcm9kdWN0LWZpeHR1cmUuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybDogXCIuL21pc3BsYWNlZC1wcm9kdWN0LWZpeHR1cmUuY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIE1pc3BsYWNlZFByb2R1Y3RGaXh0dXJlQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25EZXN0cm95XHJcbntcclxuICBASW5wdXQoKSBmaXh0dXJlRGV0YWlsczogYW55O1xyXG4gIGZpeHR1cmVUZW1wbGF0ZURldGFpbHM6IGFueTtcclxuXHJcbiAgQElucHV0KCkgc2VsZWN0ZWRQcm9kdWN0OiBhbnk7XHJcbiAgQE91dHB1dCgpIHRhcmdldEZpeHR1cmVGdWxsRGV0YWlscyA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBAVmlld0NoaWxkKFwibWlzcGxhY2VkRml4dHVyZVJvb3RcIiwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgZml4dHVyZVJvb3QhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgY2xpZW50SWQ6IHN0cmluZztcclxuXHJcbiAgaW1nQ0ROOiBzdHJpbmc7XHJcbiAgdGFyZ2V0UElEOiBhbnk7XHJcblxyXG4gIHNlY3Rpb25CeVpvbmVzOiB7XHJcbiAgICB6b25lOiBzdHJpbmc7XHJcbiAgICBzZWN0aW9uOiB7XHJcbiAgICAgIGJyYW5kczogc3RyaW5nW107XHJcbiAgICAgIGNhdGVnb3JpZXM6IHN0cmluZ1tdO1xyXG4gICAgICBzaGVsdmVzOiBzdHJpbmdbXTtcclxuICAgICAgc2hlbGZEaXZzOiAoSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkKVtdO1xyXG4gICAgICBjYXBhY2l0eTogbnVtYmVyO1xyXG4gICAgICBjb2xvcjogYW55O1xyXG4gICAgfTtcclxuICB9W10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBpc0xheW91dEluaXRpYWxpemVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBpc0NvbG9yc0FwcGxpZWQgPSBmYWxzZTtcclxuICBpc1BhZ2VMb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHN0b3JlQnVpbGRlclNlcnZpY2U6IFN0b3JlQnVpbGRlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGdzOiBHbG9iYWxTdGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICApIHt9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncy5lbnZpcm9ubWVudFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKGVudikgPT4gKHRoaXMuaW1nQ0ROID0gZW52LnBsYW5vZ3JhbUNETikpO1xyXG5cclxuICAgIHRoaXMuZ3MuZGF0YVJhbmdlVmFsdWVcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKGFzeW5jIChkYXRhKSA9PiB7XHJcbiAgICAgICAgaWYgKGRhdGE/LmNsaWVudCkge1xyXG4gICAgICAgICAgdGhpcy5jbGllbnRJZCA9IGRhdGE/LmNsaWVudDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IGhlYWRlckRhdGEgPSBKU09OLnBhcnNlKFxyXG4gICAgICAgICAgICBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcImhlYWRlci1maWx0ZXJzXCIpIGFzIHN0cmluZyxcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmNsaWVudElkID0gaGVhZGVyRGF0YT8uY2xpZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAoY2hhbmdlc1tcImZpeHR1cmVEZXRhaWxzXCJdPy5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRGaXh0dXJlU2hlbGZEZXRhaWxzKGNoYW5nZXNbXCJmaXh0dXJlRGV0YWlsc1wiXS5jdXJyZW50VmFsdWUpO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZUhlYWRlckZvb3RlclNpemUoKTtcclxuICAgICAgICB0aGlzLmFwcGx5U2hlbGZDb2xvcnMoKTtcclxuICAgICAgfSwgMjAwKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0xheW91dEluaXRpYWxpemVkKSB7XHJcbiAgICAgIHRoaXMuaXNMYXlvdXRJbml0aWFsaXplZCA9IHRoaXMudXBkYXRlSGVhZGVyRm9vdGVyU2l6ZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmlzQ29sb3JzQXBwbGllZCkge1xyXG4gICAgICB0aGlzLmlzQ29sb3JzQXBwbGllZCA9IHRoaXMuYXBwbHlTaGVsZkNvbG9ycygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0Rml4dHVyZVNoZWxmRGV0YWlscyhkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuaXNQYWdlTG9hZGluZyA9IHRydWU7XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgZml4dHVyZUlkOiBkYXRhPy5faWQsXHJcbiAgICAgIHBsYW5vSWQ6IGRhdGE/LnBsYW5vSWQsXHJcbiAgICAgIGZsb29ySWQ6IGRhdGE/LmZsb29ySWQsXHJcbiAgICAgIGNvbXBsaWFuY2U6IHRydWUsXHJcbiAgICAgIC4uLih0aGlzLmZpeHR1cmVEZXRhaWxzPy5yZXZpc2lvbklkICYmIHtcclxuICAgICAgICByZXZpc2lvbklkOiB0aGlzLmZpeHR1cmVEZXRhaWxzLnJldmlzaW9uSWQsXHJcbiAgICAgIH0pLFxyXG4gICAgfTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCByZXM6IGFueSA9IGF3YWl0IGxhc3RWYWx1ZUZyb20oXHJcbiAgICAgICAgdGhpcy5zdG9yZUJ1aWxkZXJTZXJ2aWNlLmdldFNoZWxmRGV0YWlscyhwYXlsb2FkKSxcclxuICAgICAgKTtcclxuICAgICAgaWYgKHJlcz8uc3RhdHVzID09PSBcInN1Y2Nlc3NcIiAmJiByZXM/LmRhdGEpIHtcclxuICAgICAgICB0aGlzLmZpeHR1cmVUZW1wbGF0ZURldGFpbHMgPSB7XHJcbiAgICAgICAgICAuLi5yZXM/LmRhdGEsXHJcbiAgICAgICAgICBzaGVsZkNvbmZpZzogcmVzPy5kYXRhPy5zaGVsdmVzID8/IFtdLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscy5zaGVsZkNvbmZpZyA9XHJcbiAgICAgICAgICB0aGlzLmZpeHR1cmVUZW1wbGF0ZURldGFpbHMuc2hlbGZDb25maWcubWFwKChzOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHMuc2hlbGZUeXBlICE9PSBcInNoZWxmXCIgJiYgcy5wcm9kdWN0cz8ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgcy5kaXN0cmlidXRlZFJvd3MgPSB0aGlzLmRpc3RyaWJ1dGVSb3VuZFJvYmluKFxyXG4gICAgICAgICAgICAgICAgcy5wcm9kdWN0cyxcclxuICAgICAgICAgICAgICAgIHMudHJheVJvd3MsXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gcztcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBhbGxQcm9kdWN0cyA9IChcclxuICAgICAgICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uc2hlbGZDb25maWcgPz8gW11cclxuICAgICAgICApLmZsYXRNYXAoKHM6IGFueSkgPT4gcy5wcm9kdWN0cyA/PyBbXSk7XHJcblxyXG4gICAgICAgIGFsbFByb2R1Y3RzLmZvckVhY2goKHA6IGFueSwgaTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXA/LnByb2R1Y3RJZCkge1xyXG4gICAgICAgICAgICBwW1wicHJvZHVjdElkXCJdID0gaTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLnRhcmdldFBJRCA9IGFsbFByb2R1Y3RzWzBdLl9pZDtcclxuICAgICAgICB0aGlzLnRhcmdldEZpeHR1cmVGdWxsRGV0YWlscy5lbWl0KHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscyk7XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUubG9nKFwiQEAgfiBnZXRGaXh0dXJlU2hlbGZEZXRhaWxzIFtFUlJdOlwiLCBlcnJvcik7XHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICB0aGlzLmlzUGFnZUxvYWRpbmcgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRpc3RyaWJ1dGVSb3VuZFJvYmluKHByb2R1Y3RzOiBhbnksIHRyYXlSb3dzOiBudW1iZXIpIHtcclxuICAgIGNvbnN0IHJlc3VsdDogYW55ID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogdHJheVJvd3MgfSwgKCkgPT4gW10pO1xyXG5cclxuICAgIHByb2R1Y3RzLmZvckVhY2goKHByb2R1Y3Q6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICBjb25zdCB0cmF5SW5kZXggPSBpbmRleCAlIHRyYXlSb3dzO1xyXG4gICAgICByZXN1bHRbdHJheUluZGV4XS5wdXNoKHByb2R1Y3QpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUhlYWRlckZvb3RlclNpemUoKSB7XHJcbiAgICBjb25zdCB2aWV3UG9ydCA9IHRoaXMuYm9keUVsO1xyXG4gICAgaWYgKCF2aWV3UG9ydCkgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IGJvZHlXaWR0aCA9IHZpZXdQb3J0Lm9mZnNldFdpZHRoO1xyXG5cclxuICAgIGNvbnN0IGhlYWRlciA9IHRoaXMuZml4dHVyZVJvb3Q/Lm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgIFwiI2hlYWRlci1ibG9ja1wiLFxyXG4gICAgKSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICBjb25zdCBmb290ZXIgPSB0aGlzLmZpeHR1cmVSb290Py5uYXRpdmVFbGVtZW50Py5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICBcIiNmb290ZXItYmxvY2tcIixcclxuICAgICkgYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgaWYgKGhlYWRlciAmJiBmb290ZXIpIHtcclxuICAgICAgaGVhZGVyLnN0eWxlLndpZHRoID0gYCR7Ym9keVdpZHRofXB4YDtcclxuICAgICAgZm9vdGVyLnN0eWxlLndpZHRoID0gYCR7Ym9keVdpZHRofXB4YDtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgYXBwbHlTaGVsZkNvbG9ycygpIHtcclxuICAgIGNvbnN0IGJvZGllcyA9IHRoaXMuYm9keUVsO1xyXG4gICAgaWYgKCFib2RpZXMpIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICBjb25zdCBib2R5Q2hpbGRyZW4gPSBBcnJheS5mcm9tKGJvZGllcz8uY2hpbGRyZW4gPz8gW10pIGFzIEhUTUxFbGVtZW50W107XHJcblxyXG4gICAgY29uc3Qgc2hlbGZEaXZzID0gYm9keUNoaWxkcmVuXHJcbiAgICAgIC5tYXAoKGRpdikgPT4gZGl2IGFzIEhUTUxFbGVtZW50KVxyXG4gICAgICAuZmlsdGVyKChkKSA9PiBkPy5pZC5pbmNsdWRlcyhcInN1bVNoZWxmQ29udGFpbmVyXCIpKTtcclxuXHJcbiAgICBpZiAoIXNoZWxmRGl2cykgcmV0dXJuIGZhbHNlO1xyXG5cclxuICAgIGNvbnN0IHRhcmdldEluZGV4ID1cclxuICAgICAgdGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5zaGVsZkNvbmZpZy5maW5kSW5kZXgoXHJcbiAgICAgICAgKHM6IGFueSkgPT4gcz8uX2lkID09PSB0aGlzLnNlbGVjdGVkUHJvZHVjdD8uZml4dHVyZURldGFpbHM/LnNoZWxmSWQsXHJcbiAgICAgICkgPz8gMDtcclxuXHJcbiAgICBzaGVsZkRpdnMuZm9yRWFjaCgoZCwgaSkgPT4ge1xyXG4gICAgICBpZiAoZCkge1xyXG4gICAgICAgIGQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gdGFyZ2V0SW5kZXggPT09IGkgPyBcIiNmZWYzZjJcIiA6IFwid2hpdGVcIjtcclxuICAgICAgICBkLnN0eWxlLmJvcmRlciA9IGAxLjRweCBzb2xpZCAgJHt0YXJnZXRJbmRleCA9PT0gaSA/IFwiI2YwNDQzOFwiIDogXCIjOThhMmIzXCJ9YDtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RTZXF1ZW50aWFsU2VjdGlvbihzaGVsZkRpdnM6IChIVE1MRWxlbWVudCB8IG51bGwpW10pIHtcclxuICAgIGNvbnN0IG5ld1NlY3Rpb25CeVpvbmVzID0gW107XHJcbiAgICBsZXQgcFpvbmU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5zaGVsZkNvbmZpZy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb25zdCBzID0gdGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5zaGVsZkNvbmZpZ1tpXTtcclxuICAgICAgY29uc3Qgem9uZSA9IHMuem9uZSB8fCBcIlwiO1xyXG4gICAgICBjb25zdCBzaGVsZklkID0gYCR7cy5zaGVsZlR5cGV9JHtzLnNoZWxmTnVtYmVyfWA7XHJcbiAgICAgIGNvbnN0IHNoZWxmRGl2ID0gc2hlbGZEaXZzLmZpbmQoKGQpID0+IGQ/LmlkID09PSBzaGVsZklkKTtcclxuXHJcbiAgICAgIGlmICh6b25lID09PSBcIlwiKSBjb250aW51ZTtcclxuXHJcbiAgICAgIGNvbnN0IHNoZWxmQ2FwYWNpdHkgPVxyXG4gICAgICAgIHMuc2hlbGZUeXBlID09PSBcInRyYXlcIlxyXG4gICAgICAgICAgPyBzLnByb2R1Y3RQZXJTaGVsZiAqIHMudHJheVJvd3NcclxuICAgICAgICAgIDogcy5wcm9kdWN0UGVyU2hlbGY7XHJcbiAgICAgIGlmICh6b25lICE9PSBwWm9uZSkge1xyXG4gICAgICAgIG5ld1NlY3Rpb25CeVpvbmVzLnB1c2goe1xyXG4gICAgICAgICAgem9uZSxcclxuICAgICAgICAgIHNlY3Rpb246IHtcclxuICAgICAgICAgICAgYnJhbmRzOiBzLnByb2R1Y3RCcmFuZE5hbWUgPz8gW10sXHJcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHMucHJvZHVjdENhdGVnb3J5ID8/IFtdLFxyXG4gICAgICAgICAgICBzaGVsdmVzOiBbc2hlbGZJZF0sXHJcbiAgICAgICAgICAgIHNoZWxmRGl2czogW3NoZWxmRGl2XSxcclxuICAgICAgICAgICAgY2FwYWNpdHk6IHNoZWxmQ2FwYWNpdHksXHJcbiAgICAgICAgICAgIGNvbG9yOiB7XHJcbiAgICAgICAgICAgICAgdGV4dDogXCIjMDA5QkYzXCIsXHJcbiAgICAgICAgICAgICAgdGV4dEJnOiBcIiNFQUY4RkZcIixcclxuICAgICAgICAgICAgICBiZzogXCIjREFGMUZGXCIsXHJcbiAgICAgICAgICAgICAgYm9yZGVyOiBcIiM5OURBRkZcIixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgLy8gcHJvZHVjdHM6IHN0cnVjdHVyZWRDbG9uZShzPy5wcm9kdWN0cykgPz8gW10sXHJcbiAgICAgICAgICAgIC8vIGltcHJvcGVyOiBoYXNJbXByb3BlclByb2R1Y3QsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHBab25lID0gem9uZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCBzZWN0aW9uID0gbmV3U2VjdGlvbkJ5Wm9uZXNbbmV3U2VjdGlvbkJ5Wm9uZXMubGVuZ3RoIC0gMV0uc2VjdGlvbjtcclxuICAgICAgICBzZWN0aW9uLnNoZWx2ZXMucHVzaChzaGVsZklkKTtcclxuICAgICAgICBzZWN0aW9uLnNoZWxmRGl2cy5wdXNoKHNoZWxmRGl2KTtcclxuICAgICAgICBzZWN0aW9uLmNhcGFjaXR5ICs9IHNoZWxmQ2FwYWNpdHk7XHJcbiAgICAgICAgLy8gaWYgKGhhc0ltcHJvcGVyUHJvZHVjdCkgc2VjdGlvbi5pbXByb3BlciA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnNlY3Rpb25CeVpvbmVzID0gWy4uLm5ld1NlY3Rpb25CeVpvbmVzXTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgZ3JvdXBTaGVsdmVzQnlab25lKGlucHV0OiBTaGVsZkNvbmZpZ1tdKTogU2VjdGlvbkNvbmZpZ1tdIHtcclxuICAgIGNvbnN0IHpvbmVNYXA6IHsgW3pvbmU6IHN0cmluZ106IFNlY3Rpb25Db25maWcgfSA9IHt9O1xyXG5cclxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpbnB1dCkge1xyXG4gICAgICBjb25zdCB6b25lID0gaXRlbT8uem9uZSA/PyBcIlwiO1xyXG4gICAgICBjb25zdCBzaGVsZkxhYmVsID0gYCR7aXRlbS5zaGVsZlR5cGV9ICR7aXRlbS5zaGVsZk51bWJlcn1gO1xyXG5cclxuICAgICAgaWYgKCF6b25lTWFwW3pvbmVdKSB7XHJcbiAgICAgICAgem9uZU1hcFt6b25lXSA9IHtcclxuICAgICAgICAgIHNoZWx2ZXM6IFtdLFxyXG4gICAgICAgICAgcHJvZHVjdEJyYW5kTmFtZTpcclxuICAgICAgICAgICAgdGhpcy5maXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5wcm9kdWN0UmVzb2x1dGlvbkxldmVsID09PSBcIkwyXCJcclxuICAgICAgICAgICAgICA/IGl0ZW0ucHJvZHVjdEJyYW5kTmFtZVxyXG4gICAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgICBwcm9kdWN0Q2F0ZWdvcnk6XHJcbiAgICAgICAgICAgIHRoaXMuZml4dHVyZVRlbXBsYXRlRGV0YWlscz8ucHJvZHVjdFJlc29sdXRpb25MZXZlbCA9PT0gXCJMMlwiXHJcbiAgICAgICAgICAgICAgPyBpdGVtLnByb2R1Y3RDYXRlZ29yeVxyXG4gICAgICAgICAgICAgIDogW10sXHJcbiAgICAgICAgICB6b25lOiB6b25lLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHpvbmVNYXBbem9uZV0/LnNoZWx2ZXM/LnB1c2goc2hlbGZMYWJlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXMoem9uZU1hcCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldCBib2R5RWwoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIHRoaXMuZml4dHVyZVJvb3Q/Lm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoXCIjYm9keS1ibG9jay1zdW1cIikgPz8gbnVsbFxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxzZWN0aW9uICNtaXNwbGFjZWRGaXh0dXJlUm9vdCBpZD1cImZpeHR1cmUtcHJvZHVjdC1kZXRhaWxzXCIgKm5nSWY9XCIhaXNQYWdlTG9hZGluZ1wiPlxyXG4gICAgPGRpdiBpZD1cInZtLXByb2R1Y3RzLXN1bVwiIGNsYXNzPVwid2FsbC12aWV3cG9ydCBzY2FsZS1kb3duXCI+XHJcbiAgICAgICAgPCEtLSBIZWFkZXIgYmxvY2sgLS0+XHJcbiAgICAgICAgPGRpdiBpZD1cImhlYWRlci1ibG9ja1wiIGNsYXNzPVwiaGVhZGVyLWJsb2NrXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJmaXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5oZWFkZXI/LmlzRW5hYmxlZCAmJiBmaXh0dXJlVGVtcGxhdGVEZXRhaWxzPy5maXh0dXJlVHlwZSA9PT0gJ3dhbGwnXCI+XHJcbiAgICAgICAgICAgIDxwPnt7IGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmhlYWRlcj8ubGFiZWwgfX08L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDwhLS0gQm9keSBibG9jayAtLT5cclxuICAgICAgICA8ZGl2IGlkPVwiYm9keS1ibG9jay1zdW1cIiBjbGFzcz1cImJvZHktYmxvY2tcIj5cclxuXHJcbiAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzdW1TaGVsZkNvbnRhaW5lcicgKyBpXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZml4dHVyZVRlbXBsYXRlRGV0YWlscz8uc2hlbGZDb25maWc7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIEBpZihpdGVtLnNoZWxmVHlwZSA9PT0gJ3RyYXknKXtcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCJpdGVtLnNoZWxmVHlwZSEgKyAoaSArIDEpXCIgY2xhc3M9XCJibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYoaXRlbS5wcm9kdWN0cy5sZW5ndGgpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcm93IG9mIGl0ZW0uZGlzdHJpYnV0ZWRSb3dzO2xldCByID0gaW5kZXhcIiBjbGFzcz1cInRyYXkgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2Ygcm93O2xldCBwID0gaW5kZXhcIiBjbGFzcz1cInByb2R1Y3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuZXJyb3JdPVwidGFyZ2V0UElEID09PSBwcm9kdWN0Ll9pZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwicHJvZHVjdD8ucHJvZHVjdEltYWdlVXJsOyBlbHNlIHBsYWNlaG9sZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwicHJvZHVjdD8ucHJvZHVjdEltYWdlVXJsXCIgYWx0PVwiUHJvZHVjdCBJbWFnZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1AZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgW10uY29uc3RydWN0b3IoaXRlbS50cmF5Um93cylcIiBjbGFzcz1cInRyYXkgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgW10uY29uc3RydWN0b3IoaXRlbS5wcm9kdWN0UGVyU2hlbGYpXCIgY2xhc3M9XCJwcm9kdWN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfUBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCJpdGVtLnNoZWxmVHlwZSArIChpICsgMSlcIiBjbGFzcz1cImJsb2NrIHNoZWxmXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZihpdGVtLnByb2R1Y3RzLmxlbmd0aCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIGl0ZW0ucHJvZHVjdHM7bGV0IHAgPSBpbmRleFwiIGNsYXNzPVwicHJvZHVjdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmVycm9yXT1cInRhcmdldFBJRCA9PT0gcHJvZHVjdC5faWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwicHJvZHVjdD8ucHJvZHVjdEltYWdlVXJsOyBlbHNlIHBsYWNlaG9sZGVyXCIgW3NyY109XCJwcm9kdWN0Py5wcm9kdWN0SW1hZ2VVcmxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJQcm9kdWN0IEltYWdlXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3BsYWNlaG9sZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgfUBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHByb2R1Y3Qgb2YgW10uY29uc3RydWN0b3IoaXRlbS5wcm9kdWN0UGVyU2hlbGYpXCIgY2xhc3M9XCJwcm9kdWN0XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwhLS0gQGlmKGl0ZW0uc2hlbGZUeXBlID09PSdzaGVsZicpe1xyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIml0ZW0uc2hlbGZUeXBlICsgKGkgKyAxKVwiIGNsYXNzPVwiYmxvY2sgc2hlbGZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBbXS5jb25zdHJ1Y3RvcihpdGVtLnByb2R1Y3RQZXJTaGVsZilcIiBjbGFzcz1cInByb2R1Y3RcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1AZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiaXRlbS5zaGVsZlR5cGUhICsgKGkgKyAxKVwiIGNsYXNzPVwiYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBbXS5jb25zdHJ1Y3RvcihpdGVtLnRyYXlSb3dzKVwiIGNsYXNzPVwidHJheSBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIFtdLmNvbnN0cnVjdG9yKGl0ZW0ucHJvZHVjdFBlclNoZWxmKVwiIGNsYXNzPVwicHJvZHVjdFwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH0gLS0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tIEZvb3RlciBibG9jayAtLT5cclxuICAgICAgICA8ZGl2IGlkPVwiZm9vdGVyLWJsb2NrXCIgY2xhc3M9XCJmb290ZXItYmxvY2tcIlxyXG4gICAgICAgICAgICAqbmdJZj1cImZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmZvb3Rlcj8uaXNFbmFibGVkICYmIGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmZpeHR1cmVUeXBlID09PSAnd2FsbCdcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1mb290ZXIgbGVmdC1ib3hcIj48L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN1Yi1mb290ZXIgcmlnaHQtYm94XCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxwPnt7IGZpeHR1cmVUZW1wbGF0ZURldGFpbHM/LmZvb3Rlcj8ubGFiZWwgfX08L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG5cclxuPHNlY3Rpb24gaWQ9XCJ0ZW1wbGF0ZS1zdW1tYXJ5LXNrZWxldG9uXCIgKm5nSWY9XCJpc1BhZ2VMb2FkaW5nXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L3NlY3Rpb24+Il19
|