ng-easycommerce 1.1.2 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -0
- package/assets/ec-i18n/ct.json +2 -0
- package/assets/ec-i18n/en.json +2 -0
- package/assets/ec-i18n/es.json +2 -0
- package/assets/ec-i18n/fr.json +2 -0
- package/assets/ec-i18n/gl.json +2 -0
- package/assets/ec-i18n/pr.json +2 -0
- package/bundles/ng-easycommerce.umd.js +5663 -4057
- package/bundles/ng-easycommerce.umd.js.map +1 -1
- package/bundles/ng-easycommerce.umd.min.js +1 -1
- package/bundles/ng-easycommerce.umd.min.js.map +1 -1
- package/esm2015/lib/api/connection.service.js +2 -2
- package/esm2015/lib/core.consts.js +4 -5
- package/esm2015/lib/ec-component/cart-bootstrap-navigation.js +27 -0
- package/esm2015/lib/ec-component/cart-ec/cart-ec.component.js +11 -1
- package/esm2015/lib/ec-component/checkout-ec/checkout-ec.component.js +23 -2
- package/esm2015/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +185 -13
- package/esm2015/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +3 -1
- package/esm2015/lib/ec-component/checkout-ec/shipment-ec/shipment-ec.component.js +4 -2
- package/esm2015/lib/ec-component/coupon-ec/coupon-ec.component.js +6 -1
- package/esm2015/lib/guards/able-buyer-guard.service.js +2 -2
- package/esm2015/lib/guards/auth-guard.service.js +2 -2
- package/esm2015/lib/guards/checkout-ready.service.js +3 -3
- package/esm2015/lib/guards/loggedin-guard.service.js +2 -2
- package/esm2015/lib/guards/user-role-guard.service.js +2 -2
- package/esm2015/lib/services/account/orders.service.js +6 -4
- package/esm2015/lib/services/auth.service.js +4 -3
- package/esm2015/lib/services/captcha.service.js +6 -4
- package/esm2015/lib/services/cart.service.js +1186 -74
- package/esm2015/lib/services/channel-config.service.js +4 -6
- package/esm2015/lib/services/checkout/addressing.service.js +65 -9
- package/esm2015/lib/services/checkout/checkout.service.js +56 -9
- package/esm2015/lib/services/checkout/error-handler.service.js +4 -3
- package/esm2015/lib/services/checkout/payment.service.js +35 -15
- package/esm2015/lib/services/checkout/shipment.service.js +54 -3
- package/esm2015/lib/services/concatenated-associations.service.js +4 -3
- package/esm2015/lib/services/currency.service.js +5 -3
- package/esm2015/lib/services/filters.service.js +2 -2
- package/esm2015/lib/services/footer/footer.service.js +4 -3
- package/esm2015/lib/services/gift-card.service.js +56 -5
- package/esm2015/lib/services/parameters.service.js +5 -3
- package/esm2015/lib/services/reviews.service.js +5 -4
- package/esm2015/lib/services/seo.service.js +4 -5
- package/esm2015/lib/services/stores.service.js +4 -3
- package/esm2015/lib/services/wishlist.service.js +3 -4
- package/esm2015/lib/utils/analytics/google-analytics.service.js +1 -1
- package/esm2015/lib/utils/price-presentation.service.js +2 -3
- package/esm2015/lib/utils/shipping-price-display.service.js +2 -3
- package/esm5/lib/api/connection.service.js +2 -2
- package/esm5/lib/core.consts.js +4 -5
- package/esm5/lib/ec-component/cart-bootstrap-navigation.js +27 -0
- package/esm5/lib/ec-component/cart-ec/cart-ec.component.js +11 -1
- package/esm5/lib/ec-component/checkout-ec/checkout-ec.component.js +23 -2
- package/esm5/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +206 -12
- package/esm5/lib/ec-component/checkout-ec/payment-ec/payment-ec.component.js +3 -1
- package/esm5/lib/ec-component/checkout-ec/shipment-ec/shipment-ec.component.js +5 -3
- package/esm5/lib/ec-component/coupon-ec/coupon-ec.component.js +6 -1
- package/esm5/lib/guards/able-buyer-guard.service.js +2 -2
- package/esm5/lib/guards/auth-guard.service.js +2 -2
- package/esm5/lib/guards/checkout-ready.service.js +3 -3
- package/esm5/lib/guards/loggedin-guard.service.js +2 -2
- package/esm5/lib/guards/user-role-guard.service.js +2 -2
- package/esm5/lib/services/account/orders.service.js +6 -4
- package/esm5/lib/services/auth.service.js +4 -3
- package/esm5/lib/services/captcha.service.js +6 -4
- package/esm5/lib/services/cart.service.js +1231 -94
- package/esm5/lib/services/channel-config.service.js +4 -6
- package/esm5/lib/services/checkout/addressing.service.js +65 -9
- package/esm5/lib/services/checkout/checkout.service.js +63 -12
- package/esm5/lib/services/checkout/error-handler.service.js +4 -3
- package/esm5/lib/services/checkout/payment.service.js +29 -11
- package/esm5/lib/services/checkout/shipment.service.js +58 -7
- package/esm5/lib/services/concatenated-associations.service.js +4 -3
- package/esm5/lib/services/currency.service.js +5 -3
- package/esm5/lib/services/filters.service.js +2 -2
- package/esm5/lib/services/footer/footer.service.js +4 -3
- package/esm5/lib/services/gift-card.service.js +59 -5
- package/esm5/lib/services/parameters.service.js +5 -3
- package/esm5/lib/services/reviews.service.js +5 -4
- package/esm5/lib/services/seo.service.js +4 -5
- package/esm5/lib/services/stores.service.js +4 -3
- package/esm5/lib/services/wishlist.service.js +3 -4
- package/esm5/lib/utils/analytics/google-analytics.service.js +1 -1
- package/esm5/lib/utils/price-presentation.service.js +2 -3
- package/esm5/lib/utils/shipping-price-display.service.js +2 -3
- package/fesm2015/ng-easycommerce.js +3966 -2412
- package/fesm2015/ng-easycommerce.js.map +1 -1
- package/fesm5/ng-easycommerce.js +5667 -4061
- package/fesm5/ng-easycommerce.js.map +1 -1
- package/lib/ec-component/cart-bootstrap-navigation.d.ts +7 -0
- package/lib/ec-component/cart-ec/cart-ec.component.d.ts +5 -2
- package/lib/ec-component/checkout-ec/checkout-ec.component.d.ts +5 -0
- package/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.d.ts +27 -3
- package/lib/services/cart.service.d.ts +120 -7
- package/lib/services/checkout/addressing.service.d.ts +1 -1
- package/lib/services/checkout/checkout.service.d.ts +3 -0
- package/lib/services/checkout/shipment.service.d.ts +2 -2
- package/lib/services/gift-card.service.d.ts +1 -0
- package/ng-easycommerce.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -173,11 +173,14 @@ var ShipmentService = /** @class */ (function (_super) {
|
|
|
173
173
|
});
|
|
174
174
|
};
|
|
175
175
|
_this.setMethod = function (method) { return __awaiter(_this, void 0, void 0, function () {
|
|
176
|
-
var res, costs, err_1;
|
|
176
|
+
var cartContext, res, costs, err_1;
|
|
177
177
|
var _a, _b;
|
|
178
178
|
return __generator(this, function (_c) {
|
|
179
179
|
switch (_c.label) {
|
|
180
180
|
case 0:
|
|
181
|
+
if (!this.cartService.canMutateCart())
|
|
182
|
+
return [2 /*return*/, false];
|
|
183
|
+
cartContext = this.cartService.captureCartResponseContext();
|
|
181
184
|
// Deshabilitar todos los botones
|
|
182
185
|
this.buttonsDisabled = true;
|
|
183
186
|
this.errorSubject.next(null);
|
|
@@ -189,15 +192,28 @@ var ShipmentService = /** @class */ (function (_super) {
|
|
|
189
192
|
return [4 /*yield*/, this.putShipment()];
|
|
190
193
|
case 2:
|
|
191
194
|
res = _c.sent();
|
|
195
|
+
if (!this.cartService.applyCartResponse(res, cartContext, false)) {
|
|
196
|
+
this.stateSubject.next({ doing: false, ok: false, data: { method: method } });
|
|
197
|
+
return [2 /*return*/, false];
|
|
198
|
+
}
|
|
192
199
|
this.checkoutService.updateAsociatedData(res);
|
|
193
200
|
this.order = res;
|
|
194
201
|
return [4 /*yield*/, this.getCalculatedCosts()];
|
|
195
202
|
case 3:
|
|
196
203
|
costs = _c.sent();
|
|
204
|
+
if (!this.cartService.canMutateCart()) {
|
|
205
|
+
this.stateSubject.next({ doing: false, ok: false, data: { method: method } });
|
|
206
|
+
return [2 /*return*/, false];
|
|
207
|
+
}
|
|
197
208
|
this.modifyCostsResponse(costs, (_b = (_a = this.getUserData()) === null || _a === void 0 ? void 0 : _a.shippingAddress) === null || _b === void 0 ? void 0 : _b.postcode, method);
|
|
198
209
|
return [3 /*break*/, 6];
|
|
199
210
|
case 4:
|
|
200
211
|
err_1 = _c.sent();
|
|
212
|
+
if (this.cartService.handleCartMutationError(err_1, cartContext.token)) {
|
|
213
|
+
this.errorSubject.next(null);
|
|
214
|
+
this.stateSubject.next({ doing: false, ok: false, data: { method: method } });
|
|
215
|
+
return [2 /*return*/, false];
|
|
216
|
+
}
|
|
201
217
|
console.error(err_1);
|
|
202
218
|
this.errorSubject.next('operation-error');
|
|
203
219
|
throw new Error(err_1.error);
|
|
@@ -210,10 +226,13 @@ var ShipmentService = /** @class */ (function (_super) {
|
|
|
210
226
|
});
|
|
211
227
|
}); };
|
|
212
228
|
_this.setMethodOnly = function (method) { return __awaiter(_this, void 0, void 0, function () {
|
|
213
|
-
var res, err_2;
|
|
229
|
+
var cartContext, res, err_2;
|
|
214
230
|
return __generator(this, function (_a) {
|
|
215
231
|
switch (_a.label) {
|
|
216
232
|
case 0:
|
|
233
|
+
if (!this.cartService.canMutateCart())
|
|
234
|
+
return [2 /*return*/, false];
|
|
235
|
+
cartContext = this.cartService.captureCartResponseContext();
|
|
217
236
|
this.errorSubject.next(null);
|
|
218
237
|
this.stateSubject.next({ doing: true, ok: false, data: { method: method } });
|
|
219
238
|
_a.label = 1;
|
|
@@ -222,11 +241,19 @@ var ShipmentService = /** @class */ (function (_super) {
|
|
|
222
241
|
return [4 /*yield*/, this.putShipment()];
|
|
223
242
|
case 2:
|
|
224
243
|
res = _a.sent();
|
|
244
|
+
if (!this.cartService.applyCartResponse(res, cartContext, false)) {
|
|
245
|
+
this.stateSubject.next({ doing: false, ok: false, data: { method: method } });
|
|
246
|
+
return [2 /*return*/, false];
|
|
247
|
+
}
|
|
225
248
|
this.checkoutService.updateAsociatedData(res);
|
|
226
249
|
this.order = res;
|
|
227
250
|
return [3 /*break*/, 4];
|
|
228
251
|
case 3:
|
|
229
252
|
err_2 = _a.sent();
|
|
253
|
+
if (this.cartService.handleCartMutationError(err_2, cartContext.token)) {
|
|
254
|
+
this.stateSubject.next({ doing: false, ok: false, data: { method: method } });
|
|
255
|
+
return [2 /*return*/, false];
|
|
256
|
+
}
|
|
230
257
|
console.error(err_2);
|
|
231
258
|
this.errorSubject.next('operation-error');
|
|
232
259
|
throw new Error(err_2.error);
|
|
@@ -237,10 +264,13 @@ var ShipmentService = /** @class */ (function (_super) {
|
|
|
237
264
|
_this.setShippingOption = function (payload, stepData) {
|
|
238
265
|
if (stepData === void 0) { stepData = payload; }
|
|
239
266
|
return __awaiter(_this, void 0, void 0, function () {
|
|
240
|
-
var sanitizedPayload, res, err_3;
|
|
267
|
+
var cartContext, sanitizedPayload, res, err_3;
|
|
241
268
|
return __generator(this, function (_a) {
|
|
242
269
|
switch (_a.label) {
|
|
243
270
|
case 0:
|
|
271
|
+
if (!this.cartService.canMutateCart())
|
|
272
|
+
return [2 /*return*/, false];
|
|
273
|
+
cartContext = this.cartService.captureCartResponseContext();
|
|
244
274
|
this.errorSubject.next(null);
|
|
245
275
|
_a.label = 1;
|
|
246
276
|
case 1:
|
|
@@ -249,11 +279,17 @@ var ShipmentService = /** @class */ (function (_super) {
|
|
|
249
279
|
return [4 /*yield*/, this.connection.put(this.putShippingOptionApi(), sanitizedPayload).toPromise()];
|
|
250
280
|
case 2:
|
|
251
281
|
res = _a.sent();
|
|
282
|
+
if (!this.cartService.applyCartResponse(res, cartContext, false))
|
|
283
|
+
return [2 /*return*/, false];
|
|
252
284
|
this.checkoutService.updateAsociatedData(res);
|
|
253
285
|
this.order = res;
|
|
254
286
|
return [2 /*return*/, this.setStepReady(stepData, res)];
|
|
255
287
|
case 3:
|
|
256
288
|
err_3 = _a.sent();
|
|
289
|
+
if (this.cartService.handleCartMutationError(err_3, cartContext.token)) {
|
|
290
|
+
this.errorSubject.next(null);
|
|
291
|
+
return [2 /*return*/, false];
|
|
292
|
+
}
|
|
257
293
|
console.error(err_3);
|
|
258
294
|
this.errorSubject.next('operation-error');
|
|
259
295
|
throw new Error(err_3.error);
|
|
@@ -263,22 +299,37 @@ var ShipmentService = /** @class */ (function (_super) {
|
|
|
263
299
|
});
|
|
264
300
|
};
|
|
265
301
|
_this.putShipment = function () { return _this.connection.put(_this.putShipmentApi(), { method: _this.stateSubject.getValue().data.method }).toPromise(); };
|
|
266
|
-
_this.getCalculatedCosts = function () { return _this.connection.
|
|
302
|
+
_this.getCalculatedCosts = function () { return _this.connection.getErrorNotHandler(_this.calculatedCostsApi()).toPromise().catch(function (error) {
|
|
303
|
+
if (_this.cartService.handleCartMutationError(error, _this.cartService.getCartToken()))
|
|
304
|
+
return null;
|
|
305
|
+
return null;
|
|
306
|
+
}); };
|
|
267
307
|
_this.setContract = function (contract) { return __awaiter(_this, void 0, void 0, function () {
|
|
268
|
-
var stepData, data;
|
|
308
|
+
var cartContext, stepData, data;
|
|
269
309
|
var _this = this;
|
|
270
310
|
return __generator(this, function (_a) {
|
|
271
311
|
switch (_a.label) {
|
|
272
312
|
case 0:
|
|
313
|
+
if (!this.cartService.canMutateCart())
|
|
314
|
+
return [2 /*return*/, false];
|
|
315
|
+
cartContext = this.cartService.captureCartResponseContext();
|
|
273
316
|
stepData = __assign(__assign({}, contract), this.otherParamsForContract(contract));
|
|
274
317
|
data = this.stripFrontendOnlyShippingFields(stepData);
|
|
275
318
|
return [4 /*yield*/, this.connection.put(this.putContractApi(), data)
|
|
276
319
|
.toPromise().then(function (order) {
|
|
320
|
+
if (!_this.cartService.applyCartResponse(order, cartContext, false))
|
|
321
|
+
return false;
|
|
277
322
|
// this.analyticsService.callEvent('shipping_info', order);
|
|
278
323
|
return _this.setStepReady(stepData, order);
|
|
279
324
|
}, function (err) {
|
|
325
|
+
if (_this.cartService.handleCartMutationError(err, cartContext.token))
|
|
326
|
+
return undefined;
|
|
280
327
|
return new Promise(function (resolve, reject) { return reject(new Error(err.error)); });
|
|
281
|
-
}).catch(function (err) {
|
|
328
|
+
}).catch(function (err) {
|
|
329
|
+
if (_this.cartService.handleCartMutationError(err, cartContext.token))
|
|
330
|
+
return undefined;
|
|
331
|
+
return console.error(err);
|
|
332
|
+
})];
|
|
282
333
|
case 1: return [2 /*return*/, _a.sent()];
|
|
283
334
|
}
|
|
284
335
|
});
|
|
@@ -540,4 +591,4 @@ var ShipmentService = /** @class */ (function (_super) {
|
|
|
540
591
|
return ShipmentService;
|
|
541
592
|
}(StepService));
|
|
542
593
|
export { ShipmentService };
|
|
543
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcG1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jaGVja291dC9zaGlwbWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWdDLE1BQU0sTUFBTSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxJQUFJLEVBQVksTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRWxFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBR3pGO0lBQXFDLG1DQUFXO0lBaUM1Qyx5QkFBb0IsVUFBNkIsRUFBVSxXQUFvQyxFQUFVLG9CQUFpRCxFQUFVLGdCQUFrQyxFQUMxTCxNQUFpQixFQUFVLFdBQXdCLEVBQVUsYUFBNEIsRUFBVSxlQUFnQztRQUQvSSxZQUVJLGtCQUFN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QyxPQUFDLFFBQVEsMENBQUUsS0FBSyxFQUMvQyxhQUFhLEVBQUUsYUFBYSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBQyxRQUFRLDBDQUFFLGFBQWEsSUFDakY7SUFDTixDQUFDO0lBRU8seURBQStCLEdBQXZDLFVBQTJFLElBQU87UUFDOUUsSUFBTSxlQUE4QyxFQUE1QyxnQ0FBYSxFQUFFLG9DQUE2QixDQUFDO1FBQ3JELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFsUkQ7O09BRUc7SUFDVyxnQ0FBZ0IsR0FBRyxLQUFLLENBQUM7O2dCQVlQLGlCQUFpQjtnQkFBdUIsdUJBQXVCO2dCQUFnQywyQkFBMkI7Z0JBQTRCLGdCQUFnQjtnQkFDbEwsU0FBUztnQkFBdUIsV0FBVztnQkFBeUIsYUFBYTtnQkFBMkIsZUFBZTs7SUFsQ3RJLGVBQWU7UUFEM0IsVUFBVSxFQUFFO09BQ0EsZUFBZSxDQW9VM0I7SUFBRCxzQkFBQztDQUFBLEFBcFVELENBQXFDLFdBQVcsR0FvVS9DO1NBcFVZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG9mLCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2UsIHRhcCwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi9jYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgQ2hlY2tvdXRQcm9jZXNzU3RhdGUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NoZWNrb3V0LXByb2Nlc3Mtc3RhdGUnO1xuaW1wb3J0IHsgU2hpcG1lbnREYXRhVHJhbnNmb3JtZXIgfSBmcm9tICcuLi8uLi91dGlscy9zaGlwbWVudC10cmFuc2Zvcm1lci5zZXJ2aWNlJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yZXNTZXJ2aWNlIH0gZnJvbSAnLi4vc3RvcmVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hlY2tvdXRTZXJ2aWNlIH0gZnJvbSAnLi9jaGVja291dC5zZXJ2aWNlJztcbmltcG9ydCB7IFN0ZXBTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jaGVja291dC9zdGVwLXNlcnZpY2UnO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlIH0gZnJvbSAnLi4vYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2hpcHBpbmdPcHRpb25Db250cmFjdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvc2hpcHBpbmctb3B0aW9uJztcbmltcG9ydCB7IFNoaXBwaW5nUHJpY2VEaXNwbGF5U2VydmljZSB9IGZyb20gJy4uLy4uL3V0aWxzL3NoaXBwaW5nLXByaWNlLWRpc3BsYXkuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTaGlwbWVudFNlcnZpY2UgZXh0ZW5kcyBTdGVwU2VydmljZSB7XG5cbiAgICBwcml2YXRlIHN0YXRlU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2hlY2tvdXRQcm9jZXNzU3RhdGU+KHsgZG9pbmc6IGZhbHNlLCBvazogZmFsc2UsIGRhdGE6IG51bGwgfSk7XG4gICAgcHJpdmF0ZSBtZXRob2RzU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihbXSk7XG4gICAgcHJpdmF0ZSBjb3N0c1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oW10pO1xuICAgIHByaXZhdGUgZXJyb3JTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICAgIHB1YmxpYyBidXR0b25zRGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgb3JkZXI7XG5cbiAgICBwcml2YXRlIGJhc2VBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvJyArICdjaGVja291dC8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKTtcblxuICAgIHB1YmxpYyBzdGF0ZSA9IHRoaXMuc3RhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBtZXRob2RzID0gdGhpcy5tZXRob2RzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgY29zdHMgPSB0aGlzLmNvc3RzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgZXJyb3IkID0gdGhpcy5lcnJvclN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBtb3JlSW5mb0luTWV0aG9kIHBvciBkZWZlY3RvIHN1IGVzdGFkbyBlcyBmYWxzZSwgc2kgc2UgZGVzZWEgcXVlIHZpc3VhbGljZSBpbmZvcm1hY2nDs24gYWRpY2lvbmFsIGRlIGNhZGEgbcOpdG9kbyBkZSBlbnZpw7MgYXNpZ25hciB0cnVlLlxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgbW9yZUluZm9Jbk1ldGhvZCA9IGZhbHNlO1xuXG5cbiAgICBwdWJsaWMgc2hpcG1lbnRNZXRob2RzQXBpID0gKCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL3NoaXBwaW5nJztcbiAgICBwdWJsaWMgc2hpcHBpbmdPcHRpb25zQXBpID0gKCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL3NoaXBwaW5nLW9wdGlvbnMnO1xuICAgIHB1YmxpYyBwdXRTaGlwcGluZ09wdGlvbkFwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9zaGlwcGluZy1vcHRpb24nO1xuXG4gICAgcHVibGljIHBlcnNpc3RTaGlwbWVudEFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9hbmRyZWFuaS8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSArICcvc2hpcCc7XG4gICAgcHVibGljIHB1dFNoaXBtZW50QXBpID0gKCkgPT4gdGhpcy5iYXNlQXBpKCkgKyAnL3NoaXBwaW5nLycgKyB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpLmRhdGEubWV0aG9kO1xuICAgIHB1YmxpYyBwdXRDb250cmFjdEFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9jaGVja291dC8nICsgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSArICcvc2hpcHBpbmctY29udHJhY3QnO1xuICAgIHB1YmxpYyBjYWxjdWxhdGVkQ29zdHNBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvY2FydHMvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkgKyAnL211bHRpcGxlLWVzdGltYXRlZC1zaGlwcGluZy1jb3N0JztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UsIHByaXZhdGUgdHJhbnNmb3JtZXI6IFNoaXBtZW50RGF0YVRyYW5zZm9ybWVyLCBwcml2YXRlIHNoaXBwaW5nUHJpY2VEaXNwbGF5OiBTaGlwcGluZ1ByaWNlRGlzcGxheVNlcnZpY2UsIHByaXZhdGUgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBjb25zdHM6IENvbnN0YW50cywgcHJpdmF0ZSBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsIHByaXZhdGUgc3RvcmVzU2VydmljZTogU3RvcmVzU2VydmljZSwgcHJpdmF0ZSBjaGVja291dFNlcnZpY2U6IENoZWNrb3V0U2VydmljZSkge1xuICAgICAgICBzdXBlcihjaGVja291dFNlcnZpY2UpO1xuICAgIH1cblxuICAgIGdldFNoaXBtZW50TWV0aG9kcyA9ICgpID0+IHtcbiAgICAgICAgLy8gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLnNoaXBtZW50TWV0aG9kc0FwaSgpKS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAvLyAgICAgcmVzID0+IHRoaXMubWV0aG9kc1N1YmplY3QubmV4dCh0aGlzLnJlc3BvbnNlVG9MaXN0KHJlcykpXG4gICAgICAgIC8vICkuY2F0Y2goZXJyID0+IHRoaXMubWV0aG9kc1N1YmplY3QubmV4dChbXSkpXG4gICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24uZ2V0RXJyb3JOb3RIYW5kbGVyKHRoaXMuc2hpcG1lbnRNZXRob2RzQXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLnJlc3BvbnNlVG9MaXN0KHJlcykgfHwgW107XG4gICAgICAgICAgICAgICAgdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KGxpc3QpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZHNTdWJqZWN0Lm5leHQoW10pXG4gICAgICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICApLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgIHRoaXMubWV0aG9kc1N1YmplY3QubmV4dChbXSlcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfSlcbiAgICB9XG5cbiAgICBnZXRTaGlwcGluZ09wdGlvbnMgPSAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNvbnN0cy5nZXRDaGVja291dFZpZXcoKSAhPT0gJ3NpbmdsZScpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbm5lY3Rpb24uZ2V0RXJyb3JOb3RIYW5kbGVyKHRoaXMuc2hpcHBpbmdPcHRpb25zQXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICBhc3luYyByZXMgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpc3QgPSBhd2FpdCB0aGlzLm5vcm1hbGl6ZVNoaXBwaW5nT3B0aW9ucyhyZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kc1N1YmplY3QubmV4dChsaXN0Lm1hcChlbnRyeSA9PiBlbnRyeS5tZXRob2QpLmZpbHRlcihCb29sZWFuKSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZHNTdWJqZWN0Lm5leHQoW10pO1xuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCgnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICB0aGlzLm1ldGhvZHNTdWJqZWN0Lm5leHQoW10pO1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9KVxuICAgIH1cblxuXG4gICAgc2V0TWV0aG9kID0gYXN5bmMgKG1ldGhvZCkgPT4ge1xuICAgICAgICAvLyBEZXNoYWJpbGl0YXIgdG9kb3MgbG9zIGJvdG9uZXNcbiAgICAgICAgdGhpcy5idXR0b25zRGlzYWJsZWQgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQobnVsbCk7XG4gICAgICAgIHRoaXMuY29zdHNTdWJqZWN0Lm5leHQoW10pO1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHsgZG9pbmc6IHRydWUsIG9rOiBmYWxzZSwgZGF0YTogeyBtZXRob2QgfSB9KTtcblxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5wdXRTaGlwbWVudCgpO1xuICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQXNvY2lhdGVkRGF0YShyZXMpO1xuICAgICAgICAgICAgdGhpcy5vcmRlciA9IHJlcztcbiAgICAgICAgICAgIGNvbnN0IGNvc3RzID0gYXdhaXQgdGhpcy5nZXRDYWxjdWxhdGVkQ29zdHMoKTtcbiAgICAgICAgICAgIHRoaXMubW9kaWZ5Q29zdHNSZXNwb25zZShjb3N0cywgdGhpcy5nZXRVc2VyRGF0YSgpPy5zaGlwcGluZ0FkZHJlc3M/LnBvc3Rjb2RlLCBtZXRob2QpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVyci5lcnJvcik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAvLyBIYWJpbGl0YXIgdG9kb3MgbG9zIGJvdG9uZXNcbiAgICAgICAgICAgIHRoaXMuYnV0dG9uc0Rpc2FibGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRNZXRob2RPbmx5ID0gYXN5bmMgKG1ldGhvZCkgPT4ge1xuICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KG51bGwpO1xuICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHsgZG9pbmc6IHRydWUsIG9rOiBmYWxzZSwgZGF0YTogeyBtZXRob2QgfSB9KTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucHV0U2hpcG1lbnQoKTtcbiAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnVwZGF0ZUFzb2NpYXRlZERhdGEocmVzKTtcbiAgICAgICAgICAgIHRoaXMub3JkZXIgPSByZXM7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCgnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyLmVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFNoaXBwaW5nT3B0aW9uID0gYXN5bmMgKFxuICAgICAgICBwYXlsb2FkOiB7IG1ldGhvZDogc3RyaW5nOyBvcHRpb246IHN0cmluZzsgY29udHJhY3Q6IHN0cmluZzsgcHJpY2U6IG51bWJlcjsgb3JpZ2luYWxQcmljZT86IG51bWJlciB8IG51bGwgfSxcbiAgICAgICAgc3RlcERhdGE6IGFueSA9IHBheWxvYWRcbiAgICApID0+IHtcbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHNhbml0aXplZFBheWxvYWQgPSB0aGlzLnN0cmlwRnJvbnRlbmRPbmx5U2hpcHBpbmdGaWVsZHMocGF5bG9hZCk7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMucHV0U2hpcHBpbmdPcHRpb25BcGkoKSwgc2FuaXRpemVkUGF5bG9hZCkudG9Qcm9taXNlKCk7XG4gICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVBc29jaWF0ZWREYXRhKHJlcyk7XG4gICAgICAgICAgICB0aGlzLm9yZGVyID0gcmVzO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0U3RlcFJlYWR5KHN0ZXBEYXRhLCByZXMpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVyci5lcnJvcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHB1dFNoaXBtZW50ID0gKCkgPT4gdGhpcy5jb25uZWN0aW9uLnB1dCh0aGlzLnB1dFNoaXBtZW50QXBpKCksIHsgbWV0aG9kOiB0aGlzLnN0YXRlU3ViamVjdC5nZXRWYWx1ZSgpLmRhdGEubWV0aG9kIH0pLnRvUHJvbWlzZSgpO1xuXG4gICAgZ2V0Q2FsY3VsYXRlZENvc3RzID0gKCkgPT4gdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmNhbGN1bGF0ZWRDb3N0c0FwaSgpKS50b1Byb21pc2UoKTtcblxuICAgIHNldENvbnRyYWN0ID0gYXN5bmMgKGNvbnRyYWN0OiBhbnkpID0+IHtcbiAgICAgICAgY29uc3Qgc3RlcERhdGEgPSB7IC4uLmNvbnRyYWN0LCAuLi50aGlzLm90aGVyUGFyYW1zRm9yQ29udHJhY3QoY29udHJhY3QpIH07XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLnN0cmlwRnJvbnRlbmRPbmx5U2hpcHBpbmdGaWVsZHMoc3RlcERhdGEpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jb25uZWN0aW9uLnB1dCh0aGlzLnB1dENvbnRyYWN0QXBpKCksIGRhdGEpXG4gICAgICAgIC50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgb3JkZXIgPT4ge1xuICAgICAgICAgICAgICAgLy8gIHRoaXMuYW5hbHl0aWNzU2VydmljZS5jYWxsRXZlbnQoJ3NoaXBwaW5nX2luZm8nLCBvcmRlcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0U3RlcFJlYWR5KHN0ZXBEYXRhLCBvcmRlcil9LFxuICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmVqZWN0KG5ldyBFcnJvcihlcnIuZXJyb3IpKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgKS5jYXRjaChlcnIgPT4gY29uc29sZS5lcnJvcihlcnIpKVxuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiAmJiB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8vIFVUSUxTXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gcmVzcG9uc2UgRGUgYXBpIGRlIHNvbGljaXR1ZCBkZSBjb3N0b3MgcG9yIG1ldG9kbyBkZSBlbnbDrW8gc2VsZWNjaW9uYWRvXG4gICAgICogQHBhcmFtIHBvc3RfY29kZSBJbmRpY2FkbyBlbiBlbCBwYXNvIGRlIEFkZHJlc3NpbmcgKGRhdG9zIHBlcnNvbmFsZXMgeSBkZSBmYWN0dXJhY2nDs24pXG4gICAgICogQHBhcmFtIG1ldGhvZCBNZXRvZG8gZGUgZW52w61vIHNlbGVjY2lvbmFkb1xuICAgICAqL1xuICAgIG1vZGlmeUNvc3RzUmVzcG9uc2UgPSBhc3luYyAocmVzcG9uc2UsIHBvc3RfY29kZSwgbWV0aG9kKSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2UgfHwgIXJlc3BvbnNlLm11bHRpcGxlUHJpY2VzKSB7XG4gICAgICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgIHRoaXMuY29zdHNTdWJqZWN0Lm5leHQoW10pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvc3RzID0gYXdhaXQgdGhpcy5idWlsZENvc3RzRnJvbVJlc3BvbnNlKHJlc3BvbnNlLCBtZXRob2QpO1xuICAgICAgICB0aGlzLmNvc3RzU3ViamVjdC5uZXh0KGNvc3RzKTtcbiAgICB9XG5cbiAgICBidWlsZENvc3RzRnJvbVJlc3BvbnNlID0gYXN5bmMgKHJlc3BvbnNlLCBtZXRob2QpID0+IHtcbiAgICAgICAgY29uc3QgcmVzdWx0ID0gcmVzcG9uc2U/Lm11bHRpcGxlUHJpY2VzIHx8IFtdO1xuICAgICAgICBsZXQgYnJhbmNoX2RlbGl2ZXJ5ID0gcmVzdWx0LmZpbmRJbmRleChzdWJtZXRob2QgPT4gc3VibWV0aG9kLm5hbWUgPT0gJ2JyYW5jaF9kZWxpdmVyeScpO1xuICAgICAgICBpZiAoYnJhbmNoX2RlbGl2ZXJ5ICE9IC0xKSB7XG4gICAgICAgICAgICByZXN1bHRbYnJhbmNoX2RlbGl2ZXJ5XS5jb250cmFjdHMgPSByZXN1bHRbYnJhbmNoX2RlbGl2ZXJ5XS5jb250cmFjdHMubWFwKGNvbnRyYWN0ID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkQ29udHJhY3QgPSB0aGlzLm5vcm1hbGl6ZVNoaXBwaW5nQ29udHJhY3QoY29udHJhY3QpO1xuICAgICAgICAgICAgICAgIGxldCBicmFuY2hfcHJvcGVydHkgPSBjb250cmFjdC5icmFuY2hfcHJvcGVydHkgfHwge307XG4gICAgICAgICAgICAgICAgbGV0IGFkZHJlc3NfZGF0YSA9IGJyYW5jaF9wcm9wZXJ0eS5hZGRyZXNzIHx8IHt9O1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0OiAnYnJhbmNoX2RlbGl2ZXJ5JyxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogbm9ybWFsaXplZENvbnRyYWN0Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHByaWNlOiBub3JtYWxpemVkQ29udHJhY3QucHJpY2UsXG4gICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsUHJpY2U6IG5vcm1hbGl6ZWRDb250cmFjdC5vcmlnaW5hbFByaWNlLFxuICAgICAgICAgICAgICAgICAgICAuLi5hZGRyZXNzX2RhdGEsXG4gICAgICAgICAgICAgICAgICAgIC4uLmJyYW5jaF9wcm9wZXJ0eSxcbiAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWQ6IChhZGRyZXNzX2RhdGEuc3RyZWV0IHx8ICcnKSArICcgTsKwICcgKyAoYWRkcmVzc19kYXRhLm51bWJlciB8fCAnJylcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1ldGhvZC5pbmNsdWRlcygncGlja3VwX3N0b3JlJykpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0b3JlcyA9IGF3YWl0IHRoaXMuc3RvcmVzU2VydmljZS5zdG9yZXMucGlwZSh0YWtlKDEpKS50b1Byb21pc2UoKTtcbiAgICAgICAgICAgIGlmIChzdG9yZXMgJiYgc3RvcmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5mb3JFYWNoKHBpY2t1cF9zdG9yZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHBpY2t1cF9zdG9yZS5jb250cmFjdHMuZm9yRWFjaChjb250cmFjdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50X3N0b3JlID0gc3RvcmVzLmZpbmQoc3RvcmUgPT4gc3RvcmUuY29kZSA9PSBjb250cmFjdC5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY3VycmVudF9zdG9yZSkgY29udHJhY3QuZGV0YWlsID0gJ1NpbiBpbmZvcm1hY2nDs24nO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBjb250cmFjdC5kZXRhaWwgPSBjdXJyZW50X3N0b3JlLm5hbWUgKyAnIC0gJyArIGN1cnJlbnRfc3RvcmUuYWRkcmVzcztcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjb250cmFjdDtcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgZ2V0Q29zdHNGb3JNZXRob2QgPSBhc3luYyAobWV0aG9kKSA9PiB7XG4gICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoeyBkb2luZzogdHJ1ZSwgb2s6IGZhbHNlLCBkYXRhOiB7IG1ldGhvZCB9IH0pO1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnB1dFNoaXBtZW50KCk7XG4gICAgICAgIHJlcyAmJiB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVBc29jaWF0ZWREYXRhKHJlcyk7XG4gICAgICAgIGNvbnN0IGNvc3RzID0gYXdhaXQgdGhpcy5nZXRDYWxjdWxhdGVkQ29zdHMoKTtcbiAgICAgICAgaWYgKCFjb3N0cyB8fCAhY29zdHMubXVsdGlwbGVQcmljZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJ1aWxkQ29zdHNGcm9tUmVzcG9uc2UoY29zdHMsIG1ldGhvZCk7XG4gICAgfVxuXG4gICAgcmVzcG9uc2VUb0xpc3QgPSAocmVzcG9uc2UpID0+XG4gICAgICAgIChyZXNwb25zZS5zaGlwbWVudHMgJiYgcmVzcG9uc2Uuc2hpcG1lbnRzLmxlbmd0aCA+IDApICYmIE9iamVjdC5rZXlzKHJlc3BvbnNlLnNoaXBtZW50c1swXS5tZXRob2RzKS5tYXAoa2V5ID0+IHJlc3BvbnNlLnNoaXBtZW50c1swXS5tZXRob2RzW2tleV0pO1xuXG4gICAgcmVzcG9uc2VUb1NoaXBwaW5nT3B0aW9ucyA9IChyZXNwb25zZSkgPT5cbiAgICAgICAgKHJlc3BvbnNlLnNoaXBtZW50cyAmJiByZXNwb25zZS5zaGlwbWVudHMubGVuZ3RoID4gMCkgJiYgT2JqZWN0LmtleXMocmVzcG9uc2Uuc2hpcG1lbnRzWzBdLm1ldGhvZHMpLm1hcChrZXkgPT4gcmVzcG9uc2Uuc2hpcG1lbnRzWzBdLm1ldGhvZHNba2V5XSk7XG5cbiAgICBwcml2YXRlIGFzeW5jIG5vcm1hbGl6ZVNoaXBwaW5nT3B0aW9ucyhyZXNwb25zZSkge1xuICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5yZXNwb25zZVRvU2hpcHBpbmdPcHRpb25zKHJlc3BvbnNlKSB8fCBbXTtcbiAgICAgICAgbGV0IHN0b3JlcyA9IG51bGw7XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgbGlzdCkge1xuICAgICAgICAgICAgY29uc3QgbWV0aG9kQ29kZSA9IGVudHJ5Py5tZXRob2Q/LmNvZGUgfHwgJyc7XG4gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gZW50cnk/Lm9wdGlvbnMgfHwgW107XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udHJhY3RzID0gb3B0aW9uPy5jb250cmFjdHMgfHwgW107XG4gICAgICAgICAgICAgICAgaWYgKG9wdGlvbj8ubmFtZSA9PT0gJ2JyYW5jaF9kZWxpdmVyeScpIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uLmNvbnRyYWN0cyA9IGNvbnRyYWN0cy5tYXAoY29udHJhY3QgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgbm9ybWFsaXplZENvbnRyYWN0ID0gdGhpcy5ub3JtYWxpemVTaGlwcGluZ0NvbnRyYWN0KGNvbnRyYWN0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJyYW5jaCA9IGNvbnRyYWN0Py5icmFuY2hfcHJvcGVydHkgfHwge307XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhZGRyZXNzID0gYnJhbmNoLmFkZHJlc3MgfHwge307XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJlZXQgPSBhZGRyZXNzLnN0cmVldCB8fCAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG51bWJlciA9IGFkZHJlc3MubnVtYmVyIHx8ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29tcHV0ZWQgPSBbc3RyZWV0LCBudW1iZXIgPyBgTsKwICR7bnVtYmVyfWAgOiAnJ10uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJyAnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uY29udHJhY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ubm9ybWFsaXplZENvbnRyYWN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFkZHJlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYnJhbmNoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyYWN0OiBjb250cmFjdD8uY29udHJhY3QgfHwgb3B0aW9uLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogY29udHJhY3Q/Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IG5vcm1hbGl6ZWRDb250cmFjdC5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbFByaWNlOiBub3JtYWxpemVkQ29udHJhY3Qub3JpZ2luYWxQcmljZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlZDogY29tcHV0ZWQgfHwgY29udHJhY3QuY29tcHV0ZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAobWV0aG9kQ29kZS5pbmNsdWRlcygncGlja3VwX3N0b3JlJykpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzdG9yZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlcyA9IGF3YWl0IHRoaXMuc3RvcmVzU2VydmljZS5zdG9yZXMucGlwZSh0YWtlKDEpKS50b1Byb21pc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoc3RvcmVzICYmIHN0b3Jlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi5jb250cmFjdHMgPSBjb250cmFjdHMubWFwKGNvbnRyYWN0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50U3RvcmUgPSBzdG9yZXMuZmluZChzdG9yZSA9PiBzdG9yZS5jb2RlID09IGNvbnRyYWN0Lm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY3VycmVudFN0b3JlKSByZXR1cm4geyAuLi5jb250cmFjdCwgZGV0YWlsOiAnU2luIGluZm9ybWFjacOzbicgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5jb250cmFjdCwgZGV0YWlsOiBjdXJyZW50U3RvcmUubmFtZSArICcgLSAnICsgY3VycmVudFN0b3JlLmFkZHJlc3MgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsaXN0O1xuICAgIH1cblxuICAgIHByaXZhdGUgbm9ybWFsaXplU2hpcHBpbmdDb250cmFjdChjb250cmFjdDogU2hpcHBpbmdPcHRpb25Db250cmFjdCB8IGFueSk6IFNoaXBwaW5nT3B0aW9uQ29udHJhY3Qge1xuICAgICAgICBjb25zdCBwcmljZSA9IHRoaXMuc2hpcHBpbmdQcmljZURpc3BsYXkubm9ybWFsaXplUHJpY2VWYWx1ZShjb250cmFjdD8ucHJpY2UpO1xuICAgICAgICBjb25zdCBvcmlnaW5hbFByaWNlID0gdGhpcy5zaGlwcGluZ1ByaWNlRGlzcGxheS5ub3JtYWxpemVQcmljZVZhbHVlKGNvbnRyYWN0Py5vcmlnaW5hbFByaWNlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmNvbnRyYWN0LFxuICAgICAgICAgICAgcHJpY2U6IHByaWNlICE9PSBudWxsID8gcHJpY2UgOiBjb250cmFjdD8ucHJpY2UsXG4gICAgICAgICAgICBvcmlnaW5hbFByaWNlOiBvcmlnaW5hbFByaWNlICE9PSBudWxsID8gb3JpZ2luYWxQcmljZSA6IGNvbnRyYWN0Py5vcmlnaW5hbFByaWNlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdHJpcEZyb250ZW5kT25seVNoaXBwaW5nRmllbGRzPFQgZXh0ZW5kcyB7IG9yaWdpbmFsUHJpY2U/OiBhbnkgfT4oZGF0YTogVCk6IE9taXQ8VCwgJ29yaWdpbmFsUHJpY2UnPiB7XG4gICAgICAgIGNvbnN0IHsgb3JpZ2luYWxQcmljZSwgLi4ucmVzdCB9ID0gZGF0YSB8fCAoe30gYXMgVCk7XG4gICAgICAgIHJldHVybiByZXN0O1xuICAgIH1cblxuICAgIG90aGVyUGFyYW1zRm9yQ29udHJhY3QgPSAoY29udHJhY3QpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHNoaXBwaW5nX21ldGhvZF9jb250cmFjdDpcbiAgICAgICAgICAgICAgICBjb250cmFjdC5zaGlwcGluZ19tZXRob2RfY29udHJhY3RcbiAgICAgICAgICAgICAgICAgICAgPyBjb250cmFjdC5zaGlwcGluZ19tZXRob2RfY29udHJhY3RcbiAgICAgICAgICAgICAgICAgICAgOiBjb250cmFjdC5jb250cmFjdCArICdfJyArIGNvbnRyYWN0Lm5hbWUsXG4gICAgICAgICAgICBzaGlwcGluZ19tZXRob2RfYnJhbmNoX2NvZGU6XG4gICAgICAgICAgICAgICAgY29udHJhY3Quc2hpcHBpbmdfbWV0aG9kX2JyYW5jaF9jb2RlXG4gICAgICAgICAgICAgICAgICAgID8gY29udHJhY3Quc2hpcHBpbmdfbWV0aG9kX2JyYW5jaF9jb2RlXG4gICAgICAgICAgICAgICAgICAgIDogKGNvbnRyYWN0LmNvbnRyYWN0ICYmIGNvbnRyYWN0LmNvbnRyYWN0ID09IFwiYnJhbmNoX2RlbGl2ZXJ5XCIpID8gY29udHJhY3QubnVtYmVyIDogY29udHJhY3QubmFtZVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0QnJhbmNoT2ZmaWNlcyA9IChtZXRob2QpID0+IHRoaXMuY29ubmVjdGlvbi5nZXRPdXRzaWRlcih0aGlzLnRyYW5zZm9ybWVyLmdldEFwaShtZXRob2QudG9Mb3dlckNhc2UoKSkpLnRvUHJvbWlzZSgpO1xuXG4gICAgZm9ybWF0VW5uZWNlc2FyeURvY3VtZW50ID0gKGRhdGEpID0+IHtcbiAgICAgICAgaWYgKGRhdGEuc2hpcHBpbmdBZGRyZXNzPy5kb2N1bWVudE51bWJlcj8ubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIGRhdGEuc2hpcHBpbmdBZGRyZXNzLmRvY3VtZW50TnVtYmVyID0gJzAwMDAwMDAwJ1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLnNoaXBwaW5nQWRkcmVzcz8uZG9jdW1lbnRUeXBlPy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgZGF0YS5zaGlwcGluZ0FkZHJlc3MuZG9jdW1lbnRUeXBlID0gJ1hYWCdcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5iaWxsaW5nQWRkcmVzcyAmJiBkYXRhLmJpbGxpbmdBZGRyZXNzLmRvY3VtZW50TnVtYmVyPy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgZGF0YS5iaWxsaW5nQWRkcmVzcy5kb2N1bWVudE51bWJlciA9ICcwMDAwMDAwMCdcbiAgICAgICAgfVxuICAgICAgICBpZiAoZGF0YS5iaWxsaW5nQWRkcmVzcyAmJiBkYXRhLmJpbGxpbmdBZGRyZXNzLmRvY3VtZW50VHlwZT8ubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgIGRhdGEuYmlsbGluZ0FkZHJlc3MuZG9jdW1lbnRUeXBlID0gJ1hYWCdcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGF0YVxuICAgIH1cbn1cbiJdfQ==
|
|
594
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hpcG1lbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jaGVja291dC9zaGlwbWVudC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWdDLE1BQU0sTUFBTSxDQUFDO0FBQ3JFLE9BQU8sRUFBRSxJQUFJLEVBQVksTUFBTSxnQkFBZ0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTlDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRWxFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBRXhELE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBR3pGO0lBQXFDLG1DQUFXO0lBaUM1Qyx5QkFBb0IsVUFBNkIsRUFBVSxXQUFvQyxFQUFVLG9CQUFpRCxFQUFVLGdCQUFrQyxFQUMxTCxNQUFpQixFQUFVLFdBQXdCLEVBQVUsYUFBNEIsRUFBVSxlQUFnQztRQUQvSSxZQUVJLGtCQUFN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UCxpQkFBaUI7Z0JBQXVCLHVCQUF1QjtnQkFBZ0MsMkJBQTJCO2dCQUE0QixnQkFBZ0I7Z0JBQ2xMLFNBQVM7Z0JBQXVCLFdBQVc7Z0JBQXlCLGFBQWE7Z0JBQTJCLGVBQWU7O0lBbEN0SSxlQUFlO1FBRDNCLFVBQVUsRUFBRTtPQUNBLGVBQWUsQ0E4VzNCO0lBQUQsc0JBQUM7Q0FBQSxBQTlXRCxDQUFxQyxXQUFXLEdBOFcvQztTQTlXWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBvZiwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlLCB0YXAsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2FydC5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uL2NvcmUuY29uc3RzJztcbmltcG9ydCB7IENoZWNrb3V0UHJvY2Vzc1N0YXRlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jaGVja291dC1wcm9jZXNzLXN0YXRlJztcbmltcG9ydCB7IFNoaXBtZW50RGF0YVRyYW5zZm9ybWVyIH0gZnJvbSAnLi4vLi4vdXRpbHMvc2hpcG1lbnQtdHJhbnNmb3JtZXIuc2VydmljZSc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3RvcmVzU2VydmljZSB9IGZyb20gJy4uL3N0b3Jlcy5zZXJ2aWNlJztcbmltcG9ydCB7IENoZWNrb3V0U2VydmljZSB9IGZyb20gJy4vY2hlY2tvdXQuc2VydmljZSc7XG5pbXBvcnQgeyBTdGVwU2VydmljZSB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY2hlY2tvdXQvc3RlcC1zZXJ2aWNlJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uL2FuYWx5dGljcy5zZXJ2aWNlJztcbmltcG9ydCB7IFNoaXBwaW5nT3B0aW9uQ29udHJhY3QgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3NoaXBwaW5nLW9wdGlvbic7XG5pbXBvcnQgeyBTaGlwcGluZ1ByaWNlRGlzcGxheVNlcnZpY2UgfSBmcm9tICcuLi8uLi91dGlscy9zaGlwcGluZy1wcmljZS1kaXNwbGF5LnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2hpcG1lbnRTZXJ2aWNlIGV4dGVuZHMgU3RlcFNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBzdGF0ZVN1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PENoZWNrb3V0UHJvY2Vzc1N0YXRlPih7IGRvaW5nOiBmYWxzZSwgb2s6IGZhbHNlLCBkYXRhOiBudWxsIH0pO1xuICAgIHByaXZhdGUgbWV0aG9kc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oW10pO1xuICAgIHByaXZhdGUgY29zdHNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnk+KFtdKTtcbiAgICBwcml2YXRlIGVycm9yU3ViamVjdCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBwdWJsaWMgYnV0dG9uc0Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIG9yZGVyO1xuXG4gICAgcHJpdmF0ZSBiYXNlQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnLycgKyAnY2hlY2tvdXQvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCk7XG5cbiAgICBwdWJsaWMgc3RhdGUgPSB0aGlzLnN0YXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgbWV0aG9kcyA9IHRoaXMubWV0aG9kc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGNvc3RzID0gdGhpcy5jb3N0c1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gICAgcHVibGljIGVycm9yJCA9IHRoaXMuZXJyb3JTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0gbW9yZUluZm9Jbk1ldGhvZCBwb3IgZGVmZWN0byBzdSBlc3RhZG8gZXMgZmFsc2UsIHNpIHNlIGRlc2VhIHF1ZSB2aXN1YWxpY2UgaW5mb3JtYWNpw7NuIGFkaWNpb25hbCBkZSBjYWRhIG3DqXRvZG8gZGUgZW52acOzIGFzaWduYXIgdHJ1ZS5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIG1vcmVJbmZvSW5NZXRob2QgPSBmYWxzZTtcblxuXG4gICAgcHVibGljIHNoaXBtZW50TWV0aG9kc0FwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9zaGlwcGluZyc7XG4gICAgcHVibGljIHNoaXBwaW5nT3B0aW9uc0FwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9zaGlwcGluZy1vcHRpb25zJztcbiAgICBwdWJsaWMgcHV0U2hpcHBpbmdPcHRpb25BcGkgPSAoKSA9PiB0aGlzLmJhc2VBcGkoKSArICcvc2hpcHBpbmctb3B0aW9uJztcblxuICAgIHB1YmxpYyBwZXJzaXN0U2hpcG1lbnRBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvYW5kcmVhbmkvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkgKyAnL3NoaXAnO1xuICAgIHB1YmxpYyBwdXRTaGlwbWVudEFwaSA9ICgpID0+IHRoaXMuYmFzZUFwaSgpICsgJy9zaGlwcGluZy8nICsgdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKS5kYXRhLm1ldGhvZDtcbiAgICBwdWJsaWMgcHV0Q29udHJhY3RBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvY2hlY2tvdXQvJyArIHRoaXMuY2FydFNlcnZpY2UuZ2V0Q2FydFRva2VuKCkgKyAnL3NoaXBwaW5nLWNvbnRyYWN0JztcbiAgICBwdWJsaWMgY2FsY3VsYXRlZENvc3RzQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2NhcnRzLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmdldENhcnRUb2tlbigpICsgJy9tdWx0aXBsZS1lc3RpbWF0ZWQtc2hpcHBpbmctY29zdCc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlLCBwcml2YXRlIHRyYW5zZm9ybWVyOiBTaGlwbWVudERhdGFUcmFuc2Zvcm1lciwgcHJpdmF0ZSBzaGlwcGluZ1ByaWNlRGlzcGxheTogU2hpcHBpbmdQcmljZURpc3BsYXlTZXJ2aWNlLCBwcml2YXRlIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgY29uc3RzOiBDb25zdGFudHMsIHByaXZhdGUgY2FydFNlcnZpY2U6IENhcnRTZXJ2aWNlLCBwcml2YXRlIHN0b3Jlc1NlcnZpY2U6IFN0b3Jlc1NlcnZpY2UsIHByaXZhdGUgY2hlY2tvdXRTZXJ2aWNlOiBDaGVja291dFNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoY2hlY2tvdXRTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBnZXRTaGlwbWVudE1ldGhvZHMgPSAoKSA9PiB7XG4gICAgICAgIC8vIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5zaGlwbWVudE1ldGhvZHNBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgLy8gICAgIHJlcyA9PiB0aGlzLm1ldGhvZHNTdWJqZWN0Lm5leHQodGhpcy5yZXNwb25zZVRvTGlzdChyZXMpKVxuICAgICAgICAvLyApLmNhdGNoKGVyciA9PiB0aGlzLm1ldGhvZHNTdWJqZWN0Lm5leHQoW10pKVxuICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KG51bGwpO1xuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLmdldEVycm9yTm90SGFuZGxlcih0aGlzLnNoaXBtZW50TWV0aG9kc0FwaSgpKS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5yZXNwb25zZVRvTGlzdChyZXMpIHx8IFtdO1xuICAgICAgICAgICAgICAgIHRoaXMubWV0aG9kc1N1YmplY3QubmV4dChsaXN0KVxuICAgICAgICAgICAgICAgIHJldHVybiBsaXN0O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCgnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KFtdKVxuICAgICAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCgnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICB0aGlzLm1ldGhvZHNTdWJqZWN0Lm5leHQoW10pXG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgZ2V0U2hpcHBpbmdPcHRpb25zID0gKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jb25zdHMuZ2V0Q2hlY2tvdXRWaWV3KCkgIT09ICdzaW5nbGUnKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KG51bGwpO1xuICAgICAgICByZXR1cm4gdGhpcy5jb25uZWN0aW9uLmdldEVycm9yTm90SGFuZGxlcih0aGlzLnNoaXBwaW5nT3B0aW9uc0FwaSgpKS50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgYXN5bmMgcmVzID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsaXN0ID0gYXdhaXQgdGhpcy5ub3JtYWxpemVTaGlwcGluZ09wdGlvbnMocmVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLm1ldGhvZHNTdWJqZWN0Lm5leHQobGlzdC5tYXAoZW50cnkgPT4gZW50cnkubWV0aG9kKS5maWx0ZXIoQm9vbGVhbikpO1xuICAgICAgICAgICAgICAgIHJldHVybiBsaXN0O1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCgnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICAgICAgdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KFtdKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9XG4gICAgICAgICkuY2F0Y2goZXJyID0+IHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgdGhpcy5tZXRob2RzU3ViamVjdC5uZXh0KFtdKTtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfSlcbiAgICB9XG5cblxuICAgIHNldE1ldGhvZCA9IGFzeW5jIChtZXRob2QpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmNhcnRTZXJ2aWNlLmNhbk11dGF0ZUNhcnQoKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBjYXJ0Q29udGV4dCA9IHRoaXMuY2FydFNlcnZpY2UuY2FwdHVyZUNhcnRSZXNwb25zZUNvbnRleHQoKTtcbiAgICAgICAgLy8gRGVzaGFiaWxpdGFyIHRvZG9zIGxvcyBib3RvbmVzXG4gICAgICAgIHRoaXMuYnV0dG9uc0Rpc2FibGVkID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KG51bGwpO1xuICAgICAgICB0aGlzLmNvc3RzU3ViamVjdC5uZXh0KFtdKTtcbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dCh7IGRvaW5nOiB0cnVlLCBvazogZmFsc2UsIGRhdGE6IHsgbWV0aG9kIH0gfSk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucHV0U2hpcG1lbnQoKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5jYXJ0U2VydmljZS5hcHBseUNhcnRSZXNwb25zZShyZXMsIGNhcnRDb250ZXh0LCBmYWxzZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHsgZG9pbmc6IGZhbHNlLCBvazogZmFsc2UsIGRhdGE6IHsgbWV0aG9kIH0gfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jaGVja291dFNlcnZpY2UudXBkYXRlQXNvY2lhdGVkRGF0YShyZXMpO1xuICAgICAgICAgICAgdGhpcy5vcmRlciA9IHJlcztcbiAgICAgICAgICAgIGNvbnN0IGNvc3RzID0gYXdhaXQgdGhpcy5nZXRDYWxjdWxhdGVkQ29zdHMoKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5jYXJ0U2VydmljZS5jYW5NdXRhdGVDYXJ0KCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHsgZG9pbmc6IGZhbHNlLCBvazogZmFsc2UsIGRhdGE6IHsgbWV0aG9kIH0gfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5tb2RpZnlDb3N0c1Jlc3BvbnNlKGNvc3RzLCB0aGlzLmdldFVzZXJEYXRhKCk/LnNoaXBwaW5nQWRkcmVzcz8ucG9zdGNvZGUsIG1ldGhvZCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2FydFNlcnZpY2UuaGFuZGxlQ2FydE11dGF0aW9uRXJyb3IoZXJyLCBjYXJ0Q29udGV4dC50b2tlbikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KG51bGwpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGVTdWJqZWN0Lm5leHQoeyBkb2luZzogZmFsc2UsIG9rOiBmYWxzZSwgZGF0YTogeyBtZXRob2QgfSB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnIuZXJyb3IpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgLy8gSGFiaWxpdGFyIHRvZG9zIGxvcyBib3RvbmVzXG4gICAgICAgICAgICB0aGlzLmJ1dHRvbnNEaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2V0TWV0aG9kT25seSA9IGFzeW5jIChtZXRob2QpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmNhcnRTZXJ2aWNlLmNhbk11dGF0ZUNhcnQoKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBjYXJ0Q29udGV4dCA9IHRoaXMuY2FydFNlcnZpY2UuY2FwdHVyZUNhcnRSZXNwb25zZUNvbnRleHQoKTtcbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dCh7IGRvaW5nOiB0cnVlLCBvazogZmFsc2UsIGRhdGE6IHsgbWV0aG9kIH0gfSk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnB1dFNoaXBtZW50KCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FydFNlcnZpY2UuYXBwbHlDYXJ0UmVzcG9uc2UocmVzLCBjYXJ0Q29udGV4dCwgZmFsc2UpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dCh7IGRvaW5nOiBmYWxzZSwgb2s6IGZhbHNlLCBkYXRhOiB7IG1ldGhvZCB9IH0pO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnVwZGF0ZUFzb2NpYXRlZERhdGEocmVzKTtcbiAgICAgICAgICAgIHRoaXMub3JkZXIgPSByZXM7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2FydFNlcnZpY2UuaGFuZGxlQ2FydE11dGF0aW9uRXJyb3IoZXJyLCBjYXJ0Q29udGV4dC50b2tlbikpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlU3ViamVjdC5uZXh0KHsgZG9pbmc6IGZhbHNlLCBvazogZmFsc2UsIGRhdGE6IHsgbWV0aG9kIH0gfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCgnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyLmVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHNldFNoaXBwaW5nT3B0aW9uID0gYXN5bmMgKFxuICAgICAgICBwYXlsb2FkOiB7IG1ldGhvZDogc3RyaW5nOyBvcHRpb246IHN0cmluZzsgY29udHJhY3Q6IHN0cmluZzsgcHJpY2U6IG51bWJlcjsgb3JpZ2luYWxQcmljZT86IG51bWJlciB8IG51bGwgfSxcbiAgICAgICAgc3RlcERhdGE6IGFueSA9IHBheWxvYWRcbiAgICApID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmNhcnRTZXJ2aWNlLmNhbk11dGF0ZUNhcnQoKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBjYXJ0Q29udGV4dCA9IHRoaXMuY2FydFNlcnZpY2UuY2FwdHVyZUNhcnRSZXNwb25zZUNvbnRleHQoKTtcbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHNhbml0aXplZFBheWxvYWQgPSB0aGlzLnN0cmlwRnJvbnRlbmRPbmx5U2hpcHBpbmdGaWVsZHMocGF5bG9hZCk7XG4gICAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNvbm5lY3Rpb24ucHV0KHRoaXMucHV0U2hpcHBpbmdPcHRpb25BcGkoKSwgc2FuaXRpemVkUGF5bG9hZCkudG9Qcm9taXNlKCk7XG4gICAgICAgICAgICBpZiAoIXRoaXMuY2FydFNlcnZpY2UuYXBwbHlDYXJ0UmVzcG9uc2UocmVzLCBjYXJ0Q29udGV4dCwgZmFsc2UpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNoZWNrb3V0U2VydmljZS51cGRhdGVBc29jaWF0ZWREYXRhKHJlcyk7XG4gICAgICAgICAgICB0aGlzLm9yZGVyID0gcmVzO1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuc2V0U3RlcFJlYWR5KHN0ZXBEYXRhLCByZXMpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmNhcnRTZXJ2aWNlLmhhbmRsZUNhcnRNdXRhdGlvbkVycm9yKGVyciwgY2FydENvbnRleHQudG9rZW4pKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dChudWxsKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICB0aGlzLmVycm9yU3ViamVjdC5uZXh0KCdvcGVyYXRpb24tZXJyb3InKTtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihlcnIuZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwdXRTaGlwbWVudCA9ICgpID0+IHRoaXMuY29ubmVjdGlvbi5wdXQodGhpcy5wdXRTaGlwbWVudEFwaSgpLCB7IG1ldGhvZDogdGhpcy5zdGF0ZVN1YmplY3QuZ2V0VmFsdWUoKS5kYXRhLm1ldGhvZCB9KS50b1Byb21pc2UoKTtcblxuICAgIGdldENhbGN1bGF0ZWRDb3N0cyA9ICgpID0+IHRoaXMuY29ubmVjdGlvbi5nZXRFcnJvck5vdEhhbmRsZXIodGhpcy5jYWxjdWxhdGVkQ29zdHNBcGkoKSkudG9Qcm9taXNlKCkuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICBpZiAodGhpcy5jYXJ0U2VydmljZS5oYW5kbGVDYXJ0TXV0YXRpb25FcnJvcihlcnJvciwgdGhpcy5jYXJ0U2VydmljZS5nZXRDYXJ0VG9rZW4oKSkpIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcblxuICAgIHNldENvbnRyYWN0ID0gYXN5bmMgKGNvbnRyYWN0OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLmNhcnRTZXJ2aWNlLmNhbk11dGF0ZUNhcnQoKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICBjb25zdCBjYXJ0Q29udGV4dCA9IHRoaXMuY2FydFNlcnZpY2UuY2FwdHVyZUNhcnRSZXNwb25zZUNvbnRleHQoKTtcbiAgICAgICAgY29uc3Qgc3RlcERhdGEgPSB7IC4uLmNvbnRyYWN0LCAuLi50aGlzLm90aGVyUGFyYW1zRm9yQ29udHJhY3QoY29udHJhY3QpIH07XG4gICAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLnN0cmlwRnJvbnRlbmRPbmx5U2hpcHBpbmdGaWVsZHMoc3RlcERhdGEpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5jb25uZWN0aW9uLnB1dCh0aGlzLnB1dENvbnRyYWN0QXBpKCksIGRhdGEpXG4gICAgICAgIC50b1Byb21pc2UoKS50aGVuKFxuICAgICAgICAgICAgb3JkZXIgPT4ge1xuICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNhcnRTZXJ2aWNlLmFwcGx5Q2FydFJlc3BvbnNlKG9yZGVyLCBjYXJ0Q29udGV4dCwgZmFsc2UpKSByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAvLyAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmNhbGxFdmVudCgnc2hpcHBpbmdfaW5mbycsIG9yZGVyKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zZXRTdGVwUmVhZHkoc3RlcERhdGEsIG9yZGVyKX0sXG4gICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNhcnRTZXJ2aWNlLmhhbmRsZUNhcnRNdXRhdGlvbkVycm9yKGVyciwgY2FydENvbnRleHQudG9rZW4pKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiByZWplY3QobmV3IEVycm9yKGVyci5lcnJvcikpKVxuICAgICAgICAgICAgfVxuICAgICAgICApLmNhdGNoKGVyciA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5jYXJ0U2VydmljZS5oYW5kbGVDYXJ0TXV0YXRpb25FcnJvcihlcnIsIGNhcnRDb250ZXh0LnRva2VuKSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHJldHVybiBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgIH0pXG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uICYmIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgLy8gVVRJTFNcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSByZXNwb25zZSBEZSBhcGkgZGUgc29saWNpdHVkIGRlIGNvc3RvcyBwb3IgbWV0b2RvIGRlIGVudsOtbyBzZWxlY2Npb25hZG9cbiAgICAgKiBAcGFyYW0gcG9zdF9jb2RlIEluZGljYWRvIGVuIGVsIHBhc28gZGUgQWRkcmVzc2luZyAoZGF0b3MgcGVyc29uYWxlcyB5IGRlIGZhY3R1cmFjacOzbilcbiAgICAgKiBAcGFyYW0gbWV0aG9kIE1ldG9kbyBkZSBlbnbDrW8gc2VsZWNjaW9uYWRvXG4gICAgICovXG4gICAgbW9kaWZ5Q29zdHNSZXNwb25zZSA9IGFzeW5jIChyZXNwb25zZSwgcG9zdF9jb2RlLCBtZXRob2QpID0+IHtcbiAgICAgICAgaWYgKCFyZXNwb25zZSB8fCAhcmVzcG9uc2UubXVsdGlwbGVQcmljZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JTdWJqZWN0Lm5leHQoJ29wZXJhdGlvbi1lcnJvcicpO1xuICAgICAgICAgICAgdGhpcy5jb3N0c1N1YmplY3QubmV4dChbXSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29zdHMgPSBhd2FpdCB0aGlzLmJ1aWxkQ29zdHNGcm9tUmVzcG9uc2UocmVzcG9uc2UsIG1ldGhvZCk7XG4gICAgICAgIHRoaXMuY29zdHNTdWJqZWN0Lm5leHQoY29zdHMpO1xuICAgIH1cblxuICAgIGJ1aWxkQ29zdHNGcm9tUmVzcG9uc2UgPSBhc3luYyAocmVzcG9uc2UsIG1ldGhvZCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSByZXNwb25zZT8ubXVsdGlwbGVQcmljZXMgfHwgW107XG4gICAgICAgIGxldCBicmFuY2hfZGVsaXZlcnkgPSByZXN1bHQuZmluZEluZGV4KHN1Ym1ldGhvZCA9PiBzdWJtZXRob2QubmFtZSA9PSAnYnJhbmNoX2RlbGl2ZXJ5Jyk7XG4gICAgICAgIGlmIChicmFuY2hfZGVsaXZlcnkgIT0gLTEpIHtcbiAgICAgICAgICAgIHJlc3VsdFticmFuY2hfZGVsaXZlcnldLmNvbnRyYWN0cyA9IHJlc3VsdFticmFuY2hfZGVsaXZlcnldLmNvbnRyYWN0cy5tYXAoY29udHJhY3QgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRDb250cmFjdCA9IHRoaXMubm9ybWFsaXplU2hpcHBpbmdDb250cmFjdChjb250cmFjdCk7XG4gICAgICAgICAgICAgICAgbGV0IGJyYW5jaF9wcm9wZXJ0eSA9IGNvbnRyYWN0LmJyYW5jaF9wcm9wZXJ0eSB8fCB7fTtcbiAgICAgICAgICAgICAgICBsZXQgYWRkcmVzc19kYXRhID0gYnJhbmNoX3Byb3BlcnR5LmFkZHJlc3MgfHwge307XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgY29udHJhY3Q6ICdicmFuY2hfZGVsaXZlcnknLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBub3JtYWxpemVkQ29udHJhY3QubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcHJpY2U6IG5vcm1hbGl6ZWRDb250cmFjdC5wcmljZSxcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxQcmljZTogbm9ybWFsaXplZENvbnRyYWN0Lm9yaWdpbmFsUHJpY2UsXG4gICAgICAgICAgICAgICAgICAgIC4uLmFkZHJlc3NfZGF0YSxcbiAgICAgICAgICAgICAgICAgICAgLi4uYnJhbmNoX3Byb3BlcnR5LFxuICAgICAgICAgICAgICAgICAgICBjb21wdXRlZDogKGFkZHJlc3NfZGF0YS5zdHJlZXQgfHwgJycpICsgJyBOwrAgJyArIChhZGRyZXNzX2RhdGEubnVtYmVyIHx8ICcnKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWV0aG9kLmluY2x1ZGVzKCdwaWNrdXBfc3RvcmUnKSkge1xuICAgICAgICAgICAgY29uc3Qgc3RvcmVzID0gYXdhaXQgdGhpcy5zdG9yZXNTZXJ2aWNlLnN0b3Jlcy5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgaWYgKHN0b3JlcyAmJiBzdG9yZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmZvckVhY2gocGlja3VwX3N0b3JlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcGlja3VwX3N0b3JlLmNvbnRyYWN0cy5mb3JFYWNoKGNvbnRyYWN0ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRfc3RvcmUgPSBzdG9yZXMuZmluZChzdG9yZSA9PiBzdG9yZS5jb2RlID09IGNvbnRyYWN0Lm5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50X3N0b3JlKSBjb250cmFjdC5kZXRhaWwgPSAnU2luIGluZm9ybWFjacOzbic7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGNvbnRyYWN0LmRldGFpbCA9IGN1cnJlbnRfc3RvcmUubmFtZSArICcgLSAnICsgY3VycmVudF9zdG9yZS5hZGRyZXNzO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRyYWN0O1xuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBnZXRDb3N0c0Zvck1ldGhvZCA9IGFzeW5jIChtZXRob2QpID0+IHtcbiAgICAgICAgdGhpcy5zdGF0ZVN1YmplY3QubmV4dCh7IGRvaW5nOiB0cnVlLCBvazogZmFsc2UsIGRhdGE6IHsgbWV0aG9kIH0gfSk7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucHV0U2hpcG1lbnQoKTtcbiAgICAgICAgcmVzICYmIHRoaXMuY2hlY2tvdXRTZXJ2aWNlLnVwZGF0ZUFzb2NpYXRlZERhdGEocmVzKTtcbiAgICAgICAgY29uc3QgY29zdHMgPSBhd2FpdCB0aGlzLmdldENhbGN1bGF0ZWRDb3N0cygpO1xuICAgICAgICBpZiAoIWNvc3RzIHx8ICFjb3N0cy5tdWx0aXBsZVByaWNlcykge1xuICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCgnb3BlcmF0aW9uLWVycm9yJyk7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYnVpbGRDb3N0c0Zyb21SZXNwb25zZShjb3N0cywgbWV0aG9kKTtcbiAgICB9XG5cbiAgICByZXNwb25zZVRvTGlzdCA9IChyZXNwb25zZSkgPT5cbiAgICAgICAgKHJlc3BvbnNlLnNoaXBtZW50cyAmJiByZXNwb25zZS5zaGlwbWVudHMubGVuZ3RoID4gMCkgJiYgT2JqZWN0LmtleXMocmVzcG9uc2Uuc2hpcG1lbnRzWzBdLm1ldGhvZHMpLm1hcChrZXkgPT4gcmVzcG9uc2Uuc2hpcG1lbnRzWzBdLm1ldGhvZHNba2V5XSk7XG5cbiAgICByZXNwb25zZVRvU2hpcHBpbmdPcHRpb25zID0gKHJlc3BvbnNlKSA9PlxuICAgICAgICAocmVzcG9uc2Uuc2hpcG1lbnRzICYmIHJlc3BvbnNlLnNoaXBtZW50cy5sZW5ndGggPiAwKSAmJiBPYmplY3Qua2V5cyhyZXNwb25zZS5zaGlwbWVudHNbMF0ubWV0aG9kcykubWFwKGtleSA9PiByZXNwb25zZS5zaGlwbWVudHNbMF0ubWV0aG9kc1trZXldKTtcblxuICAgIHByaXZhdGUgYXN5bmMgbm9ybWFsaXplU2hpcHBpbmdPcHRpb25zKHJlc3BvbnNlKSB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLnJlc3BvbnNlVG9TaGlwcGluZ09wdGlvbnMocmVzcG9uc2UpIHx8IFtdO1xuICAgICAgICBsZXQgc3RvcmVzID0gbnVsbDtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBsaXN0KSB7XG4gICAgICAgICAgICBjb25zdCBtZXRob2RDb2RlID0gZW50cnk/Lm1ldGhvZD8uY29kZSB8fCAnJztcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSBlbnRyeT8ub3B0aW9ucyB8fCBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3Qgb3B0aW9uIG9mIG9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb250cmFjdHMgPSBvcHRpb24/LmNvbnRyYWN0cyB8fCBbXTtcbiAgICAgICAgICAgICAgICBpZiAob3B0aW9uPy5uYW1lID09PSAnYnJhbmNoX2RlbGl2ZXJ5Jykge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb24uY29udHJhY3RzID0gY29udHJhY3RzLm1hcChjb250cmFjdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBub3JtYWxpemVkQ29udHJhY3QgPSB0aGlzLm5vcm1hbGl6ZVNoaXBwaW5nQ29udHJhY3QoY29udHJhY3QpO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYnJhbmNoID0gY29udHJhY3Q/LmJyYW5jaF9wcm9wZXJ0eSB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFkZHJlc3MgPSBicmFuY2guYWRkcmVzcyB8fCB7fTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cmVldCA9IGFkZHJlc3Muc3RyZWV0IHx8ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbnVtYmVyID0gYWRkcmVzcy5udW1iZXIgfHwgJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb21wdXRlZCA9IFtzdHJlZXQsIG51bWJlciA/IGBOwrAgJHtudW1iZXJ9YCA6ICcnXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5jb250cmFjdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5ub3JtYWxpemVkQ29udHJhY3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWRkcmVzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5icmFuY2gsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJhY3Q6IGNvbnRyYWN0Py5jb250cmFjdCB8fCBvcHRpb24ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBjb250cmFjdD8ubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmljZTogbm9ybWFsaXplZENvbnRyYWN0LnByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsUHJpY2U6IG5vcm1hbGl6ZWRDb250cmFjdC5vcmlnaW5hbFByaWNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkOiBjb21wdXRlZCB8fCBjb250cmFjdC5jb21wdXRlZFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChtZXRob2RDb2RlLmluY2x1ZGVzKCdwaWNrdXBfc3RvcmUnKSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXN0b3Jlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVzID0gYXdhaXQgdGhpcy5zdG9yZXNTZXJ2aWNlLnN0b3Jlcy5waXBlKHRha2UoMSkpLnRvUHJvbWlzZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdG9yZXMgJiYgc3RvcmVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLmNvbnRyYWN0cyA9IGNvbnRyYWN0cy5tYXAoY29udHJhY3QgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTdG9yZSA9IHN0b3Jlcy5maW5kKHN0b3JlID0+IHN0b3JlLmNvZGUgPT0gY29udHJhY3QubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50U3RvcmUpIHJldHVybiB7IC4uLmNvbnRyYWN0LCBkZXRhaWw6ICdTaW4gaW5mb3JtYWNpw7NuJyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLmNvbnRyYWN0LCBkZXRhaWw6IGN1cnJlbnRTdG9yZS5uYW1lICsgJyAtICcgKyBjdXJyZW50U3RvcmUuYWRkcmVzcyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBub3JtYWxpemVTaGlwcGluZ0NvbnRyYWN0KGNvbnRyYWN0OiBTaGlwcGluZ09wdGlvbkNvbnRyYWN0IHwgYW55KTogU2hpcHBpbmdPcHRpb25Db250cmFjdCB7XG4gICAgICAgIGNvbnN0IHByaWNlID0gdGhpcy5zaGlwcGluZ1ByaWNlRGlzcGxheS5ub3JtYWxpemVQcmljZVZhbHVlKGNvbnRyYWN0Py5wcmljZSk7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsUHJpY2UgPSB0aGlzLnNoaXBwaW5nUHJpY2VEaXNwbGF5Lm5vcm1hbGl6ZVByaWNlVmFsdWUoY29udHJhY3Q/Lm9yaWdpbmFsUHJpY2UpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY29udHJhY3QsXG4gICAgICAgICAgICBwcmljZTogcHJpY2UgIT09IG51bGwgPyBwcmljZSA6IGNvbnRyYWN0Py5wcmljZSxcbiAgICAgICAgICAgIG9yaWdpbmFsUHJpY2U6IG9yaWdpbmFsUHJpY2UgIT09IG51bGwgPyBvcmlnaW5hbFByaWNlIDogY29udHJhY3Q/Lm9yaWdpbmFsUHJpY2VcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0cmlwRnJvbnRlbmRPbmx5U2hpcHBpbmdGaWVsZHM8VCBleHRlbmRzIHsgb3JpZ2luYWxQcmljZT86IGFueSB9PihkYXRhOiBUKTogT21pdDxULCAnb3JpZ2luYWxQcmljZSc+IHtcbiAgICAgICAgY29uc3QgeyBvcmlnaW5hbFByaWNlLCAuLi5yZXN0IH0gPSBkYXRhIHx8ICh7fSBhcyBUKTtcbiAgICAgICAgcmV0dXJuIHJlc3Q7XG4gICAgfVxuXG4gICAgb3RoZXJQYXJhbXNGb3JDb250cmFjdCA9IChjb250cmFjdCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2hpcHBpbmdfbWV0aG9kX2NvbnRyYWN0OlxuICAgICAgICAgICAgICAgIGNvbnRyYWN0LnNoaXBwaW5nX21ldGhvZF9jb250cmFjdFxuICAgICAgICAgICAgICAgICAgICA/IGNvbnRyYWN0LnNoaXBwaW5nX21ldGhvZF9jb250cmFjdFxuICAgICAgICAgICAgICAgICAgICA6IGNvbnRyYWN0LmNvbnRyYWN0ICsgJ18nICsgY29udHJhY3QubmFtZSxcbiAgICAgICAgICAgIHNoaXBwaW5nX21ldGhvZF9icmFuY2hfY29kZTpcbiAgICAgICAgICAgICAgICBjb250cmFjdC5zaGlwcGluZ19tZXRob2RfYnJhbmNoX2NvZGVcbiAgICAgICAgICAgICAgICAgICAgPyBjb250cmFjdC5zaGlwcGluZ19tZXRob2RfYnJhbmNoX2NvZGVcbiAgICAgICAgICAgICAgICAgICAgOiAoY29udHJhY3QuY29udHJhY3QgJiYgY29udHJhY3QuY29udHJhY3QgPT0gXCJicmFuY2hfZGVsaXZlcnlcIikgPyBjb250cmFjdC5udW1iZXIgOiBjb250cmFjdC5uYW1lXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRCcmFuY2hPZmZpY2VzID0gKG1ldGhvZCkgPT4gdGhpcy5jb25uZWN0aW9uLmdldE91dHNpZGVyKHRoaXMudHJhbnNmb3JtZXIuZ2V0QXBpKG1ldGhvZC50b0xvd2VyQ2FzZSgpKSkudG9Qcm9taXNlKCk7XG5cbiAgICBmb3JtYXRVbm5lY2VzYXJ5RG9jdW1lbnQgPSAoZGF0YSkgPT4ge1xuICAgICAgICBpZiAoZGF0YS5zaGlwcGluZ0FkZHJlc3M/LmRvY3VtZW50TnVtYmVyPy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgZGF0YS5zaGlwcGluZ0FkZHJlc3MuZG9jdW1lbnROdW1iZXIgPSAnMDAwMDAwMDAnXG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGEuc2hpcHBpbmdBZGRyZXNzPy5kb2N1bWVudFR5cGU/Lmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICBkYXRhLnNoaXBwaW5nQWRkcmVzcy5kb2N1bWVudFR5cGUgPSAnWFhYJ1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLmJpbGxpbmdBZGRyZXNzICYmIGRhdGEuYmlsbGluZ0FkZHJlc3MuZG9jdW1lbnROdW1iZXI/Lmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICBkYXRhLmJpbGxpbmdBZGRyZXNzLmRvY3VtZW50TnVtYmVyID0gJzAwMDAwMDAwJ1xuICAgICAgICB9XG4gICAgICAgIGlmIChkYXRhLmJpbGxpbmdBZGRyZXNzICYmIGRhdGEuYmlsbGluZ0FkZHJlc3MuZG9jdW1lbnRUeXBlPy5sZW5ndGggPT0gMCkge1xuICAgICAgICAgICAgZGF0YS5iaWxsaW5nQWRkcmVzcy5kb2N1bWVudFR5cGUgPSAnWFhYJ1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhXG4gICAgfVxufVxuIl19
|
|
@@ -45,7 +45,8 @@ import { BehaviorSubject } from 'rxjs';
|
|
|
45
45
|
import { ConnectionService } from '../api/connection.service';
|
|
46
46
|
import { Constants } from '../core.consts';
|
|
47
47
|
import * as i0 from "@angular/core";
|
|
48
|
-
import * as i1 from "
|
|
48
|
+
import * as i1 from "../core.consts";
|
|
49
|
+
import * as i2 from "../api/connection.service";
|
|
49
50
|
var ConcatenatedAssociationsService = /** @class */ (function () {
|
|
50
51
|
function ConcatenatedAssociationsService(consts, connection) {
|
|
51
52
|
var _this = this;
|
|
@@ -150,7 +151,7 @@ var ConcatenatedAssociationsService = /** @class */ (function () {
|
|
|
150
151
|
{ type: Constants },
|
|
151
152
|
{ type: ConnectionService }
|
|
152
153
|
]; };
|
|
153
|
-
ConcatenatedAssociationsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ConcatenatedAssociationsService_Factory() { return new
|
|
154
|
+
ConcatenatedAssociationsService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ConcatenatedAssociationsService_Factory() { return new ConcatenatedAssociationsService(i0.ɵɵinject(i1.Constants), i0.ɵɵinject(i2.ConnectionService)); }, token: ConcatenatedAssociationsService, providedIn: "root" });
|
|
154
155
|
ConcatenatedAssociationsService = __decorate([
|
|
155
156
|
Injectable({
|
|
156
157
|
providedIn: 'root'
|
|
@@ -159,4 +160,4 @@ var ConcatenatedAssociationsService = /** @class */ (function () {
|
|
|
159
160
|
return ConcatenatedAssociationsService;
|
|
160
161
|
}());
|
|
161
162
|
export { ConcatenatedAssociationsService };
|
|
162
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
163
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uY2F0ZW5hdGVkLWFzc29jaWF0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2NvbmNhdGVuYXRlZC1hc3NvY2lhdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFFbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBTTNDO0lBb0JJLHlDQUFxQixNQUFnQixFQUFVLFVBQTZCO1FBQTVFLGlCQUFpRjtRQUE1RCxXQUFNLEdBQU4sTUFBTSxDQUFVO1FBQVUsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFsQnBFLG9CQUFlLEdBQWtDLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3hFLHVCQUFrQixHQUFnQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUMxRSxjQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUMvQyxpQkFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUU1RDs7V0FFRztRQUNLLGlCQUFZLEdBQXlCLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQ3BFOztXQUVHO1FBQ0ksV0FBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUE7UUFFaEQsb0JBQW9CO1FBQ3BCLGdCQUFXLEdBQUcsVUFBQyxXQUFXLElBQUssT0FBQSxXQUFXLEdBQUcsS0FBSSxDQUFDLE1BQU0sQ0FB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QSxHQUFHLElBQUcsT0FBQSxLQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLEVBQTNCLENBQTJCLENBQUMsRUFBQTs7YUFBQSxDQUFBO0lBcEV2RCxDQUFDOztnQkFBckQsU0FBUztnQkFBc0IsaUJBQWlCOzs7SUFwQm5FLCtCQUErQjtRQUgzQyxVQUFVLENBQUM7WUFDVixVQUFVLEVBQUUsTUFBTTtTQUNuQixDQUFDO09BQ1csK0JBQStCLENBMEYzQzswQ0FwR0Q7Q0FvR0MsQUExRkQsSUEwRkM7U0ExRlksK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaW5kLCBmaW5kSW5kZXggfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgRmlsdGVyU3RlcCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZmlsdGVyU3RlcCc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIENvbmNhdGVuYXRlZEFzc29jaWF0aW9uc1NlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBzdGVwTGlzdFN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxGaWx0ZXJTdGVwW10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSlcbiAgICBwcml2YXRlIGN1cnJlbnRTdGVwU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PEZpbHRlclN0ZXA+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSlcbiAgICBwdWJsaWMgc3RlcExpc3QkID0gdGhpcy5zdGVwTGlzdFN1YmplY3QuYXNPYnNlcnZhYmxlKClcbiAgICBwdWJsaWMgY3VycmVudFN0ZXAkID0gdGhpcy5jdXJyZW50U3RlcFN1YmplY3QuYXNPYnNlcnZhYmxlKClcblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBzdWpldG8gcGFyYSBvYnNlcnZhciBsb3MgZXJyb3Jlcy5cbiAgICAgKi9cbiAgICBwcml2YXRlIGVycm9yU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHt9KVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBvYnNlcnZhYmxlIHBhcmEgZWwgbWFuZWpvIGRlIGVycm9yZXMuXG4gICAgICovXG4gICAgcHVibGljIGVycm9yJCA9IHRoaXMuZXJyb3JTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpXG5cbiAgICAvL0xpc3RhIGRlIGVuZHBvaW50c1xuICAgIHN0ZXBMaXN0QXBpID0gKHNlY3Rpb25OYW1lKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvY29uY2F0ZW5hdGVkX2Fzc29jaWF0aW9ucy8nICsgc2VjdGlvbk5hbWU7XG4gICAgYXBwbHlGaWx0ZXJBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJysgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9jb25jYXRlbmF0ZWRfYXNzb2NpYXRpb25zL3N0ZXBfYnlfc3RlcC8nO1xuXG4gICAgY29uc3RydWN0b3IoIHByaXZhdGUgY29uc3RzOkNvbnN0YW50cywgcHJpdmF0ZSBjb25uZWN0aW9uOiBDb25uZWN0aW9uU2VydmljZSkgeyB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gT2J0aWVuZSBsYSBsaXN0YSBkZSBwYXNvcyBjb21wbGV0YSwgZGF0byBxdWUgc2UgcmVjaWJlIGN1YW5kbyBpbmljaWEgbGEgY2FyZ2EgZGUgZGF0b3MuXG4gICAgICogQHBhcmFtIHNlY3Rpb24gRXN0ZSBwYXJhbWV0cm8gcmVjaWJlIGxhIHNlY2Npb24gZGUgZG9uZGUgc2Ugb2J0ZW5kcmFuIGxhIGxpc3RhIGRlIHBhc29zXG4gICAgICogQHBhcmFtIGZhdGhlckNvZGUgRXN0ZSBwYXJhbWV0cm8gcmVjaWJlIGVsIGNvZGlnbyBwYWRyZSBkZSBlc2Egc2VjY2lvbiwgZXMgZGVjaXIgZGUgZG9uZGUgZW1waWV6YSBlbCBmaWx0cmFkbyBkZSBwYXNvcy4gXG4gICAgICogQHJldHVybnMgXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRTdGVwTGlzdCA9IGFzeW5jIChzZWN0aW9uOnN0cmluZywgZmF0aGVyQ29kZT86c3RyaW5nKSA9PiBzZWN0aW9uICYmIHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMuc3RlcExpc3RBcGkoc2VjdGlvbikpLnN1YnNjcmliZSggcmVzID0+IHtcbiAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCh7c3RhdGU6ZmFsc2V9KVxuICAgICAgICAvL1NpIGV4aXN0ZSBlbCBjb2RpZ28gZGVsIHBhZHJlXG4gICAgICAgIGlmKGZhdGhlckNvZGUpe1xuICAgICAgICAgICAgbGV0IHZhbHVlcyA9IHJlcy5maWx0ZXIoZSA9PiBlWzBdLmNvZGUgPT0gZmF0aGVyQ29kZSlcbiAgICAgICAgICAgIC8vU2kgb2J0dXZvcyByZXN1bHRhZG9zIGNvbiBsYSBidXNxdWVkYVxuICAgICAgICAgICAgaWYodmFsdWVzICYmIHZhbHVlcy5sZW5ndGgpe1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZVN0ZXBMaXN0KHZhbHVlc1swXSkgLy9pbmljaWFsaXphIFxuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgdGhpcy5lcnJvclN1YmplY3QubmV4dCh7c3RhdGU6dHJ1ZSwgZXJyb3I6ICdlcnJvciBubyBoYXkgbmFkYSBjb24gZXNlIGNvZGlnbyd9KVxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdlcnJvciBubyBoYXkgbmFkYSBjb24gZXNlIGNvZGlnbycpXG4gICAgICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplU3RlcExpc3QoW10pIC8vaW5pY2lhbGl6YSBjb24gdW4gYXJyZWdsbyB2YWNpb1xuICAgICAgICAgICAgfVxuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgIC8vU2kgbm8gaGF5IGNvZGlnbyBkZWwgcGFkcmUsIGluaWNpYWxpemEgY29uIGVsIHByaW1lciB2YWxvciBkZWwgYXJyZWdsb1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplU3RlcExpc3QocmVzWzBdKVxuICAgICAgICB9XG4gICAgfSwgZSA9PiB0aGlzLmVycm9yU3ViamVjdC5uZXh0KHtzdGF0ZTp0cnVlLCBlcnJvcjogZSB9KSkgXG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gSW5pY2lhbGl6YSBsYSBjYXJnYSBkZSBkYXRvcyBhbCBzdWJqZXRvIGRlbCBvYnNlcnZhYmxlLlxuICAgICAqIEBwYXJhbSByZXNwb25zZSBSZXNwdWVzdGEgcmVjaWJpZGEgZGVzZGUgZWwgYmFja2VuZFxuICAgICAqL1xuICAgIHByaXZhdGUgaW5pdGlhbGl6ZVN0ZXBMaXN0ID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIHRoaXMudXBkYXRlU3RlcExpc3QocmVzcG9uc2UpXG4gICAgICAgIHRoaXMudXBkYXRlQ3VycmVudFN0ZXAocmVzcG9uc2VbMF0pXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEVzdGEgZnVuY2lvbiBjYXJnYSBcbiAgICAgKiBAcGFyYW0gc2VjdGlvbiBcbiAgICAgKiBAcGFyYW0gZmF0aGVyQ29kZSBcbiAgICAgKi9cbiAgICBwdWJsaWMgbG9hZCA9IChzZWN0aW9uOnN0cmluZywgZmF0aGVyQ29kZT86c3RyaW5nKSA9PiB7XG4gICAgICAgIC8vY29uc29sZS5sb2coJ2VudHJlIGxvYWQnKVxuICAgICAgICB0aGlzLmdldFN0ZXBMaXN0KHNlY3Rpb24sIGZhdGhlckNvZGUpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGFjdHVhbGl6YSBsYSBsaXN0YSBkZSBwYXNvc1xuICAgICAqIEBwYXJhbSB2YWx1ZSBcbiAgICAgKi9cbiAgICB1cGRhdGVTdGVwTGlzdCA9ICh2YWx1ZSkgPT57XG4gICAgICAgIC8vY29uc29sZS5sb2coJ2VudHJlIHVwZGF0ZScpXG4gICAgICAgIHRoaXMuc3RlcExpc3RTdWJqZWN0Lm5leHQodmFsdWUpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlY3JpcHRpb24gYWN0dWFsaXphIGVsIHBhc28gYWN0dWFsIGVuIGRvbmRlIHNlIGVuY3VlbnRyYS5cbiAgICAgKiBAcGFyYW0gdmFsdWUgXG4gICAgICovXG4gICAgdXBkYXRlQ3VycmVudFN0ZXAgPSAodmFsdWUpID0+IHtcbiAgICAgICAgdGhpcy5jdXJyZW50U3RlcFN1YmplY3QubmV4dCh2YWx1ZSlcbiAgICB9XG4gICAgXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGFwbGljYSBsb3MgZmlsdHJvcyBjb24gbG9zIHZhbG9yZXMgZGFkb3MuXG4gICAgICogQHBhcmFtIHZhbHVlcyBcbiAgICAgKiBAcmV0dXJucyBcbiAgICAgKi9cbiAgICBhcHBseUZpbHRlciA9IGFzeW5jICh2YWx1ZXMpID0+IHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMuYXBwbHlGaWx0ZXJBcGkoKSwgdmFsdWVzKS50b1Byb21pc2UoKS50aGVuKHJlcyA9PnRoaXMudXBkYXRlQ3VycmVudFN0ZXAocmVzKSlcblxufVxuIl19
|
|
@@ -47,7 +47,9 @@ import { Constants } from '../core.consts';
|
|
|
47
47
|
import { ToastService } from '../utils/toast.service';
|
|
48
48
|
import { ChannelConfigService } from './channel-config.service';
|
|
49
49
|
import * as i0 from "@angular/core";
|
|
50
|
-
import * as i1 from "
|
|
50
|
+
import * as i1 from "../core.consts";
|
|
51
|
+
import * as i2 from "../api/connection.service";
|
|
52
|
+
import * as i3 from "../utils/toast.service";
|
|
51
53
|
var CurrencyService = /** @class */ (function () {
|
|
52
54
|
function CurrencyService(consts, connection, toastr, injector) {
|
|
53
55
|
var _this = this;
|
|
@@ -229,7 +231,7 @@ var CurrencyService = /** @class */ (function () {
|
|
|
229
231
|
{ type: ToastService },
|
|
230
232
|
{ type: Injector }
|
|
231
233
|
]; };
|
|
232
|
-
CurrencyService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CurrencyService_Factory() { return new
|
|
234
|
+
CurrencyService.ɵprov = i0.ɵɵdefineInjectable({ factory: function CurrencyService_Factory() { return new CurrencyService(i0.ɵɵinject(i1.Constants), i0.ɵɵinject(i2.ConnectionService), i0.ɵɵinject(i3.ToastService), i0.ɵɵinject(i0.INJECTOR)); }, token: CurrencyService, providedIn: "root" });
|
|
233
235
|
CurrencyService = __decorate([
|
|
234
236
|
Injectable({
|
|
235
237
|
providedIn: 'root'
|
|
@@ -238,4 +240,4 @@ var CurrencyService = /** @class */ (function () {
|
|
|
238
240
|
return CurrencyService;
|
|
239
241
|
}());
|
|
240
242
|
export { CurrencyService };
|
|
241
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jdXJyZW5jeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBS2hFO0lBZUkseUJBQW9CLE1BQWlCLEVBQ3pCLFVBQTZCLEVBQzdCLE1BQW9CLEVBQ3BCLFFBQWtCO1FBSDlCLGlCQVFDO1FBUm1CLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDekIsZUFBVSxHQUFWLFVBQVUsQ0FBbUI7UUFDN0IsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNwQixhQUFRLEdBQVIsUUFBUSxDQUFVO1FBaEJ0QixvQkFBZSxHQUFvQyxJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUMxRSxrQkFBYSxHQUE2QixJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNwRSx3QkFBbUIsR0FBMkIsSUFBSSxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUE7UUFFdEUsY0FBUyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDaEQsWUFBTyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDNUMsa0JBQWEsR0FB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QUFlLENBQUMsSUFBSSxDQUFDLEtBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7YUFDbEQ7UUFDTCxDQUFDLENBQUE7UUFySkcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLFVBQUEsT0FBTztZQUNwRSxPQUFPLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ3pHLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSSxDQUFDLDJCQUEyQixDQUFDLENBQUE7UUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztnQkFSMkIsU0FBUztnQkFDYixpQkFBaUI7Z0JBQ3JCLFlBQVk7Z0JBQ1YsUUFBUTs7O0lBbEJyQixlQUFlO1FBSDNCLFVBQVUsQ0FBQztZQUNSLFVBQVUsRUFBRSxNQUFNO1NBQ3JCLENBQUM7T0FDVyxlQUFlLENBMEszQjswQkFyTEQ7Q0FxTEMsQUExS0QsSUEwS0M7U0ExS1ksZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBDdXJyZW5jeUNvbmZpZyB9IGZyb20gJy4uL2ludGVyZmFjZXMvY3VycmVuY3lDb25maWcnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vdXRpbHMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBDaGFubmVsQ29uZmlnU2VydmljZSB9IGZyb20gJy4vY2hhbm5lbC1jb25maWcuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQ3VycmVuY3lTZXJ2aWNlIHtcblxuICAgIHByaXZhdGUgY3VycmVuY3lTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8Q3VycmVuY3lDb25maWc+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCh7fSlcbiAgICBwcml2YXRlIHVwZGF0ZVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxCb29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpXG4gICAgcHJpdmF0ZSBjdXJyZW5jeUxpc3RTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8YW55W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChbXSlcblxuICAgIHB1YmxpYyBjdXJyZW5jeSQgPSB0aGlzLmN1cnJlbmN5U3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgdXBkYXRlJCA9IHRoaXMudXBkYXRlU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwdWJsaWMgY3VycmVuY3lMaXN0JCA9IHRoaXMuY3VycmVuY3lMaXN0U3ViamVjdC5hc09ic2VydmFibGUoKTtcblxuICAgIHByaXZhdGUgZW5hYmxlQXBwbHlDdXJyZW5jeUV4Y2hhbmdlOiBCb29sZWFuID0gdHJ1ZTtcblxuICAgIHByaXZhdGUgZ2V0Q3VycmVuY3lMaXN0QXBpID0gKCkgPT4gJ3Nob3AtYXBpL2N1cnJlbmNpZXMnO1xuICAgIHByaXZhdGUgZ2V0Q29udmVydGliaWxpdHlBcGkgPSAoYmFzZUN1cnJlbmN5OiBhbnksIHRhcmdldEN1cnJlbmN5OiBhbnkpID0+ICdzaG9wLWFwaS9jdXJyZW5jaWVzP2Jhc2VDdXJyZW5jeT0nICsgYmFzZUN1cnJlbmN5ICsgJyZ0YXJnZXRDdXJyZW5jeT0nICsgdGFyZ2V0Q3VycmVuY3k7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbnN0czogQ29uc3RhbnRzLFxuICAgICAgICBwcml2YXRlIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xuICAgICAgICB0aGlzLmluamVjdG9yLmdldChDaGFubmVsQ29uZmlnU2VydmljZSkuY2hhbm5lbENvbmZpZyQuc3Vic2NyaWJlKGNoYW5uZWwgPT4ge1xuICAgICAgICAgICAgY2hhbm5lbC5hcHBseUN1cnJlbmN5RXhjaGFuZ2UgPyB0aGlzLmxvYWRDdXJyZW5jeUxpc3QoKSA6IHRoaXMubG9hZERlZmF1bHRDdXJyZW5jeShjaGFubmVsLmJhc2VDdXJyZW5jeSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0aGlzLmVuYWJsZUFwcGx5Q3VycmVuY3lFeGNoYW5nZSlcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFNlIGNhcmdhIGxhIG1vbmVkYSBwb3IgZGVmZWN0byBjb24gbWV0YWRhdG9zIChzw61tYm9sbywgcG9zaWNpw7NuLCBkZWNpbWFsZXMpLlxuICAgICAqL1xuICAgIHByaXZhdGUgbG9hZERlZmF1bHRDdXJyZW5jeSA9IChjdXJyZW5jeUNvZGUpID0+IHtcbiAgICAgICAgLy8gVHJhZSBsYSBsaXN0YSBpZ3VhbCBwYXJhIHRlbmVyIGxhIGNvbmZpZ3VyYWNpw7NuIGNvbXBsZXRhXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5nZXRDdXJyZW5jeUxpc3RBcGkoKSkudG9Qcm9taXNlKCkudGhlbigobGlzdDogYW55W10pID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lMaXN0U3ViamVjdC5uZXh0KGxpc3QpO1xuICAgICAgICAgICAgdGhpcy5jb25zdHMuc2V0Q3VycmVuY3lUeXBlQ29uZmlnKGxpc3QpO1xuXG4gICAgICAgICAgICBjb25zdCBjZmcgPSBsaXN0Py5maW5kKGMgPT4gYy5jb2RlID09PSBjdXJyZW5jeUNvZGUpO1xuICAgICAgICAgICAgaWYgKGNmZykge1xuICAgICAgICAgICAgICAgIC8vIFNldGVhIG1vbmVkYSBhY3RpdmEgY29uIHN1IGNvbmZpZ3VyYWNpw7NuIGNvbXBsZXRhXG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdHMuc2V0Q3VycmVuY3koY2ZnLmNvZGUsIGNmZyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuY29uc3RzLnNldEN1cnJlbmN5KGN1cnJlbmN5Q29kZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubG9hZCgpO1xuICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBFbiBjYXNvIGRlIGVycm9yLCBhbCBtZW5vcyBmaWrDoSBlbCBjw7NkaWdvIHBhcmEgbm8gcm9tcGVyIGVsIGZsdWpvXG4gICAgICAgICAgICB0aGlzLmNvbnN0cy5zZXRDdXJyZW5jeShjdXJyZW5jeUNvZGUpO1xuICAgICAgICAgICAgdGhpcy5sb2FkKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBjYWxjdWxhIGxhIGNvbnZldGliaWxpZGFkIGRlbCBwcmVjaW8gIHBhc2FkbyBwb3IgcGFyYW1lbnRybyBzZWd1biBlc3RhIGZvcm11bGE6XG4gICAgICogKipjID0gYSAqIGIqKiBkb25kZSAqYz1tb25lZGEgZGVzcHVlcyBkZWwgY2FtYmlvKiwgKmE9dmFsb3IgcXVlIHF1aWVybyBjYW1iaWFyKiB5ICpiPXJhdGlvIGRlIGNhbWJpbyouIFxuICAgICAqIEBwYXJhbSBwcmljZSBQcmVjaW8gYSBjYW1iaWFyXG4gICAgICogQHBhcmFtIHJhdGlvIFJhdGlvIGRlIGNhbWJpb1xuICAgICAqIEByZXR1cm5zIFNpIGVsIHJhdGlvIG5vIGVzIG51bGwsIHJldG9ybmEgZWwgcHJlY2lvIGNhbWJpYWRvLCBzaW5vIHJldG9ybmEgZWwgcHJlY2lvIHNpbiBjYW1iaW9zLiBcbiAgICAgKi9cbiAgICBwdWJsaWMgY2FsY3VsYXRlQ29udmV0aWJpbGl0eSA9IChwcmljZSwgcmF0aW8pID0+IHtcbiAgICAgICAgcmV0dXJuIHJhdGlvID8gcHJpY2UgKiByYXRpbyA6IHByaWNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjb2RlIENvZGlnbyBkZSBtb25lZGEgYSBsYSBxdWUgc2UgZGVzZWEgY2FtYmlhclxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRDdXJyZW5jeSA9IGFzeW5jIChjb2RlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5nZXRDb252ZXJ0aWJpbGl0eSh0aGlzLmNvbnN0cy5jdXJyZW5jeS5jb2RlLCBjb2RlKVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENhcmdhIGxhIGxpc3RhIGRlIG1vbmVkYXMgZGVzZGUgbGEgQVBJIHkgcmVnaXN0cmEgbGEgY29uZmlndXJhY2nDs24gY29tcGxldGEgZW4gYENvbnN0YW50c2AuXG4gICAgICpcbiAgICAgKiBTaSBubyBleGlzdGUgdW5hIG1vbmVkYSBhY3RpdmEgZ3VhcmRhZGEgZW4gYGxvY2FsU3RvcmFnZWAsIGluaWNpYWxpemEgbGEgbW9uZWRhIGFjdGl2YVxuICAgICAqIHRvbWFuZG8gbGEgbW9uZWRhIGJhc2UgZGVsIGNhbmFsIChgQ2hhbm5lbENvbmZpZ1NlcnZpY2UuYmFzZUN1cnJlbmN5YCkgeSBzdXMgbWV0YWRhdG9zXG4gICAgICogb2J0ZW5pZG9zIGRlIGxhIGxpc3RhIChzw61tYm9sbywgcG9zaWNpw7NuLCBkZWNpbWFsZXMpLiBTaSBubyBzZSBlbmN1ZW50cmEgbGEgYmFzZSBlbiBsYVxuICAgICAqIGxpc3RhLCB1c2EgbGEgcHJpbWVyYSBkaXNwb25pYmxlLlxuICAgICAqXG4gICAgICogRmluYWxtZW50ZSwgbGxhbWEgYSBgbG9hZCgpYCBwYXJhIHByb3BhZ2FyIGxhIGNvbmZpZ3VyYWNpw7NuIGEgbG9zIG9ic2VydmFibGVzIHkgKHNpIGFwbGljYSlcbiAgICAgKiBhY3R1YWxpemFyIGBsb2NhbFN0b3JhZ2VgLlxuICAgICAqXG4gICAgICogQHNpZGVFZmZlY3QgQWN0dWFsaXphIGBjdXJyZW5jeUxpc3QkYCwgYENvbnN0YW50cy5zZXRDdXJyZW5jeVR5cGVDb25maWdgIHkgcG90ZW5jaWFsbWVudGVcbiAgICAgKiAgICAgICAgICAgICBgQ29uc3RhbnRzLnNldEN1cnJlbmN5YC5cbiAgICAgKiBAcmV0dXJucyB2b2lkXG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2FkQ3VycmVuY3lMaXN0ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuZ2V0Q3VycmVuY3lMaXN0QXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lMaXN0U3ViamVjdC5uZXh0KHJlcyk7XG4gICAgICAgICAgICB0aGlzLmNvbnN0cy5zZXRDdXJyZW5jeVR5cGVDb25maWcocmVzKTtcblxuICAgICAgICAgICAgY29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbmN5Jyk7XG4gICAgICAgICAgICBpZiAoIXN0b3JlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJhc2UgPSB0aGlzLmluamVjdG9yLmdldChDaGFubmVsQ29uZmlnU2VydmljZSkuZ2V0QWN0aXZlQ2hhbm5lbCgpPy5iYXNlQ3VycmVuY3k7XG4gICAgICAgICAgICAgICAgY29uc3QgY2ZnID0gcmVzPy5maW5kKGMgPT4gYy5jb2RlID09PSBiYXNlKSA/PyByZXM/LlswXTtcbiAgICAgICAgICAgICAgICBpZiAoY2ZnKSB0aGlzLmNvbnN0cy5zZXRDdXJyZW5jeShjZmcuY29kZSwgY2ZnKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5sb2FkKCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gZ2VuZXJhIGxhIGNhcmdhIHkgY29uZmlndXJhY2nDs24gZGUgbGEgbW9uZWRhIGVsZWdpZGEgcGFyYSBsYSBjb252ZXJzaW9uLlxuICAgICAqIEBwYXJhbSBjdXJyZW5jeSBNb25lZGEgYSBjb252ZXJ0aXIuXG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2FkQ3VycmVuY3kgPSAoY3VycmVuY3k6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmN1cnJlbmN5U3ViamVjdC5uZXh0KGN1cnJlbmN5KTtcbiAgICAgICAgdGhpcy5jb25zdHMuc2V0Q3VycmVuY3koY3VycmVuY3kuY29kZSk7XG4gICAgICAgIGxldCB1cGRhdGUgPSB0aGlzLnVwZGF0ZVN1YmplY3QuZ2V0VmFsdWUoKVxuICAgICAgICB0aGlzLnVwZGF0ZVN1YmplY3QubmV4dCghdXBkYXRlKVxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY3VycmVuY3knLCBKU09OLnN0cmluZ2lmeSh0aGlzLmNvbnN0cy5jdXJyZW5jeSkpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIEdlbmVyYSBsYSBjb252ZXJ0aWJpbGlkYWQgZGUgbGEgbW9uZWRhIGJhc2UgYSBsYSBudWV2YS4gU2kgYmFzZUN1cnJlbmN5IG5vIHRpZW5lIHZhbG9yIFxuICAgICAqIGVudG9uY2VzIHV0aWxpemEgbGEgbW9uZWRhIGJhc2UgZGVsIGNhbmFsLlxuICAgICAqIEBwYXJhbSBjdXJyZW5jeSBPYmpldG8gZGUgbGEgbW9uZWRhIGRlc3Rpbm8uXG4gICAgICogQHBhcmFtIGJhc2VDdXJyZW5jeSBDb2RpZ28gZGUgbGEgbW9uZWRhIGJhc2UuICpFajogVVNEIHwgQVJTIHwgRVVSIHwuLi4qXG4gICAgICovXG4gICAgZ2VuZXJhdGVDb252ZXJ0aWJpbGl0eSA9IGFzeW5jIChjdXJyZW5jeTogYW55LCBiYXNlQ3VycmVuY3k/OiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKCFiYXNlQ3VycmVuY3kpIHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgYmFzZUN1cnJlbmN5ID0gYXdhaXQgdGhpcy5pbmplY3Rvci5nZXQoQ2hhbm5lbENvbmZpZ1NlcnZpY2UpLmdldEFjdGl2ZUNoYW5uZWwoKS5iYXNlQ3VycmVuY3k7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIC8vY29uc29sZS5lcnJvcihlcnJvcilcbiAgICAgICAgICAgICAgICBiYXNlQ3VycmVuY3kgPSAnVVNEJ1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChjdXJyZW5jeS5jb2RlID09IGJhc2VDdXJyZW5jeSkge1xuICAgICAgICAgICAgdGhpcy5sb2FkQ3VycmVuY3koY3VycmVuY3kpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5nZXRDb252ZXJ0aWJpbGl0eShiYXNlQ3VycmVuY3ksIGN1cnJlbmN5LmNvZGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE9idGllbmUgbGEgY29udmVyc2lvbiBkZXNkZSBsYSBtb25lZGEgYmFzZSBhIGxhIGRlc3Rpbm8uIFJlY2liZSB1biBvYmpldG8gZGUgdGlwbyBDdXJyZW5jeUNvbmZpZy5cbiAgICAgKiBTaSBsYSBjb252ZXJzaW9uIHJldG9ybmEgcmVzdWx0YWRvIHJlYWxpemEgZWwgY2FtYmlvLCBkZSBsbyBjb250cmFyaW8gZW1pdGUgdW4gbWVuc2FqZSBkZSBlcnJvci5cbiAgICAgKiBAcGFyYW0gYmFzZUN1cnJlbmN5IENvZGlnbyBkZSBsYSBtb25lZGEgYmFzZS5cbiAgICAgKiBAcGFyYW0gdGFyZ2V0Q3VycmVuY3kgQ29kaWdvIGRlIGxhIG1vbmVkYSBkZXN0aW5vLlxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0Q29udmVydGliaWxpdHkgPSAoYmFzZUN1cnJlbmN5OiBhbnksIHRhcmdldEN1cnJlbmN5OiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldENvbnZlcnRpYmlsaXR5QXBpKGJhc2VDdXJyZW5jeSwgdGFyZ2V0Q3VycmVuY3kpKVxuICAgICAgICAgICAgLnRvUHJvbWlzZSgpLnRoZW4oXG4gICAgICAgICAgICAgICAgcmVzID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXBDdXJyZW5jeSA9IHJlc1swXVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkQ3VycmVuY3kodGVtcEN1cnJlbmN5KVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgbGEgdmFyaWFibGUgcmVzIG5vIGNvbnRpZW5lIHZhbG9yLCBhc2VndXJlc2UgZGUgcXVlIGVzdGEgY29udmVyc2nDs24gZXN0ZSBjb25maWd1cmFkYSBlbiBlbCBiYWNrb2ZmaWNlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLnNob3coJ2Vycm9yLWNvbnZlcnRpYmlsaXR5JylcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICkuY2F0Y2goZXJyID0+IGNvbnNvbGUubG9nKGVycikpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIENhcmdhIGxhIG1vbmVkYSwgc2kgaGF5IHVuYSBlbiBlbCBsb2NhbHN0b3JhZ2UgdG9tYSBlc2EgeSByZWFsaXphIGxhIGNvbnZlcnNpb24uXG4gICAgICogZGUgbG8gY29udHJhcmlvIHNvbG8gc2V0ZWEgZW4gZWwgb2JzZXJ2YWJsZSBjdXJyZW5jeVN1YmplY3QgZWwgdmFsb3IgcG9yIGRlZmVjdG8gY2FyZ2FkbyBlbiBsYXMgY29uc3RhbnRlcy4gXG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2FkID0gKCkgPT4ge1xuICAgICAgICBsZXQgbG9jYWxTdG9yYWdlQ3VycmVuY3kgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY3VycmVuY3knKVxuICAgICAgICBpZiAobG9jYWxTdG9yYWdlQ3VycmVuY3kpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW5jeSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlQ3VycmVuY3kpXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlQ29udmVydGliaWxpdHkoY3VycmVuY3kpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbmN5U3ViamVjdC5uZXh0KHRoaXMuY29uc3RzLmN1cnJlbmN5KVxuICAgICAgICB9XG4gICAgfVxuXG59XG4iXX0=
|
|
243
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VycmVuY3kuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy9jdXJyZW5jeS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDOUQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7QUFLaEU7SUFlSSx5QkFBb0IsTUFBaUIsRUFDekIsVUFBNkIsRUFDN0IsTUFBb0IsRUFDcEIsUUFBa0I7UUFIOUIsaUJBUUM7UUFSbUIsV0FBTSxHQUFOLE1BQU0sQ0FBVztRQUN6QixlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixXQUFNLEdBQU4sTUFBTSxDQUFjO1FBQ3BCLGFBQVEsR0FBUixRQUFRLENBQVU7UUFoQnRCLG9CQUFlLEdBQW9DLElBQUksZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQzFFLGtCQUFhLEdBQTZCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3BFLHdCQUFtQixHQUEyQixJQUFJLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtRQUV0RSxjQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNoRCxZQUFPLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1QyxrQkFBYSxH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LGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQTthQUNsRDtRQUNMLENBQUMsQ0FBQTtRQXJKRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsVUFBQSxPQUFPO1lBQ3BFLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUMsS0FBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUksQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDekcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFJLENBQUMsMkJBQTJCLENBQUMsQ0FBQTtRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O2dCQVIyQixTQUFTO2dCQUNiLGlCQUFpQjtnQkFDckIsWUFBWTtnQkFDVixRQUFROzs7SUFsQnJCLGVBQWU7UUFIM0IsVUFBVSxDQUFDO1lBQ1IsVUFBVSxFQUFFLE1BQU07U0FDckIsQ0FBQztPQUNXLGVBQWUsQ0EwSzNCOzBCQXJMRDtDQXFMQyxBQTFLRCxJQTBLQztTQTFLWSxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uL2NvcmUuY29uc3RzJztcbmltcG9ydCB7IEN1cnJlbmN5Q29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jdXJyZW5jeUNvbmZpZyc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi91dGlscy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IENoYW5uZWxDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jaGFubmVsLWNvbmZpZy5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBDdXJyZW5jeVNlcnZpY2Uge1xuXG4gICAgcHJpdmF0ZSBjdXJyZW5jeVN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxDdXJyZW5jeUNvbmZpZz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KHt9KVxuICAgIHByaXZhdGUgdXBkYXRlU3ViamVjdDogQmVoYXZpb3JTdWJqZWN0PEJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSlcbiAgICBwcml2YXRlIGN1cnJlbmN5TGlzdFN1YmplY3Q6IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KFtdKVxuXG4gICAgcHVibGljIGN1cnJlbmN5JCA9IHRoaXMuY3VycmVuY3lTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyB1cGRhdGUkID0gdGhpcy51cGRhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHB1YmxpYyBjdXJyZW5jeUxpc3QkID0gdGhpcy5jdXJyZW5jeUxpc3RTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHJpdmF0ZSBlbmFibGVBcHBseUN1cnJlbmN5RXhjaGFuZ2U6IEJvb2xlYW4gPSB0cnVlO1xuXG4gICAgcHJpdmF0ZSBnZXRDdXJyZW5jeUxpc3RBcGkgPSAoKSA9PiAnc2hvcC1hcGkvY3VycmVuY2llcyc7XG4gICAgcHJpdmF0ZSBnZXRDb252ZXJ0aWJpbGl0eUFwaSA9IChiYXNlQ3VycmVuY3k6IGFueSwgdGFyZ2V0Q3VycmVuY3k6IGFueSkgPT4gJ3Nob3AtYXBpL2N1cnJlbmNpZXM/YmFzZUN1cnJlbmN5PScgKyBiYXNlQ3VycmVuY3kgKyAnJnRhcmdldEN1cnJlbmN5PScgKyB0YXJnZXRDdXJyZW5jeTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uc3RzOiBDb25zdGFudHMsXG4gICAgICAgIHByaXZhdGUgY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdFNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XG4gICAgICAgIHRoaXMuaW5qZWN0b3IuZ2V0KENoYW5uZWxDb25maWdTZXJ2aWNlKS5jaGFubmVsQ29uZmlnJC5zdWJzY3JpYmUoY2hhbm5lbCA9PiB7XG4gICAgICAgICAgICBjaGFubmVsLmFwcGx5Q3VycmVuY3lFeGNoYW5nZSA/IHRoaXMubG9hZEN1cnJlbmN5TGlzdCgpIDogdGhpcy5sb2FkRGVmYXVsdEN1cnJlbmN5KGNoYW5uZWwuYmFzZUN1cnJlbmN5KTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKHRoaXMuZW5hYmxlQXBwbHlDdXJyZW5jeUV4Y2hhbmdlKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gU2UgY2FyZ2EgbGEgbW9uZWRhIHBvciBkZWZlY3RvIGNvbiBtZXRhZGF0b3MgKHPDrW1ib2xvLCBwb3NpY2nDs24sIGRlY2ltYWxlcykuXG4gICAgICovXG4gICAgcHJpdmF0ZSBsb2FkRGVmYXVsdEN1cnJlbmN5ID0gKGN1cnJlbmN5Q29kZSkgPT4ge1xuICAgICAgICAvLyBUcmFlIGxhIGxpc3RhIGlndWFsIHBhcmEgdGVuZXIgbGEgY29uZmlndXJhY2nDs24gY29tcGxldGFcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLmdldEN1cnJlbmN5TGlzdEFwaSgpKS50b1Byb21pc2UoKS50aGVuKChsaXN0OiBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeUxpc3RTdWJqZWN0Lm5leHQobGlzdCk7XG4gICAgICAgICAgICB0aGlzLmNvbnN0cy5zZXRDdXJyZW5jeVR5cGVDb25maWcobGlzdCk7XG5cbiAgICAgICAgICAgIGNvbnN0IGNmZyA9IGxpc3Q/LmZpbmQoYyA9PiBjLmNvZGUgPT09IGN1cnJlbmN5Q29kZSk7XG4gICAgICAgICAgICBpZiAoY2ZnKSB7XG4gICAgICAgICAgICAgICAgLy8gU2V0ZWEgbW9uZWRhIGFjdGl2YSBjb24gc3UgY29uZmlndXJhY2nDs24gY29tcGxldGFcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN0cy5zZXRDdXJyZW5jeShjZmcuY29kZSwgY2ZnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdHMuc2V0Q3VycmVuY3koY3VycmVuY3lDb2RlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5sb2FkKCk7XG4gICAgICAgIH0pLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIC8vIEVuIGNhc28gZGUgZXJyb3IsIGFsIG1lbm9zIGZpasOhIGVsIGPDs2RpZ28gcGFyYSBubyByb21wZXIgZWwgZmx1am9cbiAgICAgICAgICAgIHRoaXMuY29uc3RzLnNldEN1cnJlbmN5KGN1cnJlbmN5Q29kZSk7XG4gICAgICAgICAgICB0aGlzLmxvYWQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIGNhbGN1bGEgbGEgY29udmV0aWJpbGlkYWQgZGVsIHByZWNpbyAgcGFzYWRvIHBvciBwYXJhbWVudHJvIHNlZ3VuIGVzdGEgZm9ybXVsYTpcbiAgICAgKiAqKmMgPSBhICogYioqIGRvbmRlICpjPW1vbmVkYSBkZXNwdWVzIGRlbCBjYW1iaW8qLCAqYT12YWxvciBxdWUgcXVpZXJvIGNhbWJpYXIqIHkgKmI9cmF0aW8gZGUgY2FtYmlvKi4gXG4gICAgICogQHBhcmFtIHByaWNlIFByZWNpbyBhIGNhbWJpYXJcbiAgICAgKiBAcGFyYW0gcmF0aW8gUmF0aW8gZGUgY2FtYmlvXG4gICAgICogQHJldHVybnMgU2kgZWwgcmF0aW8gbm8gZXMgbnVsbCwgcmV0b3JuYSBlbCBwcmVjaW8gY2FtYmlhZG8sIHNpbm8gcmV0b3JuYSBlbCBwcmVjaW8gc2luIGNhbWJpb3MuIFxuICAgICAqL1xuICAgIHB1YmxpYyBjYWxjdWxhdGVDb252ZXRpYmlsaXR5ID0gKHByaWNlLCByYXRpbykgPT4ge1xuICAgICAgICByZXR1cm4gcmF0aW8gPyBwcmljZSAqIHJhdGlvIDogcHJpY2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIGNvZGUgQ29kaWdvIGRlIG1vbmVkYSBhIGxhIHF1ZSBzZSBkZXNlYSBjYW1iaWFyXG4gICAgICovXG4gICAgcHVibGljIHNldEN1cnJlbmN5ID0gYXN5bmMgKGNvZGU6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmdldENvbnZlcnRpYmlsaXR5KHRoaXMuY29uc3RzLmN1cnJlbmN5LmNvZGUsIGNvZGUpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2FyZ2EgbGEgbGlzdGEgZGUgbW9uZWRhcyBkZXNkZSBsYSBBUEkgeSByZWdpc3RyYSBsYSBjb25maWd1cmFjacOzbiBjb21wbGV0YSBlbiBgQ29uc3RhbnRzYC5cbiAgICAgKlxuICAgICAqIFNpIG5vIGV4aXN0ZSB1bmEgbW9uZWRhIGFjdGl2YSBndWFyZGFkYSBlbiBgbG9jYWxTdG9yYWdlYCwgaW5pY2lhbGl6YSBsYSBtb25lZGEgYWN0aXZhXG4gICAgICogdG9tYW5kbyBsYSBtb25lZGEgYmFzZSBkZWwgY2FuYWwgKGBDaGFubmVsQ29uZmlnU2VydmljZS5iYXNlQ3VycmVuY3lgKSB5IHN1cyBtZXRhZGF0b3NcbiAgICAgKiBvYnRlbmlkb3MgZGUgbGEgbGlzdGEgKHPDrW1ib2xvLCBwb3NpY2nDs24sIGRlY2ltYWxlcykuIFNpIG5vIHNlIGVuY3VlbnRyYSBsYSBiYXNlIGVuIGxhXG4gICAgICogbGlzdGEsIHVzYSBsYSBwcmltZXJhIGRpc3BvbmlibGUuXG4gICAgICpcbiAgICAgKiBGaW5hbG1lbnRlLCBsbGFtYSBhIGBsb2FkKClgIHBhcmEgcHJvcGFnYXIgbGEgY29uZmlndXJhY2nDs24gYSBsb3Mgb2JzZXJ2YWJsZXMgeSAoc2kgYXBsaWNhKVxuICAgICAqIGFjdHVhbGl6YXIgYGxvY2FsU3RvcmFnZWAuXG4gICAgICpcbiAgICAgKiBAc2lkZUVmZmVjdCBBY3R1YWxpemEgYGN1cnJlbmN5TGlzdCRgLCBgQ29uc3RhbnRzLnNldEN1cnJlbmN5VHlwZUNvbmZpZ2AgeSBwb3RlbmNpYWxtZW50ZVxuICAgICAqICAgICAgICAgICAgIGBDb25zdGFudHMuc2V0Q3VycmVuY3lgLlxuICAgICAqIEByZXR1cm5zIHZvaWRcbiAgICAgKi9cbiAgICBwcml2YXRlIGxvYWRDdXJyZW5jeUxpc3QgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5nZXRDdXJyZW5jeUxpc3RBcGkoKSkudG9Qcm9taXNlKCkudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeUxpc3RTdWJqZWN0Lm5leHQocmVzKTtcbiAgICAgICAgICAgIHRoaXMuY29uc3RzLnNldEN1cnJlbmN5VHlwZUNvbmZpZyhyZXMpO1xuXG4gICAgICAgICAgICBjb25zdCBzdG9yZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY3VycmVuY3knKTtcbiAgICAgICAgICAgIGlmICghc3RvcmVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYmFzZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KENoYW5uZWxDb25maWdTZXJ2aWNlKS5nZXRBY3RpdmVDaGFubmVsKCk/LmJhc2VDdXJyZW5jeTtcbiAgICAgICAgICAgICAgICBjb25zdCBjZmcgPSByZXM/LmZpbmQoYyA9PiBjLmNvZGUgPT09IGJhc2UpID8/IHJlcz8uWzBdO1xuICAgICAgICAgICAgICAgIGlmIChjZmcpIHRoaXMuY29uc3RzLnNldEN1cnJlbmN5KGNmZy5jb2RlLCBjZmcpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmxvYWQoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBnZW5lcmEgbGEgY2FyZ2EgeSBjb25maWd1cmFjacOzbiBkZSBsYSBtb25lZGEgZWxlZ2lkYSBwYXJhIGxhIGNvbnZlcnNpb24uXG4gICAgICogQHBhcmFtIGN1cnJlbmN5IE1vbmVkYSBhIGNvbnZlcnRpci5cbiAgICAgKi9cbiAgICBwcml2YXRlIGxvYWRDdXJyZW5jeSA9IChjdXJyZW5jeTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVuY3lTdWJqZWN0Lm5leHQoY3VycmVuY3kpO1xuICAgICAgICB0aGlzLmNvbnN0cy5zZXRDdXJyZW5jeShjdXJyZW5jeS5jb2RlKTtcbiAgICAgICAgbGV0IHVwZGF0ZSA9IHRoaXMudXBkYXRlU3ViamVjdC5nZXRWYWx1ZSgpXG4gICAgICAgIHRoaXMudXBkYXRlU3ViamVjdC5uZXh0KCF1cGRhdGUpXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdjdXJyZW5jeScsIEpTT04uc3RyaW5naWZ5KHRoaXMuY29uc3RzLmN1cnJlbmN5KSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gR2VuZXJhIGxhIGNvbnZlcnRpYmlsaWRhZCBkZSBsYSBtb25lZGEgYmFzZSBhIGxhIG51ZXZhLiBTaSBiYXNlQ3VycmVuY3kgbm8gdGllbmUgdmFsb3IgXG4gICAgICogZW50b25jZXMgdXRpbGl6YSBsYSBtb25lZGEgYmFzZSBkZWwgY2FuYWwuXG4gICAgICogQHBhcmFtIGN1cnJlbmN5IE9iamV0byBkZSBsYSBtb25lZGEgZGVzdGluby5cbiAgICAgKiBAcGFyYW0gYmFzZUN1cnJlbmN5IENvZGlnbyBkZSBsYSBtb25lZGEgYmFzZS4gKkVqOiBVU0QgfCBBUlMgfCBFVVIgfC4uLipcbiAgICAgKi9cbiAgICBnZW5lcmF0ZUNvbnZlcnRpYmlsaXR5ID0gYXN5bmMgKGN1cnJlbmN5OiBhbnksIGJhc2VDdXJyZW5jeT86IHN0cmluZykgPT4ge1xuICAgICAgICBpZiAoIWJhc2VDdXJyZW5jeSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBiYXNlQ3VycmVuY3kgPSBhd2FpdCB0aGlzLmluamVjdG9yLmdldChDaGFubmVsQ29uZmlnU2VydmljZSkuZ2V0QWN0aXZlQ2hhbm5lbCgpLmJhc2VDdXJyZW5jeTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgLy9jb25zb2xlLmVycm9yKGVycm9yKVxuICAgICAgICAgICAgICAgIGJhc2VDdXJyZW5jeSA9ICdVU0QnXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGN1cnJlbmN5LmNvZGUgPT0gYmFzZUN1cnJlbmN5KSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRDdXJyZW5jeShjdXJyZW5jeSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmdldENvbnZlcnRpYmlsaXR5KGJhc2VDdXJyZW5jeSwgY3VycmVuY3kuY29kZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gT2J0aWVuZSBsYSBjb252ZXJzaW9uIGRlc2RlIGxhIG1vbmVkYSBiYXNlIGEgbGEgZGVzdGluby4gUmVjaWJlIHVuIG9iamV0byBkZSB0aXBvIEN1cnJlbmN5Q29uZmlnLlxuICAgICAqIFNpIGxhIGNvbnZlcnNpb24gcmV0b3JuYSByZXN1bHRhZG8gcmVhbGl6YSBlbCBjYW1iaW8sIGRlIGxvIGNvbnRyYXJpbyBlbWl0ZSB1biBtZW5zYWplIGRlIGVycm9yLlxuICAgICAqIEBwYXJhbSBiYXNlQ3VycmVuY3kgQ29kaWdvIGRlIGxhIG1vbmVkYSBiYXNlLlxuICAgICAqIEBwYXJhbSB0YXJnZXRDdXJyZW5jeSBDb2RpZ28gZGUgbGEgbW9uZWRhIGRlc3Rpbm8uXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRDb252ZXJ0aWJpbGl0eSA9IChiYXNlQ3VycmVuY3k6IGFueSwgdGFyZ2V0Q3VycmVuY3k6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMuZ2V0Q29udmVydGliaWxpdHlBcGkoYmFzZUN1cnJlbmN5LCB0YXJnZXRDdXJyZW5jeSkpXG4gICAgICAgICAgICAudG9Qcm9taXNlKCkudGhlbihcbiAgICAgICAgICAgICAgICByZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcEN1cnJlbmN5ID0gcmVzWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRDdXJyZW5jeSh0ZW1wQ3VycmVuY3kpXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBsYSB2YXJpYWJsZSByZXMgbm8gY29udGllbmUgdmFsb3IsIGFzZWd1cmVzZSBkZSBxdWUgZXN0YSBjb252ZXJzacOzbiBlc3RlIGNvbmZpZ3VyYWRhIGVuIGVsIGJhY2tvZmZpY2UnKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnZXJyb3ItY29udmVydGliaWxpdHknKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKS5jYXRjaChlcnIgPT4gY29uc29sZS5sb2coZXJyKSlcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gQ2FyZ2EgbGEgbW9uZWRhLCBzaSBoYXkgdW5hIGVuIGVsIGxvY2Fsc3RvcmFnZSB0b21hIGVzYSB5IHJlYWxpemEgbGEgY29udmVyc2lvbi5cbiAgICAgKiBkZSBsbyBjb250cmFyaW8gc29sbyBzZXRlYSBlbiBlbCBvYnNlcnZhYmxlIGN1cnJlbmN5U3ViamVjdCBlbCB2YWxvciBwb3IgZGVmZWN0byBjYXJnYWRvIGVuIGxhcyBjb25zdGFudGVzLiBcbiAgICAgKi9cbiAgICBwcml2YXRlIGxvYWQgPSAoKSA9PiB7XG4gICAgICAgIGxldCBsb2NhbFN0b3JhZ2VDdXJyZW5jeSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjdXJyZW5jeScpXG4gICAgICAgIGlmIChsb2NhbFN0b3JhZ2VDdXJyZW5jeSkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbmN5ID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2VDdXJyZW5jeSlcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVDb252ZXJ0aWJpbGl0eShjdXJyZW5jeSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY3VycmVuY3lTdWJqZWN0Lm5leHQodGhpcy5jb25zdHMuY3VycmVuY3kpXG4gICAgICAgIH1cbiAgICB9XG5cbn1cbiJdfQ==
|
|
@@ -14,7 +14,7 @@ import { SortFilter } from '../classes/filters/SortFilter';
|
|
|
14
14
|
import { OptionsService } from './options.service';
|
|
15
15
|
import { PriceRangeFilter } from '../classes/filters/PriceRangeFilter';
|
|
16
16
|
import * as i0 from "@angular/core";
|
|
17
|
-
import * as i1 from "
|
|
17
|
+
import * as i1 from "./options.service";
|
|
18
18
|
import * as i2 from "@angular/router";
|
|
19
19
|
var FiltersService = /** @class */ (function () {
|
|
20
20
|
function FiltersService(options, route) {
|
|
@@ -113,7 +113,7 @@ var FiltersService = /** @class */ (function () {
|
|
|
113
113
|
{ type: OptionsService },
|
|
114
114
|
{ type: Router }
|
|
115
115
|
]; };
|
|
116
|
-
FiltersService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FiltersService_Factory() { return new
|
|
116
|
+
FiltersService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FiltersService_Factory() { return new FiltersService(i0.ɵɵinject(i1.OptionsService), i0.ɵɵinject(i2.Router)); }, token: FiltersService, providedIn: "root" });
|
|
117
117
|
FiltersService = __decorate([
|
|
118
118
|
Injectable({
|
|
119
119
|
providedIn: 'root'
|