@infrab4a/connect-angular 5.0.0-beta.17 → 5.0.0-beta.18
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/angular-connect.module.mjs +115 -0
- package/esm2022/angular-elastic-search.module.mjs +34 -0
- package/esm2022/angular-firebase-auth.module.mjs +115 -0
- package/esm2022/angular-firestore.module.mjs +504 -0
- package/esm2022/angular-hasura-graphql.module.mjs +265 -0
- package/{esm2020 → esm2022}/persistence/cookie-data-persistence.mjs +4 -4
- package/{esm2020 → esm2022}/services/auth.service.mjs +6 -6
- package/esm2022/services/cart.service.mjs +282 -0
- package/{esm2020 → esm2022}/services/catalog/adapters/new-category-structure.adapter.mjs +6 -6
- package/{esm2020 → esm2022}/services/catalog/adapters/old-category-structure.adapter.mjs +6 -6
- package/{esm2020 → esm2022}/services/catalog/catalog.service.mjs +6 -6
- package/{esm2020 → esm2022}/services/catalog/category.service.mjs +6 -6
- package/{esm2020 → esm2022}/services/catalog/models/category-with-tree.model.mjs +1 -1
- package/esm2022/services/catalog/wishlist.service.mjs +116 -0
- package/{esm2020 → esm2022}/services/checkout-subscription.service.mjs +6 -6
- package/{esm2020 → esm2022}/services/checkout.service.mjs +6 -6
- package/esm2022/services/coupon.service.mjs +260 -0
- package/{esm2020 → esm2022}/services/home-shop.service.mjs +6 -6
- package/{esm2020 → esm2022}/services/order.service.mjs +6 -6
- package/{esm2020 → esm2022}/services/shipping.service.mjs +6 -6
- package/{fesm2020 → fesm2022}/infrab4a-connect-angular.mjs +556 -529
- package/fesm2022/infrab4a-connect-angular.mjs.map +1 -0
- package/package.json +6 -12
- package/services/catalog/wishlist.service.d.ts +4 -2
- package/services/checkout.service.d.ts +4 -1
- package/services/coupon.service.d.ts +6 -2
- package/esm2020/angular-connect.module.mjs +0 -115
- package/esm2020/angular-elastic-search.module.mjs +0 -34
- package/esm2020/angular-firebase-auth.module.mjs +0 -115
- package/esm2020/angular-firestore.module.mjs +0 -504
- package/esm2020/angular-hasura-graphql.module.mjs +0 -265
- package/esm2020/services/cart.service.mjs +0 -281
- package/esm2020/services/catalog/wishlist.service.mjs +0 -115
- package/esm2020/services/coupon.service.mjs +0 -235
- package/fesm2015/infrab4a-connect-angular.mjs +0 -2417
- package/fesm2015/infrab4a-connect-angular.mjs.map +0 -1
- package/fesm2020/infrab4a-connect-angular.mjs.map +0 -1
- /package/{esm2020 → esm2022}/consts/backend-url.const.mjs +0 -0
- /package/{esm2020 → esm2022}/consts/category-structure.mjs +0 -0
- /package/{esm2020 → esm2022}/consts/default-shop.const.mjs +0 -0
- /package/{esm2020 → esm2022}/consts/es-config.const.mjs +0 -0
- /package/{esm2020 → esm2022}/consts/firebase-const.mjs +0 -0
- /package/{esm2020 → esm2022}/consts/hasura-options.const.mjs +0 -0
- /package/{esm2020 → esm2022}/consts/index.mjs +0 -0
- /package/{esm2020 → esm2022}/consts/persistence.const.mjs +0 -0
- /package/{esm2020 → esm2022}/consts/storage-base-url.const.mjs +0 -0
- /package/{esm2020 → esm2022}/helpers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/helpers/mobile-operation-system-checker.helper.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/infrab4a-connect-angular.mjs +0 -0
- /package/{esm2020 → esm2022}/persistence/data-persistence.mjs +0 -0
- /package/{esm2020 → esm2022}/persistence/index.mjs +0 -0
- /package/{esm2020 → esm2022}/services/catalog/adapters/category-structure.adapter.mjs +0 -0
- /package/{esm2020 → esm2022}/services/catalog/adapters/index.mjs +0 -0
- /package/{esm2020 → esm2022}/services/catalog/enums/index.mjs +0 -0
- /package/{esm2020 → esm2022}/services/catalog/enums/product-sorts.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/services/catalog/index.mjs +0 -0
- /package/{esm2020 → esm2022}/services/catalog/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/services/catalog/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/services/catalog/types/product-sort.type.mjs +0 -0
- /package/{esm2020 → esm2022}/services/helpers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/services/helpers/util.helper.mjs +0 -0
- /package/{esm2020 → esm2022}/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/services/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/services/types/required-checkout-data.type.mjs +0 -0
- /package/{esm2020 → esm2022}/services/types/required-checkout-subscription-data.type.mjs +0 -0
- /package/{esm2020 → esm2022}/services/types/shipping-methods.type.mjs +0 -0
- /package/{esm2020 → esm2022}/types/firebase-app-config.type.mjs +0 -0
- /package/{esm2020 → esm2022}/types/index.mjs +0 -0
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { Buy2WinFirestoreRepository, Checkout, isNil, LineItem, NotFoundError, RoundProductPricesHelper, Shops, Where, } from '@infrab4a/connect';
|
|
3
|
+
import { from, iif, of, Subject } from 'rxjs';
|
|
4
|
+
import { catchError, concatMap, map, mergeMap, tap } from 'rxjs/operators';
|
|
5
|
+
import { DEFAULT_SHOP } from '../consts';
|
|
6
|
+
import { AuthService } from './auth.service';
|
|
7
|
+
import { CheckoutService } from './checkout.service';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "./auth.service";
|
|
10
|
+
import * as i2 from "./checkout.service";
|
|
11
|
+
import * as i3 from "@infrab4a/connect";
|
|
12
|
+
export class CartService {
|
|
13
|
+
constructor(authService, checkoutService, defaultShop, productRepository, categoryRepository, variantRepository, buy2WinRepository) {
|
|
14
|
+
this.authService = authService;
|
|
15
|
+
this.checkoutService = checkoutService;
|
|
16
|
+
this.defaultShop = defaultShop;
|
|
17
|
+
this.productRepository = productRepository;
|
|
18
|
+
this.categoryRepository = categoryRepository;
|
|
19
|
+
this.variantRepository = variantRepository;
|
|
20
|
+
this.buy2WinRepository = buy2WinRepository;
|
|
21
|
+
this.cartSubject = new Subject();
|
|
22
|
+
this.updateLineItemInCart = (lineItem, quantity, checkout) => (isNil(checkout) ? this.checkoutService.getCheckout() : of(checkout)).pipe(concatMap((checkoutLoaded) => {
|
|
23
|
+
const items = [];
|
|
24
|
+
const index = checkoutLoaded.lineItems?.map((checkoutItem) => checkoutItem.id).indexOf(lineItem.id);
|
|
25
|
+
if (index > -1) {
|
|
26
|
+
checkoutLoaded.lineItems[index].quantity += quantity;
|
|
27
|
+
checkoutLoaded.lineItems[index].pricePaid = lineItem.pricePaid;
|
|
28
|
+
}
|
|
29
|
+
else
|
|
30
|
+
checkoutLoaded.lineItems = items.concat(checkoutLoaded.lineItems ? checkoutLoaded.lineItems.concat([lineItem]) : [lineItem]);
|
|
31
|
+
return this.checkoutService
|
|
32
|
+
.updateCheckoutLineItems(checkoutLoaded)
|
|
33
|
+
.pipe(map((updatedCheckout) => this.generateCartObject(updatedCheckout.lineItems)));
|
|
34
|
+
}));
|
|
35
|
+
this.generateCartObject = (items) => items?.reduce((cart, item) => ({
|
|
36
|
+
...cart,
|
|
37
|
+
[item.id]: LineItem.toInstance({
|
|
38
|
+
...(cart[item.id] || item),
|
|
39
|
+
quantity: (cart[item.id]?.quantity || 0) + (item.quantity ? item.quantity : 1),
|
|
40
|
+
}),
|
|
41
|
+
}), {}) || {};
|
|
42
|
+
this.buildLineItem = async ({ checkout, item, quantity, }) => {
|
|
43
|
+
const product = await this.getProductData(item.id);
|
|
44
|
+
item.quantity = item?.quantity || checkout?.lineItems?.find((lineItem) => lineItem.id === item.id)?.quantity || 0;
|
|
45
|
+
if (this.checkMaxStock(item, quantity || 0))
|
|
46
|
+
throw new Error('Desculpe! Temos apenas ' + item.stock?.quantity + ' em estoque.');
|
|
47
|
+
const image = item.image || item.images?.shift();
|
|
48
|
+
const { id, name, EAN, slug, stock, price, weight, sku, type } = item;
|
|
49
|
+
const isGift = item.isGift || null;
|
|
50
|
+
const pricePaid = this.getProductPrice({
|
|
51
|
+
product: item,
|
|
52
|
+
shop: checkout.shop || this.defaultShop,
|
|
53
|
+
isSubscriber: checkout.user?.isSubscriber,
|
|
54
|
+
});
|
|
55
|
+
RoundProductPricesHelper.roundProductPrices(item);
|
|
56
|
+
return {
|
|
57
|
+
checkout,
|
|
58
|
+
lineItem: LineItem.toInstance({
|
|
59
|
+
id,
|
|
60
|
+
name: name ?? product.name,
|
|
61
|
+
EAN: EAN ?? product.EAN,
|
|
62
|
+
brand: product.brand,
|
|
63
|
+
slug: slug ?? product.slug,
|
|
64
|
+
sku: sku ?? product.sku,
|
|
65
|
+
stock,
|
|
66
|
+
price: this.roundPrice(price),
|
|
67
|
+
image,
|
|
68
|
+
weight: weight ?? product.weight,
|
|
69
|
+
quantity: (item.quantity || 0) + (quantity || 0),
|
|
70
|
+
pricePaid,
|
|
71
|
+
discount: 0,
|
|
72
|
+
categories: product.categories ?? [],
|
|
73
|
+
isGift: isGift ?? null,
|
|
74
|
+
costPrice: product.costPrice ?? 0,
|
|
75
|
+
type,
|
|
76
|
+
}),
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
this.getProductPrice = ({ product, isSubscriber, }) => {
|
|
80
|
+
const info = product.price;
|
|
81
|
+
if (product.isGift)
|
|
82
|
+
return 0;
|
|
83
|
+
return isSubscriber && info.subscriberPrice > 0
|
|
84
|
+
? Number(info.subscriberPrice.toFixed(2))
|
|
85
|
+
: Number(info.price.toFixed(2));
|
|
86
|
+
};
|
|
87
|
+
this.checkMaxStock = (item, quantity) => {
|
|
88
|
+
const maxStock = item.stock?.quantity || 0;
|
|
89
|
+
const currentItemAmount = item.quantity || 0;
|
|
90
|
+
return currentItemAmount + quantity > maxStock;
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
addItem(item, quantity = 1) {
|
|
94
|
+
return from(this.checkoutService.getCheckout()).pipe(concatMap(async (checkout) => await this.buildLineItem({ checkout, item, quantity: quantity || 1 })), mergeMap(({ checkout, lineItem }) => this.updateLineItemInCart(lineItem, quantity || 1, checkout)), tap((cart) => this.cartSubject.next(cart)));
|
|
95
|
+
}
|
|
96
|
+
decreaseItem(item) {
|
|
97
|
+
return this.checkoutService.getCheckout().pipe(map((checkout) => {
|
|
98
|
+
const checkoutItem = checkout.lineItems?.find((lineItem) => lineItem.id === item.id);
|
|
99
|
+
if (!isNil(checkoutItem))
|
|
100
|
+
checkoutItem.quantity -= checkoutItem.quantity > 1 ? 1 : 0;
|
|
101
|
+
return checkout;
|
|
102
|
+
}), concatMap((checkout) => this.checkoutService.updateCheckoutLineItems(checkout)), map((checkout) => this.generateCartObject(checkout.lineItems)), tap((cart) => this.cartSubject.next(cart)));
|
|
103
|
+
}
|
|
104
|
+
getCart(checkout) {
|
|
105
|
+
this.buildCartFromCheckout(checkout).subscribe((cart) => this.cartSubject.next(cart));
|
|
106
|
+
return this.cartSubject;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* @deprecated The method should not be used
|
|
110
|
+
*/
|
|
111
|
+
getVariantPriceDiscount(item) {
|
|
112
|
+
return this.authService.getUser().pipe(concatMap((user) => iif(() => user.isSubscriber && !!item.price.subscriberPrice, of(item.price.subscriberPrice), of(item.price.price))), catchError(() => of(item.price.price)));
|
|
113
|
+
}
|
|
114
|
+
removeItem(item) {
|
|
115
|
+
return this.checkoutService.getCheckout().pipe(map((checkout) => {
|
|
116
|
+
const index = checkout.lineItems.findIndex((lineItem) => lineItem.id === item.id);
|
|
117
|
+
if (index >= 0)
|
|
118
|
+
checkout.lineItems.splice(index, 1);
|
|
119
|
+
return checkout;
|
|
120
|
+
}), concatMap((checkout) => this.checkoutService.updateCheckoutLineItems(checkout)), map((checkout) => this.generateCartObject(checkout.lineItems)), tap((cart) => this.cartSubject.next(cart)));
|
|
121
|
+
}
|
|
122
|
+
updateUserCart(user) {
|
|
123
|
+
return this.checkoutService.getCheckout().pipe(concatMap((checkout) => this.checkoutService.updateCheckoutUser(Checkout.toInstance({ ...checkout.toPlain(), user }))), concatMap(async (checkout) => await this.checkoutService
|
|
124
|
+
.updateCheckoutLineItems(Checkout.toInstance({
|
|
125
|
+
...checkout.toPlain(),
|
|
126
|
+
lineItems: checkout.lineItems?.length
|
|
127
|
+
? await Promise.all(checkout.lineItems?.map(async (item) => (await this.buildLineItem({ checkout, item })).lineItem))
|
|
128
|
+
: [],
|
|
129
|
+
}))
|
|
130
|
+
.toPromise()), map((checkout) => this.generateCartObject(checkout.lineItems)), tap((cart) => this.cartSubject.next(cart)));
|
|
131
|
+
}
|
|
132
|
+
clearCart() {
|
|
133
|
+
return this.checkoutService.getCheckout().pipe(map((checkout) => {
|
|
134
|
+
this.checkoutService.clearCheckoutFromSession();
|
|
135
|
+
return checkout;
|
|
136
|
+
}), concatMap((oldCheckout) => this.buildCartFromCheckout(oldCheckout)), tap((cart) => this.cartSubject.next(cart)));
|
|
137
|
+
}
|
|
138
|
+
buildCartFromCheckout(checkoutData) {
|
|
139
|
+
return this.checkoutService.getCheckout(checkoutData).pipe(map((checkout) => checkout.lineItems), concatMap((lineItems) => of(this.generateCartObject(lineItems))));
|
|
140
|
+
}
|
|
141
|
+
roundPrice(productPrice) {
|
|
142
|
+
const { price, fullPrice, subscriberPrice } = productPrice;
|
|
143
|
+
return {
|
|
144
|
+
...productPrice,
|
|
145
|
+
price: Number(price.toFixed(2)),
|
|
146
|
+
fullPrice: Number(fullPrice.toFixed(2)),
|
|
147
|
+
...(subscriberPrice && { subscriberPrice: Number(subscriberPrice.toFixed(2)) }),
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
async getProductData(productId) {
|
|
151
|
+
let product;
|
|
152
|
+
let variant;
|
|
153
|
+
try {
|
|
154
|
+
product = await this.productRepository.get({ id: productId });
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
if (!(error instanceof NotFoundError))
|
|
158
|
+
throw error;
|
|
159
|
+
const { data: variants } = await this.variantRepository.find({ filters: { id: productId } });
|
|
160
|
+
variant = variants.shift();
|
|
161
|
+
if (!variant)
|
|
162
|
+
throw error;
|
|
163
|
+
product = await this.productRepository.get({ id: variant.productId });
|
|
164
|
+
}
|
|
165
|
+
return {
|
|
166
|
+
...product.toPlain(),
|
|
167
|
+
...(variant && { ...variant.toPlain() }),
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
getGifts() {
|
|
171
|
+
return this.checkoutService.getCheckout().pipe(mergeMap(async (checkout) => {
|
|
172
|
+
const notGiftItems = checkout.lineItems ? checkout.lineItems.filter((item) => !item.isGift) : [];
|
|
173
|
+
if (!notGiftItems.length)
|
|
174
|
+
return { ...checkout, lineItems: [] };
|
|
175
|
+
const cartTotal = notGiftItems.reduce((a, b) => a + b.pricePaid * b.quantity, 0);
|
|
176
|
+
const campaigns = await this.buy2WinRepository
|
|
177
|
+
.find({
|
|
178
|
+
filters: {
|
|
179
|
+
active: { operator: Where.EQUALS, value: true },
|
|
180
|
+
shop: { operator: Where.EQUALS, value: this.defaultShop },
|
|
181
|
+
},
|
|
182
|
+
})
|
|
183
|
+
.then((data) => data.data);
|
|
184
|
+
if (!campaigns.length)
|
|
185
|
+
return { ...checkout, lineItems: notGiftItems };
|
|
186
|
+
const elegibleCampaigns = [];
|
|
187
|
+
for (const campaign of campaigns) {
|
|
188
|
+
const today = new Date().getTime();
|
|
189
|
+
if (!(campaign.startDate.getTime() <= today) && !(campaign.endDate.getTime() >= today))
|
|
190
|
+
continue;
|
|
191
|
+
if (campaign.activeCategory) {
|
|
192
|
+
const categoriesCampaing = campaign.categories.map((c) => c.id.toString());
|
|
193
|
+
const categoriesCampaingFullTree = [];
|
|
194
|
+
for (const id of categoriesCampaing) {
|
|
195
|
+
const children = await this.categoryRepository.getChildren(parseInt(id));
|
|
196
|
+
categoriesCampaingFullTree.push(id, ...children.map((c) => c.id.toString()));
|
|
197
|
+
}
|
|
198
|
+
const categoriesCampaingTree = [...new Set(categoriesCampaingFullTree)];
|
|
199
|
+
const filterProductsCategories = checkout.lineItems.filter((l) => {
|
|
200
|
+
if (!l.categories || !l.categories?.length)
|
|
201
|
+
return true;
|
|
202
|
+
return l.categories.some((c) => categoriesCampaingTree.some((cat) => cat == c));
|
|
203
|
+
});
|
|
204
|
+
if (filterProductsCategories.length) {
|
|
205
|
+
const cartTotalCategories = filterProductsCategories.reduce((a, b) => a + b.pricePaid * b.quantity, 0);
|
|
206
|
+
if (cartTotalCategories >= campaign.cartValueMin)
|
|
207
|
+
elegibleCampaigns.push(campaign);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
if (campaign.cartValue && campaign.cartValue > 0) {
|
|
212
|
+
if (campaign.cartValue <= cartTotal)
|
|
213
|
+
elegibleCampaigns.push(campaign);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (!elegibleCampaigns.length)
|
|
218
|
+
return { ...checkout, lineItems: notGiftItems };
|
|
219
|
+
const campaingnProducts = [];
|
|
220
|
+
for (const campaign of elegibleCampaigns) {
|
|
221
|
+
let elegibleProducts = [];
|
|
222
|
+
for (const product of campaign.products) {
|
|
223
|
+
const { data: productData } = await this.productRepository.find({ filters: { sku: product } });
|
|
224
|
+
if (!productData.length)
|
|
225
|
+
continue;
|
|
226
|
+
const gift = productData.shift();
|
|
227
|
+
if (gift.stock.quantity < 1)
|
|
228
|
+
continue;
|
|
229
|
+
elegibleProducts.push(gift);
|
|
230
|
+
}
|
|
231
|
+
campaingnProducts.push(elegibleProducts);
|
|
232
|
+
}
|
|
233
|
+
if (!campaingnProducts.length)
|
|
234
|
+
return { ...checkout, lineItems: notGiftItems };
|
|
235
|
+
const gifts = this.giftToLineItems([].concat(...campaingnProducts));
|
|
236
|
+
return { ...checkout, lineItems: notGiftItems.concat(gifts) };
|
|
237
|
+
}), concatMap((checkout) => this.checkoutService.updateCheckoutLineItems(checkout)), map((checkout) => this.generateCartObject(checkout.lineItems)), tap((cart) => this.cartSubject.next(cart)));
|
|
238
|
+
}
|
|
239
|
+
giftToLineItems(items) {
|
|
240
|
+
return items.map((item) => {
|
|
241
|
+
const { brand, categories, id, name, price, sku, slug, stock, weight, EAN } = item;
|
|
242
|
+
const image = item?.miniatures?.length ? item.miniatures[0] : item.images[0];
|
|
243
|
+
return LineItem.toInstance({
|
|
244
|
+
brand,
|
|
245
|
+
categories,
|
|
246
|
+
id: id.toString(),
|
|
247
|
+
name,
|
|
248
|
+
price,
|
|
249
|
+
sku,
|
|
250
|
+
slug,
|
|
251
|
+
stock,
|
|
252
|
+
weight,
|
|
253
|
+
EAN,
|
|
254
|
+
image,
|
|
255
|
+
pricePaid: 0,
|
|
256
|
+
quantity: 1,
|
|
257
|
+
isGift: true,
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: CartService, deps: [{ token: i1.AuthService }, { token: i2.CheckoutService }, { token: DEFAULT_SHOP }, { token: 'ProductRepository' }, { token: 'CategoryRepository' }, { token: 'VariantRepository' }, { token: 'Buy2WinRepository' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
262
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: CartService }); }
|
|
263
|
+
}
|
|
264
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: CartService, decorators: [{
|
|
265
|
+
type: Injectable
|
|
266
|
+
}], ctorParameters: () => [{ type: i1.AuthService }, { type: i2.CheckoutService }, { type: i3.Shops, decorators: [{
|
|
267
|
+
type: Inject,
|
|
268
|
+
args: [DEFAULT_SHOP]
|
|
269
|
+
}] }, { type: undefined, decorators: [{
|
|
270
|
+
type: Inject,
|
|
271
|
+
args: ['ProductRepository']
|
|
272
|
+
}] }, { type: undefined, decorators: [{
|
|
273
|
+
type: Inject,
|
|
274
|
+
args: ['CategoryRepository']
|
|
275
|
+
}] }, { type: undefined, decorators: [{
|
|
276
|
+
type: Inject,
|
|
277
|
+
args: ['VariantRepository']
|
|
278
|
+
}] }, { type: i3.Buy2WinFirestoreRepository, decorators: [{
|
|
279
|
+
type: Inject,
|
|
280
|
+
args: ['Buy2WinRepository']
|
|
281
|
+
}] }] });
|
|
282
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDbEQsT0FBTyxFQUVMLDBCQUEwQixFQUUxQixRQUFRLEVBQ1IsS0FBSyxFQUNMLFFBQVEsRUFDUixhQUFhLEVBR2Isd0JBQXdCLEVBRXhCLEtBQUssRUFJTCxLQUFLLEdBQ04sTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBYyxFQUFFLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ3pELE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDMUUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUN4QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDNUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFBOzs7OztBQVFwRCxNQUFNLE9BQU8sV0FBVztJQUd0QixZQUNtQixXQUF3QixFQUN4QixlQUFnQyxFQUNWLFdBQWtCLEVBQ1gsaUJBQW9DLEVBQ25DLGtCQUFzQyxFQUN2QyxpQkFBb0MsRUFDcEMsaUJBQTZDO1FBTjFFLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNWLGdCQUFXLEdBQVgsV0FBVyxDQUFPO1FBQ1gsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNuQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3ZDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7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QkFDSixLQUFLO2dCQUNMLE1BQU07Z0JBQ04sR0FBRztnQkFDSCxLQUFLO2dCQUNMLFNBQVMsRUFBRSxDQUFDO2dCQUNaLFFBQVEsRUFBRSxDQUFDO2dCQUNYLE1BQU0sRUFBRSxJQUFJO2FBQ2IsQ0FBQyxDQUFBO1FBQ0osQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDOzhHQWxYVSxXQUFXLDRFQU1aLFlBQVksYUFDWixtQkFBbUIsYUFDbkIsb0JBQW9CLGFBQ3BCLG1CQUFtQixhQUNuQixtQkFBbUI7a0hBVmxCLFdBQVc7OzJGQUFYLFdBQVc7a0JBRHZCLFVBQVU7OzBCQU9OLE1BQU07MkJBQUMsWUFBWTs7MEJBQ25CLE1BQU07MkJBQUMsbUJBQW1COzswQkFDMUIsTUFBTTsyQkFBQyxvQkFBb0I7OzBCQUMzQixNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQzFCLE1BQU07MkJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIEJ1eTJXaW4sXG4gIEJ1eTJXaW5GaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBDYXRlZ29yeVJlcG9zaXRvcnksXG4gIENoZWNrb3V0LFxuICBpc05pbCxcbiAgTGluZUl0ZW0sXG4gIE5vdEZvdW5kRXJyb3IsXG4gIFByb2R1Y3QsXG4gIFByb2R1Y3RSZXBvc2l0b3J5LFxuICBSb3VuZFByb2R1Y3RQcmljZXNIZWxwZXIsXG4gIFNob3BQcmljZSxcbiAgU2hvcHMsXG4gIFVzZXIsXG4gIFZhcmlhbnQsXG4gIFZhcmlhbnRSZXBvc2l0b3J5LFxuICBXaGVyZSxcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5pbXBvcnQgeyBmcm9tLCBpaWYsIE9ic2VydmFibGUsIG9mLCBTdWJqZWN0IH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGNvbmNhdE1hcCwgbWFwLCBtZXJnZU1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQgeyBERUZBVUxUX1NIT1AgfSBmcm9tICcuLi9jb25zdHMnXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJ1xuaW1wb3J0IHsgQ2hlY2tvdXRTZXJ2aWNlIH0gZnJvbSAnLi9jaGVja291dC5zZXJ2aWNlJ1xuaW1wb3J0IHsgUmVxdWlyZWRDaGVja291dERhdGEgfSBmcm9tICcuL3R5cGVzJ1xuXG5leHBvcnQgdHlwZSBDYXJ0ID0ge1xuICBbaWQ6IHN0cmluZ106IExpbmVJdGVtXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDYXJ0U2VydmljZSB7XG4gIHByaXZhdGUgY2FydFN1YmplY3Q6IFN1YmplY3Q8Q2FydD4gPSBuZXcgU3ViamVjdCgpXG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjaGVja291dFNlcnZpY2U6IENoZWNrb3V0U2VydmljZSxcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0U2hvcDogU2hvcHMsXG4gICAgQEluamVjdCgnUHJvZHVjdFJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RSZXBvc2l0b3J5OiBQcm9kdWN0UmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KCdDYXRlZ29yeVJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IGNhdGVnb3J5UmVwb3NpdG9yeTogQ2F0ZWdvcnlSZXBvc2l0b3J5LFxuICAgIEBJbmplY3QoJ1ZhcmlhbnRSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSB2YXJpYW50UmVwb3NpdG9yeTogVmFyaWFudFJlcG9zaXRvcnksXG4gICAgQEluamVjdCgnQnV5MldpblJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IGJ1eTJXaW5SZXBvc2l0b3J5OiBCdXkyV2luRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgKSB7fVxuXG4gIGFkZEl0ZW0oaXRlbTogTGluZUl0ZW0sIHF1YW50aXR5OiBudW1iZXIgPSAxKTogT2JzZXJ2YWJsZTxDYXJ0PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKSkucGlwZShcbiAgICAgIGNvbmNhdE1hcChhc3luYyAoY2hlY2tvdXQpID0+IGF3YWl0IHRoaXMuYnVpbGRMaW5lSXRlbSh7IGNoZWNrb3V0LCBpdGVtLCBxdWFudGl0eTogcXVhbnRpdHkgfHwgMSB9KSksXG4gICAgICBtZXJnZU1hcCgoeyBjaGVja291dCwgbGluZUl0ZW0gfSkgPT4gdGhpcy51cGRhdGVMaW5lSXRlbUluQ2FydChsaW5lSXRlbSwgcXVhbnRpdHkgfHwgMSwgY2hlY2tvdXQgYXMgQ2hlY2tvdXQpKSxcbiAgICAgIHRhcCgoY2FydCkgPT4gdGhpcy5jYXJ0U3ViamVjdC5uZXh0KGNhcnQpKSxcbiAgICApXG4gIH1cblxuICBkZWNyZWFzZUl0ZW0oaXRlbTogTGluZUl0ZW0pOiBPYnNlcnZhYmxlPENhcnQ+IHtcbiAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKS5waXBlKFxuICAgICAgbWFwKChjaGVja291dCkgPT4ge1xuICAgICAgICBjb25zdCBjaGVja291dEl0ZW0gPSBjaGVja291dC5saW5lSXRlbXM/LmZpbmQoKGxpbmVJdGVtKSA9PiBsaW5lSXRlbS5pZCA9PT0gaXRlbS5pZClcblxuICAgICAgICBpZiAoIWlzTmlsKGNoZWNrb3V0SXRlbSkpIGNoZWNrb3V0SXRlbS5xdWFudGl0eSAtPSBjaGVja291dEl0ZW0ucXVhbnRpdHkgPiAxID8gMSA6IDBcblxuICAgICAgICByZXR1cm4gY2hlY2tvdXRcbiAgICAgIH0pLFxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT4gdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXQpKSxcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IHRoaXMuZ2VuZXJhdGVDYXJ0T2JqZWN0KGNoZWNrb3V0LmxpbmVJdGVtcykpLFxuICAgICAgdGFwKChjYXJ0KSA9PiB0aGlzLmNhcnRTdWJqZWN0Lm5leHQoY2FydCkpLFxuICAgIClcbiAgfVxuXG4gIGdldENhcnQoY2hlY2tvdXQ/OiBSZXF1aXJlZENoZWNrb3V0RGF0YSk6IE9ic2VydmFibGU8Q2FydD4ge1xuICAgIHRoaXMuYnVpbGRDYXJ0RnJvbUNoZWNrb3V0KGNoZWNrb3V0KS5zdWJzY3JpYmUoKGNhcnQpID0+IHRoaXMuY2FydFN1YmplY3QubmV4dChjYXJ0KSlcblxuICAgIHJldHVybiB0aGlzLmNhcnRTdWJqZWN0XG4gIH1cblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhlIG1ldGhvZCBzaG91bGQgbm90IGJlIHVzZWRcbiAgICovXG4gIGdldFZhcmlhbnRQcmljZURpc2NvdW50KGl0ZW06IExpbmVJdGVtKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5hdXRoU2VydmljZS5nZXRVc2VyKCkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgodXNlcikgPT5cbiAgICAgICAgaWlmKFxuICAgICAgICAgICgpID0+IHVzZXIuaXNTdWJzY3JpYmVyICYmICEhaXRlbS5wcmljZS5zdWJzY3JpYmVyUHJpY2UsXG4gICAgICAgICAgb2YoaXRlbS5wcmljZS5zdWJzY3JpYmVyUHJpY2UpLFxuICAgICAgICAgIG9mKGl0ZW0ucHJpY2UucHJpY2UpLFxuICAgICAgICApLFxuICAgICAgKSxcbiAgICAgIGNhdGNoRXJyb3IoKCkgPT4gb2YoaXRlbS5wcmljZS5wcmljZSkpLFxuICAgIClcbiAgfVxuXG4gIHJlbW92ZUl0ZW0oaXRlbTogTGluZUl0ZW0pOiBPYnNlcnZhYmxlPENhcnQ+IHtcbiAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKS5waXBlKFxuICAgICAgbWFwKChjaGVja291dCkgPT4ge1xuICAgICAgICBjb25zdCBpbmRleCA9IGNoZWNrb3V0LmxpbmVJdGVtcy5maW5kSW5kZXgoKGxpbmVJdGVtKSA9PiBsaW5lSXRlbS5pZCA9PT0gaXRlbS5pZClcblxuICAgICAgICBpZiAoaW5kZXggPj0gMCkgY2hlY2tvdXQubGluZUl0ZW1zLnNwbGljZShpbmRleCwgMSlcblxuICAgICAgICByZXR1cm4gY2hlY2tvdXRcbiAgICAgIH0pLFxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT4gdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXQpKSxcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IHRoaXMuZ2VuZXJhdGVDYXJ0T2JqZWN0KGNoZWNrb3V0LmxpbmVJdGVtcykpLFxuICAgICAgdGFwKChjYXJ0KSA9PiB0aGlzLmNhcnRTdWJqZWN0Lm5leHQoY2FydCkpLFxuICAgIClcbiAgfVxuXG4gIHVwZGF0ZVVzZXJDYXJ0KHVzZXI6IFVzZXIpOiBPYnNlcnZhYmxlPENhcnQ+IHtcbiAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT5cbiAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQ2hlY2tvdXRVc2VyKENoZWNrb3V0LnRvSW5zdGFuY2UoeyAuLi5jaGVja291dC50b1BsYWluKCksIHVzZXIgfSkpLFxuICAgICAgKSxcbiAgICAgIGNvbmNhdE1hcChcbiAgICAgICAgYXN5bmMgKGNoZWNrb3V0KSA9PlxuICAgICAgICAgIGF3YWl0IHRoaXMuY2hlY2tvdXRTZXJ2aWNlXG4gICAgICAgICAgICAudXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoXG4gICAgICAgICAgICAgIENoZWNrb3V0LnRvSW5zdGFuY2Uoe1xuICAgICAgICAgICAgICAgIC4uLmNoZWNrb3V0LnRvUGxhaW4oKSxcbiAgICAgICAgICAgICAgICBsaW5lSXRlbXM6IGNoZWNrb3V0LmxpbmVJdGVtcz8ubGVuZ3RoXG4gICAgICAgICAgICAgICAgICA/IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgICAgICAgICAgIGNoZWNrb3V0LmxpbmVJdGVtcz8ubWFwKGFzeW5jIChpdGVtKSA9PiAoYXdhaXQgdGhpcy5idWlsZExpbmVJdGVtKHsgY2hlY2tvdXQsIGl0ZW0gfSkpLmxpbmVJdGVtKSxcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgOiBbXSxcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAudG9Qcm9taXNlKCksXG4gICAgICApLFxuICAgICAgbWFwKChjaGVja291dCkgPT4gdGhpcy5nZW5lcmF0ZUNhcnRPYmplY3QoY2hlY2tvdXQubGluZUl0ZW1zKSksXG4gICAgICB0YXAoKGNhcnQpID0+IHRoaXMuY2FydFN1YmplY3QubmV4dChjYXJ0KSksXG4gICAgKVxuICB9XG5cbiAgY2xlYXJDYXJ0KCk6IE9ic2VydmFibGU8Q2FydD4ge1xuICAgIHJldHVybiB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dCgpLnBpcGUoXG4gICAgICBtYXAoKGNoZWNrb3V0KSA9PiB7XG4gICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmNsZWFyQ2hlY2tvdXRGcm9tU2Vzc2lvbigpXG4gICAgICAgIHJldHVybiBjaGVja291dFxuICAgICAgfSksXG4gICAgICBjb25jYXRNYXAoKG9sZENoZWNrb3V0KSA9PiB0aGlzLmJ1aWxkQ2FydEZyb21DaGVja291dChvbGRDaGVja291dCkpLFxuICAgICAgdGFwKChjYXJ0KSA9PiB0aGlzLmNhcnRTdWJqZWN0Lm5leHQoY2FydCkpLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDYXJ0RnJvbUNoZWNrb3V0KGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXREYXRhKTogT2JzZXJ2YWJsZTxDYXJ0PiB7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLmdldENoZWNrb3V0KGNoZWNrb3V0RGF0YSkucGlwZShcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IGNoZWNrb3V0LmxpbmVJdGVtcyksXG4gICAgICBjb25jYXRNYXAoKGxpbmVJdGVtcykgPT4gb2YodGhpcy5nZW5lcmF0ZUNhcnRPYmplY3QobGluZUl0ZW1zKSkpLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlTGluZUl0ZW1JbkNhcnQgPSAobGluZUl0ZW06IExpbmVJdGVtLCBxdWFudGl0eTogbnVtYmVyLCBjaGVja291dD86IENoZWNrb3V0KTogT2JzZXJ2YWJsZTxDYXJ0PiA9PlxuICAgIChpc05pbChjaGVja291dCkgPyB0aGlzLmNoZWNrb3V0U2VydmljZS5nZXRDaGVja291dCgpIDogb2YoY2hlY2tvdXQpKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChjaGVja291dExvYWRlZCkgPT4ge1xuICAgICAgICBjb25zdCBpdGVtczogTGluZUl0ZW1bXSA9IFtdXG4gICAgICAgIGNvbnN0IGluZGV4ID0gY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zPy5tYXAoKGNoZWNrb3V0SXRlbSkgPT4gY2hlY2tvdXRJdGVtLmlkKS5pbmRleE9mKGxpbmVJdGVtLmlkKVxuXG4gICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgY2hlY2tvdXRMb2FkZWQubGluZUl0ZW1zW2luZGV4XS5xdWFudGl0eSArPSBxdWFudGl0eVxuICAgICAgICAgIGNoZWNrb3V0TG9hZGVkLmxpbmVJdGVtc1tpbmRleF0ucHJpY2VQYWlkID0gbGluZUl0ZW0ucHJpY2VQYWlkXG4gICAgICAgIH0gZWxzZVxuICAgICAgICAgIGNoZWNrb3V0TG9hZGVkLmxpbmVJdGVtcyA9IGl0ZW1zLmNvbmNhdChcbiAgICAgICAgICAgIGNoZWNrb3V0TG9hZGVkLmxpbmVJdGVtcyA/IGNoZWNrb3V0TG9hZGVkLmxpbmVJdGVtcy5jb25jYXQoW2xpbmVJdGVtXSkgOiBbbGluZUl0ZW1dLFxuICAgICAgICAgIClcblxuICAgICAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2VcbiAgICAgICAgICAudXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXRMb2FkZWQpXG4gICAgICAgICAgLnBpcGUobWFwKCh1cGRhdGVkQ2hlY2tvdXQpID0+IHRoaXMuZ2VuZXJhdGVDYXJ0T2JqZWN0KHVwZGF0ZWRDaGVja291dC5saW5lSXRlbXMpKSlcbiAgICAgIH0pLFxuICAgIClcblxuICBwcml2YXRlIGdlbmVyYXRlQ2FydE9iamVjdCA9IChpdGVtczogTGluZUl0ZW1bXSk6IENhcnQgPT5cbiAgICBpdGVtcz8ucmVkdWNlKFxuICAgICAgKGNhcnQsIGl0ZW0pID0+ICh7XG4gICAgICAgIC4uLmNhcnQsXG4gICAgICAgIFtpdGVtLmlkXTogTGluZUl0ZW0udG9JbnN0YW5jZSh7XG4gICAgICAgICAgLi4uKGNhcnRbaXRlbS5pZF0gfHwgaXRlbSksXG4gICAgICAgICAgcXVhbnRpdHk6IChjYXJ0W2l0ZW0uaWRdPy5xdWFudGl0eSB8fCAwKSArIChpdGVtLnF1YW50aXR5ID8gaXRlbS5xdWFudGl0eSA6IDEpLFxuICAgICAgICB9KSxcbiAgICAgIH0pLFxuICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgTGluZUl0ZW0+LFxuICAgICkgfHwge31cblxuICBwcml2YXRlIGJ1aWxkTGluZUl0ZW0gPSBhc3luYyAoe1xuICAgIGNoZWNrb3V0LFxuICAgIGl0ZW0sXG4gICAgcXVhbnRpdHksXG4gIH06IHtcbiAgICBjaGVja291dDogUmVxdWlyZWRDaGVja291dERhdGFcbiAgICBpdGVtOiBMaW5lSXRlbVxuICAgIHF1YW50aXR5PzogbnVtYmVyXG4gIH0pOiBQcm9taXNlPHsgY2hlY2tvdXQ6IFBhcnRpYWw8Q2hlY2tvdXQ+OyBsaW5lSXRlbTogTGluZUl0ZW0gfT4gPT4ge1xuICAgIGNvbnN0IHByb2R1Y3QgPSBhd2FpdCB0aGlzLmdldFByb2R1Y3REYXRhKGl0ZW0uaWQpXG5cbiAgICBpdGVtLnF1YW50aXR5ID0gaXRlbT8ucXVhbnRpdHkgfHwgY2hlY2tvdXQ/LmxpbmVJdGVtcz8uZmluZCgobGluZUl0ZW0pID0+IGxpbmVJdGVtLmlkID09PSBpdGVtLmlkKT8ucXVhbnRpdHkgfHwgMFxuXG4gICAgaWYgKHRoaXMuY2hlY2tNYXhTdG9jayhpdGVtLCBxdWFudGl0eSB8fCAwKSlcbiAgICAgIHRocm93IG5ldyBFcnJvcignRGVzY3VscGUhIFRlbW9zIGFwZW5hcyAnICsgaXRlbS5zdG9jaz8ucXVhbnRpdHkgKyAnIGVtIGVzdG9xdWUuJylcblxuICAgIGNvbnN0IGltYWdlID0gaXRlbS5pbWFnZSB8fCBpdGVtLmltYWdlcz8uc2hpZnQoKVxuICAgIGNvbnN0IHsgaWQsIG5hbWUsIEVBTiwgc2x1Zywgc3RvY2ssIHByaWNlLCB3ZWlnaHQsIHNrdSwgdHlwZSB9ID0gaXRlbVxuICAgIGNvbnN0IGlzR2lmdCA9IGl0ZW0uaXNHaWZ0IHx8IG51bGxcbiAgICBjb25zdCBwcmljZVBhaWQgPSB0aGlzLmdldFByb2R1Y3RQcmljZSh7XG4gICAgICBwcm9kdWN0OiBpdGVtLFxuICAgICAgc2hvcDogY2hlY2tvdXQuc2hvcCB8fCB0aGlzLmRlZmF1bHRTaG9wLFxuICAgICAgaXNTdWJzY3JpYmVyOiBjaGVja291dC51c2VyPy5pc1N1YnNjcmliZXIsXG4gICAgfSlcblxuICAgIFJvdW5kUHJvZHVjdFByaWNlc0hlbHBlci5yb3VuZFByb2R1Y3RQcmljZXMoaXRlbSlcblxuICAgIHJldHVybiB7XG4gICAgICBjaGVja291dCxcbiAgICAgIGxpbmVJdGVtOiBMaW5lSXRlbS50b0luc3RhbmNlKHtcbiAgICAgICAgaWQsXG4gICAgICAgIG5hbWU6IG5hbWUgPz8gcHJvZHVjdC5uYW1lLFxuICAgICAgICBFQU46IEVBTiA/PyBwcm9kdWN0LkVBTixcbiAgICAgICAgYnJhbmQ6IHByb2R1Y3QuYnJhbmQsXG4gICAgICAgIHNsdWc6IHNsdWcgPz8gcHJvZHVjdC5zbHVnLFxuICAgICAgICBza3U6IHNrdSA/PyBwcm9kdWN0LnNrdSxcbiAgICAgICAgc3RvY2ssXG4gICAgICAgIHByaWNlOiB0aGlzLnJvdW5kUHJpY2UocHJpY2UpLFxuICAgICAgICBpbWFnZSxcbiAgICAgICAgd2VpZ2h0OiB3ZWlnaHQgPz8gcHJvZHVjdC53ZWlnaHQsXG4gICAgICAgIHF1YW50aXR5OiAoaXRlbS5xdWFudGl0eSB8fCAwKSArIChxdWFudGl0eSB8fCAwKSxcbiAgICAgICAgcHJpY2VQYWlkLFxuICAgICAgICBkaXNjb3VudDogMCxcbiAgICAgICAgY2F0ZWdvcmllczogcHJvZHVjdC5jYXRlZ29yaWVzID8/IFtdLFxuICAgICAgICBpc0dpZnQ6IGlzR2lmdCA/PyBudWxsLFxuICAgICAgICBjb3N0UHJpY2U6IHByb2R1Y3QuY29zdFByaWNlID8/IDAsXG4gICAgICAgIHR5cGUsXG4gICAgICB9KSxcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJvdW5kUHJpY2UocHJvZHVjdFByaWNlOiBTaG9wUHJpY2UpOiBTaG9wUHJpY2Uge1xuICAgIGNvbnN0IHsgcHJpY2UsIGZ1bGxQcmljZSwgc3Vic2NyaWJlclByaWNlIH0gPSBwcm9kdWN0UHJpY2VcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucHJvZHVjdFByaWNlLFxuICAgICAgcHJpY2U6IE51bWJlcihwcmljZS50b0ZpeGVkKDIpKSxcbiAgICAgIGZ1bGxQcmljZTogTnVtYmVyKGZ1bGxQcmljZS50b0ZpeGVkKDIpKSxcbiAgICAgIC4uLihzdWJzY3JpYmVyUHJpY2UgJiYgeyBzdWJzY3JpYmVyUHJpY2U6IE51bWJlcihzdWJzY3JpYmVyUHJpY2UudG9GaXhlZCgyKSkgfSksXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXRQcm9kdWN0RGF0YShwcm9kdWN0SWQ6IHN0cmluZyk6IFByb21pc2U8UGFydGlhbDxQcm9kdWN0Pj4ge1xuICAgIGxldCBwcm9kdWN0OiBQcm9kdWN0XG4gICAgbGV0IHZhcmlhbnQ6IFZhcmlhbnRcblxuICAgIHRyeSB7XG4gICAgICBwcm9kdWN0ID0gYXdhaXQgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5nZXQoeyBpZDogcHJvZHVjdElkIH0pXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgTm90Rm91bmRFcnJvcikpIHRocm93IGVycm9yXG5cbiAgICAgIGNvbnN0IHsgZGF0YTogdmFyaWFudHMgfSA9IGF3YWl0IHRoaXMudmFyaWFudFJlcG9zaXRvcnkuZmluZCh7IGZpbHRlcnM6IHsgaWQ6IHByb2R1Y3RJZCB9IH0pXG5cbiAgICAgIHZhcmlhbnQgPSB2YXJpYW50cy5zaGlmdCgpXG5cbiAgICAgIGlmICghdmFyaWFudCkgdGhyb3cgZXJyb3JcblxuICAgICAgcHJvZHVjdCA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZ2V0KHsgaWQ6IHZhcmlhbnQucHJvZHVjdElkIH0pXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnByb2R1Y3QudG9QbGFpbigpLFxuICAgICAgLi4uKHZhcmlhbnQgJiYgeyAuLi52YXJpYW50LnRvUGxhaW4oKSB9KSxcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFByb2R1Y3RQcmljZSA9ICh7XG4gICAgcHJvZHVjdCxcbiAgICBpc1N1YnNjcmliZXIsXG4gIH06IHtcbiAgICBwcm9kdWN0OiBMaW5lSXRlbVxuICAgIHNob3A6IFNob3BzXG4gICAgaXNTdWJzY3JpYmVyOiBib29sZWFuXG4gIH0pOiBudW1iZXIgPT4ge1xuICAgIGNvbnN0IGluZm8gPSBwcm9kdWN0LnByaWNlXG5cbiAgICBpZiAocHJvZHVjdC5pc0dpZnQpIHJldHVybiAwXG5cbiAgICByZXR1cm4gaXNTdWJzY3JpYmVyICYmIGluZm8uc3Vic2NyaWJlclByaWNlID4gMFxuICAgICAgPyBOdW1iZXIoaW5mby5zdWJzY3JpYmVyUHJpY2UudG9GaXhlZCgyKSlcbiAgICAgIDogTnVtYmVyKGluZm8ucHJpY2UudG9GaXhlZCgyKSlcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tNYXhTdG9jayA9IChpdGVtOiBMaW5lSXRlbSwgcXVhbnRpdHk6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG1heFN0b2NrID0gaXRlbS5zdG9jaz8ucXVhbnRpdHkgfHwgMFxuICAgIGNvbnN0IGN1cnJlbnRJdGVtQW1vdW50ID0gaXRlbS5xdWFudGl0eSB8fCAwXG5cbiAgICByZXR1cm4gY3VycmVudEl0ZW1BbW91bnQgKyBxdWFudGl0eSA+IG1heFN0b2NrXG4gIH1cblxuICBnZXRHaWZ0cygpIHtcbiAgICByZXR1cm4gdGhpcy5jaGVja291dFNlcnZpY2UuZ2V0Q2hlY2tvdXQoKS5waXBlKFxuICAgICAgbWVyZ2VNYXAoYXN5bmMgKGNoZWNrb3V0KSA9PiB7XG4gICAgICAgIGNvbnN0IG5vdEdpZnRJdGVtczogTGluZUl0ZW1bXSA9IGNoZWNrb3V0LmxpbmVJdGVtcyA/IGNoZWNrb3V0LmxpbmVJdGVtcy5maWx0ZXIoKGl0ZW0pID0+ICFpdGVtLmlzR2lmdCkgOiBbXVxuXG4gICAgICAgIGlmICghbm90R2lmdEl0ZW1zLmxlbmd0aCkgcmV0dXJuIHsgLi4uY2hlY2tvdXQsIGxpbmVJdGVtczogW10gfSBhcyBDaGVja291dFxuXG4gICAgICAgIGNvbnN0IGNhcnRUb3RhbCA9IG5vdEdpZnRJdGVtcy5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLnByaWNlUGFpZCAqIGIucXVhbnRpdHksIDApXG5cbiAgICAgICAgY29uc3QgY2FtcGFpZ25zID0gYXdhaXQgdGhpcy5idXkyV2luUmVwb3NpdG9yeVxuICAgICAgICAgIC5maW5kKHtcbiAgICAgICAgICAgIGZpbHRlcnM6IHtcbiAgICAgICAgICAgICAgYWN0aXZlOiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiB0cnVlIH0sXG4gICAgICAgICAgICAgIHNob3A6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IHRoaXMuZGVmYXVsdFNob3AgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICAudGhlbigoZGF0YSkgPT4gZGF0YS5kYXRhKVxuXG4gICAgICAgIGlmICghY2FtcGFpZ25zLmxlbmd0aCkgcmV0dXJuIHsgLi4uY2hlY2tvdXQsIGxpbmVJdGVtczogbm90R2lmdEl0ZW1zIH0gYXMgQ2hlY2tvdXRcblxuICAgICAgICBjb25zdCBlbGVnaWJsZUNhbXBhaWduczogQnV5MldpbltdID0gW11cblxuICAgICAgICBmb3IgKGNvbnN0IGNhbXBhaWduIG9mIGNhbXBhaWducykge1xuICAgICAgICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKS5nZXRUaW1lKClcblxuICAgICAgICAgIGlmICghKGNhbXBhaWduLnN0YXJ0RGF0ZS5nZXRUaW1lKCkgPD0gdG9kYXkpICYmICEoY2FtcGFpZ24uZW5kRGF0ZS5nZXRUaW1lKCkgPj0gdG9kYXkpKSBjb250aW51ZVxuXG4gICAgICAgICAgaWYgKGNhbXBhaWduLmFjdGl2ZUNhdGVnb3J5KSB7XG4gICAgICAgICAgICBjb25zdCBjYXRlZ29yaWVzQ2FtcGFpbmcgPSBjYW1wYWlnbi5jYXRlZ29yaWVzLm1hcCgoYykgPT4gYy5pZC50b1N0cmluZygpKVxuICAgICAgICAgICAgY29uc3QgY2F0ZWdvcmllc0NhbXBhaW5nRnVsbFRyZWUgPSBbXVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGlkIG9mIGNhdGVnb3JpZXNDYW1wYWluZykge1xuICAgICAgICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGF3YWl0IHRoaXMuY2F0ZWdvcnlSZXBvc2l0b3J5LmdldENoaWxkcmVuKHBhcnNlSW50KGlkKSlcblxuICAgICAgICAgICAgICBjYXRlZ29yaWVzQ2FtcGFpbmdGdWxsVHJlZS5wdXNoKGlkLCAuLi5jaGlsZHJlbi5tYXAoKGMpID0+IGMuaWQudG9TdHJpbmcoKSkpXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3JpZXNDYW1wYWluZ1RyZWUgPSBbLi4ubmV3IFNldChjYXRlZ29yaWVzQ2FtcGFpbmdGdWxsVHJlZSldXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJQcm9kdWN0c0NhdGVnb3JpZXMgPSBjaGVja291dC5saW5lSXRlbXMuZmlsdGVyKChsKSA9PiB7XG4gICAgICAgICAgICAgIGlmICghbC5jYXRlZ29yaWVzIHx8ICFsLmNhdGVnb3JpZXM/Lmxlbmd0aCkgcmV0dXJuIHRydWVcblxuICAgICAgICAgICAgICByZXR1cm4gbC5jYXRlZ29yaWVzLnNvbWUoKGMpID0+IGNhdGVnb3JpZXNDYW1wYWluZ1RyZWUuc29tZSgoY2F0KSA9PiBjYXQgPT0gYykpXG4gICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICBpZiAoZmlsdGVyUHJvZHVjdHNDYXRlZ29yaWVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICBjb25zdCBjYXJ0VG90YWxDYXRlZ29yaWVzID0gZmlsdGVyUHJvZHVjdHNDYXRlZ29yaWVzLnJlZHVjZSgoYSwgYikgPT4gYSArIGIucHJpY2VQYWlkICogYi5xdWFudGl0eSwgMClcblxuICAgICAgICAgICAgICBpZiAoY2FydFRvdGFsQ2F0ZWdvcmllcyA+PSBjYW1wYWlnbi5jYXJ0VmFsdWVNaW4pIGVsZWdpYmxlQ2FtcGFpZ25zLnB1c2goY2FtcGFpZ24pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjYW1wYWlnbi5jYXJ0VmFsdWUgJiYgY2FtcGFpZ24uY2FydFZhbHVlID4gMCkge1xuICAgICAgICAgICAgICBpZiAoY2FtcGFpZ24uY2FydFZhbHVlIDw9IGNhcnRUb3RhbCkgZWxlZ2libGVDYW1wYWlnbnMucHVzaChjYW1wYWlnbilcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWVsZWdpYmxlQ2FtcGFpZ25zLmxlbmd0aCkgcmV0dXJuIHsgLi4uY2hlY2tvdXQsIGxpbmVJdGVtczogbm90R2lmdEl0ZW1zIH0gYXMgQ2hlY2tvdXRcblxuICAgICAgICBjb25zdCBjYW1wYWluZ25Qcm9kdWN0czogUHJvZHVjdFtdW10gPSBbXVxuXG4gICAgICAgIGZvciAoY29uc3QgY2FtcGFpZ24gb2YgZWxlZ2libGVDYW1wYWlnbnMpIHtcbiAgICAgICAgICBsZXQgZWxlZ2libGVQcm9kdWN0cyA9IFtdXG5cbiAgICAgICAgICBmb3IgKGNvbnN0IHByb2R1Y3Qgb2YgY2FtcGFpZ24ucHJvZHVjdHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgZGF0YTogcHJvZHVjdERhdGEgfSA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZmluZCh7IGZpbHRlcnM6IHsgc2t1OiBwcm9kdWN0IH0gfSlcblxuICAgICAgICAgICAgaWYgKCFwcm9kdWN0RGF0YS5sZW5ndGgpIGNvbnRpbnVlXG5cbiAgICAgICAgICAgIGNvbnN0IGdpZnQgPSBwcm9kdWN0RGF0YS5zaGlmdCgpXG5cbiAgICAgICAgICAgIGlmIChnaWZ0LnN0b2NrLnF1YW50aXR5IDwgMSkgY29udGludWVcblxuICAgICAgICAgICAgZWxlZ2libGVQcm9kdWN0cy5wdXNoKGdpZnQpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY2FtcGFpbmduUHJvZHVjdHMucHVzaChlbGVnaWJsZVByb2R1Y3RzKVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFjYW1wYWluZ25Qcm9kdWN0cy5sZW5ndGgpIHJldHVybiB7IC4uLmNoZWNrb3V0LCBsaW5lSXRlbXM6IG5vdEdpZnRJdGVtcyB9IGFzIENoZWNrb3V0XG5cbiAgICAgICAgY29uc3QgZ2lmdHMgPSB0aGlzLmdpZnRUb0xpbmVJdGVtcyhbXS5jb25jYXQoLi4uY2FtcGFpbmduUHJvZHVjdHMpKVxuXG4gICAgICAgIHJldHVybiB7IC4uLmNoZWNrb3V0LCBsaW5lSXRlbXM6IG5vdEdpZnRJdGVtcy5jb25jYXQoZ2lmdHMpIH1cbiAgICAgIH0pLFxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT4gdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQ2hlY2tvdXRMaW5lSXRlbXMoY2hlY2tvdXQpKSxcbiAgICAgIG1hcCgoY2hlY2tvdXQpID0+IHRoaXMuZ2VuZXJhdGVDYXJ0T2JqZWN0KGNoZWNrb3V0LmxpbmVJdGVtcykpLFxuICAgICAgdGFwKChjYXJ0KSA9PiB0aGlzLmNhcnRTdWJqZWN0Lm5leHQoY2FydCkpLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgZ2lmdFRvTGluZUl0ZW1zKGl0ZW1zOiBQcm9kdWN0W10pOiBMaW5lSXRlbVtdIHtcbiAgICByZXR1cm4gaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICBjb25zdCB7IGJyYW5kLCBjYXRlZ29yaWVzLCBpZCwgbmFtZSwgcHJpY2UsIHNrdSwgc2x1Zywgc3RvY2ssIHdlaWdodCwgRUFOIH0gPSBpdGVtXG5cbiAgICAgIGNvbnN0IGltYWdlID0gaXRlbT8ubWluaWF0dXJlcz8ubGVuZ3RoID8gaXRlbS5taW5pYXR1cmVzWzBdIDogaXRlbS5pbWFnZXNbMF1cblxuICAgICAgcmV0dXJuIExpbmVJdGVtLnRvSW5zdGFuY2Uoe1xuICAgICAgICBicmFuZCxcbiAgICAgICAgY2F0ZWdvcmllcyxcbiAgICAgICAgaWQ6IGlkLnRvU3RyaW5nKCksXG4gICAgICAgIG5hbWUsXG4gICAgICAgIHByaWNlLFxuICAgICAgICBza3UsXG4gICAgICAgIHNsdWcsXG4gICAgICAgIHN0b2NrLFxuICAgICAgICB3ZWlnaHQsXG4gICAgICAgIEVBTixcbiAgICAgICAgaW1hZ2UsXG4gICAgICAgIHByaWNlUGFpZDogMCxcbiAgICAgICAgcXVhbnRpdHk6IDEsXG4gICAgICAgIGlzR2lmdDogdHJ1ZSxcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuIl19
|
|
@@ -31,13 +31,13 @@ export class NewCategoryStructureAdapter {
|
|
|
31
31
|
category.brandCategory;
|
|
32
32
|
return collectionCategory ? this.categoryRepository.get({ id: category.id }) : category;
|
|
33
33
|
}
|
|
34
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NewCategoryStructureAdapter, deps: [{ token: 'CategoryRepository' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NewCategoryStructureAdapter }); }
|
|
34
36
|
}
|
|
35
|
-
|
|
36
|
-
NewCategoryStructureAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: NewCategoryStructureAdapter });
|
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: NewCategoryStructureAdapter, decorators: [{
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: NewCategoryStructureAdapter, decorators: [{
|
|
38
38
|
type: Injectable
|
|
39
|
-
}], ctorParameters:
|
|
39
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
40
40
|
type: Inject,
|
|
41
41
|
args: ['CategoryRepository']
|
|
42
|
-
}] }]
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
}] }] });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV3LWNhdGVnb3J5LXN0cnVjdHVyZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL2FkYXB0ZXJzL25ldy1jYXRlZ29yeS1zdHJ1Y3R1cmUuYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBQWdDLEtBQUssRUFBbUMsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7O0FBSS9HLE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsWUFBMkQsa0JBQXNDO1FBQXRDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7SUFBRyxDQUFDO0lBRXJHLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxRQUFrQjtRQUNuRCxNQUFNLGNBQWMsR0FBRyxNQUFNLElBQUksQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUE7UUFFdkQsSUFBSSxjQUFjLENBQUMsWUFBWTtZQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUE7UUFFdEcsTUFBTSxXQUFXLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsOEJBQThCLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUE7UUFFdEcsT0FBTztZQUNMLFFBQVEsRUFBRTtnQkFDUixFQUFFLEVBQUU7b0JBQ0YsUUFBUSxFQUFFLEtBQUssQ0FBQyxFQUFFO29CQUNsQixLQUFLLEVBQUUsV0FBVztpQkFDbkI7YUFDRjtTQUNGLENBQUE7SUFDSCxDQUFDO0lBRU8sS0FBSyxDQUFDLDhCQUE4QixDQUFDLFFBQWtCO1FBQzdELE9BQU8sSUFBSSxDQUFDLGtCQUFrQjthQUMzQixXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO2FBQ3pCLElBQUksQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDL0UsQ0FBQztJQUVPLEtBQUssQ0FBQyxXQUFXLENBQUMsUUFBa0I7UUFDMUMsTUFBTSxrQkFBa0IsR0FDdEIsUUFBUSxDQUFDLFlBQVk7WUFDckIsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7WUFDNUQsUUFBUSxDQUFDLFVBQVU7WUFDbkIsUUFBUSxDQUFDLGFBQWEsQ0FBQTtRQUV4QixPQUFPLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUE7SUFDekYsQ0FBQzs4R0FsQ1UsMkJBQTJCLGtCQUNsQixvQkFBb0I7a0hBRDdCLDJCQUEyQjs7MkZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVTs7MEJBRUksTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgQ2F0ZWdvcnksIENhdGVnb3J5UmVwb3NpdG9yeSwgaXNOaWwsIFByb2R1Y3QsIFJlcG9zaXRvcnlGaW5kRmllbHRlcnMsIFdoZXJlIH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5pbXBvcnQgeyBDYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIgfSBmcm9tICcuL2NhdGVnb3J5LXN0cnVjdHVyZS5hZGFwdGVyJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTmV3Q2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyIGltcGxlbWVudHMgQ2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyIHtcbiAgY29uc3RydWN0b3IoQEluamVjdCgnQ2F0ZWdvcnlSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVJlcG9zaXRvcnk6IENhdGVnb3J5UmVwb3NpdG9yeSkge31cblxuICBhc3luYyBidWlsZFByb2R1Y3RGaWx0ZXJCeUNhdGVnb3J5KGNhdGVnb3J5OiBDYXRlZ29yeSk6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRGaWVsdGVyczxQcm9kdWN0Pj4ge1xuICAgIGNvbnN0IGxvYWRlZENhdGVnb3J5ID0gYXdhaXQgdGhpcy5nZXRDYXRlZ29yeShjYXRlZ29yeSlcblxuICAgIGlmIChsb2FkZWRDYXRlZ29yeS5pc0NvbGxlY3Rpb24pIHJldHVybiB7IGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IGxvYWRlZENhdGVnb3J5LnByb2R1Y3RzIH0gfVxuXG4gICAgY29uc3QgY2F0ZWdvcnlJZHMgPSBbLi4uKGF3YWl0IHRoaXMuZ2V0QWxsQ2F0ZWdvcmllc0lkRnJvbUNhdGVnb3J5KGNhdGVnb3J5KSksIGNhdGVnb3J5LmlkLnRvU3RyaW5nKCldXG5cbiAgICByZXR1cm4ge1xuICAgICAgY2F0ZWdvcnk6IHtcbiAgICAgICAgaWQ6IHtcbiAgICAgICAgICBvcGVyYXRvcjogV2hlcmUuSU4sXG4gICAgICAgICAgdmFsdWU6IGNhdGVnb3J5SWRzLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldEFsbENhdGVnb3JpZXNJZEZyb21DYXRlZ29yeShjYXRlZ29yeTogQ2F0ZWdvcnkpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuY2F0ZWdvcnlSZXBvc2l0b3J5XG4gICAgICAuZ2V0Q2hpbGRyZW4oK2NhdGVnb3J5LmlkKVxuICAgICAgLnRoZW4oKGNhdGVnb3JpZXMpID0+IGNhdGVnb3JpZXMubWFwKChjYXRlZ29yeSkgPT4gY2F0ZWdvcnkuaWQudG9TdHJpbmcoKSkpXG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldENhdGVnb3J5KGNhdGVnb3J5OiBDYXRlZ29yeSk6IFByb21pc2U8Q2F0ZWdvcnk+IHtcbiAgICBjb25zdCBjb2xsZWN0aW9uQ2F0ZWdvcnkgPVxuICAgICAgY2F0ZWdvcnkuaXNDb2xsZWN0aW9uIHx8XG4gICAgICAoaXNOaWwoY2F0ZWdvcnkuaXNDb2xsZWN0aW9uKSAmJiAhY2F0ZWdvcnkucHJvZHVjdHM/Lmxlbmd0aCkgfHxcbiAgICAgIGNhdGVnb3J5LmlzV2lzaGxpc3QgfHxcbiAgICAgIGNhdGVnb3J5LmJyYW5kQ2F0ZWdvcnlcblxuICAgIHJldHVybiBjb2xsZWN0aW9uQ2F0ZWdvcnkgPyB0aGlzLmNhdGVnb3J5UmVwb3NpdG9yeS5nZXQoeyBpZDogY2F0ZWdvcnkuaWQgfSkgOiBjYXRlZ29yeVxuICB9XG59XG4iXX0=
|
|
@@ -11,13 +11,13 @@ export class OldCategoryStructureAdapter {
|
|
|
11
11
|
: await this.categoryRepository.get({ id: category.id }).then((categoryFound) => categoryFound.products);
|
|
12
12
|
return { id: { operator: Where.IN, value: productsIds } };
|
|
13
13
|
}
|
|
14
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: OldCategoryStructureAdapter, deps: [{ token: 'CategoryRepository' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
15
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: OldCategoryStructureAdapter }); }
|
|
14
16
|
}
|
|
15
|
-
|
|
16
|
-
OldCategoryStructureAdapter.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: OldCategoryStructureAdapter });
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: OldCategoryStructureAdapter, decorators: [{
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: OldCategoryStructureAdapter, decorators: [{
|
|
18
18
|
type: Injectable
|
|
19
|
-
}], ctorParameters:
|
|
19
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
20
20
|
type: Inject,
|
|
21
21
|
args: ['CategoryRepository']
|
|
22
|
-
}] }]
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
}] }] });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2xkLWNhdGVnb3J5LXN0cnVjdHVyZS5hZGFwdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL2FkYXB0ZXJzL29sZC1jYXRlZ29yeS1zdHJ1Y3R1cmUuYWRhcHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBQWlFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFBOztBQUl4RyxNQUFNLE9BQU8sMkJBQTJCO0lBQ3RDLFlBQTJELGtCQUFzQztRQUF0Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO0lBQUcsQ0FBQztJQUVyRyxLQUFLLENBQUMsNEJBQTRCLENBQUMsUUFBa0I7UUFDbkQsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxNQUFNO1lBQzNDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUTtZQUNuQixDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRTFHLE9BQU8sRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLEVBQUUsQ0FBQTtJQUMzRCxDQUFDOzhHQVRVLDJCQUEyQixrQkFDbEIsb0JBQW9CO2tIQUQ3QiwyQkFBMkI7OzJGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVU7OzBCQUVJLE1BQU07MkJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IENhdGVnb3J5LCBDYXRlZ29yeVJlcG9zaXRvcnksIFByb2R1Y3QsIFJlcG9zaXRvcnlGaW5kRmllbHRlcnMsIFdoZXJlIH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5pbXBvcnQgeyBDYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIgfSBmcm9tICcuL2NhdGVnb3J5LXN0cnVjdHVyZS5hZGFwdGVyJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgT2xkQ2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyIGltcGxlbWVudHMgQ2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyIHtcbiAgY29uc3RydWN0b3IoQEluamVjdCgnQ2F0ZWdvcnlSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVJlcG9zaXRvcnk6IENhdGVnb3J5UmVwb3NpdG9yeSkge31cblxuICBhc3luYyBidWlsZFByb2R1Y3RGaWx0ZXJCeUNhdGVnb3J5KGNhdGVnb3J5OiBDYXRlZ29yeSk6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRGaWVsdGVyczxQcm9kdWN0Pj4ge1xuICAgIGNvbnN0IHByb2R1Y3RzSWRzID0gY2F0ZWdvcnkucHJvZHVjdHM/Lmxlbmd0aFxuICAgICAgPyBjYXRlZ29yeS5wcm9kdWN0c1xuICAgICAgOiBhd2FpdCB0aGlzLmNhdGVnb3J5UmVwb3NpdG9yeS5nZXQoeyBpZDogY2F0ZWdvcnkuaWQgfSkudGhlbigoY2F0ZWdvcnlGb3VuZCkgPT4gY2F0ZWdvcnlGb3VuZC5wcm9kdWN0cylcblxuICAgIHJldHVybiB7IGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IHByb2R1Y3RzSWRzIH0gfVxuICB9XG59XG4iXX0=
|
|
@@ -173,12 +173,12 @@ export class CatalogService {
|
|
|
173
173
|
return [...new Set(sorted.map(({ _source }) => _source.id))];
|
|
174
174
|
}));
|
|
175
175
|
}
|
|
176
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: CatalogService, deps: [{ token: 'ProductRepository' }, { token: 'CategoryRepository' }, { token: CATEGORY_STRUCTURE }, { token: DEFAULT_SHOP }, { token: i1.ProductsIndex }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
177
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: CatalogService }); }
|
|
176
178
|
}
|
|
177
|
-
|
|
178
|
-
CatalogService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CatalogService });
|
|
179
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CatalogService, decorators: [{
|
|
179
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: CatalogService, decorators: [{
|
|
180
180
|
type: Injectable
|
|
181
|
-
}], ctorParameters:
|
|
181
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
182
182
|
type: Inject,
|
|
183
183
|
args: ['ProductRepository']
|
|
184
184
|
}] }, { type: undefined, decorators: [{
|
|
@@ -190,5 +190,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImpor
|
|
|
190
190
|
}] }, { type: i1.Shops, decorators: [{
|
|
191
191
|
type: Inject,
|
|
192
192
|
args: [DEFAULT_SHOP]
|
|
193
|
-
}] }, { type: i1.ProductsIndex }]
|
|
194
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL2NhdGFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBSUwsb0JBQW9CLEVBSXBCLGFBQWEsRUFJYix3QkFBd0IsRUFDeEIsR0FBRyxFQUNILEtBQUssRUFDTCxLQUFLLEdBQ04sTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBOzs7QUFzRC9ELE1BQU0sT0FBTyxjQUFjO0lBR3pCLFlBQ2dELGlCQUFvQyxFQUNuQyxrQkFBc0MsRUFDeEMsd0JBQWtELEVBQ3hELElBQVcsRUFDakMsWUFBMkI7UUFKRSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ25DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDeEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUN4RCxTQUFJLEdBQUosSUFBSSxDQUFPO1FBQ2pDLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBUHRDLG1CQUFjLEdBQTZCLEVBQUUsQ0FBQTtRQWlLN0MscUJBQWdCLEdBQUcsQ0FBQyxFQUMxQixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sSUFBSSxFQUNKLElBQUksRUFDSixhQUFhLEdBQ1EsRUFBbUMsRUFBRTtZQUMxRCxNQUFNLE9BQU8sR0FBRyxFQUFxQyxDQUFBO1lBRXJELElBQUksWUFBWSxFQUFFLE1BQU07Z0JBQ3RCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFB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QUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDOUQsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNQLENBQUM7OzJHQWhLVSxjQUFjLGtCQUlmLG1CQUFtQixhQUNuQixvQkFBb0IsYUFDcEIsa0JBQWtCLGFBQ2xCLFlBQVk7K0dBUFgsY0FBYzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVOzswQkFLTixNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQzFCLE1BQU07MkJBQUMsb0JBQW9COzswQkFDM0IsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUN6QixNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQ2F0ZWdvcnksXG4gIENhdGVnb3J5UmVwb3NpdG9yeSxcbiAgRmluZFJlcG9zaXRvcnlQYXJhbXMsXG4gIEludmFsaWRBcmd1bWVudEVycm9yLFxuICBQcm9kdWN0LFxuICBQcm9kdWN0R2VuZGVyLFxuICBQcm9kdWN0UmVwb3NpdG9yeSxcbiAgUHJvZHVjdHNJbmRleCxcbiAgUmVwb3NpdG9yeUZpbmRGaWVsdGVycyxcbiAgUmVwb3NpdG9yeUZpbmRSZXN1bHQsXG4gIFJlcG9zaXRvcnlPcmRlckJ5LFxuICBSb3VuZFByb2R1Y3RQcmljZXNIZWxwZXIsXG4gIHNldCxcbiAgU2hvcHMsXG4gIFdoZXJlLFxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcbmltcG9ydCB7IENBVEVHT1JZX1NUUlVDVFVSRSwgREVGQVVMVF9TSE9QIH0gZnJvbSAnLi4vLi4vY29uc3RzJ1xuaW1wb3J0IHsgQ2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyIH0gZnJvbSAnLi9hZGFwdGVycydcbmltcG9ydCB7IFByb2R1Y3RTb3J0IH0gZnJvbSAnLi90eXBlcy9wcm9kdWN0LXNvcnQudHlwZSdcblxudHlwZSBGZXRjaFByb2R1Y3RzRmlsdGVycyA9IHtcbiAgY2x1YkRpc2NvdW50PzogbnVtYmVyW11cbiAgYnJhbmRzPzogc3RyaW5nW11cbiAgcHJpY2VzPzogeyBtaW4/OiBudW1iZXI7IG1heD86IG51bWJlcjsgc3Vic2NyaWJlclByaWNlPzogYm9vbGVhbiB9XG4gIGdlbmRlcj86IFByb2R1Y3RHZW5kZXJbXVxuICByYXRlPzogbnVtYmVyXG4gIGN1c3RvbU9wdGlvbnM/OiBzdHJpbmdbXVxuICB0YWdzPzogc3RyaW5nW11cbn1cblxudHlwZSBGZXRjaFByb2R1Y3RzT3B0aW9ucyA9IHtcbiAgcGFnZT86IG51bWJlclxuICBwZXJQYWdlPzogbnVtYmVyXG4gIHNvcnQ/OiBQcm9kdWN0U29ydFxuICBtYWluR2VuZGVyPzogUHJvZHVjdEdlbmRlclxufVxuXG50eXBlIEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQgZXh0ZW5kcyBDYXRlZ29yeT4gPSB7XG4gIGNhdGVnb3J5PzogVFxuICBwcm9maWxlPzogc3RyaW5nW11cbiAgdGVybT86IHN0cmluZ1xufVxuXG50eXBlIEZldGNoUHJvZHVjdHNQYXJhbXM8VCBleHRlbmRzIENhdGVnb3J5PiA9IEZldGNoUHJvZHVjdHNPcHRpb25zICZcbiAgKFxuICAgIHwge1xuICAgICAgICBjYXRlZ29yeTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ2NhdGVnb3J5J11cbiAgICAgICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxuICAgICAgfVxuICAgIHwge1xuICAgICAgICBwcm9maWxlOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsncHJvZmlsZSddXG4gICAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyOyB0YWdzPzogbmV2ZXIgfVxuICAgICAgfVxuICAgIHwge1xuICAgICAgICB0ZXJtOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsndGVybSddXG4gICAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyIH1cbiAgICAgIH1cbiAgKVxuXG50eXBlIEZldGNoUHJvZHVjdHNSZXNwb25zZSA9IHtcbiAgcHJvZHVjdHM6IHsgZGF0YTogUHJvZHVjdFtdOyB0b3RhbDogbnVtYmVyIH1cbiAgcGFnZXM6IG51bWJlclxuICBwcmljZXM6IHtcbiAgICBwcmljZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfVxuICAgIHN1YnNjcmliZXJQcmljZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfVxuICB9XG4gIGJyYW5kcz86IHN0cmluZ1tdXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDYXRhbG9nU2VydmljZTxUIGV4dGVuZHMgQ2F0ZWdvcnkgPSBDYXRlZ29yeT4ge1xuICBwcml2YXRlIHByb2R1Y3RzQnlUZXJtOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ1Byb2R1Y3RSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0UmVwb3NpdG9yeTogUHJvZHVjdFJlcG9zaXRvcnksXG4gICAgQEluamVjdCgnQ2F0ZWdvcnlSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVJlcG9zaXRvcnk6IENhdGVnb3J5UmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KENBVEVHT1JZX1NUUlVDVFVSRSkgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXI6IENhdGVnb3J5U3RydWN0dXJlQWRhcHRlcixcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBzaG9wOiBTaG9wcyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RJbmRleDogUHJvZHVjdHNJbmRleCxcbiAgKSB7fVxuXG4gIGFzeW5jIGZldGNoUHJvZHVjdHMob3B0aW9uczogRmV0Y2hQcm9kdWN0c1BhcmFtczxUPik6IFByb21pc2U8RmV0Y2hQcm9kdWN0c1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgbGltaXRzID0gdGhpcy5idWlsZExpbWl0UXVlcnkob3B0aW9ucylcblxuICAgIGlmICh0aGlzLmhhc1Byb2ZpbGUob3B0aW9ucykgJiYgb3B0aW9ucy5maWx0ZXJzPy5jdXN0b21PcHRpb25zKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBJdCBjb3VsZG4ndCBmaWxsZWQgY3VzdG9tT3B0aW9ucyB3aGVuIHByb2ZpbGUgaXMgZ2l2ZW5gKVxuICAgIGlmICh0aGlzLmhhc1Byb2ZpbGUob3B0aW9ucykgJiYgb3B0aW9ucy5maWx0ZXJzPy50YWdzKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBJdCBjb3VsZG4ndCBmaWxsZWQgdGFncyB3aGVuIHByb2ZpbGUgaXMgZ2l2ZW5gKVxuICAgIGlmICh0aGlzLmhhc1Rlcm0ob3B0aW9ucykgJiYgb3B0aW9ucy5maWx0ZXJzPy5jdXN0b21PcHRpb25zKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBJdCBjb3VsZG4ndCBmaWxsZWQgY3VzdG9tT3B0aW9ucyB3aGVuIHRlcm0gaXMgZ2l2ZW5gKVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZENhdGFsb2cob3B0aW9ucywgbGltaXRzKS50aGVuKCh7IGRhdGEsIGNvdW50OiB0b3RhbCwgbWF4aW11bSwgbWluaW1hbCwgZGlzdGluY3QgfSkgPT4gKHtcbiAgICAgIHByb2R1Y3RzOiB7IGRhdGE6IGRhdGEubWFwKChwcm9kdWN0KSA9PiBSb3VuZFByb2R1Y3RQcmljZXNIZWxwZXIucm91bmRQcm9kdWN0UHJpY2VzKHByb2R1Y3QpKSwgdG90YWwgfSxcbiAgICAgIHBhZ2VzOiBNYXRoLmNlaWwodG90YWwgLyBsaW1pdHMubGltaXQpLFxuICAgICAgcHJpY2VzOiB7XG4gICAgICAgIHByaWNlOiB7IG1pbjogK21pbmltYWw/LnByaWNlPy5wcmljZT8udG9GaXhlZCgyKSwgbWF4OiArbWF4aW11bT8ucHJpY2U/LnByaWNlPy50b0ZpeGVkKDIpIH0sXG4gICAgICAgIHN1YnNjcmliZXJQcmljZToge1xuICAgICAgICAgIG1pbjogK21pbmltYWw/LnByaWNlPy5zdWJzY3JpYmVyUHJpY2U/LnRvRml4ZWQoMiksXG4gICAgICAgICAgbWF4OiArbWF4aW11bT8ucHJpY2U/LnN1YnNjcmliZXJQcmljZT8udG9GaXhlZCgyKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBicmFuZHM6IGRpc3RpbmN0Py5icmFuZCxcbiAgICB9KSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmluZENhdGFsb2coXG4gICAgb3B0aW9uczogRmV0Y2hQcm9kdWN0c1BhcmFtczxUPixcbiAgICBsaW1pdHM6IHtcbiAgICAgIGxpbWl0PzogbnVtYmVyXG4gICAgICBvZmZzZXQ/OiBudW1iZXJcbiAgICB9LFxuICApOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3Q+PiB7XG4gICAgaWYgKHRoaXMuaGFzVGVybShvcHRpb25zKSAmJiBvcHRpb25zLnNvcnQgPT09ICdtb3N0LXJlbGV2YW50Jykge1xuICAgICAgY29uc3QgcHJvZHVjdHNJZHMgPSBhd2FpdCB0aGlzLmZpbmRDYXRhbG9nSWRzQnlFbGFzdGljU2VhcmNoKG9wdGlvbnMudGVybSlcblxuICAgICAgcmV0dXJuIHRoaXMuZmluZENhdGFsb2dBbmRTb3J0QnlNb3N0UmV2ZWxhbnQocHJvZHVjdHNJZHMsIG9wdGlvbnMsIGxpbWl0cylcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNDYXRlZ29yeShvcHRpb25zKSAmJiBvcHRpb25zLnNvcnQgPT09ICdtb3N0LXJlbGV2YW50Jykge1xuICAgICAgY29uc3QgcHJvZHVjdHNJZHMgPSBhd2FpdCB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5XG4gICAgICAgIC5maW5kKHtcbiAgICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICAuLi4oYXdhaXQgdGhpcy5idWlsZE1haW5GaWx0ZXIob3B0aW9ucykpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKChwcm9kdWN0cykgPT4gcHJvZHVjdHMuZGF0YS5tYXAoKHByb2R1Y3QpID0+IHByb2R1Y3QuaWQpKVxuXG4gICAgICByZXR1cm4gdGhpcy5maW5kQ2F0YWxvZ0FuZFNvcnRCeU1vc3RSZXZlbGFudChwcm9kdWN0c0lkcywgb3B0aW9ucywgbGltaXRzKVxuICAgIH1cblxuICAgIGNvbnN0IHJlcG9QYXJhbXM6IEZpbmRSZXBvc2l0b3J5UGFyYW1zPFByb2R1Y3Q+ID0ge1xuICAgICAgZmlsdGVyczoge1xuICAgICAgICAuLi4oYXdhaXQgdGhpcy5idWlsZE1haW5GaWx0ZXIob3B0aW9ucykpLFxuICAgICAgICAuLi50aGlzLmJ1aWxkRmlsdGVyUXVlcnkob3B0aW9ucz8uZmlsdGVycyB8fCB7fSksXG4gICAgICB9LFxuICAgICAgLi4uKG9wdGlvbnM/LnNvcnQgPyB7IG9yZGVyQnk6IHRoaXMuYnVpbGRTb3J0UXVlcnkob3B0aW9ucz8uc29ydCkgfSA6IHt9KSxcbiAgICAgIGxpbWl0cyxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgbWluaW1hbDogWydwcmljZSddLFxuICAgICAgICBtYXhpbXVtOiBbJ3ByaWNlJ10sXG4gICAgICAgIC4uLighdGhpcy5oYXNDYXRlZ29yeShvcHRpb25zKSA/IHsgZGlzdGluY3Q6IFsnYnJhbmQnXSB9IDoge30pLFxuICAgICAgfSxcbiAgICB9XG5cbiAgICBpZiAoWydiaWdnZXN0LXByaWNlJywgJ2xvd2VzdC1wcmljZScsICdiaWdnZXN0LWRpc2NvdW50JywgJ2Jlc3QtcmF0aW5nJ10uaW5jbHVkZXMob3B0aW9ucy5zb3J0KSlcbiAgICAgIHJldHVybiB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmRDYXRhbG9nKHJlcG9QYXJhbXMpXG5cbiAgICByZXR1cm4gdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhcbiAgICAgIHJlcG9QYXJhbXMsXG4gICAgICBvcHRpb25zPy5tYWluR2VuZGVyIHx8IHRoaXMuc2hvcCA9PT0gU2hvcHMuTUVOU01BUktFVCA/ICdtYWxlJyA6ICdmZW1hbGUnLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYnVpbGRNYWluRmlsdGVyKHtcbiAgICBjYXRlZ29yeSxcbiAgICBwcm9maWxlLFxuICAgIHRlcm0sXG4gIH06IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+KTogUHJvbWlzZTxSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPFByb2R1Y3Q+PiB7XG4gICAgaWYgKGNhdGVnb3J5KSByZXR1cm4gdGhpcy5jYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIuYnVpbGRQcm9kdWN0RmlsdGVyQnlDYXRlZ29yeShjYXRlZ29yeSlcbiAgICBpZiAocHJvZmlsZSkgcmV0dXJuIHsgdGFnczogeyBvcGVyYXRvcjogV2hlcmUuTElLRSwgdmFsdWU6IHByb2ZpbGUgfSB9XG4gICAgaWYgKHRlcm0pXG4gICAgICByZXR1cm4gdGhpcy5wcm9kdWN0SW5kZXhcbiAgICAgICAgLnNlYXJjaCh0ZXJtLCA5OTksIHRoaXMuc2hvcClcbiAgICAgICAgLnRoZW4oKGRhdGEpID0+ICh7IGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IGRhdGEuaGl0cy5tYXAoKHsgX3NvdXJjZSB9KSA9PiBfc291cmNlLmlkKSB9IH0pKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmaW5kQ2F0YWxvZ0FuZFNvcnRCeU1vc3RSZXZlbGFudChcbiAgICBwcm9kdWN0SWRzOiBzdHJpbmdbXSxcbiAgICBvcHRpb25zOiBPbWl0PEZldGNoUHJvZHVjdHNPcHRpb25zLCAnc29ydCc+ICYge1xuICAgICAgdGVybT86IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wyd0ZXJtJ11cbiAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyIH1cbiAgICB9LFxuICAgIGxpbWl0czoge1xuICAgICAgbGltaXQ/OiBudW1iZXJcbiAgICAgIG9mZnNldD86IG51bWJlclxuICAgIH0sXG4gICk6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRSZXN1bHQ8UHJvZHVjdD4+IHtcbiAgICBjb25zdCB0b3RhbFJlc3VsdCA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2coXG4gICAgICB7XG4gICAgICAgIGZpZWxkczogWydpZCcsICdzdG9jayddLFxuICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgaWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogcHJvZHVjdElkcyB9LFxuICAgICAgICAgIC4uLnRoaXMuYnVpbGRGaWx0ZXJRdWVyeShvcHRpb25zPy5maWx0ZXJzIHx8IHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIG1pbmltYWw6IFsncHJpY2UnXSxcbiAgICAgICAgICBtYXhpbXVtOiBbJ3ByaWNlJ10sXG4gICAgICAgICAgZGlzdGluY3Q6IFsnYnJhbmQnXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBvcHRpb25zPy5tYWluR2VuZGVyIHx8IHRoaXMuc2hvcCA9PT0gU2hvcHMuTUVOU01BUktFVCA/ICdtYWxlJyA6ICdmZW1hbGUnLFxuICAgIClcblxuICAgIGNvbnN0IHN0b2NrRGF0YSA9IHRvdGFsUmVzdWx0LmRhdGEuZmlsdGVyKChwcm9kdWN0KSA9PiBwcm9kdWN0LnN0b2NrLnF1YW50aXR5ID4gMClcbiAgICBjb25zdCBzdG9ja091dCA9IHRvdGFsUmVzdWx0LmRhdGEuZmlsdGVyKChwcm9kdWN0KSA9PiBwcm9kdWN0LnN0b2NrLnF1YW50aXR5IDw9IDApXG4gICAgY29uc3QgcHJvZHVjdElkc1N0b2NrID0gcHJvZHVjdElkcy5maWx0ZXIoKHByb2R1Y3QpID0+IHN0b2NrRGF0YS5zb21lKChyZXN1bHQpID0+IHJlc3VsdC5pZCA9PSBwcm9kdWN0KSlcbiAgICBjb25zdCBwcm9kdWN0SWRzU3RvY2tPdXQgPSBwcm9kdWN0SWRzLmZpbHRlcigocHJvZHVjdCkgPT4gc3RvY2tPdXQuc29tZSgocmVzdWx0KSA9PiByZXN1bHQuaWQgPT0gcHJvZHVjdCkpXG5cbiAgICBjb25zdCBsaW1pdGVkUHJvZHVjdElkID0gcHJvZHVjdElkc1N0b2NrXG4gICAgICAuY29uY2F0KHByb2R1Y3RJZHNTdG9ja091dClcbiAgICAgIC5zbGljZShsaW1pdHMub2Zmc2V0LCBsaW1pdHMub2Zmc2V0ICsgbGltaXRzLmxpbWl0KVxuXG4gICAgY29uc3Qgb3JkZXJlZElkID0gcHJvZHVjdElkcy5maWx0ZXIoKHByb2R1Y3QpID0+IGxpbWl0ZWRQcm9kdWN0SWQuaW5jbHVkZXMocHJvZHVjdCkpXG4gICAgY29uc3QgcHJvZHVjdFJlc3VsdCA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2coe1xuICAgICAgZmlsdGVyczoge1xuICAgICAgICBpZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBvcmRlcmVkSWQgfSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiBsaW1pdGVkUHJvZHVjdElkLm1hcCgoaWQpID0+IHByb2R1Y3RSZXN1bHQuZGF0YS5maW5kKChwcm9kdWN0KSA9PiBwcm9kdWN0LmlkID09PSBpZCkpLmZpbHRlcihCb29sZWFuKSxcbiAgICAgIGNvdW50OiB0b3RhbFJlc3VsdC5jb3VudCxcbiAgICAgIG1heGltdW06IHRvdGFsUmVzdWx0Lm1heGltdW0sXG4gICAgICBtaW5pbWFsOiB0b3RhbFJlc3VsdC5taW5pbWFsLFxuICAgICAgZGlzdGluY3Q6IHRvdGFsUmVzdWx0LmRpc3RpbmN0LFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmluZENhdGFsb2dJZHNCeUVsYXN0aWNTZWFyY2godGVybTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGlmICh0aGlzLnByb2R1Y3RzQnlUZXJtW3Rlcm1dKSByZXR1cm4gdGhpcy5wcm9kdWN0c0J5VGVybVt0ZXJtXVxuXG4gICAgcmV0dXJuICh0aGlzLnByb2R1Y3RzQnlUZXJtW3Rlcm1dID0gYXdhaXQgdGhpcy5wcm9kdWN0SW5kZXhcbiAgICAgIC5zZWFyY2godGVybSwgOTk5LCB0aGlzLnNob3ApXG4gICAgICAudGhlbigoeyBoaXRzOiBwcm9kdWN0cyB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHdpdGhTdG9jayA9IHByb2R1Y3RzLmZpbHRlcigoeyBfc291cmNlIH0pID0+IF9zb3VyY2Uuc3RvY2sucXVhbnRpdHkgPiAwKVxuICAgICAgICBjb25zdCB3aXRoT3V0U3RvY2sgPSBwcm9kdWN0cy5maWx0ZXIoKHsgX3NvdXJjZSB9KSA9PiBfc291cmNlLnN0b2NrLnF1YW50aXR5IDw9IDApXG4gICAgICAgIGNvbnN0IHNvcnRlZCA9IFsuLi53aXRoU3RvY2ssIC4uLndpdGhPdXRTdG9ja11cblxuICAgICAgICByZXR1cm4gWy4uLm5ldyBTZXQoc29ydGVkLm1hcCgoeyBfc291cmNlIH0pID0+IF9zb3VyY2UuaWQpKV1cbiAgICAgIH0pKVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZpbHRlclF1ZXJ5ID0gKHtcbiAgICBjbHViRGlzY291bnQsXG4gICAgYnJhbmRzLFxuICAgIHByaWNlcyxcbiAgICBnZW5kZXIsXG4gICAgdGFncyxcbiAgICByYXRlLFxuICAgIGN1c3RvbU9wdGlvbnMsXG4gIH06IEZldGNoUHJvZHVjdHNGaWx0ZXJzKTogUmVwb3NpdG9yeUZpbmRGaWVsdGVyczxQcm9kdWN0PiA9PiB7XG4gICAgY29uc3QgZmlsdGVycyA9IHt9IGFzIFJlcG9zaXRvcnlGaW5kRmllbHRlcnM8UHJvZHVjdD5cblxuICAgIGlmIChjbHViRGlzY291bnQ/Lmxlbmd0aClcbiAgICAgIHNldChmaWx0ZXJzLCAncHJpY2Uuc3Vic2NyaWJlckRpc2NvdW50UGVyY2VudGFnZScsIHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogY2x1YkRpc2NvdW50IH0pXG4gICAgaWYgKGJyYW5kcz8ubGVuZ3RoKSBmaWx0ZXJzLmJyYW5kID0geyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBicmFuZHMgfVxuICAgIGlmIChnZW5kZXI/Lmxlbmd0aCkgZmlsdGVycy5nZW5kZXIgPSB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IGdlbmRlciB9XG4gICAgaWYgKHByaWNlcz8ubWluIHx8IHByaWNlcz8ubWF4KVxuICAgICAgc2V0KGZpbHRlcnMsIHByaWNlcy5zdWJzY3JpYmVyUHJpY2UgPyAncHJpY2Uuc3Vic2NyaWJlclByaWNlJyA6ICdwcmljZS5wcmljZScsIFtcbiAgICAgICAgLi4uKHByaWNlcy5taW4gPyBbeyBvcGVyYXRvcjogV2hlcmUuR1RFLCB2YWx1ZTogTWF0aC5yb3VuZChwcmljZXMubWluKSB9XSA6IFtdKSxcbiAgICAgICAgLi4uKHByaWNlcy5tYXggPyBbeyBvcGVyYXRvcjogV2hlcmUuTFRFLCB2YWx1ZTogTWF0aC5jZWlsKHByaWNlcy5tYXgpIH1dIDogW10pLFxuICAgICAgXSlcbiAgICBpZiAocmF0ZSkgZmlsdGVycy5yYXRlID0geyBvcGVyYXRvcjogV2hlcmUuR1RFLCB2YWx1ZTogcmF0ZSB9XG4gICAgaWYgKHRhZ3M/Lmxlbmd0aCkgZmlsdGVycy50YWdzID0geyBvcGVyYXRvcjogV2hlcmUuTElLRSwgdmFsdWU6IHRhZ3MgfVxuICAgIGlmIChjdXN0b21PcHRpb25zPy5sZW5ndGgpIGZpbHRlcnMuZmlsdGVycyA9IHsgb3BlcmF0b3I6IFdoZXJlLkxJS0UsIHZhbHVlOiBjdXN0b21PcHRpb25zIH1cblxuICAgIHJldHVybiBmaWx0ZXJzXG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU29ydFF1ZXJ5ID0gKHNvcnQ6IFByb2R1Y3RTb3J0KTogUmVwb3NpdG9yeU9yZGVyQnk8UHJvZHVjdD4gPT4ge1xuICAgIGlmICghc29ydCB8fCBzb3J0ID09PSAnbW9zdC1yZWxldmFudCcpIHJldHVybiB7fVxuXG4gICAgaWYgKHNvcnQgPT09ICdiZXN0LXNlbGxlcnMnKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2hvcHBpbmdDb3VudDogJ2Rlc2MnLFxuICAgICAgICByYXRlOiAnZGVzYycsXG4gICAgICAgIHN0b2NrOiAnZGVzYycsXG4gICAgICAgIG5hbWU6ICdhc2MnLFxuICAgICAgfVxuICAgIGlmIChzb3J0ID09PSAnYmlnZ2VzdC1wcmljZScpIHJldHVybiB7IHN1YnNjcmliZXJQcmljZTogJ2Rlc2MnLCByYXRlOiAnZGVzYycsIHNob3BwaW5nQ291bnQ6ICdkZXNjJyB9IGFzIGFueVxuICAgIGlmIChzb3J0ID09PSAnbG93ZXN0LXByaWNlJykgcmV0dXJuIHsgc3Vic2NyaWJlclByaWNlOiAnYXNjJywgcmF0ZTogJ2Rlc2MnLCBzaG9wcGluZ0NvdW50OiAnZGVzYycgfSBhcyBhbnlcbiAgICBpZiAoc29ydCA9PT0gJ2Jlc3QtcmF0aW5nJykgcmV0dXJuIHsgcmF0ZTogJ2Rlc2MnLCBzaG9wcGluZ0NvdW50OiAnZGVzYycsIHN0b2NrOiAnZGVzYycsIG5hbWU6ICdhc2MnIH1cbiAgICBpZiAoc29ydCA9PT0gJ25ld3MnKSByZXR1cm4geyBjcmVhdGVkQXQ6ICdkZXNjJyB9XG4gICAgaWYgKHNvcnQgPT09ICdiaWdnZXN0LWRpc2NvdW50JylcbiAgICAgIHJldHVybiB7IHN1YnNjcmliZXJEaXNjb3VudFBlcmNlbnRhZ2U6ICdkZXNjJywgcmF0ZTogJ2Rlc2MnLCBzaG9wcGluZ0NvdW50OiAnZGVzYycgfSBhcyBhbnlcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRMaW1pdFF1ZXJ5ID0gKG9wdGlvbnM6IHsgcGFnZT86IG51bWJlcjsgcGVyUGFnZT86IG51bWJlciB9KTogeyBsaW1pdD86IG51bWJlcjsgb2Zmc2V0PzogbnVtYmVyIH0gPT4ge1xuICAgIGNvbnN0IGxpbWl0ID0gb3B0aW9ucz8ucGVyUGFnZSB8fCAyMFxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbWl0LFxuICAgICAgb2Zmc2V0OiAoKG9wdGlvbnM/LnBhZ2UgfHwgMSkgLSAxKSAqIGxpbWl0LFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFzUHJvZmlsZSA9IChcbiAgICBvcHRpb25zOiBGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+LFxuICApOiBvcHRpb25zIGlzIEZldGNoUHJvZHVjdHNPcHRpb25zICYge1xuICAgIHByb2ZpbGU6IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wydwcm9maWxlJ11cbiAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlcjsgdGFncz86IG5ldmVyIH1cbiAgfSA9PiAncHJvZmlsZScgaW4gb3B0aW9uc1xuXG4gIHByaXZhdGUgaGFzVGVybSA9IChcbiAgICBvcHRpb25zOiBGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+LFxuICApOiBvcHRpb25zIGlzIEZldGNoUHJvZHVjdHNPcHRpb25zICYge1xuICAgIHRlcm06IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wyd0ZXJtJ11cbiAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XG4gIH0gPT4gJ3Rlcm0nIGluIG9wdGlvbnNcblxuICBwcml2YXRlIGhhc0NhdGVnb3J5ID0gKFxuICAgIG9wdGlvbnM6IEZldGNoUHJvZHVjdHNQYXJhbXM8VD4sXG4gICk6IG9wdGlvbnMgaXMgRmV0Y2hQcm9kdWN0c09wdGlvbnMgJiB7XG4gICAgY2F0ZWdvcnk6IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+WydjYXRlZ29yeSddXG4gICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxuICB9ID0+ICdjYXRlZ29yeScgaW4gb3B0aW9uc1xufVxuIl19
|
|
193
|
+
}] }, { type: i1.ProductsIndex }] });
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL2NhdGFsb2cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBSUwsb0JBQW9CLEVBSXBCLGFBQWEsRUFJYix3QkFBd0IsRUFDeEIsR0FBRyxFQUNILEtBQUssRUFDTCxLQUFLLEdBQ04sTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBOzs7QUFzRC9ELE1BQU0sT0FBTyxjQUFjO0lBR3pCLFlBQ2dELGlCQUFvQyxFQUNuQyxrQkFBc0MsRUFDeEMsd0JBQWtELEVBQ3hELElBQVcsRUFDakMsWUFBMkI7UUFKRSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ25DLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDeEMsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUN4RCxTQUFJLEdBQUosSUFBSSxDQUFPO1FBQ2pDLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBUHRDLG1CQUFjLEdBQTZCLEVBQUUsQ0FBQTtRQWlLN0MscUJBQWdCLEdBQUcsQ0FBQyxFQUMxQixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sSUFBSSxFQUNKLElBQUksRUFDSixhQUFhLEdBQ1EsRUFBbUMsRUFBRTtZQUMxRCxNQUFNLE9BQU8sR0FBRyxFQUFxQyxDQUFBO1lBRXJELElBQUksWUFBWSxFQUFFLE1BQU07Z0JBQ3RCLEdBQUcsQ0FBQyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFB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QUFFLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDOUQsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNQLENBQUM7OEdBaEtVLGNBQWMsa0JBSWYsbUJBQW1CLGFBQ25CLG9CQUFvQixhQUNwQixrQkFBa0IsYUFDbEIsWUFBWTtrSEFQWCxjQUFjOzsyRkFBZCxjQUFjO2tCQUQxQixVQUFVOzswQkFLTixNQUFNOzJCQUFDLG1CQUFtQjs7MEJBQzFCLE1BQU07MkJBQUMsb0JBQW9COzswQkFDM0IsTUFBTTsyQkFBQyxrQkFBa0I7OzBCQUN6QixNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQ2F0ZWdvcnksXG4gIENhdGVnb3J5UmVwb3NpdG9yeSxcbiAgRmluZFJlcG9zaXRvcnlQYXJhbXMsXG4gIEludmFsaWRBcmd1bWVudEVycm9yLFxuICBQcm9kdWN0LFxuICBQcm9kdWN0R2VuZGVyLFxuICBQcm9kdWN0UmVwb3NpdG9yeSxcbiAgUHJvZHVjdHNJbmRleCxcbiAgUmVwb3NpdG9yeUZpbmRGaWVsdGVycyxcbiAgUmVwb3NpdG9yeUZpbmRSZXN1bHQsXG4gIFJlcG9zaXRvcnlPcmRlckJ5LFxuICBSb3VuZFByb2R1Y3RQcmljZXNIZWxwZXIsXG4gIHNldCxcbiAgU2hvcHMsXG4gIFdoZXJlLFxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcbmltcG9ydCB7IENBVEVHT1JZX1NUUlVDVFVSRSwgREVGQVVMVF9TSE9QIH0gZnJvbSAnLi4vLi4vY29uc3RzJ1xuaW1wb3J0IHsgQ2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyIH0gZnJvbSAnLi9hZGFwdGVycydcbmltcG9ydCB7IFByb2R1Y3RTb3J0IH0gZnJvbSAnLi90eXBlcy9wcm9kdWN0LXNvcnQudHlwZSdcblxudHlwZSBGZXRjaFByb2R1Y3RzRmlsdGVycyA9IHtcbiAgY2x1YkRpc2NvdW50PzogbnVtYmVyW11cbiAgYnJhbmRzPzogc3RyaW5nW11cbiAgcHJpY2VzPzogeyBtaW4/OiBudW1iZXI7IG1heD86IG51bWJlcjsgc3Vic2NyaWJlclByaWNlPzogYm9vbGVhbiB9XG4gIGdlbmRlcj86IFByb2R1Y3RHZW5kZXJbXVxuICByYXRlPzogbnVtYmVyXG4gIGN1c3RvbU9wdGlvbnM/OiBzdHJpbmdbXVxuICB0YWdzPzogc3RyaW5nW11cbn1cblxudHlwZSBGZXRjaFByb2R1Y3RzT3B0aW9ucyA9IHtcbiAgcGFnZT86IG51bWJlclxuICBwZXJQYWdlPzogbnVtYmVyXG4gIHNvcnQ/OiBQcm9kdWN0U29ydFxuICBtYWluR2VuZGVyPzogUHJvZHVjdEdlbmRlclxufVxuXG50eXBlIEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQgZXh0ZW5kcyBDYXRlZ29yeT4gPSB7XG4gIGNhdGVnb3J5PzogVFxuICBwcm9maWxlPzogc3RyaW5nW11cbiAgdGVybT86IHN0cmluZ1xufVxuXG50eXBlIEZldGNoUHJvZHVjdHNQYXJhbXM8VCBleHRlbmRzIENhdGVnb3J5PiA9IEZldGNoUHJvZHVjdHNPcHRpb25zICZcbiAgKFxuICAgIHwge1xuICAgICAgICBjYXRlZ29yeTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ2NhdGVnb3J5J11cbiAgICAgICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxuICAgICAgfVxuICAgIHwge1xuICAgICAgICBwcm9maWxlOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsncHJvZmlsZSddXG4gICAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyOyB0YWdzPzogbmV2ZXIgfVxuICAgICAgfVxuICAgIHwge1xuICAgICAgICB0ZXJtOiBGZXRjaFByb2R1Y3RzTWFpblBhcmFtczxUPlsndGVybSddXG4gICAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyIH1cbiAgICAgIH1cbiAgKVxuXG50eXBlIEZldGNoUHJvZHVjdHNSZXNwb25zZSA9IHtcbiAgcHJvZHVjdHM6IHsgZGF0YTogUHJvZHVjdFtdOyB0b3RhbDogbnVtYmVyIH1cbiAgcGFnZXM6IG51bWJlclxuICBwcmljZXM6IHtcbiAgICBwcmljZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfVxuICAgIHN1YnNjcmliZXJQcmljZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfVxuICB9XG4gIGJyYW5kcz86IHN0cmluZ1tdXG59XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDYXRhbG9nU2VydmljZTxUIGV4dGVuZHMgQ2F0ZWdvcnkgPSBDYXRlZ29yeT4ge1xuICBwcml2YXRlIHByb2R1Y3RzQnlUZXJtOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ1Byb2R1Y3RSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBwcm9kdWN0UmVwb3NpdG9yeTogUHJvZHVjdFJlcG9zaXRvcnksXG4gICAgQEluamVjdCgnQ2F0ZWdvcnlSZXBvc2l0b3J5JykgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVJlcG9zaXRvcnk6IENhdGVnb3J5UmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KENBVEVHT1JZX1NUUlVDVFVSRSkgcHJpdmF0ZSByZWFkb25seSBjYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXI6IENhdGVnb3J5U3RydWN0dXJlQWRhcHRlcixcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBzaG9wOiBTaG9wcyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RJbmRleDogUHJvZHVjdHNJbmRleCxcbiAgKSB7fVxuXG4gIGFzeW5jIGZldGNoUHJvZHVjdHMob3B0aW9uczogRmV0Y2hQcm9kdWN0c1BhcmFtczxUPik6IFByb21pc2U8RmV0Y2hQcm9kdWN0c1Jlc3BvbnNlPiB7XG4gICAgY29uc3QgbGltaXRzID0gdGhpcy5idWlsZExpbWl0UXVlcnkob3B0aW9ucylcblxuICAgIGlmICh0aGlzLmhhc1Byb2ZpbGUob3B0aW9ucykgJiYgb3B0aW9ucy5maWx0ZXJzPy5jdXN0b21PcHRpb25zKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBJdCBjb3VsZG4ndCBmaWxsZWQgY3VzdG9tT3B0aW9ucyB3aGVuIHByb2ZpbGUgaXMgZ2l2ZW5gKVxuICAgIGlmICh0aGlzLmhhc1Byb2ZpbGUob3B0aW9ucykgJiYgb3B0aW9ucy5maWx0ZXJzPy50YWdzKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBJdCBjb3VsZG4ndCBmaWxsZWQgdGFncyB3aGVuIHByb2ZpbGUgaXMgZ2l2ZW5gKVxuICAgIGlmICh0aGlzLmhhc1Rlcm0ob3B0aW9ucykgJiYgb3B0aW9ucy5maWx0ZXJzPy5jdXN0b21PcHRpb25zKVxuICAgICAgdGhyb3cgbmV3IEludmFsaWRBcmd1bWVudEVycm9yKGBJdCBjb3VsZG4ndCBmaWxsZWQgY3VzdG9tT3B0aW9ucyB3aGVuIHRlcm0gaXMgZ2l2ZW5gKVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZmluZENhdGFsb2cob3B0aW9ucywgbGltaXRzKS50aGVuKCh7IGRhdGEsIGNvdW50OiB0b3RhbCwgbWF4aW11bSwgbWluaW1hbCwgZGlzdGluY3QgfSkgPT4gKHtcbiAgICAgIHByb2R1Y3RzOiB7IGRhdGE6IGRhdGEubWFwKChwcm9kdWN0KSA9PiBSb3VuZFByb2R1Y3RQcmljZXNIZWxwZXIucm91bmRQcm9kdWN0UHJpY2VzKHByb2R1Y3QpKSwgdG90YWwgfSxcbiAgICAgIHBhZ2VzOiBNYXRoLmNlaWwodG90YWwgLyBsaW1pdHMubGltaXQpLFxuICAgICAgcHJpY2VzOiB7XG4gICAgICAgIHByaWNlOiB7IG1pbjogK21pbmltYWw/LnByaWNlPy5wcmljZT8udG9GaXhlZCgyKSwgbWF4OiArbWF4aW11bT8ucHJpY2U/LnByaWNlPy50b0ZpeGVkKDIpIH0sXG4gICAgICAgIHN1YnNjcmliZXJQcmljZToge1xuICAgICAgICAgIG1pbjogK21pbmltYWw/LnByaWNlPy5zdWJzY3JpYmVyUHJpY2U/LnRvRml4ZWQoMiksXG4gICAgICAgICAgbWF4OiArbWF4aW11bT8ucHJpY2U/LnN1YnNjcmliZXJQcmljZT8udG9GaXhlZCgyKSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBicmFuZHM6IGRpc3RpbmN0Py5icmFuZCxcbiAgICB9KSlcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmluZENhdGFsb2coXG4gICAgb3B0aW9uczogRmV0Y2hQcm9kdWN0c1BhcmFtczxUPixcbiAgICBsaW1pdHM6IHtcbiAgICAgIGxpbWl0PzogbnVtYmVyXG4gICAgICBvZmZzZXQ/OiBudW1iZXJcbiAgICB9LFxuICApOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3Q+PiB7XG4gICAgaWYgKHRoaXMuaGFzVGVybShvcHRpb25zKSAmJiBvcHRpb25zLnNvcnQgPT09ICdtb3N0LXJlbGV2YW50Jykge1xuICAgICAgY29uc3QgcHJvZHVjdHNJZHMgPSBhd2FpdCB0aGlzLmZpbmRDYXRhbG9nSWRzQnlFbGFzdGljU2VhcmNoKG9wdGlvbnMudGVybSlcblxuICAgICAgcmV0dXJuIHRoaXMuZmluZENhdGFsb2dBbmRTb3J0QnlNb3N0UmV2ZWxhbnQocHJvZHVjdHNJZHMsIG9wdGlvbnMsIGxpbWl0cylcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNDYXRlZ29yeShvcHRpb25zKSAmJiBvcHRpb25zLnNvcnQgPT09ICdtb3N0LXJlbGV2YW50Jykge1xuICAgICAgY29uc3QgcHJvZHVjdHNJZHMgPSBhd2FpdCB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5XG4gICAgICAgIC5maW5kKHtcbiAgICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgICAuLi4oYXdhaXQgdGhpcy5idWlsZE1haW5GaWx0ZXIob3B0aW9ucykpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIC50aGVuKChwcm9kdWN0cykgPT4gcHJvZHVjdHMuZGF0YS5tYXAoKHByb2R1Y3QpID0+IHByb2R1Y3QuaWQpKVxuXG4gICAgICByZXR1cm4gdGhpcy5maW5kQ2F0YWxvZ0FuZFNvcnRCeU1vc3RSZXZlbGFudChwcm9kdWN0c0lkcywgb3B0aW9ucywgbGltaXRzKVxuICAgIH1cblxuICAgIGNvbnN0IHJlcG9QYXJhbXM6IEZpbmRSZXBvc2l0b3J5UGFyYW1zPFByb2R1Y3Q+ID0ge1xuICAgICAgZmlsdGVyczoge1xuICAgICAgICAuLi4oYXdhaXQgdGhpcy5idWlsZE1haW5GaWx0ZXIob3B0aW9ucykpLFxuICAgICAgICAuLi50aGlzLmJ1aWxkRmlsdGVyUXVlcnkob3B0aW9ucz8uZmlsdGVycyB8fCB7fSksXG4gICAgICB9LFxuICAgICAgLi4uKG9wdGlvbnM/LnNvcnQgPyB7IG9yZGVyQnk6IHRoaXMuYnVpbGRTb3J0UXVlcnkob3B0aW9ucz8uc29ydCkgfSA6IHt9KSxcbiAgICAgIGxpbWl0cyxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgbWluaW1hbDogWydwcmljZSddLFxuICAgICAgICBtYXhpbXVtOiBbJ3ByaWNlJ10sXG4gICAgICAgIC4uLighdGhpcy5oYXNDYXRlZ29yeShvcHRpb25zKSA/IHsgZGlzdGluY3Q6IFsnYnJhbmQnXSB9IDoge30pLFxuICAgICAgfSxcbiAgICB9XG5cbiAgICBpZiAoWydiaWdnZXN0LXByaWNlJywgJ2xvd2VzdC1wcmljZScsICdiaWdnZXN0LWRpc2NvdW50JywgJ2Jlc3QtcmF0aW5nJ10uaW5jbHVkZXMob3B0aW9ucy5zb3J0KSlcbiAgICAgIHJldHVybiB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmRDYXRhbG9nKHJlcG9QYXJhbXMpXG5cbiAgICByZXR1cm4gdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhcbiAgICAgIHJlcG9QYXJhbXMsXG4gICAgICBvcHRpb25zPy5tYWluR2VuZGVyIHx8IHRoaXMuc2hvcCA9PT0gU2hvcHMuTUVOU01BUktFVCA/ICdtYWxlJyA6ICdmZW1hbGUnLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYnVpbGRNYWluRmlsdGVyKHtcbiAgICBjYXRlZ29yeSxcbiAgICBwcm9maWxlLFxuICAgIHRlcm0sXG4gIH06IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+KTogUHJvbWlzZTxSZXBvc2l0b3J5RmluZEZpZWx0ZXJzPFByb2R1Y3Q+PiB7XG4gICAgaWYgKGNhdGVnb3J5KSByZXR1cm4gdGhpcy5jYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIuYnVpbGRQcm9kdWN0RmlsdGVyQnlDYXRlZ29yeShjYXRlZ29yeSlcbiAgICBpZiAocHJvZmlsZSkgcmV0dXJuIHsgdGFnczogeyBvcGVyYXRvcjogV2hlcmUuTElLRSwgdmFsdWU6IHByb2ZpbGUgfSB9XG4gICAgaWYgKHRlcm0pXG4gICAgICByZXR1cm4gdGhpcy5wcm9kdWN0SW5kZXhcbiAgICAgICAgLnNlYXJjaCh0ZXJtLCA5OTksIHRoaXMuc2hvcClcbiAgICAgICAgLnRoZW4oKGRhdGEpID0+ICh7IGlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IGRhdGEuaGl0cy5tYXAoKHsgX3NvdXJjZSB9KSA9PiBfc291cmNlLmlkKSB9IH0pKVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBmaW5kQ2F0YWxvZ0FuZFNvcnRCeU1vc3RSZXZlbGFudChcbiAgICBwcm9kdWN0SWRzOiBzdHJpbmdbXSxcbiAgICBvcHRpb25zOiBPbWl0PEZldGNoUHJvZHVjdHNPcHRpb25zLCAnc29ydCc+ICYge1xuICAgICAgdGVybT86IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wyd0ZXJtJ11cbiAgICAgIGZpbHRlcnM/OiBGZXRjaFByb2R1Y3RzRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyIH1cbiAgICB9LFxuICAgIGxpbWl0czoge1xuICAgICAgbGltaXQ/OiBudW1iZXJcbiAgICAgIG9mZnNldD86IG51bWJlclxuICAgIH0sXG4gICk6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRSZXN1bHQ8UHJvZHVjdD4+IHtcbiAgICBjb25zdCB0b3RhbFJlc3VsdCA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2coXG4gICAgICB7XG4gICAgICAgIGZpZWxkczogWydpZCcsICdzdG9jayddLFxuICAgICAgICBmaWx0ZXJzOiB7XG4gICAgICAgICAgaWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogcHJvZHVjdElkcyB9LFxuICAgICAgICAgIC4uLnRoaXMuYnVpbGRGaWx0ZXJRdWVyeShvcHRpb25zPy5maWx0ZXJzIHx8IHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIG1pbmltYWw6IFsncHJpY2UnXSxcbiAgICAgICAgICBtYXhpbXVtOiBbJ3ByaWNlJ10sXG4gICAgICAgICAgZGlzdGluY3Q6IFsnYnJhbmQnXSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBvcHRpb25zPy5tYWluR2VuZGVyIHx8IHRoaXMuc2hvcCA9PT0gU2hvcHMuTUVOU01BUktFVCA/ICdtYWxlJyA6ICdmZW1hbGUnLFxuICAgIClcblxuICAgIGNvbnN0IHN0b2NrRGF0YSA9IHRvdGFsUmVzdWx0LmRhdGEuZmlsdGVyKChwcm9kdWN0KSA9PiBwcm9kdWN0LnN0b2NrLnF1YW50aXR5ID4gMClcbiAgICBjb25zdCBzdG9ja091dCA9IHRvdGFsUmVzdWx0LmRhdGEuZmlsdGVyKChwcm9kdWN0KSA9PiBwcm9kdWN0LnN0b2NrLnF1YW50aXR5IDw9IDApXG4gICAgY29uc3QgcHJvZHVjdElkc1N0b2NrID0gcHJvZHVjdElkcy5maWx0ZXIoKHByb2R1Y3QpID0+IHN0b2NrRGF0YS5zb21lKChyZXN1bHQpID0+IHJlc3VsdC5pZCA9PSBwcm9kdWN0KSlcbiAgICBjb25zdCBwcm9kdWN0SWRzU3RvY2tPdXQgPSBwcm9kdWN0SWRzLmZpbHRlcigocHJvZHVjdCkgPT4gc3RvY2tPdXQuc29tZSgocmVzdWx0KSA9PiByZXN1bHQuaWQgPT0gcHJvZHVjdCkpXG5cbiAgICBjb25zdCBsaW1pdGVkUHJvZHVjdElkID0gcHJvZHVjdElkc1N0b2NrXG4gICAgICAuY29uY2F0KHByb2R1Y3RJZHNTdG9ja091dClcbiAgICAgIC5zbGljZShsaW1pdHMub2Zmc2V0LCBsaW1pdHMub2Zmc2V0ICsgbGltaXRzLmxpbWl0KVxuXG4gICAgY29uc3Qgb3JkZXJlZElkID0gcHJvZHVjdElkcy5maWx0ZXIoKHByb2R1Y3QpID0+IGxpbWl0ZWRQcm9kdWN0SWQuaW5jbHVkZXMocHJvZHVjdCkpXG4gICAgY29uc3QgcHJvZHVjdFJlc3VsdCA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2coe1xuICAgICAgZmlsdGVyczoge1xuICAgICAgICBpZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBvcmRlcmVkSWQgfSxcbiAgICAgIH0sXG4gICAgfSlcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhOiBsaW1pdGVkUHJvZHVjdElkLm1hcCgoaWQpID0+IHByb2R1Y3RSZXN1bHQuZGF0YS5maW5kKChwcm9kdWN0KSA9PiBwcm9kdWN0LmlkID09PSBpZCkpLmZpbHRlcihCb29sZWFuKSxcbiAgICAgIGNvdW50OiB0b3RhbFJlc3VsdC5jb3VudCxcbiAgICAgIG1heGltdW06IHRvdGFsUmVzdWx0Lm1heGltdW0sXG4gICAgICBtaW5pbWFsOiB0b3RhbFJlc3VsdC5taW5pbWFsLFxuICAgICAgZGlzdGluY3Q6IHRvdGFsUmVzdWx0LmRpc3RpbmN0LFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmluZENhdGFsb2dJZHNCeUVsYXN0aWNTZWFyY2godGVybTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGlmICh0aGlzLnByb2R1Y3RzQnlUZXJtW3Rlcm1dKSByZXR1cm4gdGhpcy5wcm9kdWN0c0J5VGVybVt0ZXJtXVxuXG4gICAgcmV0dXJuICh0aGlzLnByb2R1Y3RzQnlUZXJtW3Rlcm1dID0gYXdhaXQgdGhpcy5wcm9kdWN0SW5kZXhcbiAgICAgIC5zZWFyY2godGVybSwgOTk5LCB0aGlzLnNob3ApXG4gICAgICAudGhlbigoeyBoaXRzOiBwcm9kdWN0cyB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHdpdGhTdG9jayA9IHByb2R1Y3RzLmZpbHRlcigoeyBfc291cmNlIH0pID0+IF9zb3VyY2Uuc3RvY2sucXVhbnRpdHkgPiAwKVxuICAgICAgICBjb25zdCB3aXRoT3V0U3RvY2sgPSBwcm9kdWN0cy5maWx0ZXIoKHsgX3NvdXJjZSB9KSA9PiBfc291cmNlLnN0b2NrLnF1YW50aXR5IDw9IDApXG4gICAgICAgIGNvbnN0IHNvcnRlZCA9IFsuLi53aXRoU3RvY2ssIC4uLndpdGhPdXRTdG9ja11cblxuICAgICAgICByZXR1cm4gWy4uLm5ldyBTZXQoc29ydGVkLm1hcCgoeyBfc291cmNlIH0pID0+IF9zb3VyY2UuaWQpKV1cbiAgICAgIH0pKVxuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZpbHRlclF1ZXJ5ID0gKHtcbiAgICBjbHViRGlzY291bnQsXG4gICAgYnJhbmRzLFxuICAgIHByaWNlcyxcbiAgICBnZW5kZXIsXG4gICAgdGFncyxcbiAgICByYXRlLFxuICAgIGN1c3RvbU9wdGlvbnMsXG4gIH06IEZldGNoUHJvZHVjdHNGaWx0ZXJzKTogUmVwb3NpdG9yeUZpbmRGaWVsdGVyczxQcm9kdWN0PiA9PiB7XG4gICAgY29uc3QgZmlsdGVycyA9IHt9IGFzIFJlcG9zaXRvcnlGaW5kRmllbHRlcnM8UHJvZHVjdD5cblxuICAgIGlmIChjbHViRGlzY291bnQ/Lmxlbmd0aClcbiAgICAgIHNldChmaWx0ZXJzLCAncHJpY2Uuc3Vic2NyaWJlckRpc2NvdW50UGVyY2VudGFnZScsIHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogY2x1YkRpc2NvdW50IH0pXG4gICAgaWYgKGJyYW5kcz8ubGVuZ3RoKSBmaWx0ZXJzLmJyYW5kID0geyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBicmFuZHMgfVxuICAgIGlmIChnZW5kZXI/Lmxlbmd0aCkgZmlsdGVycy5nZW5kZXIgPSB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IGdlbmRlciB9XG4gICAgaWYgKHByaWNlcz8ubWluIHx8IHByaWNlcz8ubWF4KVxuICAgICAgc2V0KGZpbHRlcnMsIHByaWNlcy5zdWJzY3JpYmVyUHJpY2UgPyAncHJpY2Uuc3Vic2NyaWJlclByaWNlJyA6ICdwcmljZS5wcmljZScsIFtcbiAgICAgICAgLi4uKHByaWNlcy5taW4gPyBbeyBvcGVyYXRvcjogV2hlcmUuR1RFLCB2YWx1ZTogTWF0aC5yb3VuZChwcmljZXMubWluKSB9XSA6IFtdKSxcbiAgICAgICAgLi4uKHByaWNlcy5tYXggPyBbeyBvcGVyYXRvcjogV2hlcmUuTFRFLCB2YWx1ZTogTWF0aC5jZWlsKHByaWNlcy5tYXgpIH1dIDogW10pLFxuICAgICAgXSlcbiAgICBpZiAocmF0ZSkgZmlsdGVycy5yYXRlID0geyBvcGVyYXRvcjogV2hlcmUuR1RFLCB2YWx1ZTogcmF0ZSB9XG4gICAgaWYgKHRhZ3M/Lmxlbmd0aCkgZmlsdGVycy50YWdzID0geyBvcGVyYXRvcjogV2hlcmUuTElLRSwgdmFsdWU6IHRhZ3MgfVxuICAgIGlmIChjdXN0b21PcHRpb25zPy5sZW5ndGgpIGZpbHRlcnMuZmlsdGVycyA9IHsgb3BlcmF0b3I6IFdoZXJlLkxJS0UsIHZhbHVlOiBjdXN0b21PcHRpb25zIH1cblxuICAgIHJldHVybiBmaWx0ZXJzXG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU29ydFF1ZXJ5ID0gKHNvcnQ6IFByb2R1Y3RTb3J0KTogUmVwb3NpdG9yeU9yZGVyQnk8UHJvZHVjdD4gPT4ge1xuICAgIGlmICghc29ydCB8fCBzb3J0ID09PSAnbW9zdC1yZWxldmFudCcpIHJldHVybiB7fVxuXG4gICAgaWYgKHNvcnQgPT09ICdiZXN0LXNlbGxlcnMnKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2hvcHBpbmdDb3VudDogJ2Rlc2MnLFxuICAgICAgICByYXRlOiAnZGVzYycsXG4gICAgICAgIHN0b2NrOiAnZGVzYycsXG4gICAgICAgIG5hbWU6ICdhc2MnLFxuICAgICAgfVxuICAgIGlmIChzb3J0ID09PSAnYmlnZ2VzdC1wcmljZScpIHJldHVybiB7IHN1YnNjcmliZXJQcmljZTogJ2Rlc2MnLCByYXRlOiAnZGVzYycsIHNob3BwaW5nQ291bnQ6ICdkZXNjJyB9IGFzIGFueVxuICAgIGlmIChzb3J0ID09PSAnbG93ZXN0LXByaWNlJykgcmV0dXJuIHsgc3Vic2NyaWJlclByaWNlOiAnYXNjJywgcmF0ZTogJ2Rlc2MnLCBzaG9wcGluZ0NvdW50OiAnZGVzYycgfSBhcyBhbnlcbiAgICBpZiAoc29ydCA9PT0gJ2Jlc3QtcmF0aW5nJykgcmV0dXJuIHsgcmF0ZTogJ2Rlc2MnLCBzaG9wcGluZ0NvdW50OiAnZGVzYycsIHN0b2NrOiAnZGVzYycsIG5hbWU6ICdhc2MnIH1cbiAgICBpZiAoc29ydCA9PT0gJ25ld3MnKSByZXR1cm4geyBjcmVhdGVkQXQ6ICdkZXNjJyB9XG4gICAgaWYgKHNvcnQgPT09ICdiaWdnZXN0LWRpc2NvdW50JylcbiAgICAgIHJldHVybiB7IHN1YnNjcmliZXJEaXNjb3VudFBlcmNlbnRhZ2U6ICdkZXNjJywgcmF0ZTogJ2Rlc2MnLCBzaG9wcGluZ0NvdW50OiAnZGVzYycgfSBhcyBhbnlcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRMaW1pdFF1ZXJ5ID0gKG9wdGlvbnM6IHsgcGFnZT86IG51bWJlcjsgcGVyUGFnZT86IG51bWJlciB9KTogeyBsaW1pdD86IG51bWJlcjsgb2Zmc2V0PzogbnVtYmVyIH0gPT4ge1xuICAgIGNvbnN0IGxpbWl0ID0gb3B0aW9ucz8ucGVyUGFnZSB8fCAyMFxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGxpbWl0LFxuICAgICAgb2Zmc2V0OiAoKG9wdGlvbnM/LnBhZ2UgfHwgMSkgLSAxKSAqIGxpbWl0LFxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFzUHJvZmlsZSA9IChcbiAgICBvcHRpb25zOiBGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+LFxuICApOiBvcHRpb25zIGlzIEZldGNoUHJvZHVjdHNPcHRpb25zICYge1xuICAgIHByb2ZpbGU6IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wydwcm9maWxlJ11cbiAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlcjsgdGFncz86IG5ldmVyIH1cbiAgfSA9PiAncHJvZmlsZScgaW4gb3B0aW9uc1xuXG4gIHByaXZhdGUgaGFzVGVybSA9IChcbiAgICBvcHRpb25zOiBGZXRjaFByb2R1Y3RzUGFyYW1zPFQ+LFxuICApOiBvcHRpb25zIGlzIEZldGNoUHJvZHVjdHNPcHRpb25zICYge1xuICAgIHRlcm06IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wyd0ZXJtJ11cbiAgICBmaWx0ZXJzPzogRmV0Y2hQcm9kdWN0c0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XG4gIH0gPT4gJ3Rlcm0nIGluIG9wdGlvbnNcblxuICBwcml2YXRlIGhhc0NhdGVnb3J5ID0gKFxuICAgIG9wdGlvbnM6IEZldGNoUHJvZHVjdHNQYXJhbXM8VD4sXG4gICk6IG9wdGlvbnMgaXMgRmV0Y2hQcm9kdWN0c09wdGlvbnMgJiB7XG4gICAgY2F0ZWdvcnk6IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+WydjYXRlZ29yeSddXG4gICAgZmlsdGVycz86IEZldGNoUHJvZHVjdHNGaWx0ZXJzICYgeyBjdXN0b21PcHRpb25zPzogbmV2ZXIgfVxuICB9ID0+ICdjYXRlZ29yeScgaW4gb3B0aW9uc1xufVxuIl19
|