@pmcretail/mapper-library 0.0.55 → 0.0.60

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.
@@ -33,6 +33,7 @@ export class WebReturnSalesforceMapperBuilderClass {
33
33
  },
34
34
  currentTransactionDetails: {}
35
35
  };
36
+ this.STORE_PREFIX = 'store@';
36
37
  if (orderDetails) {
37
38
  this.orderDetails = orderDetails;
38
39
  }
@@ -100,8 +101,8 @@ export class WebReturnSalesforceMapperBuilderClass {
100
101
  deliveryMethod: this.getDeliveryMethod().toString(),
101
102
  totalLinePrice: product.price ? product.price : 0
102
103
  };
103
- if ((subprovider === null || subprovider === void 0 ? void 0 : subprovider.toLocaleUpperCase()) === PROVIDERS.SALESFORCE_OSU.toLocaleUpperCase() && (product === null || product === void 0 ? void 0 : product.c_osuObjectData)) {
104
- const availableQty = this.getAvailableQty(JSON.parse(product === null || product === void 0 ? void 0 : product.c_osuObjectData));
104
+ if ((subprovider === null || subprovider === void 0 ? void 0 : subprovider.toLocaleUpperCase()) === PROVIDERS.SALESFORCE_OSU.toLocaleUpperCase()) {
105
+ const availableQty = (product === null || product === void 0 ? void 0 : product.c_osuObjectData) ? this.getAvailableQty(JSON.parse(product === null || product === void 0 ? void 0 : product.c_osuObjectData)) : 0;
105
106
  productObj.availableQuantity = availableQty > 0 ? availableQty : 0;
106
107
  }
107
108
  if (product && product.price != 0) {
@@ -317,10 +318,21 @@ export class WebReturnSalesforceMapperBuilderClass {
317
318
  AppLoggerService.logDebug(this.className, "customer", "customer mapping ended...");
318
319
  return this;
319
320
  }
320
- isInStoreOrder() {
321
+ isInStoreOrder(subprovider) {
322
+ var _a, _b, _c;
321
323
  AppLoggerService.logDebug(this.className, "isInStoreOrder", "isInStoreOrder mapping started...");
322
- if (this.orderDetails.c_isInStoreOrder) {
323
- this.webReturnObject.isInStoreOrder = true;
324
+ const provider = subprovider === null || subprovider === void 0 ? void 0 : subprovider.toLocaleUpperCase();
325
+ switch (provider) {
326
+ case PROVIDERS.SALESFORCE_OSU.toLocaleUpperCase():
327
+ this.webReturnObject.isInStoreOrder = !!((_a = this.orderDetails) === null || _a === void 0 ? void 0 : _a.c_isInStoreOrder);
328
+ break;
329
+ case PROVIDERS.SALESFORCE_XML.toLocaleUpperCase():
330
+ this.webReturnObject.isInStoreOrder =
331
+ ((_c = (_b = this.orderDetails) === null || _b === void 0 ? void 0 : _b.created_by) === null || _c === void 0 ? void 0 : _c.toLowerCase().startsWith(this.STORE_PREFIX)) || false;
332
+ break;
333
+ default:
334
+ this.webReturnObject.isInStoreOrder = false;
335
+ break;
324
336
  }
325
337
  AppLoggerService.logDebug(this.className, "isInStoreOrder", "isInStoreOrder mapping ended...");
326
338
  return this;
@@ -444,4 +456,4 @@ export class WebReturnSalesforceMapperBuilderClass {
444
456
  return shippedQtys - returnedQtys;
445
457
  }
446
458
  }
447
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2ViUmV0dXJuU2FsZXNmb3JjZU1hcHBlci5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21hcHBlci1saWJyYXJ5L3NyYy9saWIvV2ViUmV0dXJuU2FsZXNmb3JjZU1hcHBlci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXFGLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQWdDLFNBQVMsRUFBbUIsZ0JBQWdCLEVBQTJJLE1BQU0sd0JBQXdCLENBQUM7QUFDdFosT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sc0RBQXNELENBQUM7QUFFdEYsTUFBTSxPQUFPLHFDQUFxQztJQWtDOUMsWUFBWSxZQUEwQixFQUMxQixZQUEyQjtRQUEzQixpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQWpDdkMsY0FBUyxHQUFHLHVDQUF1QyxDQUFDO1FBRTVDLG9CQUFlLEdBQXdCO1lBQzNDLEVBQUUsRUFBRSxFQUFFO1lBQ04sT0FBTyxFQUFFLEVBQUU7WUFDWCxPQUFPLEVBQUUsRUFBRTtZQUNYLFdBQVcsRUFBRSxFQUFFO1lBQ2Ysa0JBQWtCLEVBQUUsRUFBRTtZQUN0QixRQUFRLEVBQUUsRUFBRTtZQUNaLFVBQVUsRUFBRSxFQUFFO1lBQ2QsZ0JBQWdCLEVBQUUsRUFBRTtZQUNwQixNQUFNLEVBQUUsS0FBSztZQUNiLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsYUFBYSxFQUFFLEVBQUU7WUFDakIsWUFBWSxFQUFFLEVBQUU7WUFDaEIsUUFBUSxFQUFFO2dCQUNOLEVBQUUsRUFBRSxFQUFFO2dCQUNOLEtBQUssRUFBRSxFQUFFO2dCQUNULFNBQVMsRUFBRSxFQUFFO2dCQUNiLFFBQVEsRUFBRSxFQUFFO2dCQUNaLGNBQWMsRUFBRSxFQUFFO2dCQUNsQixlQUFlLEVBQUUsRUFBRTtnQkFDbkIsZUFBZSxFQUFFLEVBQUU7Z0JBQ25CLFNBQVMsRUFBRSxFQUFFO2dCQUNiLFFBQVEsRUFBRSxFQUFFO2dCQUNaLGtCQUFrQixFQUFFLEtBQUs7YUFDNUI7WUFDRCx5QkFBeUIsRUFBRSxFQUErQjtTQUM3RCxDQUFBO1FBTUcsSUFBSSxZQUFZLEVBQUU7WUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztTQUNwQztRQUNELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxxQkFBcUI7UUFDakIsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsdUJBQXVCLEVBQUUseUZBQXlGLENBQUMsQ0FBQztRQUM5SixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQztRQUM1RCxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4RixJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUMvRCxJQUFJLENBQUMsZUFBZSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7UUFDeEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25DLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUMsT0FBTyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN0RixJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDdEYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDN0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO1FBQzNFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHVCQUF1QixFQUFFLGdDQUFnQyxDQUFDLENBQUM7UUFDckcsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELDRCQUE0QjtJQUM1QixxSUFBcUk7SUFDckksMkhBQTJIO0lBQzNILDZJQUE2STtJQUM3SSxvRkFBb0Y7SUFDcEYscUNBQXFDO0lBQ3JDLCtCQUErQjtJQUMvQiwrRkFBK0Y7SUFDL0YsMERBQTBEO0lBQzFELDJCQUEyQjtJQUMzQiwyREFBMkQ7SUFDM0Qsb0JBQW9CO0lBQ3BCLGdCQUFnQjtJQUNoQixhQUFhO0lBQ2IsZUFBZTtJQUNmLCtDQUErQztJQUMvQyxRQUFRO0lBQ1IsZ0lBQWdJO0lBQ2hJLG1CQUFtQjtJQUNuQixJQUFJO0lBRUosaUJBQWlCO1FBQ2IsSUFBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3RFLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2pHLElBQUcsbUJBQW1CO2dCQUFFLE9BQU8sZ0JBQWdCLENBQUMsYUFBYSxDQUFDOztnQkFDekQsT0FBTyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUM7U0FDekM7YUFBTTtZQUNILE9BQU8sRUFBRSxDQUFDO1NBQ2I7SUFDTCxDQUFDO0lBRUQsT0FBTyxDQUFDLFdBQVc7UUFDZixnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsNEJBQTRCLENBQUMsQ0FBQztRQUNuRixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0MsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQy9FLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FDbkMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxVQUFVLEdBQVM7b0JBQ25CLFdBQVcsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO29CQUN2RCxHQUFHLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRTtvQkFDakQsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2pELGdCQUFnQixFQUFFLENBQUM7b0JBQ25CLEtBQUssRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNsRCxVQUFVLEVBQUUsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFO29CQUNsQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxFQUFFO29CQUNuRCxjQUFjLEVBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDcEQsQ0FBQTtnQkFDRCxJQUFHLENBQUEsV0FBVyxhQUFYLFdBQVcsdUJBQVgsV0FBVyxDQUFFLGlCQUFpQixFQUFFLE1BQUssU0FBUyxDQUFDLGNBQWMsQ0FBQyxpQkFBaUIsRUFBRSxLQUFJLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxlQUFlLENBQUEsRUFBQztvQkFDN0csTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxlQUFlLENBQUMsQ0FBQyxDQUFDO29CQUNoRixVQUFVLENBQUMsaUJBQWlCLEdBQUcsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3RFO2dCQUNELElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksQ0FBQyxFQUFFO29CQUMvQixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQzVEO1lBQ0wsQ0FBQyxDQUNKLENBQUM7U0FDTDtRQUNELGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSwwQkFBMEIsQ0FBQyxDQUFDO1FBQ2pGLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxhQUFhO1FBQ1QsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLGtDQUFrQyxDQUFDLENBQUM7UUFDL0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLEVBQXNCLENBQUM7UUFDbkUsSUFBSSxrQkFBa0IsR0FBRyxFQUFzQixDQUFDO1FBQ2hELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUMvRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQ25DLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUNmLE9BQU8sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3pDLElBQUksT0FBTyxDQUFDLGlCQUFpQixJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNuRSxPQUFPLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUM3QixDQUFDLFNBQVMsRUFBRSxFQUFFO3dCQUNWLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFOzRCQUN4QixJQUFJLGdCQUFnQixHQUFHLEVBQW9CLENBQUM7NEJBQzVDLElBQUksT0FBTyxHQUFHLEVBQWEsQ0FBQzs0QkFDNUIsT0FBTyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDOzRCQUNyQyxPQUFPLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDM0QsZ0JBQWdCLENBQUMsT0FBTyxHQUFHLEVBQWUsQ0FBQzs0QkFDM0MsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQzs0QkFFdkMsZ0JBQWdCLENBQUMsVUFBVSxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7NEJBQ3hDLGdCQUFnQixDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7NEJBQ3BGLGdCQUFnQixDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7NEJBQzlFLGdCQUFnQixDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsZ0JBQWdCLElBQUksU0FBUyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDOzRCQUN0SSxnQkFBZ0IsQ0FBQyxlQUFlLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDbkYsZ0JBQWdCLENBQUMsSUFBSSxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUEsRUFBRSxDQUFDLENBQUM7NEJBQ3pILGdCQUFnQixDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7NEJBQ2hGLGdCQUFnQixDQUFDLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7NEJBQ2hGLGtCQUFrQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO3lCQUM3QztvQkFDTCxDQUFDLENBQ0osQ0FBQztpQkFDTDtZQUNMLENBQUMsQ0FDSixDQUFDO1NBQ0w7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsa0JBQWtCLENBQUM7UUFDL0QsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLGdDQUFnQyxDQUFDLENBQUM7UUFDN0YsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELG9CQUFvQjtRQUNoQixnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSx5Q0FBeUMsQ0FBQyxDQUFDO1FBRTdHLElBQUkseUJBQXlCLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUVqRixJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsR0FBRyx5QkFBeUIsQ0FBQztRQUM3RSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxzQkFBc0IsRUFBRSx1Q0FBdUMsQ0FBQyxDQUFDO1FBQzNHLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxNQUFNO1FBQzNCLElBQUk7WUFDQSxJQUFJLHlCQUF5QixHQUFHLEVBQTRCLENBQUM7WUFDN0QsSUFBSSxNQUFNLENBQUMsdUJBQXVCLElBQUksTUFBTSxDQUFDLHVCQUF1QixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzdFLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxPQUFPLENBQ2xDLENBQUMsb0JBQW9CLEVBQUUsRUFBRTtvQkFDckIsSUFBSSx1QkFBdUIsR0FBRyxFQUEwQixDQUFDO29CQUV6RCx1QkFBdUIsQ0FBQyxXQUFXLEdBQUcsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDM0csdUJBQXVCLENBQUMsSUFBSSxHQUFHLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFFLFNBQVMsQ0FBQSxDQUFDLENBQUEsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDM0ssdUJBQXVCLENBQUMsZUFBZSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNoSCx1QkFBdUIsQ0FBQyxXQUFXLEdBQUcsb0JBQW9CLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDakgsdUJBQXVCLENBQUMsYUFBYSxHQUFHLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzdHLHVCQUF1QixDQUFDLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQyxnQkFBZ0IsSUFBSSxvQkFBb0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUM5Syx1QkFBdUIsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUN6RyxJQUFJLG9CQUFvQixDQUFDLFdBQVcsRUFBRTt3QkFDbEMsdUJBQXVCLENBQUMsSUFBSSxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUM7d0JBQ3JELHVCQUF1QixDQUFDLFVBQVUsR0FBRyxvQkFBb0IsQ0FBQyxXQUFXLENBQUM7d0JBQ3RFLHVCQUF1QixDQUFDLFlBQVksR0FBRyxlQUFlLENBQUMsV0FBVyxDQUFDO3FCQUN0RTtvQkFDRCx5QkFBeUIsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQztnQkFDNUQsQ0FBQyxDQUNKLENBQUM7YUFDTDtZQUdELGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLDBCQUEwQixFQUFFLDZCQUE2QixFQUFFLHlCQUF5QixDQUFDLENBQUM7WUFDaEksT0FBTyx5QkFBeUIsQ0FBQztTQUNwQztRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ1osZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsMEJBQTBCLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3hGLE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUI7SUFDTCxDQUFDO0lBRUQsNkJBQTZCO1FBQ3pCLElBQUk7WUFFQSxJQUFJLG9CQUFvQixHQUFHLEVBQTBCLENBQUM7WUFDdEQsSUFBSSxnQkFBZ0IsR0FBRyxFQUFlLENBQUM7WUFDdkMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMvRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQ25DLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO29CQUNmLE9BQU8sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7b0JBRXpDLElBQUksT0FBTyxDQUFDLGlCQUFpQixJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO3dCQUNuRSxPQUFPLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUM3QixDQUFDLFNBQVMsRUFBRSxFQUFFOzRCQUNWLElBQUksU0FBUyxDQUFDLFdBQVcsRUFBRTtnQ0FDdkIsSUFBSSxPQUFPLEdBQUcsRUFBYSxDQUFDO2dDQUM1QixPQUFPLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7Z0NBQ3JDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUMzRCxPQUFPLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQ0FDaEUsT0FBTyxDQUFDLGVBQWUsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUMxRSxPQUFPLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQ0FDNUUsT0FBTyxDQUFDLHlCQUF5QixHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQ0FDbkYsT0FBTyxDQUFDLFdBQVcsR0FBRyxTQUFTLENBQUMsWUFBWSxDQUFDO2dDQUM3QyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7NkJBQ2xDO3dCQUNMLENBQUMsQ0FDSixDQUFDO3FCQUNMO2dCQUNMLENBQUMsQ0FDSixDQUFDO2FBQ0w7WUFFRCxJQUFJLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzdCLG9CQUFvQixDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQztnQkFDakYsb0JBQW9CLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQztnQkFDL0Qsb0JBQW9CLENBQUMsZUFBZSxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0SCxvQkFBb0IsQ0FBQyxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDO2dCQUNuRSxvQkFBb0IsQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUM7Z0JBQ25GLG9CQUFvQixDQUFDLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUM7Z0JBQ3JFLG9CQUFvQixDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7Z0JBQ3RDLG9CQUFvQixDQUFDLElBQUksR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDO2dCQUNsRCxvQkFBb0IsQ0FBQyxZQUFZLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQztnQkFDekQsb0JBQW9CLENBQUMsT0FBTyxHQUFHLGdCQUFnQixDQUFDO2FBQ25EO1lBQ0QsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsK0JBQStCLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztZQUV6SCxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUc7Z0JBQ3BELElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsQ0FBQzthQUN6RDtZQUVELElBQUksb0JBQW9CLElBQUksb0JBQW9CLENBQUMsV0FBVyxFQUFHO2dCQUMvRCxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQzthQUMzRTtZQUVELE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNaLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLCtCQUErQixFQUFFLGlDQUFpQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQ3JILE1BQU0sSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDMUI7SUFDTCxDQUFDO0lBRUQsb0NBQW9DO1FBQ2hDLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUVqSCxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFHLEVBQUUsQ0FBQyxDQUFBO1lBQy9FLENBQUMsQ0FBQyxDQUFBO1NBQ0w7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsc0NBQXNDLENBQ2xDLEtBQTBCLEVBQzFCLFNBQStCO1FBRS9CLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLHdDQUF3QyxFQUM5RSx3QkFBd0IsSUFBSSxDQUFDLFNBQVMsQ0FDbEMsU0FBUyxDQUNaLEVBQUUsQ0FDTixDQUFDO1FBQ0YsSUFBSSxTQUFTLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxNQUFNLElBQUksU0FBUyxDQUFDLFlBQVksS0FBSyxlQUFlLENBQUMsSUFBSSxFQUFFO1lBQzdGLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUN0QyxPQUFPLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUVwRCxJQUFJLFNBQVMsQ0FBQyxPQUFPLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUNuRCxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO3dCQUM1QixJQUFJLENBQUMsQ0FBQyxVQUFVLEtBQUssT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsRUFBRTs0QkFDaEQsT0FBTyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsZUFBZSxDQUFDO3lCQUNuRTtvQkFDTCxDQUFDLENBQUMsQ0FBQztpQkFDTjtZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ047YUFDSTtZQUNELEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUN0QyxPQUFPLEdBQUcsSUFBSSxDQUFDLDJCQUEyQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLFNBQVMsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO29CQUNyRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsVUFBVSxLQUFLLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDaEgsTUFBTSwyQkFBMkIsR0FBRyxDQUFDLFdBQVcsSUFBSSxXQUFXLENBQUMseUJBQXlCLElBQUksV0FBVyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQzt3QkFDbEksQ0FBQyxXQUFXLENBQUMseUJBQXlCLEdBQUcsV0FBVyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDekYsT0FBTyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLDJCQUEyQixDQUFDLENBQUM7aUJBQ3JIO1lBQ0wsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFHUSwyQkFBMkIsQ0FBQyxPQUFpQjtRQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRTtZQUMxQixPQUFPLENBQUMsYUFBYSxHQUFHO2dCQUN0QixtQkFBbUIsRUFBRSxDQUFDO2dCQUN0QixvQkFBb0IsRUFBRSxDQUFDO2dCQUN2QixhQUFhLEVBQUUsQ0FBQzthQUNqQixDQUFDO1NBQ0g7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBR0gsUUFBUTtRQUNKLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSw2QkFBNkIsQ0FBQyxDQUFDO1FBQ3JGLElBQUksV0FBVyxHQUFHLEVBQWMsQ0FBQztRQUNqQyxXQUFXLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDMUksV0FBVyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzlKLFdBQVcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUUzSixJQUFJLGVBQWUsR0FBRyxFQUFlLENBQUM7UUFDdEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUMvQixRQUFRLENBQUMsRUFBRTtZQUNQLElBQUksa0JBQWtCLEdBQUcsRUFBYSxDQUFDO1lBQ3ZDLGtCQUFrQixDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3RILGtCQUFrQixDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ25KLGtCQUFrQixDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsZ0JBQWdCLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ3hJLGtCQUFrQixDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsZ0JBQWdCLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVILGtCQUFrQixDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDaEMsa0JBQWtCLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxnQkFBZ0IsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDOUksZUFBZSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FDSixDQUFBO1FBQ0QsV0FBVyxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFFOUMsSUFBSSxjQUFjLEdBQUcsRUFBZSxDQUFDO1FBQ3JDLElBQUksaUJBQWlCLEdBQUcsRUFBYSxDQUFDO1FBQ3RDLGlCQUFpQixDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzdJLGlCQUFpQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQzFLLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQy9KLGlCQUFpQixDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ25KLGlCQUFpQixDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDL0IsaUJBQWlCLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNoQyxjQUFjLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDdkMsV0FBVyxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFFNUMsSUFBSSxlQUFlLEdBQUcsRUFBdUIsQ0FBQztRQUM5QyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQy9CLFFBQVEsQ0FBQyxFQUFFO1lBQ1AsSUFBSSxrQkFBa0IsR0FBRyxFQUFxQixDQUFDO1lBQy9DLGtCQUFrQixDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDekUsa0JBQWtCLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNwRixlQUFlLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUNKLENBQUM7UUFDRixXQUFXLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztRQUU5QyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUM7UUFDNUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLDJCQUEyQixDQUFDLENBQUM7UUFDbkYsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELGNBQWM7UUFDVixnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxtQ0FBbUMsQ0FBQyxDQUFDO1FBQ2pHLElBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNuQyxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7U0FDOUM7UUFDRCxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDO1FBQy9GLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCwwQkFBMEI7UUFDdEIsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsNEJBQTRCLEVBQUUsK0NBQStDLENBQUMsQ0FBQztRQUN6SCxJQUFJLDBCQUEwQixHQUFHLEVBQWtDLENBQUM7UUFDcEUsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZFLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FDL0IsUUFBUSxDQUFDLEVBQUU7Z0JBQ1AsSUFBSSw2QkFBNkIsR0FBRyxFQUFnQyxDQUFDO2dCQUNyRSxJQUFJLGVBQWUsR0FBRyxFQUFxQixDQUFDO2dCQUM1Qyw2QkFBNkIsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RHLDZCQUE2QixDQUFDLFlBQVksR0FBRyxTQUFTLENBQUMsVUFBVSxDQUFDO2dCQUNsRSxlQUFlLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxlQUFlLElBQUksUUFBUSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hILGVBQWUsQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RGLDZCQUE2QixDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUM7Z0JBQ3hELDBCQUEwQixDQUFDLElBQUksQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1lBQ25FLENBQUMsQ0FDSixDQUFDO1NBQ0w7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLDBCQUEwQixHQUFHLDBCQUEwQixDQUFDO1FBQzdFLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLDRCQUE0QixFQUFFLDZDQUE2QyxDQUFDLENBQUM7UUFDdkgsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELGtCQUFrQjtRQUNkLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLG9CQUFvQixFQUFFLG9CQUFvQixDQUFDLENBQUM7UUFFdEYsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhO2FBQzNDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNwQixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1RCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztZQUUzQyxPQUFPO2dCQUNILFVBQVUsRUFBRSxLQUFLLEdBQUcsQ0FBQztnQkFDckIsR0FBRztnQkFDSCxPQUFPO2FBQ1YsQ0FBQztRQUNOLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUViLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHO1lBQzFDLFFBQVE7U0FDWCxDQUFDO1FBRUYsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsb0JBQW9CLEVBQUUsVUFBVSxRQUFRLENBQUMsTUFBTSxhQUFhLENBQUMsQ0FBQztRQUN4RyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBRXBGLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxhQUFhO1FBQ1QsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxFQUFFLGtDQUFrQyxDQUFDLENBQUM7UUFDL0YsSUFBSSxhQUFhLEdBQUcsRUFBbUIsQ0FBQztRQUN4QyxJQUFJLHFCQUFxQixHQUFHLEVBQTBCLENBQUM7UUFDdkQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUwsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDLFdBQVcsR0FBRyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMU4sYUFBYSxDQUFDLGFBQWEsR0FBRyxrQkFBa0IsR0FBRyx5QkFBeUIsQ0FBQztRQUM3RSxhQUFhLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZGLGFBQWEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUYsYUFBYSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RixhQUFhLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RKLGFBQWEsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEcsYUFBYSxDQUFDLDRCQUE0QixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9HLHFCQUFxQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM5RyxxQkFBcUIsQ0FBQyw0QkFBNEIsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2SCxhQUFhLENBQUMsUUFBUSxHQUFHLHFCQUFxQixDQUFDO1FBQy9DLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuRCxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUUsZ0NBQWdDLENBQUMsQ0FBQztRQUM3RixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsUUFBUSxDQUFDLFFBQVE7UUFDYixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFVBQVUsQ0FBQyxVQUFVO1FBQ2pCLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQU87UUFDWCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFPO1FBQ1gsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxXQUFXLENBQUMsV0FBbUI7UUFDM0IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO1FBQy9DLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxrQkFBMEI7UUFDekMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3RCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUs7UUFDUCxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFjO1FBQ3ZCLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRUQsY0FBYyxDQUFDLElBQUk7UUFDZixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUs7UUFDRCxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUN0RSxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDaEMsQ0FBQztJQUVELGNBQWMsQ0FBQyxJQUFJO1FBQ2YsSUFBSSxJQUFJLEVBQUU7WUFDTixPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3ZDO0lBQ0wsQ0FBQztJQUVELGVBQWUsQ0FBQyxNQUFXO1FBQ3ZCLElBQUksV0FBVyxHQUFHLENBQUMsQ0FBQztRQUNwQixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7UUFFckIsSUFBSSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsT0FBTyxFQUFFO1lBQ2pCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzlDLElBQUksVUFBVSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hHLFdBQVcsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDckM7UUFFRCxJQUFJLE1BQU0sYUFBTixNQUFNLHVCQUFOLE1BQU0sQ0FBRSxRQUFRLEVBQUU7WUFDbEIsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEQsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEcsWUFBWSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUNyQztRQUVELE9BQU8sV0FBVyxHQUFHLFlBQVksQ0FBQztJQUN0QyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXJyZW5jeVBpcGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBBZGRyZXNzLCBCYXNrZXRTdW1tYXJ5LCBCYXNrZXRTdW1tYXJ5RGV0YWlscywgQ3VycmVudFRyYW5zYWN0aW9uRGV0YWlscywgQ3VzdG9tZXIsIERFTElWRVJZX01FVEhPRFMsIFBST01PVElPTl9MRVZFTCwgUFJPTU9USU9OX1RZUEUsIElOSVRJQVRJTkdfTU9EVUxFLCBMaW5lUHJvbW90aW9ucywgT3JkZXJEZXRhaWxzLCBQUk9WSURFUlMsIFNoaXBtZW50RGV0YWlscywgVFJBTlNBQ1RJT05fVFlQRSwgVHJhbnNhY3Rpb25Eb2N1bWVudCwgVHJhbnNhY3Rpb25JbmZvLCBUcmFuc2FjdGlvblByb21vdGlvbiwgVHJpZ2dlciwgZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHMsIFRQcm9kdWN0LCBSZWZ1bmRQcm9kdWN0Q2hhbmdlLCBQcm9kdWN0IH0gZnJvbSBcIi4vbWFwcGVyLWxpYnJhcnkubW9kZWxcIjtcbmltcG9ydCB7IE51bWJlclV0aWxTZXJ2aWNlIH0gZnJvbSBcIi4vbnVtYmVyLXV0aWwuc2VydmljZVwiO1xuaW1wb3J0IHtBcHBMb2dnZXJTZXJ2aWNlfSBmcm9tICdAcG1jcmV0YWlsL2NvbW1vbi1zZXJ2aWNlcy9jb21tb24vYXBwLWxvZ2dlci5zZXJ2aWNlJztcblxuZXhwb3J0IGNsYXNzIFdlYlJldHVyblNhbGVzZm9yY2VNYXBwZXJCdWlsZGVyQ2xhc3Mge1xuXG4gICAgY2xhc3NOYW1lID0gXCJXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzXCI7XG4gICAgcHJpdmF0ZSBvcmRlckRldGFpbHM6IE9yZGVyRGV0YWlscztcbiAgICBwcml2YXRlIHdlYlJldHVybk9iamVjdDogVHJhbnNhY3Rpb25Eb2N1bWVudCA9IHtcbiAgICAgICAgaWQ6ICcnLFxuICAgICAgICBvcmdDb2RlOiBcIlwiLFxuICAgICAgICBzdG9yZUlkOiBcIlwiLFxuICAgICAgICBzdG9yZU5vZGVJZDogXCJcIixcbiAgICAgICAgc3RvcmVOb2RlU3RydWN0dXJlOiBcIlwiLFxuICAgICAgICBkZXZpY2VJZDogXCJcIixcbiAgICAgICAgdGVybWluYWxJZDogXCJcIixcbiAgICAgICAgaW5pdGlhdGluZ01vZHVsZTogXCJcIixcbiAgICAgICAgZXhwb3J0OiBmYWxzZSxcbiAgICAgICAgaXNJblN0b3JlT3JkZXI6IGZhbHNlLFxuICAgICAgICBiYXNrZXQ6IHt9LFxuICAgICAgICBiYXNrZXRTdW1tYXJ5OiB7fSxcbiAgICAgICAgYmFzZUN1cnJlbmN5OiBcIlwiLFxuICAgICAgICBjdXN0b21lcjoge1xuICAgICAgICAgICAgaWQ6ICcnLFxuICAgICAgICAgICAgZW1haWw6ICcnLFxuICAgICAgICAgICAgZmlyc3ROYW1lOiAnJyxcbiAgICAgICAgICAgIGxhc3ROYW1lOiAnJyxcbiAgICAgICAgICAgIGJpbGxpbmdBZGRyZXNzOiBbXSxcbiAgICAgICAgICAgIHNoaXBwaW5nQWRkcmVzczogW10sXG4gICAgICAgICAgICBzaGlwbWVudERldGFpbHM6IFtdLFxuICAgICAgICAgICAgdGVsZXBob25lOiAnJyxcbiAgICAgICAgICAgIHBvc3RDb2RlOiAnJyxcbiAgICAgICAgICAgIG5vQ3VzdG9tZXJTZWxlY3RlZDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgY3VycmVudFRyYW5zYWN0aW9uRGV0YWlsczoge30gYXMgQ3VycmVudFRyYW5zYWN0aW9uRGV0YWlsc1xuICAgIH1cbiAgICBudW1iZXJVdGlsU2VydmljZTogYW55O1xuXG4gICAgY29uc3RydWN0b3Iob3JkZXJEZXRhaWxzOiBPcmRlckRldGFpbHMsXG4gICAgICAgIHByaXZhdGUgY3VycmVuY3lQaXBlPzogQ3VycmVuY3lQaXBlXG4gICAgICAgICkge1xuICAgICAgICBpZiAob3JkZXJEZXRhaWxzKSB7XG4gICAgICAgICAgICB0aGlzLm9yZGVyRGV0YWlscyA9IG9yZGVyRGV0YWlscztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm51bWJlclV0aWxTZXJ2aWNlID0gbmV3IE51bWJlclV0aWxTZXJ2aWNlKGN1cnJlbmN5UGlwZSk7XG4gICAgfVxuXG4gICAgd2ViUmV0dXJuQ29tbW9uTWFwcGVyKCkge1xuICAgICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcIndlYlJldHVybkNvbW1vbk1hcHBlclwiLCBcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiB3ZWJSZXR1cm5Db21tb25NYXBwZXIgc3RhcnRlZC4uLlwiKTtcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3RbJ3R5cGUnXSA9IFRSQU5TQUNUSU9OX1RZUEUuV0VCX1JFVFVSTlM7XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0WydkYXRldGltZSddID0gdGhpcy5nZXRVVENEYXRlVGltZSh0aGlzLm9yZGVyRGV0YWlscy5sYXN0X21vZGlmaWVkKTtcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuYmFzZUN1cnJlbmN5ID0gdGhpcy5vcmRlckRldGFpbHMuY3VycmVuY3k7XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LnN1YnNpZGlhcnlJZCA9ICcxJztcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuZXhwb3J0ID0gdHJ1ZTtcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuaW5pdGlhdGluZ01vZHVsZSA9IElOSVRJQVRJTkdfTU9EVUxFLkVCQVNLRVQ7XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmNyZWF0ZWRBdCA9IHRoaXMuZ2V0VVRDRGF0ZVRpbWUodGhpcy5vcmRlckRldGFpbHMuY3JlYXRpb25fZGF0ZSk7XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LnVwZGF0ZWRBdCA9IHRoaXMuZ2V0VVRDRGF0ZVRpbWUodGhpcy5vcmRlckRldGFpbHMubGFzdF9tb2RpZmllZCk7XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LnRyYW5zQ29tcGxldGVkQXQgPSB0aGlzLmdldFVUQ0RhdGVUaW1lKHRoaXMub3JkZXJEZXRhaWxzLmxhc3RfbW9kaWZpZWQpO1xuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdFsnZXh0ZXJuYWxUcmFuc2FjdGlvbklkJ10gPSB0aGlzLm9yZGVyRGV0YWlscy5vcmRlcl9ubztcbiAgICAgICAgQXBwTG9nZ2VyU2VydmljZS5sb2dEZWJ1Zyh0aGlzLmNsYXNzTmFtZSwgXCJ3ZWJSZXR1cm5Db21tb25NYXBwZXJcIiwgXCJ3ZWJSZXR1cm5Db21tb25NYXBwZXIgZW5kZWQuLi5cIik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8vIGV4cG9ydChzdGF0dXMsIGRldGFpbHMpIHtcbiAgICAvLyAgICAgQXBwTG9nZ2VyU2VydmljZS5sb2dEZWJ1Zyh0aGlzLmNsYXNzTmFtZSwgXCJNYXBwZXIgbGlicmFyeTogV2ViUmV0dXJuU2FsZXNmb3JjZU1hcHBlckJ1aWxkZXJDbGFzczogZXhwb3J0IG1hcHBpbmcgc3RhcnRlZC4uLlwiKTtcbiAgICAvLyAgICAgQXBwTG9nZ2VyU2VydmljZS5sb2dEZWJ1Zyh0aGlzLmNsYXNzTmFtZSwgXCJNYXBwZXIgbGlicmFyeTogV2ViUmV0dXJuU2FsZXNmb3JjZU1hcHBlckJ1aWxkZXJDbGFzczogc3RhdHVzOlwiLCBzdGF0dXMpO1xuICAgIC8vICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBkZXRhaWxzOlwiLCBKU09OLnN0cmluZ2lmeShkZXRhaWxzKSk7XG4gICAgLy8gICAgIGlmIChzdGF0dXMgJiYgZGV0YWlscyAmJiBkZXRhaWxzLnByb3ZpZGVycyAmJiBkZXRhaWxzLnByb3ZpZGVycy5sZW5ndGggPiAwKSB7XG4gICAgLy8gICAgICAgICBkZXRhaWxzLnByb3ZpZGVycy5mb3JFYWNoKFxuICAgIC8vICAgICAgICAgICAgIHByb3ZpZGVyT2JqID0+IHtcbiAgICAvLyAgICAgICAgICAgICAgICAgaWYgKHByb3ZpZGVyT2JqLnByb3ZpZGVyICYmIHByb3ZpZGVyT2JqLnByb3ZpZGVyID09PSBQUk9WSURFUlMuU0FMRVNGT1JDRSkge1xuICAgIC8vICAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuZXhwb3J0ID0gdHJ1ZTtcbiAgICAvLyAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmV4cG9ydCA9IGZhbHNlO1xuICAgIC8vICAgICAgICAgICAgICAgICB9XG4gICAgLy8gICAgICAgICAgICAgfVxuICAgIC8vICAgICAgICAgKTtcbiAgICAvLyAgICAgfSBlbHNlIHtcbiAgICAvLyAgICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmV4cG9ydCA9IGZhbHNlO1xuICAgIC8vICAgICB9XG4gICAgLy8gICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRGVidWcodGhpcy5jbGFzc05hbWUsIFwiTWFwcGVyIGxpYnJhcnk6IFdlYlJldHVyblNhbGVzZm9yY2VNYXBwZXJCdWlsZGVyQ2xhc3M6IGV4cG9ydCBtYXBwaW5nIGVuZC4uLlwiKVxuICAgIC8vICAgICByZXR1cm4gdGhpcztcbiAgICAvLyB9XG5cbiAgICBnZXREZWxpdmVyeU1ldGhvZCgpIHtcbiAgICAgICAgaWYodGhpcy5vcmRlckRldGFpbHMuc2hpcG1lbnRzICYmIHRoaXMub3JkZXJEZXRhaWxzLnNoaXBtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBzaGlwVG9TdG9yZVNoaXBtZW50ID0gdGhpcy5vcmRlckRldGFpbHMuc2hpcG1lbnRzLmZpbmQoc2hpcG1lbnQgPT4gc2hpcG1lbnQuY19mcm9tU3RvcmVJZCk7XG4gICAgICAgICAgICBpZihzaGlwVG9TdG9yZVNoaXBtZW50KSByZXR1cm4gREVMSVZFUllfTUVUSE9EUy5TSElQX1RPX1NUT1JFO1xuICAgICAgICAgICAgZWxzZSByZXR1cm4gREVMSVZFUllfTUVUSE9EUy5ERUxJVkVSWTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb2R1Y3Qoc3VicHJvdmlkZXIpIHtcbiAgICAgICAgQXBwTG9nZ2VyU2VydmljZS5sb2dEZWJ1Zyh0aGlzLmNsYXNzTmFtZSwgXCJwcm9kdWN0XCIsIFwicHJvZHVjdCBtYXBwaW5nIHN0YXJ0ZWQuLi5cIik7XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldFsncHJvZHVjdHMnXSA9IFtdO1xuICAgICAgICBpZiAodGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcyAmJiB0aGlzLm9yZGVyRGV0YWlscy5wcm9kdWN0X2l0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMub3JkZXJEZXRhaWxzLnByb2R1Y3RfaXRlbXMuZm9yRWFjaChcbiAgICAgICAgICAgICAgICAocHJvZHVjdCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHByb2R1Y3RPYmogOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvZHVjdC5pdGVtX3RleHQgPyBwcm9kdWN0Lml0ZW1fdGV4dCA6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgU0tVOiBwcm9kdWN0LnByb2R1Y3RfaWQgPyBwcm9kdWN0LnByb2R1Y3RfaWQgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiBwcm9kdWN0LnF1YW50aXR5ID8gcHJvZHVjdC5xdWFudGl0eSA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZ1bmRlZFF1YW50aXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IHByb2R1Y3QuYmFzZV9wcmljZSA/IHByb2R1Y3QuYmFzZV9wcmljZSA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtTGluZUlkOiAoaW5kZXggKyAxKS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlNZXRob2Q6IHRoaXMuZ2V0RGVsaXZlcnlNZXRob2QoKS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxMaW5lUHJpY2U6IHByb2R1Y3QucHJpY2UgPyBwcm9kdWN0LnByaWNlIDogMFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmKHN1YnByb3ZpZGVyPy50b0xvY2FsZVVwcGVyQ2FzZSgpID09PSBQUk9WSURFUlMuU0FMRVNGT1JDRV9PU1UudG9Mb2NhbGVVcHBlckNhc2UoKSAmJiBwcm9kdWN0Py5jX29zdU9iamVjdERhdGEpe1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYXZhaWxhYmxlUXR5ID0gdGhpcy5nZXRBdmFpbGFibGVRdHkoSlNPTi5wYXJzZShwcm9kdWN0Py5jX29zdU9iamVjdERhdGEpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RPYmouYXZhaWxhYmxlUXVhbnRpdHkgPSBhdmFpbGFibGVRdHkgPiAwID8gYXZhaWxhYmxlUXR5IDogMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAocHJvZHVjdCAmJiBwcm9kdWN0LnByaWNlICE9IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldFsncHJvZHVjdHMnXS5wdXNoKHByb2R1Y3RPYmopO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcInByb2R1Y3RcIiwgXCJwcm9kdWN0IG1hcHBpbmcgZW5kZWQuLi5cIik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGxpbmVQcm9tb3Rpb24oKSB7XG4gICAgICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRGVidWcodGhpcy5jbGFzc05hbWUsIFwibGluZVByb21vdGlvblwiLCBcImxpbmVQcm9tb3Rpb24gbWFwcGluZyBzdGFydGVkLi4uXCIpO1xuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQubGluZVByb21vdGlvbiA9IFtdIGFzIExpbmVQcm9tb3Rpb25zW107XG4gICAgICAgIGxldCBsaW5lUHJvbW90aW9uQXJyYXkgPSBbXSBhcyBMaW5lUHJvbW90aW9uc1tdO1xuICAgICAgICBpZiAodGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcyAmJiB0aGlzLm9yZGVyRGV0YWlscy5wcm9kdWN0X2l0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMub3JkZXJEZXRhaWxzLnByb2R1Y3RfaXRlbXMuZm9yRWFjaChcbiAgICAgICAgICAgICAgICAocHJvZHVjdCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5pdGVtX2lkID0gKGluZGV4ICsgMSkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QucHJpY2VfYWRqdXN0bWVudHMgJiYgcHJvZHVjdC5wcmljZV9hZGp1c3RtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0LnByaWNlX2FkanVzdG1lbnRzLmZvckVhY2goXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHByb21vdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXByb21vdGlvbi5jb3Vwb25fY29kZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpbmVQcm9tb3Rpb25PYmogPSB7fSBhcyBMaW5lUHJvbW90aW9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0cmlnZ2VyID0ge30gYXMgVHJpZ2dlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIuaXRlbUxpbmVJZCA9IHByb2R1Y3QuaXRlbV9pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIucXVhbnRpdHkgPSBwcm9kdWN0LnF1YW50aXR5ID8gcHJvZHVjdC5xdWFudGl0eSA6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUHJvbW90aW9uT2JqLnRyaWdnZXIgPSBbXSBhcyBUcmlnZ2VyW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUHJvbW90aW9uT2JqLnRyaWdnZXIucHVzaCh0cmlnZ2VyKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVByb21vdGlvbk9iai5pdGVtTGluZUlkID0gaW5kZXggKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVByb21vdGlvbk9iai5wcm9tb3Rpb25JZCA9IHByb21vdGlvbi5wcm9tb3Rpb25faWQgPyBwcm9tb3Rpb24ucHJvbW90aW9uX2lkIDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUHJvbW90aW9uT2JqLmRpc3BsYXlUZXh0ID0gcHJvbW90aW9uLml0ZW1fdGV4dCA/IHByb21vdGlvbi5pdGVtX3RleHQgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQcm9tb3Rpb25PYmoucHJvbW90aW9uVHlwZSA9IHByb21vdGlvbi5hcHBsaWVkX2Rpc2NvdW50ICYmIHByb21vdGlvbi5hcHBsaWVkX2Rpc2NvdW50LnR5cGUgPyBwcm9tb3Rpb24uYXBwbGllZF9kaXNjb3VudC50eXBlIDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUHJvbW90aW9uT2JqLnByb21vdGlvbkFtb3VudCA9IHByb21vdGlvbi5wcmljZSA/IE1hdGguYWJzKHByb21vdGlvbi5wcmljZSkgOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVByb21vdGlvbk9iai5uYW1lID0gcHJvbW90aW9uLmNvdXBvbl9jb2RlICA/IHByb21vdGlvbi5jb3Vwb25fY29kZSA6IChwcm9tb3Rpb24uaXRlbV90ZXh0ID8gcHJvbW90aW9uLml0ZW1fdGV4dCA6JycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVByb21vdGlvbk9iai5wcm9tb3Rpb25JbmZvID0gcHJvbW90aW9uLml0ZW1fdGV4dCA/IHByb21vdGlvbi5pdGVtX3RleHQgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQcm9tb3Rpb25PYmoucHJvbW90aW9uTGluZVByaWNlID0gcHJvZHVjdC5wcmljZSAtIE1hdGguYWJzKHByb21vdGlvbi5wcmljZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUHJvbW90aW9uQXJyYXkucHVzaChsaW5lUHJvbW90aW9uT2JqKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldC5saW5lUHJvbW90aW9uID0gbGluZVByb21vdGlvbkFycmF5O1xuICAgICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcImxpbmVQcm9tb3Rpb25cIiwgXCJsaW5lUHJvbW90aW9uIG1hcHBpbmcgZW5kZWQuLi5cIik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uKCkge1xuICAgICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcInRyYW5zYWN0aW9uUHJvbW90aW9uXCIsIFwidHJhbnNhY3Rpb25Qcm9tb3Rpb24gbWFwcGluZyBzdGFydGVkLi4uXCIpO1xuXG4gICAgICAgIGxldCB0cmFuc2FjdGlvblByb21vdGlvbkFycmF5ID0gdGhpcy5nZXRUcmFuc2FjdGlvblByb21vdGlvbnModGhpcy5vcmRlckRldGFpbHMpO1xuXG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldC50cmFuc2FjdGlvblByb21vdGlvbiA9IHRyYW5zYWN0aW9uUHJvbW90aW9uQXJyYXk7XG4gICAgICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRGVidWcodGhpcy5jbGFzc05hbWUsIFwidHJhbnNhY3Rpb25Qcm9tb3Rpb25cIiwgXCJ0cmFuc2FjdGlvblByb21vdGlvbiBtYXBwaW5nIGVuZGVkLi4uXCIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBnZXRUcmFuc2FjdGlvblByb21vdGlvbnMoYmFza2V0KTogVHJhbnNhY3Rpb25Qcm9tb3Rpb25bXSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgdHJhbnNhY3Rpb25Qcm9tb3Rpb25BcnJheSA9IFtdIGFzIFRyYW5zYWN0aW9uUHJvbW90aW9uW107XG4gICAgICAgICAgICBpZiAoYmFza2V0Lm9yZGVyX3ByaWNlX2FkanVzdG1lbnRzICYmIGJhc2tldC5vcmRlcl9wcmljZV9hZGp1c3RtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgYmFza2V0Lm9yZGVyX3ByaWNlX2FkanVzdG1lbnRzLmZvckVhY2goXG4gICAgICAgICAgICAgICAgICAgICh0cmFuc2FjdGlvblByb21vdGlvbikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRyYW5zYWN0aW9uUHJvbW90aW9uT2JqID0ge30gYXMgVHJhbnNhY3Rpb25Qcm9tb3Rpb247XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uT2JqLmRpc3BsYXlUZXh0ID0gdHJhbnNhY3Rpb25Qcm9tb3Rpb24uaXRlbV90ZXh0ID8gdHJhbnNhY3Rpb25Qcm9tb3Rpb24uaXRlbV90ZXh0IDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbk9iai5uYW1lID0gdHJhbnNhY3Rpb25Qcm9tb3Rpb24uY291cG9uX2NvZGUgPyB0cmFuc2FjdGlvblByb21vdGlvbi5jb3Vwb25fY29kZSA6ICh0cmFuc2FjdGlvblByb21vdGlvbiAuaXRlbV90ZXh0P3RyYW5zYWN0aW9uUHJvbW90aW9uLml0ZW1fdGV4dCA6ICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uT2JqLnByb21vdGlvbkFtb3VudCA9IHRyYW5zYWN0aW9uUHJvbW90aW9uLnByaWNlID8gTWF0aC5hYnModHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHJpY2UpIDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uT2JqLnByb21vdGlvbklkID0gdHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHJvbW90aW9uX2lkID8gdHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHJvbW90aW9uX2lkIDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbk9iai5wcm9tb3Rpb25JbmZvID0gdHJhbnNhY3Rpb25Qcm9tb3Rpb24uaXRlbV90ZXh0ID8gdHJhbnNhY3Rpb25Qcm9tb3Rpb24uaXRlbV90ZXh0IDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbk9iai5wcm9tb3Rpb25UeXBlID0gdHJhbnNhY3Rpb25Qcm9tb3Rpb24uYXBwbGllZF9kaXNjb3VudCAmJiB0cmFuc2FjdGlvblByb21vdGlvbi5hcHBsaWVkX2Rpc2NvdW50LnR5cGUgPyB0cmFuc2FjdGlvblByb21vdGlvbi5hcHBsaWVkX2Rpc2NvdW50LnR5cGUgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uT2JqLml0ZW1MaW5lSWRzID0gdGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcy5tYXAoKHByb2R1Y3QsIGluZGV4KSA9PiBpbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zYWN0aW9uUHJvbW90aW9uLmNvdXBvbl9jb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmoudHlwZSA9IFBST01PVElPTl9UWVBFLkNPVVBPTjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbk9iai5jb3Vwb25Db2RlID0gdHJhbnNhY3Rpb25Qcm9tb3Rpb24uY291cG9uX2NvZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmouc3ViTGV2ZWxUeXBlID0gUFJPTU9USU9OX0xFVkVMLlRSQU5TQUNUSU9OO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25BcnJheS5wdXNoKHRyYW5zYWN0aW9uUHJvbW90aW9uT2JqKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgQXBwTG9nZ2VyU2VydmljZS5sb2dEZWJ1Zyh0aGlzLmNsYXNzTmFtZSwgXCJnZXRUcmFuc2FjdGlvblByb21vdGlvbnNcIiwgXCJnZXRUcmFuc2FjdGlvblByb21vdGlvbnMgOiBcIiwgdHJhbnNhY3Rpb25Qcm9tb3Rpb25BcnJheSk7XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb25Qcm9tb3Rpb25BcnJheTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRXJyb3IodGhpcy5jbGFzc05hbWUsIFwiZ2V0VHJhbnNhY3Rpb25Qcm9tb3Rpb25zXCIsIFwiZmFpbGVkOlwiLCBlcnJvcik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlTGluZVByb21vdGlvbldpdGhDb3Vwb24oKSB7XG4gICAgICAgIHRyeSB7XG5cbiAgICAgICAgICAgIGxldCB0cmFuc2FjdGlvblByb21vdGlvbiA9IHt9IGFzIFRyYW5zYWN0aW9uUHJvbW90aW9uO1xuICAgICAgICAgICAgbGV0IHRyaWdnZXJQcm9tb3Rpb24gPSBbXSBhcyBUcmlnZ2VyW107XG4gICAgICAgICAgICBpZiAodGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcyAmJiB0aGlzLm9yZGVyRGV0YWlscy5wcm9kdWN0X2l0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9yZGVyRGV0YWlscy5wcm9kdWN0X2l0ZW1zLmZvckVhY2goXG4gICAgICAgICAgICAgICAgICAgIChwcm9kdWN0LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5pdGVtX2lkID0gKGluZGV4ICsgMSkudG9TdHJpbmcoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QucHJpY2VfYWRqdXN0bWVudHMgJiYgcHJvZHVjdC5wcmljZV9hZGp1c3RtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5wcmljZV9hZGp1c3RtZW50cy5mb3JFYWNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvbW90aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvbW90aW9uLmNvdXBvbl9jb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRyaWdnZXIgPSB7fSBhcyBUcmlnZ2VyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIuaXRlbUxpbmVJZCA9IHByb2R1Y3QuaXRlbV9pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyLnF1YW50aXR5ID0gcHJvZHVjdC5xdWFudGl0eSA/IHByb2R1Y3QucXVhbnRpdHkgOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIudG90YWxRdWFudGl0eSA9IHByb2R1Y3QucXVhbnRpdHkgPyBwcm9kdWN0LnF1YW50aXR5IDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyLnByb21vdGlvbkFtb3VudCA9IHByb21vdGlvbi5wcmljZSA/IE1hdGguYWJzKHByb21vdGlvbi5wcmljZSkgOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIucmVmdW5kZWRSZWFzb24gPSBwcm9tb3Rpb24uY291cG9uX2NvZGUgPyBwcm9tb3Rpb24uY291cG9uX2NvZGUgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyLnJlZnVuZGVkUmVhc29uRGVzY3JpcHRpb24gPSBwcm9tb3Rpb24uaXRlbV90ZXh0ID8gcHJvbW90aW9uLml0ZW1fdGV4dCA6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIucHJvbW90aW9uSWQgPSBwcm9tb3Rpb24ucHJvbW90aW9uX2lkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJQcm9tb3Rpb24ucHVzaCh0cmlnZ2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHJpZ2dlclByb21vdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb24uZGlzcGxheVRleHQgPSB0cmlnZ2VyUHJvbW90aW9uWzBdLnJlZnVuZGVkUmVhc29uRGVzY3JpcHRpb247XG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb24ubmFtZSA9IHRyaWdnZXJQcm9tb3Rpb25bMF0ucmVmdW5kZWRSZWFzb247XG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHJvbW90aW9uQW1vdW50ID0gLSh0cmlnZ2VyUHJvbW90aW9uLnJlZHVjZSgobiwgeyBwcm9tb3Rpb25BbW91bnQgfSkgPT4gbiArIHByb21vdGlvbkFtb3VudCwgMCkpO1xuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uLnByb21vdGlvbklkID0gdHJpZ2dlclByb21vdGlvblswXS5wcm9tb3Rpb25JZDtcbiAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbi5wcm9tb3Rpb25JbmZvID0gdHJpZ2dlclByb21vdGlvblswXS5yZWZ1bmRlZFJlYXNvbkRlc2NyaXB0aW9uO1xuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uLmNvdXBvbkNvZGUgPSB0cmlnZ2VyUHJvbW90aW9uWzBdLnJlZnVuZGVkUmVhc29uO1xuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uLml0ZW1MaW5lSWRzID0gW107XG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb24udHlwZSA9IFBST01PVElPTl9UWVBFLkNPVVBPTjtcbiAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbi5zdWJMZXZlbFR5cGUgPSBQUk9NT1RJT05fTEVWRUwuTElORTtcbiAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbi50cmlnZ2VyID0gdHJpZ2dlclByb21vdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRGVidWcodGhpcy5jbGFzc05hbWUsIFwidXBkYXRlTGluZVByb21vdGlvbldpdGhDb3Vwb25cIiwgXCJ0cmFuc2FjdGlvblByb21vdGlvblwiLCB0cmFuc2FjdGlvblByb21vdGlvbik7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy53ZWJSZXR1cm5PYmplY3QuYmFza2V0LnRyYW5zYWN0aW9uUHJvbW90aW9uICkge1xuICAgICAgICAgICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldC50cmFuc2FjdGlvblByb21vdGlvbiA9IFtdO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHJhbnNhY3Rpb25Qcm9tb3Rpb24gJiYgdHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHJvbW90aW9uSWQgKSB7XG4gICAgICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQudHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHVzaCh0cmFuc2FjdGlvblByb21vdGlvbik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgQXBwTG9nZ2VyU2VydmljZS5sb2dFcnJvcih0aGlzLmNsYXNzTmFtZSwgXCJ1cGRhdGVMaW5lUHJvbW90aW9uV2l0aENvdXBvblwiLCBcImxpbmVQcm9tb3Rpb24gbWFwcGluZz0+IGZhaWxlZDpcIiwgZXJyb3IpO1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVwZGF0ZVRyYW5zYWN0aW9uUHJvbW90aW9uUHJ0aW9uQ2FsYygpIHtcbiAgICAgICAgaWYgKHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldC50cmFuc2FjdGlvblByb21vdGlvbiAmJiB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQudHJhbnNhY3Rpb25Qcm9tb3Rpb24ubGVuZ3RoID4gMCkge1xuXG4gICAgICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQudHJhbnNhY3Rpb25Qcm9tb3Rpb24uZm9yRWFjaCh0ciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uUHJvbW90aW9uUHJvZHVjdFBvcnRpb25DYWxjKHRoaXMud2ViUmV0dXJuT2JqZWN0ICwgdHIpXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uUHJvZHVjdFBvcnRpb25DYWxjKFxuICAgICAgICB0eERvYzogVHJhbnNhY3Rpb25Eb2N1bWVudCxcbiAgICAgICAgcHJvbW90aW9uOiBUcmFuc2FjdGlvblByb21vdGlvblxuICAgICkge1xuICAgICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcInRyYW5zYWN0aW9uUHJvbW90aW9uUHJvZHVjdFBvcnRpb25DYWxjXCIsXG4gICAgICAgICAgICBgdHJuc2FjdGlvblByb21vdGlvbjogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICAgICAgICBwcm9tb3Rpb25cbiAgICAgICAgICAgICl9YFxuICAgICAgICApO1xuICAgICAgICBpZiAocHJvbW90aW9uLnR5cGUgPT09IFBST01PVElPTl9UWVBFLkNPVVBPTiAmJiBwcm9tb3Rpb24uc3ViTGV2ZWxUeXBlID09PSBQUk9NT1RJT05fTEVWRUwuTElORSkge1xuICAgICAgICAgICAgdHhEb2MuYmFza2V0LnByb2R1Y3RzLmZvckVhY2goKHByb2R1Y3QpID0+IHtcbiAgICAgICAgICAgICAgICBwcm9kdWN0ID0gdGhpcy52YWxpZGF0ZVByb2R1Y3RJdGVtRGlzY291bnQocHJvZHVjdCk7XG5cbiAgICAgICAgICAgICAgICBpZiAocHJvbW90aW9uLnRyaWdnZXIgJiYgcHJvbW90aW9uLnRyaWdnZXIubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBwcm9tb3Rpb24udHJpZ2dlci5mb3JFYWNoKCh0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5pdGVtTGluZUlkID09PSBwcm9kdWN0Lml0ZW1MaW5lSWQudG9TdHJpbmcoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3QuaXRlbURpc2NvdW50cy50cm5Qcm9tb3Rpb25zUG9ydGlvbiArPSB0LnByb21vdGlvbkFtb3VudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0eERvYy5iYXNrZXQucHJvZHVjdHMuZm9yRWFjaCgocHJvZHVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIHByb2R1Y3QgPSB0aGlzLnZhbGlkYXRlUHJvZHVjdEl0ZW1EaXNjb3VudChwcm9kdWN0KTtcbiAgICAgICAgICAgICAgICBpZiAocHJvbW90aW9uLml0ZW1MaW5lSWRzLmluY2x1ZGVzKCtwcm9kdWN0Lml0ZW1MaW5lSWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb2R1Y3RJdGVtID0gdGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcy5maW5kKHByb2R1Y3RJdGVtID0+IHByb2R1Y3RJdGVtLnByb2R1Y3RfaWQgPT09IHByb2R1Y3QuU0tVKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdHJhbnNhY3Rpb25Qcm9tb3Rpb25Qb3J0aW9uID0gKHByb2R1Y3RJdGVtICYmIHByb2R1Y3RJdGVtLnByaWNlX2FmdGVyX2l0ZW1fZGlzY291bnQgJiYgcHJvZHVjdEl0ZW0ucHJpY2VfYWZ0ZXJfb3JkZXJfZGlzY291bnQpID9cbiAgICAgICAgICAgICAgICAgICAgICAgIChwcm9kdWN0SXRlbS5wcmljZV9hZnRlcl9pdGVtX2Rpc2NvdW50IC0gcHJvZHVjdEl0ZW0ucHJpY2VfYWZ0ZXJfb3JkZXJfZGlzY291bnQpIDogMDtcbiAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5pdGVtRGlzY291bnRzLnRyblByb21vdGlvbnNQb3J0aW9uICs9IHRoaXMubnVtYmVyVXRpbFNlcnZpY2UudHJpbVRvMkRlY2ltYWwyKHRyYW5zYWN0aW9uUHJvbW90aW9uUG9ydGlvbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHR4RG9jO1xuICAgIH1cblxuICAgICAgXG4gICAgICBwdWJsaWMgdmFsaWRhdGVQcm9kdWN0SXRlbURpc2NvdW50KHByb2R1Y3Q6IFRQcm9kdWN0KSB7XG4gICAgICAgIGlmICghcHJvZHVjdC5pdGVtRGlzY291bnRzKSB7XG4gICAgICAgICAgcHJvZHVjdC5pdGVtRGlzY291bnRzID0ge1xuICAgICAgICAgICAgdHJuRGlzY291bnRzUG9ydGlvbjogMCxcbiAgICAgICAgICAgIHRyblByb21vdGlvbnNQb3J0aW9uOiAwLFxuICAgICAgICAgICAgcmVmdW5kUG9ydGlvbjogMCxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9kdWN0O1xuICAgICAgfVxuICAgIFxuICAgICAgXG4gICAgY3VzdG9tZXIoKSB7XG4gICAgICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRGVidWcodGhpcy5jbGFzc05hbWUsIFwiY3VzdG9tZXJcIiwgXCJjdXN0b21lciBtYXBwaW5nIHN0YXJ0ZWQuLi5cIik7XG4gICAgICAgIGxldCBjdXN0b21lck9iaiA9IHt9IGFzIEN1c3RvbWVyO1xuICAgICAgICBjdXN0b21lck9iai5lbWFpbCA9IHRoaXMub3JkZXJEZXRhaWxzLmN1c3RvbWVyX2luZm8gJiYgdGhpcy5vcmRlckRldGFpbHMuY3VzdG9tZXJfaW5mby5lbWFpbCA/IHRoaXMub3JkZXJEZXRhaWxzLmN1c3RvbWVyX2luZm8uZW1haWwgOiAnJztcbiAgICAgICAgY3VzdG9tZXJPYmouZmlyc3ROYW1lID0gdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzICYmIHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcy5maXJzdF9uYW1lID8gdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzLmZpcnN0X25hbWUgOiAnJztcbiAgICAgICAgY3VzdG9tZXJPYmoubGFzdE5hbWUgPSB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MgJiYgdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzLmxhc3RfbmFtZSA/IHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcy5sYXN0X25hbWUgOiAnJztcblxuICAgICAgICBsZXQgc2hpcHBpbmdBZGRyZXNzID0gW10gYXMgQWRkcmVzc1tdO1xuICAgICAgICB0aGlzLm9yZGVyRGV0YWlscy5zaGlwbWVudHMuZm9yRWFjaChcbiAgICAgICAgICAgIHNoaXBtZW50ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgc2hpcHBpbmdBZGRyZXNzT2JqID0ge30gYXMgQWRkcmVzcztcbiAgICAgICAgICAgICAgICBzaGlwcGluZ0FkZHJlc3NPYmouaWQgPSBzaGlwbWVudC5zaGlwcGluZ19hZGRyZXNzICYmIHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MuaWQgPyBzaGlwbWVudC5zaGlwcGluZ19hZGRyZXNzLmlkIDogJyc7XG4gICAgICAgICAgICAgICAgc2hpcHBpbmdBZGRyZXNzT2JqLmNvdW50cnlDb2RlID0gc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcyAmJiBzaGlwbWVudC5zaGlwcGluZ19hZGRyZXNzLmNvdW50cnlfY29kZSA/IHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MuY291bnRyeV9jb2RlIDogJyc7XG4gICAgICAgICAgICAgICAgc2hpcHBpbmdBZGRyZXNzT2JqLmFkZHJlc3MxID0gc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcyAmJiBzaGlwbWVudC5zaGlwcGluZ19hZGRyZXNzLmFkZHJlc3MxID8gc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcy5hZGRyZXNzMSA6ICcnO1xuICAgICAgICAgICAgICAgIHNoaXBwaW5nQWRkcmVzc09iai5jaXR5ID0gc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcyAmJiBzaGlwbWVudC5zaGlwcGluZ19hZGRyZXNzLmNpdHkgPyBzaGlwbWVudC5zaGlwcGluZ19hZGRyZXNzLmNpdHkgOiAnJztcbiAgICAgICAgICAgICAgICBzaGlwcGluZ0FkZHJlc3NPYmouY291bnRyeSA9ICcnO1xuICAgICAgICAgICAgICAgIHNoaXBwaW5nQWRkcmVzc09iai5wb3N0Q29kZSA9IHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MgJiYgc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcy5wb3N0YWxfY29kZSA/IHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MucG9zdGFsX2NvZGUgOiAnJztcbiAgICAgICAgICAgICAgICBzaGlwcGluZ0FkZHJlc3MucHVzaChzaGlwcGluZ0FkZHJlc3NPYmopO1xuICAgICAgICAgICAgfVxuICAgICAgICApXG4gICAgICAgIGN1c3RvbWVyT2JqLnNoaXBwaW5nQWRkcmVzcyA9IHNoaXBwaW5nQWRkcmVzcztcblxuICAgICAgICBsZXQgYmlsbGluZ0FkZHJlc3MgPSBbXSBhcyBBZGRyZXNzW107XG4gICAgICAgIGxldCBiaWxsaW5nQWRkcmVzc09iaiA9IHt9IGFzIEFkZHJlc3M7XG4gICAgICAgIGJpbGxpbmdBZGRyZXNzT2JqLmlkID0gdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzICYmIHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcy5pZCA/IHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcy5pZCA6ICcnO1xuICAgICAgICBiaWxsaW5nQWRkcmVzc09iai5jb3VudHJ5Q29kZSA9IHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcyAmJiB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MuY291bnRyeV9jb2RlID8gdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzLmNvdW50cnlfY29kZSA6ICcnO1xuICAgICAgICBiaWxsaW5nQWRkcmVzc09iai5hZGRyZXNzMSA9IHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcyAmJiB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MuYWRkcmVzczEgPyB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MuYWRkcmVzczEgOiAnJztcbiAgICAgICAgYmlsbGluZ0FkZHJlc3NPYmouY2l0eSA9IHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcyAmJiB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MuY2l0eSA/IHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcy5jaXR5IDogJyc7XG4gICAgICAgIGJpbGxpbmdBZGRyZXNzT2JqLmNvdW50cnkgPSAnJztcbiAgICAgICAgYmlsbGluZ0FkZHJlc3NPYmoucG9zdENvZGUgPSAnJztcbiAgICAgICAgYmlsbGluZ0FkZHJlc3MucHVzaChiaWxsaW5nQWRkcmVzc09iaik7XG4gICAgICAgIGN1c3RvbWVyT2JqLmJpbGxpbmdBZGRyZXNzID0gYmlsbGluZ0FkZHJlc3M7XG5cbiAgICAgICAgbGV0IHNoaXBtZW50RGV0YWlscyA9IFtdIGFzIFNoaXBtZW50RGV0YWlsc1tdO1xuICAgICAgICB0aGlzLm9yZGVyRGV0YWlscy5zaGlwbWVudHMuZm9yRWFjaChcbiAgICAgICAgICAgIHNoaXBtZW50ID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgc2hpcG1lbnREZXRhaWxzT2JqID0ge30gYXMgU2hpcG1lbnREZXRhaWxzO1xuICAgICAgICAgICAgICAgIHNoaXBtZW50RGV0YWlsc09iai5pZCA9IHNoaXBtZW50LnNoaXBtZW50X2lkID8gc2hpcG1lbnQuc2hpcG1lbnRfaWQgOiAnJztcbiAgICAgICAgICAgICAgICBzaGlwbWVudERldGFpbHNPYmouZGVsaXZlcnlHcm91cCA9IHNoaXBtZW50LnNoaXBtZW50X2lkID8gc2hpcG1lbnQuc2hpcG1lbnRfaWQgOiAnJztcbiAgICAgICAgICAgICAgICBzaGlwbWVudERldGFpbHMucHVzaChzaGlwbWVudERldGFpbHNPYmopO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICBjdXN0b21lck9iai5zaGlwbWVudERldGFpbHMgPSBzaGlwbWVudERldGFpbHM7XG5cbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuY3VzdG9tZXIgPSBjdXN0b21lck9iajtcbiAgICAgICAgQXBwTG9nZ2VyU2VydmljZS5sb2dEZWJ1Zyh0aGlzLmNsYXNzTmFtZSwgXCJjdXN0b21lclwiLCBcImN1c3RvbWVyIG1hcHBpbmcgZW5kZWQuLi5cIik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGlzSW5TdG9yZU9yZGVyKCkge1xuICAgICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcImlzSW5TdG9yZU9yZGVyXCIsIFwiaXNJblN0b3JlT3JkZXIgbWFwcGluZyBzdGFydGVkLi4uXCIpO1xuICAgICAgICBpZih0aGlzLm9yZGVyRGV0YWlscy5jX2lzSW5TdG9yZU9yZGVyKSB7XG4gICAgICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5pc0luU3RvcmVPcmRlciA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgQXBwTG9nZ2VyU2VydmljZS5sb2dEZWJ1Zyh0aGlzLmNsYXNzTmFtZSwgXCJpc0luU3RvcmVPcmRlclwiLCBcImlzSW5TdG9yZU9yZGVyIG1hcHBpbmcgZW5kZWQuLi5cIik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGV4dGVybmFsVHJhbnNhY3Rpb25EZXRhaWxzKCkge1xuICAgICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcImV4dGVybmFsVHJhbnNhY3Rpb25EZXRhaWxzXCIsIFwiZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHMgbWFwcGluZyBzdGFydGVkLi4uXCIpO1xuICAgICAgICBsZXQgZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHMgPSBbXSBhcyBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlsc1tdO1xuICAgICAgICBpZiAodGhpcy5vcmRlckRldGFpbHMuc2hpcG1lbnRzICYmIHRoaXMub3JkZXJEZXRhaWxzLnNoaXBtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm9yZGVyRGV0YWlscy5zaGlwbWVudHMuZm9yRWFjaChcbiAgICAgICAgICAgICAgICBzaGlwbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlsc09iaiA9IHt9IGFzIGV4dGVybmFsVHJhbnNhY3Rpb25EZXRhaWxzO1xuICAgICAgICAgICAgICAgICAgICBsZXQgdHJhbnNhY3Rpb25JbmZvID0ge30gYXMgVHJhbnNhY3Rpb25JbmZvO1xuICAgICAgICAgICAgICAgICAgICBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlsc09iai51bmlxdWVJZCA9IHRoaXMub3JkZXJEZXRhaWxzLm9yZGVyX25vID8gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfbm8gOiAnJztcbiAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHNPYmoucHJvdmlkZXJUeXBlID0gUFJPVklERVJTLlNBTEVTRk9SQ0U7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uSW5mby5zaGlwcGluZ0lkID0gc2hpcG1lbnQuc2hpcHBpbmdfbWV0aG9kICYmIHNoaXBtZW50LnNoaXBwaW5nX21ldGhvZC5pZCA/IHNoaXBtZW50LnNoaXBwaW5nX21ldGhvZC5pZCA6ICcnO1xuICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbkluZm8uZXh0ZXJuYWxTaGlwcGluZ0lkID0gc2hpcG1lbnQuc2hpcG1lbnRfaWQgPyBzaGlwbWVudC5zaGlwbWVudF9pZCA6ICcnO1xuICAgICAgICAgICAgICAgICAgICBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlsc09iai5kZXRhaWxzID0gdHJhbnNhY3Rpb25JbmZvO1xuICAgICAgICAgICAgICAgICAgICBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlscy5wdXNoKGV4dGVybmFsVHJhbnNhY3Rpb25EZXRhaWxzT2JqKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmV4dGVybmFsVHJhbnNhY3Rpb25EZXRhaWxzID0gZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHM7XG4gICAgICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRGVidWcodGhpcy5jbGFzc05hbWUsIFwiZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHNcIiwgXCJleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlscyBtYXBwaW5nIGVuZGVkLi4uXCIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICB1cGRhdGVUYXhCcmVha2Rvd24oKSB7XG4gICAgICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRGVidWcodGhpcy5jbGFzc05hbWUsIFwidXBkYXRlVGF4QnJlYWtkb3duXCIsIFwiTWFwcGluZyBzdGFydGVkLi4uXCIpO1xuICAgIFxuICAgICAgICBjb25zdCB0YXhMaW5lcyA9IHRoaXMub3JkZXJEZXRhaWxzLnByb2R1Y3RfaXRlbXNcbiAgICAgICAgICAgIC5tYXAoKHByb2R1Y3QsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgVkFUID0gcHJvZHVjdC50YXhfcmF0ZSA/IChwcm9kdWN0LnRheF9yYXRlICogMTAwKSA6IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgVkFUQ29kZSA9IHByb2R1Y3QudGF4X2NsYXNzX2lkIHx8ICcnO1xuICAgIFxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1MaW5lSWQ6IGluZGV4ICsgMSxcbiAgICAgICAgICAgICAgICAgICAgVkFULFxuICAgICAgICAgICAgICAgICAgICBWQVRDb2RlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pIHx8IFtdO1xuICAgIFxuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXRbXCJ0YXhCcmVha2Rvd25cIl0gPSB7XG4gICAgICAgICAgICB0YXhMaW5lc1xuICAgICAgICB9O1xuICAgIFxuICAgICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcInVwZGF0ZVRheEJyZWFrZG93blwiLCBgTWFwcGVkICR7dGF4TGluZXMubGVuZ3RofSB0YXggbGluZXMuYCk7XG4gICAgICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRGVidWcodGhpcy5jbGFzc05hbWUsIFwidXBkYXRlVGF4QnJlYWtkb3duXCIsIFwiTWFwcGluZyBlbmRlZC4uLlwiKTtcbiAgICBcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgYmFza2V0U3VtbWFyeSgpIHtcbiAgICAgICAgQXBwTG9nZ2VyU2VydmljZS5sb2dEZWJ1Zyh0aGlzLmNsYXNzTmFtZSwgXCJiYXNrZXRTdW1tYXJ5XCIsIFwiYmFza2V0U3VtbWFyeSBtYXBwaW5nIHN0YXJ0ZWQuLi5cIik7XG4gICAgICAgIGxldCBiYXNrZXRTdW1tYXJ5ID0ge30gYXMgQmFza2V0U3VtbWFyeTtcbiAgICAgICAgbGV0IGJhc2tldFN1bW1hcnlXZWJPcmRlciA9IHt9IGFzIEJhc2tldFN1bW1hcnlEZXRhaWxzO1xuICAgICAgICBjb25zdCBsaW5lUHJvbW90aW9uVG90YWwgPSB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQubGluZVByb21vdGlvbi5tYXAobGluZVByb21vdGlvbiA9PiBsaW5lUHJvbW90aW9uLnByb21vdGlvbkFtb3VudCkucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudFZhbHVlKSA9PiBhY2N1bXVsYXRvciArIGN1cnJlbnRWYWx1ZSwgMCk7XG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uUHJvbW90aW9uVG90YWwgPSB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQudHJhbnNhY3Rpb25Qcm9tb3Rpb24ubWFwKHRyYW5zYWN0aW9uUHJvbW90aW9uID0+IHRyYW5zYWN0aW9uUHJvbW90aW9uLnByb21vdGlvbkFtb3VudCkucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudFZhbHVlKSA9PiBhY2N1bXVsYXRvciArIGN1cnJlbnRWYWx1ZSwgMCk7XG4gICAgICAgIGJhc2tldFN1bW1hcnkuZGlzY291bnRUb3RhbCA9IGxpbmVQcm9tb3Rpb25Ub3RhbCArIHRyYW5zYWN0aW9uUHJvbW90aW9uVG90YWw7XG4gICAgICAgIGJhc2tldFN1bW1hcnkuVkFUVG90YWwgPSB0aGlzLm9yZGVyRGV0YWlscy50YXhfdG90YWwgPyB0aGlzLm9yZGVyRGV0YWlscy50YXhfdG90YWwgOiAwO1xuICAgICAgICBiYXNrZXRTdW1tYXJ5LnNhbGVUb3RhbCA9IHRoaXMub3JkZXJEZXRhaWxzLm9yZGVyX3RvdGFsID8gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfdG90YWwgOiAwO1xuICAgICAgICBiYXNrZXRTdW1tYXJ5LmJhc2tldFRvdGFsID0gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfdG90YWwgPyB0aGlzLm9yZGVyRGV0YWlscy5vcmRlcl90b3RhbCA6IDA7XG4gICAgICAgIGJhc2tldFN1bW1hcnkudG90YWxJdGVtcyA9IHRoaXMub3JkZXJEZXRhaWxzLnByb2R1Y3RfaXRlbXMgJiYgdGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcy5sZW5ndGggPiAwID8gdGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcy5sZW5ndGggOiAwO1xuICAgICAgICBiYXNrZXRTdW1tYXJ5LnNoaXBwaW5nVG90YWwgPSB0aGlzLm9yZGVyRGV0YWlscy5zaGlwcGluZ190b3RhbCA/IHRoaXMub3JkZXJEZXRhaWxzLnNoaXBwaW5nX3RvdGFsIDogMDtcbiAgICAgICAgYmFza2V0U3VtbWFyeS5iYXNrZXRUb3RhbFdpdGhTaGlwcGluZ1RvdGFsID0gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfdG90YWwgPyB0aGlzLm9yZGVyRGV0YWlscy5vcmRlcl90b3RhbCA6IDA7XG4gICAgICAgIGJhc2tldFN1bW1hcnlXZWJPcmRlci5zaGlwcGluZ1RvdGFsID0gdGhpcy5vcmRlckRldGFpbHMuc2hpcHBpbmdfdG90YWwgPyB0aGlzLm9yZGVyRGV0YWlscy5zaGlwcGluZ190b3RhbCA6IDA7XG4gICAgICAgIGJhc2tldFN1bW1hcnlXZWJPcmRlci5iYXNrZXRUb3RhbFdpdGhTaGlwcGluZ1RvdGFsID0gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfdG90YWwgPyB0aGlzLm9yZGVyRGV0YWlscy5vcmRlcl90b3RhbCA6IDA7XG4gICAgICAgIGJhc2tldFN1bW1hcnkud2ViT3JkZXIgPSBiYXNrZXRTdW1tYXJ5V2ViT3JkZXI7XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldFN1bW1hcnkgPSBiYXNrZXRTdW1tYXJ5O1xuICAgICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcImJhc2tldFN1bW1hcnlcIiwgXCJiYXNrZXRTdW1tYXJ5IG1hcHBpbmcgZW5kZWQuLi5cIik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGRldmljZUlkKGRldmljZUlkKSB7XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmRldmljZUlkID0gZGV2aWNlSWQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRlcm1pbmFsSWQodGVybWluYWxJZCkge1xuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC50ZXJtaW5hbElkID0gdGVybWluYWxJZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgb3JnQ29kZShvcmdDb2RlKSB7XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0Lm9yZ0NvZGUgPSBvcmdDb2RlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBzdG9yZUlkKHN0b3JlSWQpIHtcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3Quc3RvcmVJZCA9IHN0b3JlSWQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHN0b3JlTm9kZUlkKHN0b3JlTm9kZUlkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3Quc3RvcmVOb2RlSWQgPSBzdG9yZU5vZGVJZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgc3RvcmVOb2RlU3RydWN0dXJlKHN0b3JlTm9kZVN0cnVjdHVyZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LnN0b3JlTm9kZVN0cnVjdHVyZSA9IHN0b3JlTm9kZVN0cnVjdHVyZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZG9jSWQoZG9jSWQpIHtcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuaWQgPSBkb2NJZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdXBkYXRlVXNlcklEKHVzZXJJRDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LnVzZXJJZCA9IHVzZXJJRDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdXBkYXRlVXNlck5hbWUobmFtZSkge1xuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC51c2VyTmFtZSA9IG5hbWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGJ1aWxkKCkge1xuICAgICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcImJ1aWxkXCIsIFwibWFwcGluZyBkb25lLi4uXCIpO1xuICAgICAgICByZXR1cm4gdGhpcy53ZWJSZXR1cm5PYmplY3Q7XG4gICAgfVxuXG4gICAgZ2V0VVRDRGF0ZVRpbWUoZGF0ZSkge1xuICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRBdmFpbGFibGVRdHkoc3RhdHVzOiBhbnkpOiBudW1iZXIge1xuICAgICAgICBsZXQgc2hpcHBlZFF0eXMgPSAwO1xuICAgICAgICBsZXQgcmV0dXJuZWRRdHlzID0gMDtcblxuICAgICAgICBpZiAoc3RhdHVzPy5TSElQUEVEKSB7XG4gICAgICAgICAgICBjb25zdCBzaGlwcGVkID0gT2JqZWN0LnZhbHVlcyhzdGF0dXMuU0hJUFBFRCk7XG4gICAgICAgICAgICBsZXQgc2hpcHBlZFF0eSA9IHNoaXBwZWQucmVkdWNlKChuLCB7IHF0eSB9KSA9PiBuICsgKCh0eXBlb2YgcXR5ID09ICdzdHJpbmcnKSA/ICtxdHkgOiBxdHkpLCAwKTtcbiAgICAgICAgICAgIHNoaXBwZWRRdHlzICs9IE51bWJlcihzaGlwcGVkUXR5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0dXM/LlJFVFVSTkVEKSB7XG4gICAgICAgICAgICBjb25zdCByZXR1cm5lZCA9IE9iamVjdC52YWx1ZXMoc3RhdHVzLlJFVFVSTkVEKTtcbiAgICAgICAgICAgIGxldCByZWZ1bmRRdHkgPSByZXR1cm5lZC5yZWR1Y2UoKG4sIHsgcXR5IH0pID0+IG4gKyAoKHR5cGVvZiBxdHkgPT0gJ3N0cmluZycpID8gK3F0eSA6IHF0eSksIDApO1xuICAgICAgICAgICAgcmV0dXJuZWRRdHlzICs9IE51bWJlcihyZWZ1bmRRdHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNoaXBwZWRRdHlzIC0gcmV0dXJuZWRRdHlzO1xuICAgIH1cbn1cbiJdfQ==
459
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2ViUmV0dXJuU2FsZXNmb3JjZU1hcHBlci5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21hcHBlci1saWJyYXJ5L3NyYy9saWIvV2ViUmV0dXJuU2FsZXNmb3JjZU1hcHBlci5jbGFzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQXFGLGdCQUFnQixFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLEVBQWdDLFNBQVMsRUFBbUIsZ0JBQWdCLEVBQTJJLE1BQU0sd0JBQXdCLENBQUM7QUFDdFosT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0RBQXNELENBQUM7QUFFeEYsTUFBTSxPQUFPLHFDQUFxQztJQWtDOUMsWUFBWSxZQUEwQixFQUMxQixZQUEyQjtRQUEzQixpQkFBWSxHQUFaLFlBQVksQ0FBZTtRQWpDdkMsY0FBUyxHQUFHLHVDQUF1QyxDQUFDO1FBRTVDLG9CQUFlLEdBQXdCO1lBQzNDLEVBQUUsRUFBRSxFQUFFO1lBQ04sT0FBTyxFQUFFLEVBQUU7WUFDWCxPQUFPLEVBQUUsRUFBRTtZQUNYLFdBQVcsRUFBRSxFQUFFO1lBQ2Ysa0JBQWtCLEVBQUUsRUFBRTtZQUN0QixRQUFRLEVBQUUsRUFBRTtZQUNaLFVBQVUsRUFBRSxFQUFFO1lBQ2QsZ0JBQWdCLEVBQUUsRUFBRTtZQUNwQixNQUFNLEVBQUUsS0FBSztZQUNiLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLE1BQU0sRUFBRSxFQUFFO1lBQ1YsYUFBYSxFQUFFLEVBQUU7WUFDakIsWUFBWSxFQUFFLEVBQUU7WUFDaEIsUUFBUSxFQUFFO2dCQUNOLEVBQUUsRUFBRSxFQUFFO2dCQUNOLEtBQUssRUFBRSxFQUFFO2dCQUNULFNBQVMsRUFBRSxFQUFFO2dCQUNiLFFBQVEsRUFBRSxFQUFFO2dCQUNaLGNBQWMsRUFBRSxFQUFFO2dC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QUMsQ0FBQztZQUNoRCxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNoRyxZQUFZLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3JDO1FBRUQsT0FBTyxXQUFXLEdBQUcsWUFBWSxDQUFDO0lBQ3RDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN1cnJlbmN5UGlwZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IEFkZHJlc3MsIEJhc2tldFN1bW1hcnksIEJhc2tldFN1bW1hcnlEZXRhaWxzLCBDdXJyZW50VHJhbnNhY3Rpb25EZXRhaWxzLCBDdXN0b21lciwgREVMSVZFUllfTUVUSE9EUywgUFJPTU9USU9OX0xFVkVMLCBQUk9NT1RJT05fVFlQRSwgSU5JVElBVElOR19NT0RVTEUsIExpbmVQcm9tb3Rpb25zLCBPcmRlckRldGFpbHMsIFBST1ZJREVSUywgU2hpcG1lbnREZXRhaWxzLCBUUkFOU0FDVElPTl9UWVBFLCBUcmFuc2FjdGlvbkRvY3VtZW50LCBUcmFuc2FjdGlvbkluZm8sIFRyYW5zYWN0aW9uUHJvbW90aW9uLCBUcmlnZ2VyLCBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlscywgVFByb2R1Y3QsIFJlZnVuZFByb2R1Y3RDaGFuZ2UsIFByb2R1Y3QgfSBmcm9tIFwiLi9tYXBwZXItbGlicmFyeS5tb2RlbFwiO1xuaW1wb3J0IHsgTnVtYmVyVXRpbFNlcnZpY2UgfSBmcm9tIFwiLi9udW1iZXItdXRpbC5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBBcHBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnQHBtY3JldGFpbC9jb21tb24tc2VydmljZXMvY29tbW9uL2FwcC1sb2dnZXIuc2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzIHtcblxuICAgIGNsYXNzTmFtZSA9IFwiV2ViUmV0dXJuU2FsZXNmb3JjZU1hcHBlckJ1aWxkZXJDbGFzc1wiO1xuICAgIHByaXZhdGUgb3JkZXJEZXRhaWxzOiBPcmRlckRldGFpbHM7XG4gICAgcHJpdmF0ZSB3ZWJSZXR1cm5PYmplY3Q6IFRyYW5zYWN0aW9uRG9jdW1lbnQgPSB7XG4gICAgICAgIGlkOiAnJyxcbiAgICAgICAgb3JnQ29kZTogXCJcIixcbiAgICAgICAgc3RvcmVJZDogXCJcIixcbiAgICAgICAgc3RvcmVOb2RlSWQ6IFwiXCIsXG4gICAgICAgIHN0b3JlTm9kZVN0cnVjdHVyZTogXCJcIixcbiAgICAgICAgZGV2aWNlSWQ6IFwiXCIsXG4gICAgICAgIHRlcm1pbmFsSWQ6IFwiXCIsXG4gICAgICAgIGluaXRpYXRpbmdNb2R1bGU6IFwiXCIsXG4gICAgICAgIGV4cG9ydDogZmFsc2UsXG4gICAgICAgIGlzSW5TdG9yZU9yZGVyOiBmYWxzZSxcbiAgICAgICAgYmFza2V0OiB7fSxcbiAgICAgICAgYmFza2V0U3VtbWFyeToge30sXG4gICAgICAgIGJhc2VDdXJyZW5jeTogXCJcIixcbiAgICAgICAgY3VzdG9tZXI6IHtcbiAgICAgICAgICAgIGlkOiAnJyxcbiAgICAgICAgICAgIGVtYWlsOiAnJyxcbiAgICAgICAgICAgIGZpcnN0TmFtZTogJycsXG4gICAgICAgICAgICBsYXN0TmFtZTogJycsXG4gICAgICAgICAgICBiaWxsaW5nQWRkcmVzczogW10sXG4gICAgICAgICAgICBzaGlwcGluZ0FkZHJlc3M6IFtdLFxuICAgICAgICAgICAgc2hpcG1lbnREZXRhaWxzOiBbXSxcbiAgICAgICAgICAgIHRlbGVwaG9uZTogJycsXG4gICAgICAgICAgICBwb3N0Q29kZTogJycsXG4gICAgICAgICAgICBub0N1c3RvbWVyU2VsZWN0ZWQ6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIGN1cnJlbnRUcmFuc2FjdGlvbkRldGFpbHM6IHt9IGFzIEN1cnJlbnRUcmFuc2FjdGlvbkRldGFpbHNcbiAgICB9XG4gICAgbnVtYmVyVXRpbFNlcnZpY2U6IGFueTtcbiAgICBwdWJsaWMgU1RPUkVfUFJFRklYID0gJ3N0b3JlQCc7XG4gICAgY29uc3RydWN0b3Iob3JkZXJEZXRhaWxzOiBPcmRlckRldGFpbHMsXG4gICAgICAgIHByaXZhdGUgY3VycmVuY3lQaXBlPzogQ3VycmVuY3lQaXBlXG4gICAgKSB7XG4gICAgICAgIGlmIChvcmRlckRldGFpbHMpIHtcbiAgICAgICAgICAgIHRoaXMub3JkZXJEZXRhaWxzID0gb3JkZXJEZXRhaWxzO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubnVtYmVyVXRpbFNlcnZpY2UgPSBuZXcgTnVtYmVyVXRpbFNlcnZpY2UoY3VycmVuY3lQaXBlKTtcbiAgICB9XG5cbiAgICB3ZWJSZXR1cm5Db21tb25NYXBwZXIoKSB7XG4gICAgICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRGVidWcodGhpcy5jbGFzc05hbWUsIFwid2ViUmV0dXJuQ29tbW9uTWFwcGVyXCIsIFwiTWFwcGVyIGxpYnJhcnk6IFdlYlJldHVyblNhbGVzZm9yY2VNYXBwZXJCdWlsZGVyQ2xhc3M6IHdlYlJldHVybkNvbW1vbk1hcHBlciBzdGFydGVkLi4uXCIpO1xuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdFsndHlwZSddID0gVFJBTlNBQ1RJT05fVFlQRS5XRUJfUkVUVVJOUztcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3RbJ2RhdGV0aW1lJ10gPSB0aGlzLmdldFVUQ0RhdGVUaW1lKHRoaXMub3JkZXJEZXRhaWxzLmxhc3RfbW9kaWZpZWQpO1xuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5iYXNlQ3VycmVuY3kgPSB0aGlzLm9yZGVyRGV0YWlscy5jdXJyZW5jeTtcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3Quc3Vic2lkaWFyeUlkID0gJzEnO1xuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5leHBvcnQgPSB0cnVlO1xuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5pbml0aWF0aW5nTW9kdWxlID0gSU5JVElBVElOR19NT0RVTEUuRUJBU0tFVDtcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuY3JlYXRlZEF0ID0gdGhpcy5nZXRVVENEYXRlVGltZSh0aGlzLm9yZGVyRGV0YWlscy5jcmVhdGlvbl9kYXRlKTtcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QudXBkYXRlZEF0ID0gdGhpcy5nZXRVVENEYXRlVGltZSh0aGlzLm9yZGVyRGV0YWlscy5sYXN0X21vZGlmaWVkKTtcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QudHJhbnNDb21wbGV0ZWRBdCA9IHRoaXMuZ2V0VVRDRGF0ZVRpbWUodGhpcy5vcmRlckRldGFpbHMubGFzdF9tb2RpZmllZCk7XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0WydleHRlcm5hbFRyYW5zYWN0aW9uSWQnXSA9IHRoaXMub3JkZXJEZXRhaWxzLm9yZGVyX25vO1xuICAgICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcIndlYlJldHVybkNvbW1vbk1hcHBlclwiLCBcIndlYlJldHVybkNvbW1vbk1hcHBlciBlbmRlZC4uLlwiKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgLy8gZXhwb3J0KHN0YXR1cywgZGV0YWlscykge1xuICAgIC8vICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBleHBvcnQgbWFwcGluZyBzdGFydGVkLi4uXCIpO1xuICAgIC8vICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcIk1hcHBlciBsaWJyYXJ5OiBXZWJSZXR1cm5TYWxlc2ZvcmNlTWFwcGVyQnVpbGRlckNsYXNzOiBzdGF0dXM6XCIsIHN0YXR1cyk7XG4gICAgLy8gICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRGVidWcodGhpcy5jbGFzc05hbWUsIFwiTWFwcGVyIGxpYnJhcnk6IFdlYlJldHVyblNhbGVzZm9yY2VNYXBwZXJCdWlsZGVyQ2xhc3M6IGRldGFpbHM6XCIsIEpTT04uc3RyaW5naWZ5KGRldGFpbHMpKTtcbiAgICAvLyAgICAgaWYgKHN0YXR1cyAmJiBkZXRhaWxzICYmIGRldGFpbHMucHJvdmlkZXJzICYmIGRldGFpbHMucHJvdmlkZXJzLmxlbmd0aCA+IDApIHtcbiAgICAvLyAgICAgICAgIGRldGFpbHMucHJvdmlkZXJzLmZvckVhY2goXG4gICAgLy8gICAgICAgICAgICAgcHJvdmlkZXJPYmogPT4ge1xuICAgIC8vICAgICAgICAgICAgICAgICBpZiAocHJvdmlkZXJPYmoucHJvdmlkZXIgJiYgcHJvdmlkZXJPYmoucHJvdmlkZXIgPT09IFBST1ZJREVSUy5TQUxFU0ZPUkNFKSB7XG4gICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5leHBvcnQgPSB0cnVlO1xuICAgIC8vICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgIC8vICAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuZXhwb3J0ID0gZmFsc2U7XG4gICAgLy8gICAgICAgICAgICAgICAgIH1cbiAgICAvLyAgICAgICAgICAgICB9XG4gICAgLy8gICAgICAgICApO1xuICAgIC8vICAgICB9IGVsc2Uge1xuICAgIC8vICAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuZXhwb3J0ID0gZmFsc2U7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgQXBwTG9nZ2VyU2VydmljZS5sb2dEZWJ1Zyh0aGlzLmNsYXNzTmFtZSwgXCJNYXBwZXIgbGlicmFyeTogV2ViUmV0dXJuU2FsZXNmb3JjZU1hcHBlckJ1aWxkZXJDbGFzczogZXhwb3J0IG1hcHBpbmcgZW5kLi4uXCIpXG4gICAgLy8gICAgIHJldHVybiB0aGlzO1xuICAgIC8vIH1cblxuICAgIGdldERlbGl2ZXJ5TWV0aG9kKCkge1xuICAgICAgICBpZiAodGhpcy5vcmRlckRldGFpbHMuc2hpcG1lbnRzICYmIHRoaXMub3JkZXJEZXRhaWxzLnNoaXBtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBzaGlwVG9TdG9yZVNoaXBtZW50ID0gdGhpcy5vcmRlckRldGFpbHMuc2hpcG1lbnRzLmZpbmQoc2hpcG1lbnQgPT4gc2hpcG1lbnQuY19mcm9tU3RvcmVJZCk7XG4gICAgICAgICAgICBpZiAoc2hpcFRvU3RvcmVTaGlwbWVudCkgcmV0dXJuIERFTElWRVJZX01FVEhPRFMuU0hJUF9UT19TVE9SRTtcbiAgICAgICAgICAgIGVsc2UgcmV0dXJuIERFTElWRVJZX01FVEhPRFMuREVMSVZFUlk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm9kdWN0KHN1YnByb3ZpZGVyKSB7XG4gICAgICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRGVidWcodGhpcy5jbGFzc05hbWUsIFwicHJvZHVjdFwiLCBcInByb2R1Y3QgbWFwcGluZyBzdGFydGVkLi4uXCIpO1xuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXRbJ3Byb2R1Y3RzJ10gPSBbXTtcbiAgICAgICAgaWYgKHRoaXMub3JkZXJEZXRhaWxzLnByb2R1Y3RfaXRlbXMgJiYgdGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm9yZGVyRGV0YWlscy5wcm9kdWN0X2l0ZW1zLmZvckVhY2goXG4gICAgICAgICAgICAgICAgKHByb2R1Y3QsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGxldCBwcm9kdWN0T2JqOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcHJvZHVjdC5pdGVtX3RleHQgPyBwcm9kdWN0Lml0ZW1fdGV4dCA6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgU0tVOiBwcm9kdWN0LnByb2R1Y3RfaWQgPyBwcm9kdWN0LnByb2R1Y3RfaWQgOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiBwcm9kdWN0LnF1YW50aXR5ID8gcHJvZHVjdC5xdWFudGl0eSA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZ1bmRlZFF1YW50aXR5OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IHByb2R1Y3QuYmFzZV9wcmljZSA/IHByb2R1Y3QuYmFzZV9wcmljZSA6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICBpdGVtTGluZUlkOiAoaW5kZXggKyAxKS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnlNZXRob2Q6IHRoaXMuZ2V0RGVsaXZlcnlNZXRob2QoKS50b1N0cmluZygpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxMaW5lUHJpY2U6IHByb2R1Y3QucHJpY2UgPyBwcm9kdWN0LnByaWNlIDogMFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdWJwcm92aWRlcj8udG9Mb2NhbGVVcHBlckNhc2UoKSA9PT0gUFJPVklERVJTLlNBTEVTRk9SQ0VfT1NVLnRvTG9jYWxlVXBwZXJDYXNlKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZVF0eSA9IHByb2R1Y3Q/LmNfb3N1T2JqZWN0RGF0YSA/IHRoaXMuZ2V0QXZhaWxhYmxlUXR5KEpTT04ucGFyc2UocHJvZHVjdD8uY19vc3VPYmplY3REYXRhKSkgOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdE9iai5hdmFpbGFibGVRdWFudGl0eSA9IGF2YWlsYWJsZVF0eSA+IDAgPyBhdmFpbGFibGVRdHkgOiAwO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcm9kdWN0ICYmIHByb2R1Y3QucHJpY2UgIT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuYmFza2V0Wydwcm9kdWN0cyddLnB1c2gocHJvZHVjdE9iaik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRGVidWcodGhpcy5jbGFzc05hbWUsIFwicHJvZHVjdFwiLCBcInByb2R1Y3QgbWFwcGluZyBlbmRlZC4uLlwiKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgbGluZVByb21vdGlvbigpIHtcbiAgICAgICAgQXBwTG9nZ2VyU2VydmljZS5sb2dEZWJ1Zyh0aGlzLmNsYXNzTmFtZSwgXCJsaW5lUHJvbW90aW9uXCIsIFwibGluZVByb21vdGlvbiBtYXBwaW5nIHN0YXJ0ZWQuLi5cIik7XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldC5saW5lUHJvbW90aW9uID0gW10gYXMgTGluZVByb21vdGlvbnNbXTtcbiAgICAgICAgbGV0IGxpbmVQcm9tb3Rpb25BcnJheSA9IFtdIGFzIExpbmVQcm9tb3Rpb25zW107XG4gICAgICAgIGlmICh0aGlzLm9yZGVyRGV0YWlscy5wcm9kdWN0X2l0ZW1zICYmIHRoaXMub3JkZXJEZXRhaWxzLnByb2R1Y3RfaXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcy5mb3JFYWNoKFxuICAgICAgICAgICAgICAgIChwcm9kdWN0LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBwcm9kdWN0Lml0ZW1faWQgPSAoaW5kZXggKyAxKS50b1N0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocHJvZHVjdC5wcmljZV9hZGp1c3RtZW50cyAmJiBwcm9kdWN0LnByaWNlX2FkanVzdG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3QucHJpY2VfYWRqdXN0bWVudHMuZm9yRWFjaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvbW90aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcHJvbW90aW9uLmNvdXBvbl9jb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGluZVByb21vdGlvbk9iaiA9IHt9IGFzIExpbmVQcm9tb3Rpb25zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRyaWdnZXIgPSB7fSBhcyBUcmlnZ2VyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlci5pdGVtTGluZUlkID0gcHJvZHVjdC5pdGVtX2lkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlci5xdWFudGl0eSA9IHByb2R1Y3QucXVhbnRpdHkgPyBwcm9kdWN0LnF1YW50aXR5IDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQcm9tb3Rpb25PYmoudHJpZ2dlciA9IFtdIGFzIFRyaWdnZXJbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQcm9tb3Rpb25PYmoudHJpZ2dlci5wdXNoKHRyaWdnZXIpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUHJvbW90aW9uT2JqLml0ZW1MaW5lSWQgPSBpbmRleCArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUHJvbW90aW9uT2JqLnByb21vdGlvbklkID0gcHJvbW90aW9uLnByb21vdGlvbl9pZCA/IHByb21vdGlvbi5wcm9tb3Rpb25faWQgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQcm9tb3Rpb25PYmouZGlzcGxheVRleHQgPSBwcm9tb3Rpb24uaXRlbV90ZXh0ID8gcHJvbW90aW9uLml0ZW1fdGV4dCA6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVByb21vdGlvbk9iai5wcm9tb3Rpb25UeXBlID0gcHJvbW90aW9uLmFwcGxpZWRfZGlzY291bnQgJiYgcHJvbW90aW9uLmFwcGxpZWRfZGlzY291bnQudHlwZSA/IHByb21vdGlvbi5hcHBsaWVkX2Rpc2NvdW50LnR5cGUgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQcm9tb3Rpb25PYmoucHJvbW90aW9uQW1vdW50ID0gcHJvbW90aW9uLnByaWNlID8gTWF0aC5hYnMocHJvbW90aW9uLnByaWNlKSA6IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUHJvbW90aW9uT2JqLm5hbWUgPSBwcm9tb3Rpb24uY291cG9uX2NvZGUgPyBwcm9tb3Rpb24uY291cG9uX2NvZGUgOiAocHJvbW90aW9uLml0ZW1fdGV4dCA/IHByb21vdGlvbi5pdGVtX3RleHQgOiAnJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lUHJvbW90aW9uT2JqLnByb21vdGlvbkluZm8gPSBwcm9tb3Rpb24uaXRlbV90ZXh0ID8gcHJvbW90aW9uLml0ZW1fdGV4dCA6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZVByb21vdGlvbk9iai5wcm9tb3Rpb25MaW5lUHJpY2UgPSBwcm9kdWN0LnByaWNlIC0gTWF0aC5hYnMocHJvbW90aW9uLnByaWNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVQcm9tb3Rpb25BcnJheS5wdXNoKGxpbmVQcm9tb3Rpb25PYmopO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuYmFza2V0LmxpbmVQcm9tb3Rpb24gPSBsaW5lUHJvbW90aW9uQXJyYXk7XG4gICAgICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRGVidWcodGhpcy5jbGFzc05hbWUsIFwibGluZVByb21vdGlvblwiLCBcImxpbmVQcm9tb3Rpb24gbWFwcGluZyBlbmRlZC4uLlwiKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb24oKSB7XG4gICAgICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRGVidWcodGhpcy5jbGFzc05hbWUsIFwidHJhbnNhY3Rpb25Qcm9tb3Rpb25cIiwgXCJ0cmFuc2FjdGlvblByb21vdGlvbiBtYXBwaW5nIHN0YXJ0ZWQuLi5cIik7XG5cbiAgICAgICAgbGV0IHRyYW5zYWN0aW9uUHJvbW90aW9uQXJyYXkgPSB0aGlzLmdldFRyYW5zYWN0aW9uUHJvbW90aW9ucyh0aGlzLm9yZGVyRGV0YWlscyk7XG5cbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuYmFza2V0LnRyYW5zYWN0aW9uUHJvbW90aW9uID0gdHJhbnNhY3Rpb25Qcm9tb3Rpb25BcnJheTtcbiAgICAgICAgQXBwTG9nZ2VyU2VydmljZS5sb2dEZWJ1Zyh0aGlzLmNsYXNzTmFtZSwgXCJ0cmFuc2FjdGlvblByb21vdGlvblwiLCBcInRyYW5zYWN0aW9uUHJvbW90aW9uIG1hcHBpbmcgZW5kZWQuLi5cIik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGdldFRyYW5zYWN0aW9uUHJvbW90aW9ucyhiYXNrZXQpOiBUcmFuc2FjdGlvblByb21vdGlvbltdIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCB0cmFuc2FjdGlvblByb21vdGlvbkFycmF5ID0gW10gYXMgVHJhbnNhY3Rpb25Qcm9tb3Rpb25bXTtcbiAgICAgICAgICAgIGlmIChiYXNrZXQub3JkZXJfcHJpY2VfYWRqdXN0bWVudHMgJiYgYmFza2V0Lm9yZGVyX3ByaWNlX2FkanVzdG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBiYXNrZXQub3JkZXJfcHJpY2VfYWRqdXN0bWVudHMuZm9yRWFjaChcbiAgICAgICAgICAgICAgICAgICAgKHRyYW5zYWN0aW9uUHJvbW90aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmogPSB7fSBhcyBUcmFuc2FjdGlvblByb21vdGlvbjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmouZGlzcGxheVRleHQgPSB0cmFuc2FjdGlvblByb21vdGlvbi5pdGVtX3RleHQgPyB0cmFuc2FjdGlvblByb21vdGlvbi5pdGVtX3RleHQgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uT2JqLm5hbWUgPSB0cmFuc2FjdGlvblByb21vdGlvbi5jb3Vwb25fY29kZSA/IHRyYW5zYWN0aW9uUHJvbW90aW9uLmNvdXBvbl9jb2RlIDogKHRyYW5zYWN0aW9uUHJvbW90aW9uLml0ZW1fdGV4dCA/IHRyYW5zYWN0aW9uUHJvbW90aW9uLml0ZW1fdGV4dCA6ICcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uT2JqLnByb21vdGlvbkFtb3VudCA9IHRyYW5zYWN0aW9uUHJvbW90aW9uLnByaWNlID8gTWF0aC5hYnModHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHJpY2UpIDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uT2JqLnByb21vdGlvbklkID0gdHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHJvbW90aW9uX2lkID8gdHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHJvbW90aW9uX2lkIDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbk9iai5wcm9tb3Rpb25JbmZvID0gdHJhbnNhY3Rpb25Qcm9tb3Rpb24uaXRlbV90ZXh0ID8gdHJhbnNhY3Rpb25Qcm9tb3Rpb24uaXRlbV90ZXh0IDogJyc7XG4gICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbk9iai5wcm9tb3Rpb25UeXBlID0gdHJhbnNhY3Rpb25Qcm9tb3Rpb24uYXBwbGllZF9kaXNjb3VudCAmJiB0cmFuc2FjdGlvblByb21vdGlvbi5hcHBsaWVkX2Rpc2NvdW50LnR5cGUgPyB0cmFuc2FjdGlvblByb21vdGlvbi5hcHBsaWVkX2Rpc2NvdW50LnR5cGUgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uT2JqLml0ZW1MaW5lSWRzID0gdGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcy5tYXAoKHByb2R1Y3QsIGluZGV4KSA9PiBpbmRleCArIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYW5zYWN0aW9uUHJvbW90aW9uLmNvdXBvbl9jb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmoudHlwZSA9IFBST01PVElPTl9UWVBFLkNPVVBPTjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbk9iai5jb3Vwb25Db2RlID0gdHJhbnNhY3Rpb25Qcm9tb3Rpb24uY291cG9uX2NvZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25PYmouc3ViTGV2ZWxUeXBlID0gUFJPTU9USU9OX0xFVkVMLlRSQU5TQUNUSU9OO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25BcnJheS5wdXNoKHRyYW5zYWN0aW9uUHJvbW90aW9uT2JqKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cblxuICAgICAgICAgICAgQXBwTG9nZ2VyU2VydmljZS5sb2dEZWJ1Zyh0aGlzLmNsYXNzTmFtZSwgXCJnZXRUcmFuc2FjdGlvblByb21vdGlvbnNcIiwgXCJnZXRUcmFuc2FjdGlvblByb21vdGlvbnMgOiBcIiwgdHJhbnNhY3Rpb25Qcm9tb3Rpb25BcnJheSk7XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNhY3Rpb25Qcm9tb3Rpb25BcnJheTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRXJyb3IodGhpcy5jbGFzc05hbWUsIFwiZ2V0VHJhbnNhY3Rpb25Qcm9tb3Rpb25zXCIsIFwiZmFpbGVkOlwiLCBlcnJvcik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlTGluZVByb21vdGlvbldpdGhDb3Vwb24oKSB7XG4gICAgICAgIHRyeSB7XG5cbiAgICAgICAgICAgIGxldCB0cmFuc2FjdGlvblByb21vdGlvbiA9IHt9IGFzIFRyYW5zYWN0aW9uUHJvbW90aW9uO1xuICAgICAgICAgICAgbGV0IHRyaWdnZXJQcm9tb3Rpb24gPSBbXSBhcyBUcmlnZ2VyW107XG4gICAgICAgICAgICBpZiAodGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcyAmJiB0aGlzLm9yZGVyRGV0YWlscy5wcm9kdWN0X2l0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9yZGVyRGV0YWlscy5wcm9kdWN0X2l0ZW1zLmZvckVhY2goXG4gICAgICAgICAgICAgICAgICAgIChwcm9kdWN0LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5pdGVtX2lkID0gKGluZGV4ICsgMSkudG9TdHJpbmcoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByb2R1Y3QucHJpY2VfYWRqdXN0bWVudHMgJiYgcHJvZHVjdC5wcmljZV9hZGp1c3RtZW50cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5wcmljZV9hZGp1c3RtZW50cy5mb3JFYWNoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocHJvbW90aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJvbW90aW9uLmNvdXBvbl9jb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRyaWdnZXIgPSB7fSBhcyBUcmlnZ2VyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIuaXRlbUxpbmVJZCA9IHByb2R1Y3QuaXRlbV9pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyLnF1YW50aXR5ID0gcHJvZHVjdC5xdWFudGl0eSA/IHByb2R1Y3QucXVhbnRpdHkgOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIudG90YWxRdWFudGl0eSA9IHByb2R1Y3QucXVhbnRpdHkgPyBwcm9kdWN0LnF1YW50aXR5IDogMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyLnByb21vdGlvbkFtb3VudCA9IHByb21vdGlvbi5wcmljZSA/IE1hdGguYWJzKHByb21vdGlvbi5wcmljZSkgOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIucmVmdW5kZWRSZWFzb24gPSBwcm9tb3Rpb24uY291cG9uX2NvZGUgPyBwcm9tb3Rpb24uY291cG9uX2NvZGUgOiAnJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyLnJlZnVuZGVkUmVhc29uRGVzY3JpcHRpb24gPSBwcm9tb3Rpb24uaXRlbV90ZXh0ID8gcHJvbW90aW9uLml0ZW1fdGV4dCA6ICcnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXIucHJvbW90aW9uSWQgPSBwcm9tb3Rpb24ucHJvbW90aW9uX2lkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJQcm9tb3Rpb24ucHVzaCh0cmlnZ2VyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHJpZ2dlclByb21vdGlvbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb24uZGlzcGxheVRleHQgPSB0cmlnZ2VyUHJvbW90aW9uWzBdLnJlZnVuZGVkUmVhc29uRGVzY3JpcHRpb247XG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb24ubmFtZSA9IHRyaWdnZXJQcm9tb3Rpb25bMF0ucmVmdW5kZWRSZWFzb247XG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb24ucHJvbW90aW9uQW1vdW50ID0gLSh0cmlnZ2VyUHJvbW90aW9uLnJlZHVjZSgobiwgeyBwcm9tb3Rpb25BbW91bnQgfSkgPT4gbiArIHByb21vdGlvbkFtb3VudCwgMCkpO1xuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uLnByb21vdGlvbklkID0gdHJpZ2dlclByb21vdGlvblswXS5wcm9tb3Rpb25JZDtcbiAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbi5wcm9tb3Rpb25JbmZvID0gdHJpZ2dlclByb21vdGlvblswXS5yZWZ1bmRlZFJlYXNvbkRlc2NyaXB0aW9uO1xuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uLmNvdXBvbkNvZGUgPSB0cmlnZ2VyUHJvbW90aW9uWzBdLnJlZnVuZGVkUmVhc29uO1xuICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uUHJvbW90aW9uLml0ZW1MaW5lSWRzID0gW107XG4gICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb24udHlwZSA9IFBST01PVElPTl9UWVBFLkNPVVBPTjtcbiAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbi5zdWJMZXZlbFR5cGUgPSBQUk9NT1RJT05fTEVWRUwuTElORTtcbiAgICAgICAgICAgICAgICB0cmFuc2FjdGlvblByb21vdGlvbi50cmlnZ2VyID0gdHJpZ2dlclByb21vdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRGVidWcodGhpcy5jbGFzc05hbWUsIFwidXBkYXRlTGluZVByb21vdGlvbldpdGhDb3Vwb25cIiwgXCJ0cmFuc2FjdGlvblByb21vdGlvblwiLCB0cmFuc2FjdGlvblByb21vdGlvbik7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy53ZWJSZXR1cm5PYmplY3QuYmFza2V0LnRyYW5zYWN0aW9uUHJvbW90aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuYmFza2V0LnRyYW5zYWN0aW9uUHJvbW90aW9uID0gW107XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0cmFuc2FjdGlvblByb21vdGlvbiAmJiB0cmFuc2FjdGlvblByb21vdGlvbi5wcm9tb3Rpb25JZCkge1xuICAgICAgICAgICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldC50cmFuc2FjdGlvblByb21vdGlvbi5wdXNoKHRyYW5zYWN0aW9uUHJvbW90aW9uKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0Vycm9yKHRoaXMuY2xhc3NOYW1lLCBcInVwZGF0ZUxpbmVQcm9tb3Rpb25XaXRoQ291cG9uXCIsIFwibGluZVByb21vdGlvbiBtYXBwaW5nPT4gZmFpbGVkOlwiLCBlcnJvcik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlVHJhbnNhY3Rpb25Qcm9tb3Rpb25QcnRpb25DYWxjKCkge1xuICAgICAgICBpZiAodGhpcy53ZWJSZXR1cm5PYmplY3QuYmFza2V0LnRyYW5zYWN0aW9uUHJvbW90aW9uICYmIHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldC50cmFuc2FjdGlvblByb21vdGlvbi5sZW5ndGggPiAwKSB7XG5cbiAgICAgICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldC50cmFuc2FjdGlvblByb21vdGlvbi5mb3JFYWNoKHRyID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9uUHJvbW90aW9uUHJvZHVjdFBvcnRpb25DYWxjKHRoaXMud2ViUmV0dXJuT2JqZWN0LCB0cilcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdHJhbnNhY3Rpb25Qcm9tb3Rpb25Qcm9kdWN0UG9ydGlvbkNhbGMoXG4gICAgICAgIHR4RG9jOiBUcmFuc2FjdGlvbkRvY3VtZW50LFxuICAgICAgICBwcm9tb3Rpb246IFRyYW5zYWN0aW9uUHJvbW90aW9uXG4gICAgKSB7XG4gICAgICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRGVidWcodGhpcy5jbGFzc05hbWUsIFwidHJhbnNhY3Rpb25Qcm9tb3Rpb25Qcm9kdWN0UG9ydGlvbkNhbGNcIixcbiAgICAgICAgICAgIGB0cm5zYWN0aW9uUHJvbW90aW9uOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICAgICAgICAgIHByb21vdGlvblxuICAgICAgICAgICAgKX1gXG4gICAgICAgICk7XG4gICAgICAgIGlmIChwcm9tb3Rpb24udHlwZSA9PT0gUFJPTU9USU9OX1RZUEUuQ09VUE9OICYmIHByb21vdGlvbi5zdWJMZXZlbFR5cGUgPT09IFBST01PVElPTl9MRVZFTC5MSU5FKSB7XG4gICAgICAgICAgICB0eERvYy5iYXNrZXQucHJvZHVjdHMuZm9yRWFjaCgocHJvZHVjdCkgPT4ge1xuICAgICAgICAgICAgICAgIHByb2R1Y3QgPSB0aGlzLnZhbGlkYXRlUHJvZHVjdEl0ZW1EaXNjb3VudChwcm9kdWN0KTtcblxuICAgICAgICAgICAgICAgIGlmIChwcm9tb3Rpb24udHJpZ2dlciAmJiBwcm9tb3Rpb24udHJpZ2dlci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb21vdGlvbi50cmlnZ2VyLmZvckVhY2goKHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0Lml0ZW1MaW5lSWQgPT09IHByb2R1Y3QuaXRlbUxpbmVJZC50b1N0cmluZygpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5pdGVtRGlzY291bnRzLnRyblByb21vdGlvbnNQb3J0aW9uICs9IHQucHJvbW90aW9uQW1vdW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHR4RG9jLmJhc2tldC5wcm9kdWN0cy5mb3JFYWNoKChwcm9kdWN0KSA9PiB7XG4gICAgICAgICAgICAgICAgcHJvZHVjdCA9IHRoaXMudmFsaWRhdGVQcm9kdWN0SXRlbURpc2NvdW50KHByb2R1Y3QpO1xuICAgICAgICAgICAgICAgIGlmIChwcm9tb3Rpb24uaXRlbUxpbmVJZHMuaW5jbHVkZXMoK3Byb2R1Y3QuaXRlbUxpbmVJZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJvZHVjdEl0ZW0gPSB0aGlzLm9yZGVyRGV0YWlscy5wcm9kdWN0X2l0ZW1zLmZpbmQocHJvZHVjdEl0ZW0gPT4gcHJvZHVjdEl0ZW0ucHJvZHVjdF9pZCA9PT0gcHJvZHVjdC5TS1UpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0cmFuc2FjdGlvblByb21vdGlvblBvcnRpb24gPSAocHJvZHVjdEl0ZW0gJiYgcHJvZHVjdEl0ZW0ucHJpY2VfYWZ0ZXJfaXRlbV9kaXNjb3VudCAmJiBwcm9kdWN0SXRlbS5wcmljZV9hZnRlcl9vcmRlcl9kaXNjb3VudCkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgKHByb2R1Y3RJdGVtLnByaWNlX2FmdGVyX2l0ZW1fZGlzY291bnQgLSBwcm9kdWN0SXRlbS5wcmljZV9hZnRlcl9vcmRlcl9kaXNjb3VudCkgOiAwO1xuICAgICAgICAgICAgICAgICAgICBwcm9kdWN0Lml0ZW1EaXNjb3VudHMudHJuUHJvbW90aW9uc1BvcnRpb24gKz0gdGhpcy5udW1iZXJVdGlsU2VydmljZS50cmltVG8yRGVjaW1hbDIodHJhbnNhY3Rpb25Qcm9tb3Rpb25Qb3J0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHhEb2M7XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgdmFsaWRhdGVQcm9kdWN0SXRlbURpc2NvdW50KHByb2R1Y3Q6IFRQcm9kdWN0KSB7XG4gICAgICAgIGlmICghcHJvZHVjdC5pdGVtRGlzY291bnRzKSB7XG4gICAgICAgICAgICBwcm9kdWN0Lml0ZW1EaXNjb3VudHMgPSB7XG4gICAgICAgICAgICAgICAgdHJuRGlzY291bnRzUG9ydGlvbjogMCxcbiAgICAgICAgICAgICAgICB0cm5Qcm9tb3Rpb25zUG9ydGlvbjogMCxcbiAgICAgICAgICAgICAgICByZWZ1bmRQb3J0aW9uOiAwLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvZHVjdDtcbiAgICB9XG5cblxuICAgIGN1c3RvbWVyKCkge1xuICAgICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcImN1c3RvbWVyXCIsIFwiY3VzdG9tZXIgbWFwcGluZyBzdGFydGVkLi4uXCIpO1xuICAgICAgICBsZXQgY3VzdG9tZXJPYmogPSB7fSBhcyBDdXN0b21lcjtcbiAgICAgICAgY3VzdG9tZXJPYmouZW1haWwgPSB0aGlzLm9yZGVyRGV0YWlscy5jdXN0b21lcl9pbmZvICYmIHRoaXMub3JkZXJEZXRhaWxzLmN1c3RvbWVyX2luZm8uZW1haWwgPyB0aGlzLm9yZGVyRGV0YWlscy5jdXN0b21lcl9pbmZvLmVtYWlsIDogJyc7XG4gICAgICAgIGN1c3RvbWVyT2JqLmZpcnN0TmFtZSA9IHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcyAmJiB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MuZmlyc3RfbmFtZSA/IHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcy5maXJzdF9uYW1lIDogJyc7XG4gICAgICAgIGN1c3RvbWVyT2JqLmxhc3ROYW1lID0gdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzICYmIHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcy5sYXN0X25hbWUgPyB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MubGFzdF9uYW1lIDogJyc7XG5cbiAgICAgICAgbGV0IHNoaXBwaW5nQWRkcmVzcyA9IFtdIGFzIEFkZHJlc3NbXTtcbiAgICAgICAgdGhpcy5vcmRlckRldGFpbHMuc2hpcG1lbnRzLmZvckVhY2goXG4gICAgICAgICAgICBzaGlwbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHNoaXBwaW5nQWRkcmVzc09iaiA9IHt9IGFzIEFkZHJlc3M7XG4gICAgICAgICAgICAgICAgc2hpcHBpbmdBZGRyZXNzT2JqLmlkID0gc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcyAmJiBzaGlwbWVudC5zaGlwcGluZ19hZGRyZXNzLmlkID8gc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcy5pZCA6ICcnO1xuICAgICAgICAgICAgICAgIHNoaXBwaW5nQWRkcmVzc09iai5jb3VudHJ5Q29kZSA9IHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MgJiYgc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcy5jb3VudHJ5X2NvZGUgPyBzaGlwbWVudC5zaGlwcGluZ19hZGRyZXNzLmNvdW50cnlfY29kZSA6ICcnO1xuICAgICAgICAgICAgICAgIHNoaXBwaW5nQWRkcmVzc09iai5hZGRyZXNzMSA9IHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MgJiYgc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcy5hZGRyZXNzMSA/IHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MuYWRkcmVzczEgOiAnJztcbiAgICAgICAgICAgICAgICBzaGlwcGluZ0FkZHJlc3NPYmouY2l0eSA9IHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MgJiYgc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcy5jaXR5ID8gc2hpcG1lbnQuc2hpcHBpbmdfYWRkcmVzcy5jaXR5IDogJyc7XG4gICAgICAgICAgICAgICAgc2hpcHBpbmdBZGRyZXNzT2JqLmNvdW50cnkgPSAnJztcbiAgICAgICAgICAgICAgICBzaGlwcGluZ0FkZHJlc3NPYmoucG9zdENvZGUgPSBzaGlwbWVudC5zaGlwcGluZ19hZGRyZXNzICYmIHNoaXBtZW50LnNoaXBwaW5nX2FkZHJlc3MucG9zdGFsX2NvZGUgPyBzaGlwbWVudC5zaGlwcGluZ19hZGRyZXNzLnBvc3RhbF9jb2RlIDogJyc7XG4gICAgICAgICAgICAgICAgc2hpcHBpbmdBZGRyZXNzLnB1c2goc2hpcHBpbmdBZGRyZXNzT2JqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgICBjdXN0b21lck9iai5zaGlwcGluZ0FkZHJlc3MgPSBzaGlwcGluZ0FkZHJlc3M7XG5cbiAgICAgICAgbGV0IGJpbGxpbmdBZGRyZXNzID0gW10gYXMgQWRkcmVzc1tdO1xuICAgICAgICBsZXQgYmlsbGluZ0FkZHJlc3NPYmogPSB7fSBhcyBBZGRyZXNzO1xuICAgICAgICBiaWxsaW5nQWRkcmVzc09iai5pZCA9IHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcyAmJiB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MuaWQgPyB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MuaWQgOiAnJztcbiAgICAgICAgYmlsbGluZ0FkZHJlc3NPYmouY291bnRyeUNvZGUgPSB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MgJiYgdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzLmNvdW50cnlfY29kZSA/IHRoaXMub3JkZXJEZXRhaWxzLmJpbGxpbmdfYWRkcmVzcy5jb3VudHJ5X2NvZGUgOiAnJztcbiAgICAgICAgYmlsbGluZ0FkZHJlc3NPYmouYWRkcmVzczEgPSB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MgJiYgdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzLmFkZHJlc3MxID8gdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzLmFkZHJlc3MxIDogJyc7XG4gICAgICAgIGJpbGxpbmdBZGRyZXNzT2JqLmNpdHkgPSB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MgJiYgdGhpcy5vcmRlckRldGFpbHMuYmlsbGluZ19hZGRyZXNzLmNpdHkgPyB0aGlzLm9yZGVyRGV0YWlscy5iaWxsaW5nX2FkZHJlc3MuY2l0eSA6ICcnO1xuICAgICAgICBiaWxsaW5nQWRkcmVzc09iai5jb3VudHJ5ID0gJyc7XG4gICAgICAgIGJpbGxpbmdBZGRyZXNzT2JqLnBvc3RDb2RlID0gJyc7XG4gICAgICAgIGJpbGxpbmdBZGRyZXNzLnB1c2goYmlsbGluZ0FkZHJlc3NPYmopO1xuICAgICAgICBjdXN0b21lck9iai5iaWxsaW5nQWRkcmVzcyA9IGJpbGxpbmdBZGRyZXNzO1xuXG4gICAgICAgIGxldCBzaGlwbWVudERldGFpbHMgPSBbXSBhcyBTaGlwbWVudERldGFpbHNbXTtcbiAgICAgICAgdGhpcy5vcmRlckRldGFpbHMuc2hpcG1lbnRzLmZvckVhY2goXG4gICAgICAgICAgICBzaGlwbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgbGV0IHNoaXBtZW50RGV0YWlsc09iaiA9IHt9IGFzIFNoaXBtZW50RGV0YWlscztcbiAgICAgICAgICAgICAgICBzaGlwbWVudERldGFpbHNPYmouaWQgPSBzaGlwbWVudC5zaGlwbWVudF9pZCA/IHNoaXBtZW50LnNoaXBtZW50X2lkIDogJyc7XG4gICAgICAgICAgICAgICAgc2hpcG1lbnREZXRhaWxzT2JqLmRlbGl2ZXJ5R3JvdXAgPSBzaGlwbWVudC5zaGlwbWVudF9pZCA/IHNoaXBtZW50LnNoaXBtZW50X2lkIDogJyc7XG4gICAgICAgICAgICAgICAgc2hpcG1lbnREZXRhaWxzLnB1c2goc2hpcG1lbnREZXRhaWxzT2JqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgY3VzdG9tZXJPYmouc2hpcG1lbnREZXRhaWxzID0gc2hpcG1lbnREZXRhaWxzO1xuXG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmN1c3RvbWVyID0gY3VzdG9tZXJPYmo7XG4gICAgICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRGVidWcodGhpcy5jbGFzc05hbWUsIFwiY3VzdG9tZXJcIiwgXCJjdXN0b21lciBtYXBwaW5nIGVuZGVkLi4uXCIpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBpc0luU3RvcmVPcmRlcihzdWJwcm92aWRlcikge1xuICAgICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcImlzSW5TdG9yZU9yZGVyXCIsIFwiaXNJblN0b3JlT3JkZXIgbWFwcGluZyBzdGFydGVkLi4uXCIpO1xuICAgICAgICBjb25zdCBwcm92aWRlciA9IHN1YnByb3ZpZGVyPy50b0xvY2FsZVVwcGVyQ2FzZSgpO1xuICAgICAgICBzd2l0Y2ggKHByb3ZpZGVyKSB7XG4gICAgICAgICAgICBjYXNlIFBST1ZJREVSUy5TQUxFU0ZPUkNFX09TVS50b0xvY2FsZVVwcGVyQ2FzZSgpOlxuICAgICAgICAgICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmlzSW5TdG9yZU9yZGVyID0gISF0aGlzLm9yZGVyRGV0YWlscz8uY19pc0luU3RvcmVPcmRlcjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgUFJPVklERVJTLlNBTEVTRk9SQ0VfWE1MLnRvTG9jYWxlVXBwZXJDYXNlKCk6XG4gICAgICAgICAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuaXNJblN0b3JlT3JkZXIgPVxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9yZGVyRGV0YWlscz8uY3JlYXRlZF9ieT8udG9Mb3dlckNhc2UoKS5zdGFydHNXaXRoKHRoaXMuU1RPUkVfUFJFRklYKSB8fCBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuaXNJblN0b3JlT3JkZXIgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcImlzSW5TdG9yZU9yZGVyXCIsIFwiaXNJblN0b3JlT3JkZXIgbWFwcGluZyBlbmRlZC4uLlwiKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHMoKSB7XG4gICAgICAgIEFwcExvZ2dlclNlcnZpY2UubG9nRGVidWcodGhpcy5jbGFzc05hbWUsIFwiZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHNcIiwgXCJleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlscyBtYXBwaW5nIHN0YXJ0ZWQuLi5cIik7XG4gICAgICAgIGxldCBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlscyA9IFtdIGFzIGV4dGVybmFsVHJhbnNhY3Rpb25EZXRhaWxzW107XG4gICAgICAgIGlmICh0aGlzLm9yZGVyRGV0YWlscy5zaGlwbWVudHMgJiYgdGhpcy5vcmRlckRldGFpbHMuc2hpcG1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMub3JkZXJEZXRhaWxzLnNoaXBtZW50cy5mb3JFYWNoKFxuICAgICAgICAgICAgICAgIHNoaXBtZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGV4dGVybmFsVHJhbnNhY3Rpb25EZXRhaWxzT2JqID0ge30gYXMgZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHM7XG4gICAgICAgICAgICAgICAgICAgIGxldCB0cmFuc2FjdGlvbkluZm8gPSB7fSBhcyBUcmFuc2FjdGlvbkluZm87XG4gICAgICAgICAgICAgICAgICAgIGV4dGVybmFsVHJhbnNhY3Rpb25EZXRhaWxzT2JqLnVuaXF1ZUlkID0gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfbm8gPyB0aGlzLm9yZGVyRGV0YWlscy5vcmRlcl9ubyA6ICcnO1xuICAgICAgICAgICAgICAgICAgICBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlsc09iai5wcm92aWRlclR5cGUgPSBQUk9WSURFUlMuU0FMRVNGT1JDRTtcbiAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25JbmZvLnNoaXBwaW5nSWQgPSBzaGlwbWVudC5zaGlwcGluZ19tZXRob2QgJiYgc2hpcG1lbnQuc2hpcHBpbmdfbWV0aG9kLmlkID8gc2hpcG1lbnQuc2hpcHBpbmdfbWV0aG9kLmlkIDogJyc7XG4gICAgICAgICAgICAgICAgICAgIHRyYW5zYWN0aW9uSW5mby5leHRlcm5hbFNoaXBwaW5nSWQgPSBzaGlwbWVudC5zaGlwbWVudF9pZCA/IHNoaXBtZW50LnNoaXBtZW50X2lkIDogJyc7XG4gICAgICAgICAgICAgICAgICAgIGV4dGVybmFsVHJhbnNhY3Rpb25EZXRhaWxzT2JqLmRldGFpbHMgPSB0cmFuc2FjdGlvbkluZm87XG4gICAgICAgICAgICAgICAgICAgIGV4dGVybmFsVHJhbnNhY3Rpb25EZXRhaWxzLnB1c2goZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHNPYmopO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHMgPSBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlscztcbiAgICAgICAgQXBwTG9nZ2VyU2VydmljZS5sb2dEZWJ1Zyh0aGlzLmNsYXNzTmFtZSwgXCJleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlsc1wiLCBcImV4dGVybmFsVHJhbnNhY3Rpb25EZXRhaWxzIG1hcHBpbmcgZW5kZWQuLi5cIik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHVwZGF0ZVRheEJyZWFrZG93bigpIHtcbiAgICAgICAgQXBwTG9nZ2VyU2VydmljZS5sb2dEZWJ1Zyh0aGlzLmNsYXNzTmFtZSwgXCJ1cGRhdGVUYXhCcmVha2Rvd25cIiwgXCJNYXBwaW5nIHN0YXJ0ZWQuLi5cIik7XG5cbiAgICAgICAgY29uc3QgdGF4TGluZXMgPSB0aGlzLm9yZGVyRGV0YWlscy5wcm9kdWN0X2l0ZW1zXG4gICAgICAgICAgICAubWFwKChwcm9kdWN0LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IFZBVCA9IHByb2R1Y3QudGF4X3JhdGUgPyAocHJvZHVjdC50YXhfcmF0ZSAqIDEwMCkgOiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IFZBVENvZGUgPSBwcm9kdWN0LnRheF9jbGFzc19pZCB8fCAnJztcblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW1MaW5lSWQ6IGluZGV4ICsgMSxcbiAgICAgICAgICAgICAgICAgICAgVkFULFxuICAgICAgICAgICAgICAgICAgICBWQVRDb2RlXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pIHx8IFtdO1xuXG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldFtcInRheEJyZWFrZG93blwiXSA9IHtcbiAgICAgICAgICAgIHRheExpbmVzXG4gICAgICAgIH07XG5cbiAgICAgICAgQXBwTG9nZ2VyU2VydmljZS5sb2dEZWJ1Zyh0aGlzLmNsYXNzTmFtZSwgXCJ1cGRhdGVUYXhCcmVha2Rvd25cIiwgYE1hcHBlZCAke3RheExpbmVzLmxlbmd0aH0gdGF4IGxpbmVzLmApO1xuICAgICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcInVwZGF0ZVRheEJyZWFrZG93blwiLCBcIk1hcHBpbmcgZW5kZWQuLi5cIik7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgYmFza2V0U3VtbWFyeSgpIHtcbiAgICAgICAgQXBwTG9nZ2VyU2VydmljZS5sb2dEZWJ1Zyh0aGlzLmNsYXNzTmFtZSwgXCJiYXNrZXRTdW1tYXJ5XCIsIFwiYmFza2V0U3VtbWFyeSBtYXBwaW5nIHN0YXJ0ZWQuLi5cIik7XG4gICAgICAgIGxldCBiYXNrZXRTdW1tYXJ5ID0ge30gYXMgQmFza2V0U3VtbWFyeTtcbiAgICAgICAgbGV0IGJhc2tldFN1bW1hcnlXZWJPcmRlciA9IHt9IGFzIEJhc2tldFN1bW1hcnlEZXRhaWxzO1xuICAgICAgICBjb25zdCBsaW5lUHJvbW90aW9uVG90YWwgPSB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQubGluZVByb21vdGlvbi5tYXAobGluZVByb21vdGlvbiA9PiBsaW5lUHJvbW90aW9uLnByb21vdGlvbkFtb3VudCkucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudFZhbHVlKSA9PiBhY2N1bXVsYXRvciArIGN1cnJlbnRWYWx1ZSwgMCk7XG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9uUHJvbW90aW9uVG90YWwgPSB0aGlzLndlYlJldHVybk9iamVjdC5iYXNrZXQudHJhbnNhY3Rpb25Qcm9tb3Rpb24ubWFwKHRyYW5zYWN0aW9uUHJvbW90aW9uID0+IHRyYW5zYWN0aW9uUHJvbW90aW9uLnByb21vdGlvbkFtb3VudCkucmVkdWNlKChhY2N1bXVsYXRvciwgY3VycmVudFZhbHVlKSA9PiBhY2N1bXVsYXRvciArIGN1cnJlbnRWYWx1ZSwgMCk7XG4gICAgICAgIGJhc2tldFN1bW1hcnkuZGlzY291bnRUb3RhbCA9IGxpbmVQcm9tb3Rpb25Ub3RhbCArIHRyYW5zYWN0aW9uUHJvbW90aW9uVG90YWw7XG4gICAgICAgIGJhc2tldFN1bW1hcnkuVkFUVG90YWwgPSB0aGlzLm9yZGVyRGV0YWlscy50YXhfdG90YWwgPyB0aGlzLm9yZGVyRGV0YWlscy50YXhfdG90YWwgOiAwO1xuICAgICAgICBiYXNrZXRTdW1tYXJ5LnNhbGVUb3RhbCA9IHRoaXMub3JkZXJEZXRhaWxzLm9yZGVyX3RvdGFsID8gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfdG90YWwgOiAwO1xuICAgICAgICBiYXNrZXRTdW1tYXJ5LmJhc2tldFRvdGFsID0gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfdG90YWwgPyB0aGlzLm9yZGVyRGV0YWlscy5vcmRlcl90b3RhbCA6IDA7XG4gICAgICAgIGJhc2tldFN1bW1hcnkudG90YWxJdGVtcyA9IHRoaXMub3JkZXJEZXRhaWxzLnByb2R1Y3RfaXRlbXMgJiYgdGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcy5sZW5ndGggPiAwID8gdGhpcy5vcmRlckRldGFpbHMucHJvZHVjdF9pdGVtcy5sZW5ndGggOiAwO1xuICAgICAgICBiYXNrZXRTdW1tYXJ5LnNoaXBwaW5nVG90YWwgPSB0aGlzLm9yZGVyRGV0YWlscy5zaGlwcGluZ190b3RhbCA/IHRoaXMub3JkZXJEZXRhaWxzLnNoaXBwaW5nX3RvdGFsIDogMDtcbiAgICAgICAgYmFza2V0U3VtbWFyeS5iYXNrZXRUb3RhbFdpdGhTaGlwcGluZ1RvdGFsID0gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfdG90YWwgPyB0aGlzLm9yZGVyRGV0YWlscy5vcmRlcl90b3RhbCA6IDA7XG4gICAgICAgIGJhc2tldFN1bW1hcnlXZWJPcmRlci5zaGlwcGluZ1RvdGFsID0gdGhpcy5vcmRlckRldGFpbHMuc2hpcHBpbmdfdG90YWwgPyB0aGlzLm9yZGVyRGV0YWlscy5zaGlwcGluZ190b3RhbCA6IDA7XG4gICAgICAgIGJhc2tldFN1bW1hcnlXZWJPcmRlci5iYXNrZXRUb3RhbFdpdGhTaGlwcGluZ1RvdGFsID0gdGhpcy5vcmRlckRldGFpbHMub3JkZXJfdG90YWwgPyB0aGlzLm9yZGVyRGV0YWlscy5vcmRlcl90b3RhbCA6IDA7XG4gICAgICAgIGJhc2tldFN1bW1hcnkud2ViT3JkZXIgPSBiYXNrZXRTdW1tYXJ5V2ViT3JkZXI7XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmJhc2tldFN1bW1hcnkgPSBiYXNrZXRTdW1tYXJ5O1xuICAgICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcImJhc2tldFN1bW1hcnlcIiwgXCJiYXNrZXRTdW1tYXJ5IG1hcHBpbmcgZW5kZWQuLi5cIik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGRldmljZUlkKGRldmljZUlkKSB7XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LmRldmljZUlkID0gZGV2aWNlSWQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHRlcm1pbmFsSWQodGVybWluYWxJZCkge1xuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC50ZXJtaW5hbElkID0gdGVybWluYWxJZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgb3JnQ29kZShvcmdDb2RlKSB7XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0Lm9yZ0NvZGUgPSBvcmdDb2RlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBzdG9yZUlkKHN0b3JlSWQpIHtcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3Quc3RvcmVJZCA9IHN0b3JlSWQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHN0b3JlTm9kZUlkKHN0b3JlTm9kZUlkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3Quc3RvcmVOb2RlSWQgPSBzdG9yZU5vZGVJZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgc3RvcmVOb2RlU3RydWN0dXJlKHN0b3JlTm9kZVN0cnVjdHVyZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LnN0b3JlTm9kZVN0cnVjdHVyZSA9IHN0b3JlTm9kZVN0cnVjdHVyZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgZG9jSWQoZG9jSWQpIHtcbiAgICAgICAgdGhpcy53ZWJSZXR1cm5PYmplY3QuaWQgPSBkb2NJZDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdXBkYXRlVXNlcklEKHVzZXJJRDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMud2ViUmV0dXJuT2JqZWN0LnVzZXJJZCA9IHVzZXJJRDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgdXBkYXRlVXNlck5hbWUobmFtZSkge1xuICAgICAgICB0aGlzLndlYlJldHVybk9iamVjdC51c2VyTmFtZSA9IG5hbWU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGJ1aWxkKCkge1xuICAgICAgICBBcHBMb2dnZXJTZXJ2aWNlLmxvZ0RlYnVnKHRoaXMuY2xhc3NOYW1lLCBcImJ1aWxkXCIsIFwibWFwcGluZyBkb25lLi4uXCIpO1xuICAgICAgICByZXR1cm4gdGhpcy53ZWJSZXR1cm5PYmplY3Q7XG4gICAgfVxuXG4gICAgZ2V0VVRDRGF0ZVRpbWUoZGF0ZSkge1xuICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUpLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRBdmFpbGFibGVRdHkoc3RhdHVzOiBhbnkpOiBudW1iZXIge1xuICAgICAgICBsZXQgc2hpcHBlZFF0eXMgPSAwO1xuICAgICAgICBsZXQgcmV0dXJuZWRRdHlzID0gMDtcblxuICAgICAgICBpZiAoc3RhdHVzPy5TSElQUEVEKSB7XG4gICAgICAgICAgICBjb25zdCBzaGlwcGVkID0gT2JqZWN0LnZhbHVlcyhzdGF0dXMuU0hJUFBFRCk7XG4gICAgICAgICAgICBsZXQgc2hpcHBlZFF0eSA9IHNoaXBwZWQucmVkdWNlKChuLCB7IHF0eSB9KSA9PiBuICsgKCh0eXBlb2YgcXR5ID09ICdzdHJpbmcnKSA/ICtxdHkgOiBxdHkpLCAwKTtcbiAgICAgICAgICAgIHNoaXBwZWRRdHlzICs9IE51bWJlcihzaGlwcGVkUXR5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChzdGF0dXM/LlJFVFVSTkVEKSB7XG4gICAgICAgICAgICBjb25zdCByZXR1cm5lZCA9IE9iamVjdC52YWx1ZXMoc3RhdHVzLlJFVFVSTkVEKTtcbiAgICAgICAgICAgIGxldCByZWZ1bmRRdHkgPSByZXR1cm5lZC5yZWR1Y2UoKG4sIHsgcXR5IH0pID0+IG4gKyAoKHR5cGVvZiBxdHkgPT0gJ3N0cmluZycpID8gK3F0eSA6IHF0eSksIDApO1xuICAgICAgICAgICAgcmV0dXJuZWRRdHlzICs9IE51bWJlcihyZWZ1bmRRdHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHNoaXBwZWRRdHlzIC0gcmV0dXJuZWRRdHlzO1xuICAgIH1cbn1cbiJdfQ==
@@ -29,6 +29,7 @@ export var PROVIDERS;
29
29
  PROVIDERS["MAGENTO"] = "Magento";
30
30
  PROVIDERS["MAGENTO2"] = "Magento2";
31
31
  PROVIDERS["SALESFORCE_OSU"] = "SalesforceOSU";
32
+ PROVIDERS["SALESFORCE_XML"] = "SalesforceXML";
32
33
  })(PROVIDERS || (PROVIDERS = {}));
33
34
  export var PROMOTION_LEVEL;
34
35
  (function (PROMOTION_LEVEL) {
@@ -39,4 +40,4 @@ export var PROMOTION_TYPE;
39
40
  (function (PROMOTION_TYPE) {
40
41
  PROMOTION_TYPE["COUPON"] = "COUPON";
41
42
  })(PROMOTION_TYPE || (PROMOTION_TYPE = {}));
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLWxpYnJhcnkubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXBwZXItbGlicmFyeS9zcmMvbGliL21hcHBlci1saWJyYXJ5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBTixJQUFZLGdCQU9YO0FBUEQsV0FBWSxnQkFBZ0I7SUFDMUIsaUNBQWEsQ0FBQTtJQUNiLHFDQUFpQixDQUFBO0lBQ2pCLCtDQUEyQixDQUFBO0lBQzNCLG1EQUErQixDQUFBO0lBQy9CLGlDQUFhLENBQUE7SUFDYiwrQ0FBMkIsQ0FBQTtBQUM3QixDQUFDLEVBUFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQU8zQjtBQVNELE1BQU0sQ0FBTixJQUFZLGdCQUtYO0FBTEQsV0FBWSxnQkFBZ0I7SUFDMUIsK0RBQVksQ0FBQTtJQUNaLGlFQUFhLENBQUE7SUFDYixtRkFBc0IsQ0FBQTtJQUN0Qix5RUFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBTFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUszQjtBQWdqQkQsTUFBTSxDQUFOLElBQVksWUFHWDtBQUhELFdBQVksWUFBWTtJQUN0QixtQ0FBbUIsQ0FBQTtJQUNuQixpQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSFcsWUFBWSxLQUFaLFlBQVksUUFHdkI7QUFvQkQsTUFBTSxDQUFOLElBQVksaUJBRVg7QUFGRCxXQUFZLGlCQUFpQjtJQUMzQix3Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBRlcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUU1QjtBQWdMRCxNQUFNLENBQU4sSUFBWSxTQUtYO0FBTEQsV0FBWSxTQUFTO0lBQ25CLHNDQUF5QixDQUFBO0lBQ3pCLGdDQUFtQixDQUFBO0lBQ25CLGtDQUFxQixDQUFBO0lBQ3JCLDZDQUFnQyxDQUFBO0FBQ2xDLENBQUMsRUFMVyxTQUFTLEtBQVQsU0FBUyxRQUtwQjtBQUVELE1BQU0sQ0FBTixJQUFZLGVBSVg7QUFKRCxXQUFZLGVBQWU7SUFFekIsZ0NBQVcsQ0FBQTtJQUNYLDhDQUF5QixDQUFBO0FBQzNCLENBQUMsRUFKVyxlQUFlLEtBQWYsZUFBZSxRQUkxQjtBQUVELE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFFeEIsbUNBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsY0FBYyxLQUFkLGNBQWMsUUFHekIiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuZXhwb3J0IGVudW0gVFJBTlNBQ1RJT05fVFlQRSB7XG4gIFNBTEUgPSBcIlNBTEVcIixcbiAgUkVGVU5EID0gXCJSRUZVTkRcIixcbiAgU0FMRV9SRUZVTkQgPSBcIlNBTEVfUkVGVU5EXCIsXG4gIFNBTEVfRVhDSEFOR0UgPSBcIlNBTEVfRVhDSEFOR0VcIixcbiAgVk9JRCA9IFwiVk9JRFwiLFxuICBXRUJfUkVUVVJOUyA9IFwiV0VCX1JFVFVSTlNcIlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1EaXNjb3VudCB7XG4gIHRybkRpc2NvdW50c1BvcnRpb246IG51bWJlcjtcbiAgdHJuUHJvbW90aW9uc1BvcnRpb246IG51bWJlcjtcbiAgcmVmdW5kUG9ydGlvbjogbnVtYmVyO1xuICBjdXJyZW50UmVmdW5kUG9ydGlvbj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGVudW0gREVMSVZFUllfTUVUSE9EUyB7XG4gIERFTElWRVJZID0gMSxcbiAgRFJPUF9TSElQID0gMixcbiAgQ09MTEVDVF9GUk9NX1NUT1JFID0gMyxcbiAgU0hJUF9UT19TVE9SRSA9IDRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0Q2hhbmdlIHtcbiAgaXRlbUxpbmVJZD86IG51bWJlcjtcbiAgU0tVOiBzdHJpbmc7XG4gIHF1YW50aXR5OiBudW1iZXI7XG4gIHNlbGVjdGVkUHJpY2U/OiBudW1iZXI7XG4gIGxpbmVEaXNjb3VudD86IExpbmVEaXNjb3VudDtcbiAgbGluZVByb21vdGlvbnM/OiBMaW5lUHJvbW90aW9ucztcbiAgZXhjaGFuZ2U/OiBFeGNoYW5nZTtcbiAgcmVmdW5kZWRRdWFudGl0eT86IG51bWJlcjsgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250YWlucyBxdWFudGl0eSBvZiBib3RoIGZ1bGwgcHJpY2VkIGFuZCBwcm9tb3Rpb25hbCBxdWFudGl0aWVzXG4gIHJlZnVuZFByb21vdGlvbmFsUXVhbnRpdHk/OiBudW1iZXI7ICAgICAgICAgICAgICAgLy8gcHJvbW90aW9uYWwgcXVhbnRpdHlcbiAgcmVmdW5kZWQ/OiBib29sZWFuO1xuICByZWZ1bmRlZFRvdGFsPzogbnVtYmVyO1xuICByZWZ1bmRlZFJlYXNvbj86IHN0cmluZztcbiAgcmVmdW5kZWRSZWFzb25EZXNjcmlwdGlvbj86IHN0cmluZztcbiAgaXNDaGVja2VkPzogYm9vbGVhbjtcbiAgc2VhbGVkPzogYm9vbGVhbjtcbiAgaXNMYXN0RXhjaGFuZ2VkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm9kdWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdCBleHRlbmRzIFByb2R1Y3RDaGFuZ2Uge1xuICBpdGVtTGluZUlkPzogbnVtYmVyO1xuICBzdGF0dXM6IG51bWJlcjtcbiAgc3ViR3JvdXA6IG51bWJlcjtcbiAgYnJhbmQ6IHN0cmluZztcbiAgY3VycmVuY3k6IHN0cmluZztcbiAgY2F0ZWdvcnk6IHN0cmluZztcbiAgY291bnRyeW9mT3JpZ2luOiBzdHJpbmc7XG4gIHByb2R1Y3RJZDogc3RyaW5nO1xuICBwcm9kdWN0VHlwZTogbnVtYmVyO1xuICBuYW1lPzogc3RyaW5nO1xuICBpbWFnZVVybHM6IFtzdHJpbmddO1xuICBpc0ltYWdlRmFpbFRvTG9hZD86IGJvb2xlYW47XG4gIHNpemU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBzZWFzb246IG51bWJlcjtcbiAgcHJvZHVjdEdyb3VwOiBudW1iZXI7XG4gIHN0eWxlQ29kZTogc3RyaW5nO1xuICBub2RlU3RydWN0dXJlOiBOb2RlU3RydWN0dXJlW107XG4gIGJhcmNvZGU6IHN0cmluZztcbiAgcHJpY2U6IFByaWNlW107XG4gIGNvbG91cjogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB0b3RhbExpbmVQcmljZTogbnVtYmVyO1xuICB0b3RhbDogbnVtYmVyO1xuICBhZGRlZEluQmFza2V0PzogYm9vbGVhbjtcbiAgc2VsZWN0ZWRWQVQ/OiBudW1iZXI7XG4gIHNlbGVjdGVkVkFUQ29kZT86IHN0cmluZztcbiAgc2VsZWN0ZWRSUlBQcmljZT86IG51bWJlcjtcbiAgbGluZURpc2NvdW50PzogTGluZURpc2NvdW50O1xuICBleGNoYW5nZT86IEV4Y2hhbmdlO1xuICAvLyByZWZ1bmRlZFF1YW50aXR5PzogbnVtYmVyO1xuICAvLyByZWZ1bmRlZD86IGJvb2xlYW47XG4gIC8vIHJlZnVuZGVkVG90YWw/OiBudW1iZXI7XG4gIC8vIHJlZnVuZGVkUmVhc29uRGVzY3JpcHRpb24/OnN0cmluZztcbiAgLy8gaXNDaGVja2VkPzpib29sZWFuO1xuICByZWZ1bmRQcm9tb3Rpb25hbFF1YW50aXR5PzogbnVtYmVyOyAgICAgICAgICAgICAgIC8vIHByb21vdGlvbmFsIHF1YW50aXR5XG4gIGV4Y2hhbmdlUmVhc29uPzogc3RyaW5nO1xuICBleGNoYW5nZVF1YW50aXR5PzogbnVtYmVyO1xuICBpdGVtRGlzY291bnRzOiBJdGVtRGlzY291bnQ7XG5cbiAgZ2lmdENhcmROdW1iZXJJc3N1ZWQ/OiBzdHJpbmc7XG4gIGdpZnRDYXJkQW1vdW50PzogbnVtYmVyO1xuICBnaWZ0Q2FyZFJlY2lwaWVudEVtYWlsPzogc3RyaW5nO1xuICBnaWZ0Q2FyZEV4cGlyeURhdGU/OiBzdHJpbmc7XG4gIGdpZnRDYXJkUmVjaXBpZW50TmFtZT86IHN0cmluZztcbiAgZ2lmdENhcmQ/OiBib29sZWFuO1xuXG4gIGRpc2NvdW50YWJsZTogYm9vbGVhbjtcbiAgLy8gc2VhbGVkPzpib29sZWFuO1xuICBleGNsdWRlUHJvbW90aW9uOiBib29sZWFuO1xuICBjYXRlZ29yaWVzOiBDYXRlZ29yaWVzW107XG4gIGRlc2NyaXB0aW9uczogRGVzY3JpcHRpb25zW107XG4gIGJhcmNvZGVzOiBzdHJpbmdbXTtcblxuICAvL05ldyBGZWlsZHNcbiAgZXh0ZXJuYWxJZDogc3RyaW5nO1xuICBjcmVhdGVkRGF0ZTogc3RyaW5nO1xuICB1cGRhdGVkRGF0ZTogc3RyaW5nO1xuICBjcmVhdGVkQnk6IHN0cmluZztcbiAgdXBkYXRlZEJ5OiBzdHJpbmc7XG4gIGF0dHJpYnV0ZXM6IENvcmVBdHRyaWJ1dGVbXTtcbiAgaWQ6IHN0cmluZztcbiAgbG9uZ19kZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIC8vIE1peGVkIFNhbGVzIGZpZWxkc1xuICBpc1dlYk9yZGVyPzogYm9vbGVhbixcbiAgZnVsbGZpbG1lbnRJZDogc3RyaW5nLFxuICBmdWxsZmlsbWVudExvY2F0aW9uTmFtZT86IHN0cmluZyxcbiAgZGVsaXZlcnlNZXRob2Q/OiBzdHJpbmcsXG4gIGRlbGl2ZXJ5R3JvdXA/OiBzdHJpbmcsXG4gIHNlbGVjdGVkSW52ZW50b3J5PzogSW52ZW50b3J5SW5mbztcbiAgbGVhZFRpbWU/OiBsZWFkVGltZTtcblxuICAvL25ldyBvbmUgZm9yIG9zdSBwcm92aWRlclxuICBhdmFpbGFibGVRdWFudGl0eT86IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgbGVhZFRpbWUge1xuICB0eXBlOiBzdHJpbmcsXG4gIHZhbHVlOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeGNoYW5nZSB7XG4gIGV4Y2hhbmdlSWQ6IG51bWJlcixcbiAgbGluZUl0ZW1JZDogbnVtYmVyLFxuICByZWFzb246IHN0cmluZyxcbiAgcXVhbnRpdHk6IG51bWJlcixcbiAgbmV3SXRlbXM6IFByb2R1Y3RbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXRlZ29yaWVzIHtcbiAgaWQ6IHN0cmluZztcbiAgcGFyZW50SWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBjYXRlZ29yeUlkOiBzdHJpbmc7XG4gIHN0YXR1czogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXNjcmlwdGlvbnMge1xuICBuYW1lOiBzdHJpbmc7XG4gIGNvdW50cnlDb2RlOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29yZUF0dHJpYnV0ZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgc2VhcmNoYWJsZTogYm9vbGVhbjtcbiAgY291bnRyeUNvZGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBCYXNrZXRcbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2tldCB7XG4gIHN1YnNpZGlhcnlJZD86IHN0cmluZztcbiAgcHJvZHVjdHM6IFByb2R1Y3RbXTtcbiAgdHJhbnNhY3Rpb25EaXNjb3VudDogYW55W107XG4gIHF1YW50aXR5OiBudW1iZXI7XG4gIHRvdGFsOiBudW1iZXI7XG4gIHNhbGVUb3RhbDogbnVtYmVyO1xuICBkaXNjb3VudFRvdGFsPzogbnVtYmVyO1xuICB0cmFuc2FjdGlvbklkPzogc3RyaW5nO1xuICBvZmZsaW5lVHJhbnNhY3Rpb25JZD86IHN0cmluZztcbiAgYmFzZUN1cnJlbmN5OiBzdHJpbmc7XG4gIGJhc2tldFRvdGFsPzogbnVtYmVyO1xuICByZWZ1bmRUb3RhbD86IG51bWJlcjtcbiAgdHJhbnNhY3Rpb25Qcm9tb3Rpb24/OiBUcmFuc2FjdGlvblByb21vdGlvbltdO1xuICBjdXN0b21lcj86IGFueTtcbiAgZXhjaGFuZ2U/OiBFeGNoYW5nZVtdO1xuICBpblN0b3JlRmxhZz86IGJvb2xlYW5cbn1cblxuXG5cbi8qKlxuICogUHJpY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmljZSB7XG4gIFZBVDogbnVtYmVyO1xuICBWQVRDb2RlOiBzdHJpbmc7XG4gIHNhbGVzUHJpY2U6IG51bWJlcjtcbiAgY3VycmVuY3lDb2RlOiBzdHJpbmc7XG4gIFJSUFByaWNlOiBudW1iZXI7XG59XG5cbi8qKlxuICogTm9kZSBzdHJ1Y3R1cmVcbiAqL1xuaW50ZXJmYWNlIE5vZGVTdHJ1Y3R1cmUge1xuICBzdGF0dXM6IGJvb2xlYW47XG4gIG5hbWU6IHN0cmluZztcbiAgbm9kZVR5cGU6IHN0cmluZztcbiAgaXNPdmVycmlkZTogYm9vbGVhbjtcbiAgbm9kZUlkOiBzdHJpbmc7XG4gIHBhcmVudElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogTGluZSBEaXNjb3VudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpbmVEaXNjb3VudCB7XG4gIGl0ZW1MaW5lSWQ6IHN0cmluZyxcbiAgZGlzY291bnRBbW91bnQ6IG51bWJlcixcbiAgZGlzY291bnRUeXBlOiBzdHJpbmcsXG4gIC8vIHJlYXNvbkNvZGU6IHN0cmluZyxcbiAgbmFtZT86IHN0cmluZyxcbiAgdW5pdFByaWNlOiBudW1iZXIsXG4gIGRpc2NvdW50ZWRMaW5lUHJpY2U/OiBudW1iZXIsXG4gIHByaWNlTWFuYWdlck92ZXJyaWRlPzogVXNlck92ZXJyaWRlLFxuICBwcmljZU92ZXJyaWRlUmVhc29uQ29kZT86IHN0cmluZyxcbiAgcHJpY2VPdmVycmlkZVJlYXNvbk5hbWU/OiBzdHJpbmcsXG4gIHByaWNlT3ZlcnJpZGVBbW91bnQ/OiBudW1iZXIsXG4gIHBlcmNlbnRhZ2VEaXNjb3VudE1hbmFnZXJPdmVycmlkZT86IFVzZXJPdmVycmlkZSxcbiAgcGVyY2VudGFnZURpc2NvdW50UmVhc29uQ29kZT86IHN0cmluZyxcbiAgcGVyY2VudGFnZURpc2NvdW50UmVhc29uTmFtZT86IHN0cmluZyxcbiAgcGVyY2VudGFnZURpc2NvdW50VmFsdWU/OiBudW1iZXJcbn1cblxuLyoqXG4gKiBVc2VyIE92ZXJyaWRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlck92ZXJyaWRlIHtcbiAgdXNlcklkOiBzdHJpbmcsXG4gIGF1dG9tYXRpY0FwcHJvdmU6IHN0cmluZyxcbiAgb3JpZ2luYWxVc2VySWQ6IHN0cmluZ1xufVxuXG4vKipcbiogbGluZSBQcm9tb3Rpb25zXG4qL1xuZXhwb3J0IGludGVyZmFjZSBMaW5lUHJvbW90aW9ucyB7XG5cbiAgdHJpZ2dlcjogVHJpZ2dlcltdLFxuICBpdGVtTGluZUlkOiBudW1iZXIsXG4gIHByb21vdGlvbklkOiBzdHJpbmcsXG4gIGRpc3BsYXlUZXh0OiBzdHJpbmcsXG4gIHByb21vdGlvblR5cGU6IHN0cmluZyxcbiAgcHJvbW90aW9uQW1vdW50OiBudW1iZXIsXG4gIG5hbWU6IHN0cmluZyxcbiAgcHJvbW90aW9uSW5mbzogc3RyaW5nLFxuICBwcm9tb3Rpb25MaW5lUHJpY2U6IG51bWJlclxuICByZWZ1bmRlZD86IGJvb2xlYW47XG59XG5cbi8qKlxuKiB0cmlnZ2VyXG4qL1xuZXhwb3J0IGludGVyZmFjZSBUcmlnZ2VyIHtcbiAgaXRlbUxpbmVJZDogc3RyaW5nO1xuICBxdWFudGl0eT86IG51bWJlcjtcbiAgdG90YWxRdWFudGl0eT86IG51bWJlcjtcbiAgbGluZVByb21vdGlvbkFtb3VudD86bnVtYmVyOyAgIC8vIHByb21vdGlvbiBhbW91bnQgYXBwbGllZCBhY2Nyb3NzIHRoZSBsaW5lXG4gIHByb21vdGlvbkFtb3VudD86bnVtYmVyOyAgIC8vIHByb21vdGlvbiBhbW91bnQgYXBwbGllZCBvbiAxIHVuaXRcbiAgcmVmdW5kZWRSZWFzb24/OiBzdHJpbmc7XG4gIHJlZnVuZGVkUmVhc29uRGVzY3JpcHRpb24/OnN0cmluZztcbiAgcHJvbW90aW9uSWQ/OnN0cmluZztcbn1cblxuLyoqXG4qIFRyYW5zYWN0aW9uIFByb21vdGlvblxuKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25Qcm9tb3Rpb24ge1xuICBkaXNwbGF5VGV4dDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHByb21vdGlvbkFtb3VudDogbnVtYmVyO1xuICBwcm9tb3Rpb25JZDogc3RyaW5nO1xuICBwcm9tb3Rpb25JbmZvOiBzdHJpbmc7XG4gIHByb21vdGlvblR5cGU6IHN0cmluZztcbiAgaXRlbUxpbmVJZHM6IG51bWJlcltdO1xuICB0eXBlPzpzdHJpbmc7XG4gIHN1YkxldmVsVHlwZT86UFJPTU9USU9OX0xFVkVMXG4gIHRyaWdnZXI/OlRyaWdnZXJbXTtcbiAgY291cG9uQ29kZT86c3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZnVuZFByb2R1Y3RDaGFuZ2Uge1xuICBpdGVtTGluZUlkPzogbnVtYmVyO1xuICByZWZ1bmRlZFF1YW50aXR5PzogbnVtYmVyO1xuICByZWZ1bmRlZFByb21vdGlvbmFsUXVhbnRpdHk/OiBudW1iZXI7XG4gIHJlZnVuZFRvdGFsPzogbnVtYmVyO1xuICByZWZ1bmRlZFJlYXNvbj86IHN0cmluZztcbiAgcmVmdW5kZWRSZWFzb25EZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcmVmdW5kV2l0aFByb21vdGlvbjogYm9vbGVhbjtcbiAgaXNMYXN0RXhjaGFuZ2VkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnZlbnRvcnlJbmZvIHtcbiAgc3RvcmVOYW1lOiBzdHJpbmcsXG4gIHN0b3JlSWQ6IHN0cmluZyxcbiAgcXVhbnRpdHlBdmFpbGFibGU6IG51bWJlcixcbiAgcXVhbnRpdHlSZXF1aXJlZDogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW52ZW50b3J5UmVxdWVzdEluZm8gZXh0ZW5kcyBJbnZlbnRvcnlJbmZvIHtcbiAgcmVxdWVzdGVkUXVhbnRpdHk6IG51bWJlcixcbiAgcmVxdWVzdGVkQWN0aW9uOiBERUxJVkVSWV9NRVRIT0RTXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVsaXZlcnlJbmZvIHtcbiAgZ3JvdXBzOiBEZWxpdmVyeUdyb3VwSW5mb1tdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVsaXZlcnlHcm91cEluZm8ge1xuICBncm91cE51bWJlcjogbnVtYmVyO1xuICBpdGVtczogUHJvZHVjdFtdO1xuICBlc3RpbWF0ZT86IEVzdGltYXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVzdGltYXRlIHtcbiAgdHlwZTogc3RyaW5nLFxuICB2YWx1ZTogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25Eb2N1bWVudCB7XG4gIHRyYW5zYWN0aW9uSWQ/OiBzdHJpbmc7XG4gIHN1YnNpZGlhcnlJZD86IHN0cmluZztcbiAgb2ZmbGluZVRyYW5zYWN0aW9uSWQ/OnN0cmluZztcbiAgdHJhbnNhY3Rpb25SZWY/OiBzdHJpbmc7XG4gIGRhdGVUaW1lPzogc3RyaW5nO1xuICBvcmdDb2RlOiBzdHJpbmc7XG4gIHN0b3JlSWQ6IHN0cmluZztcbiAgc3RvcmVOb2RlSWQ6c3RyaW5nO1xuICBzdG9yZU5vZGVTdHJ1Y3R1cmU6c3RyaW5nO1xuICBkZXZpY2VJZDogc3RyaW5nO1xuICB0ZXJtaW5hbElkOnN0cmluZztcbiAgaW5pdGlhdGluZ01vZHVsZSA6c3RyaW5nO1xuICBleHBvcnQ6Ym9vbGVhbjtcbiAgdXNlcklkPzogc3RyaW5nO1xuICB1c2VyTmFtZT86c3RyaW5nO1xuICBjdXN0b21lcj86IEN1c3RvbWVyO1xuICBiYXNrZXQ6IGFueTtcbiAgYmFza2V0U3VtbWFyeTogQmFza2V0U3VtbWFyeTtcbiAgLy8gbGluZURpc2NvdW50OiBMaW5lRGlzY291bnRbXTtcbiAgYmFzZUN1cnJlbmN5OiBzdHJpbmc7XG4gIHNwbGl0UGF5bWVudD86Ym9vbGVhbjtcbiAgaXNQYXltZW50Q29tcGxldGVkPzpib29sZWFuO1xuICBwYXltZW50RGV0YWlscz86IGFueTtcbiAgdHlwZT86IHN0cmluZztcbiAgb3BlcmF0aW9uU3RhdHVzPzogc3RyaW5nO1xuICBjcmVhdGVkQXQ/OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdD86IHN0cmluZztcbiAgdHJhbnNDb21wbGV0ZWRBdD86IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG4gIHNhbGVUb3RhbD86IG51bWJlcjtcbiAgcmVhc29uQ29kZT86IHN0cmluZztcbiAgcmVhc29uRGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIG92ZXJyaWRlPzogVXNlck92ZXJyaWRlO1xuICBvcmlnaW5hbFRyYW5zSWQ/OnN0cmluZztcbiAgb3JpZ2luYWxFeHRlcm5hbElkPzogc3RyaW5nO1xuICBhcGlSZXNwb25zZT86IEFQSVJlc3BvbnNlOyAgICAvLyBUT0RPIGFkZCBoYW5kbGVyIGFzIHBlciBleHBvcnQgcHJvdmlkZXJcbiAgdW5yZWZlcmVuY2VkUmVmdW5kPzpib29sZWFuO1xuICBnaWZ0ZWRSZWNlaXB0Pzpib29sZWFuO1xuICBjdXJyZW50VHJhbnNhY3Rpb25EZXRhaWxzPzphbnk7XG4gIGlzQ2hlY2tlZD86Ym9vbGVhbjtcbiAgZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHM/OiBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlsc1tdO1xuICByZWZ1bmRSZXF1ZXN0PzogYW55W107XG4gIGlzSW5TdG9yZU9yZGVyPzogYm9vbGVhbjsgXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVBJUmVzcG9uc2VcbntcbiAgaW50ZXJuYWxJZD86bnVtYmVyO1xuICB0cmFuaWQ/OnN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1cnJlbnRUcmFuc2FjdGlvbkRldGFpbHN7XG4gIHByb2R1Y3RzOiBQcm9kdWN0W107XG4gIGxpbmVEaXNjb3VudD86TGluZURpc2NvdW50W107XG4gIGxpbmVQcm9tb3Rpb24/OkxpbmVQcm9tb3Rpb25zW107XG4gIHRyYW5zYWN0aW9uUHJvbW90aW9uPzpUcmFuc2FjdGlvblByb21vdGlvbltdO1xuICB0cmFuc2FjdGlvbkRpc2NvdW50PzpUcmFuc2FjdGlvbkRpc2NvdW50W107XG4gIGJhc2tldFN1bW1hcnk/OkJhc2tldFN1bW1hcnk7ICBcbiAgdGF4QnJlYWtkb3duPzpUYXhCcmVha2Rvd247ICBcbiAgdG90YWxUYXhTdW1tYXJ5PzpUb3RhbFRheFN1bW1hcnlbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQmFza2V0U3VtbWFyeSB7XG4gIHRvdGFsSXRlbXM/OiBudW1iZXI7XG4gIHNhbGVUb3RhbD86IG51bWJlcjtcbiAgVkFUVG90YWw/OiBudW1iZXI7XG4gIGRpc2NvdW50VG90YWw/OiBudW1iZXI7XG4gIGJhc2tldFRvdGFsPzogbnVtYmVyO1xuICByZWZ1bmRUb3RhbD86bnVtYmVyO1xuICBzaGlwcGluZ1RvdGFsPzogbnVtYmVyO1xuICBiYXNrZXRUb3RhbFdpdGhTaGlwcGluZ1RvdGFsPzogbnVtYmVyO1xuICBpblN0b3JlPzogQmFza2V0U3VtbWFyeURldGFpbHM7XG4gIHdlYk9yZGVyPzogQmFza2V0U3VtbWFyeURldGFpbHM7XG4gIGNuYz86IEJhc2tldFN1bW1hcnlEZXRhaWxzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2tldFN1bW1hcnlEZXRhaWxzIHtcbiAgdG90YWxJdGVtcz86IG51bWJlcjtcbiAgc2FsZVRvdGFsPzogbnVtYmVyO1xuICBWQVRUb3RhbD86IG51bWJlcjtcbiAgZGlzY291bnRUb3RhbD86IG51bWJlcjtcbiAgYmFza2V0VG90YWw/OiBudW1iZXI7XG4gIHJlZnVuZFRvdGFsPzpudW1iZXI7XG4gIHNoaXBwaW5nVG90YWw/OiBudW1iZXI7XG4gIGJhc2tldFRvdGFsV2l0aFNoaXBwaW5nVG90YWw/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25EaXNjb3VudHtcbiAgZGlzY291bnRBbW91bnQ6bnVtYmVyO1xuICBkaXNjb3VudFR5cGU6U3RyaW5nO1xuICByZWFzb25Db2RlOnN0cmluZztcbiAgb3ZlcnJpZGU/OiBVc2VyT3ZlcnJpZGU7XG4gIGl0ZW1MaW5lSWRzPzpudW1iZXJbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUQmFza2V0IHtcbiAgcHJvZHVjdHM6IFRQcm9kdWN0W107XG4gIGxpbmVEaXNjb3VudDpMaW5lRGlzY291bnRbXTtcbiAgZXhjaGFuZ2U6RXhjaGFuZ2VbXTtcbiAgbGluZVByb21vdGlvbjpMaW5lUHJvbW90aW9uc1tdO1xuICB0cmFuc2FjdGlvblByb21vdGlvbj86VHJhbnNhY3Rpb25Qcm9tb3Rpb25bXTtcbiAgdHJhbnNhY3Rpb25EaXNjb3VudD86VHJhbnNhY3Rpb25EaXNjb3VudFtdO1xuICB0YXhCcmVha2Rvd24/OlRheEJyZWFrZG93bjtcbiAgdG90YWxUYXhTdW1tYXJ5PzpUb3RhbFRheFN1bW1hcnlbXTtcblxuICBcbn1cblxuZXhwb3J0IGludGVyZmFjZSBURXhjaGFuZ2V7XG4gIGV4Y2hhbmdlSWQ/Om51bWJlcixcbiAgbGluZUl0ZW1JZD86IG51bWJlcixcbiAgcmVhc29uPzogc3RyaW5nLFxuICBxdWFudGl0eT86IG51bWJlcixcbiAgbmV3SXRlbXM/OlROZXdJdGVtc1tdO1xuICB9XG4gIFxuICBleHBvcnQgaW50ZXJmYWNlIFROZXdJdGVtc3tcbiAgbGluZUl0ZW1JZDpudW1iZXIsXG4gICBRdWFudGl0eTpudW1iZXJcbiAgfVxuXG5leHBvcnQgaW50ZXJmYWNlIFRQcm9kdWN0IHtcbiAgaXRlbUxpbmVJZDogc3RyaW5nO1xuICBTS1U6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgaW1hZ2VVcmxzOiBbc3RyaW5nXTtcbiAgcHJpY2U6IG51bWJlcjtcbiAgdGF4Q29kZT86IHN0cmluZztcbiAgdGF4UGVyY2VudD86IHN0cmluZztcbiAgcXVhbnRpdHk6IG51bWJlcjtcbiAgcmVmdW5kZWRRdWFudGl0eT86IG51bWJlcjtcbiAgcmVmdW5kZWRQcm9tb3Rpb25hbFF1YW50aXR5PzpudW1iZXI7XG4gIHJlZnVuZGVkPzogYm9vbGVhbjtcbiAgcmVmdW5kZWRUb3RhbD86IG51bWJlcjtcbiAgcmVmdW5kZWRSZWFzb24/OnN0cmluZztcbiAgcmVmdW5kZWRSZWFzb25EZXNjcmlwdGlvbj86c3RyaW5nO1xuICBzZWxlY3RlZFJSUFByaWNlPzogbnVtYmVyO1xuICB0b3RhbExpbmVQcmljZTogbnVtYmVyO1xuICBiYXJDb2RlPzogc3RyaW5nO1xuICBiYXJjb2Rlcz86IHN0cmluZ1tdO1xuICBmbGFnZ2VkPzogYm9vbGVhbjtcbiAgZXhjaGFuZ2U/OkV4Y2hhbmdlO1xuICBleGNsdWRlUHJvbW90aW9uOmJvb2xlYW47XG4gIGRpc2NvdW50YWJsZT86Ym9vbGVhbjtcblxuICBpdGVtRGlzY291bnRzPzpJdGVtRGlzY291bnRzO1xuICBpc0xhc3RFeGNoYW5nZWQ/OiBib29sZWFuO1xuXG4gIC8vIE1peGVkIFNhbGVzIGZpZWxkc1xuICBmdWxsZmlsbWVudElkOnN0cmluZyxcbiAgZnVsbGZpbG1lbnRMb2NhdGlvbk5hbWU6c3RyaW5nLFxuICBkZWxpdmVyeU1ldGhvZD86c3RyaW5nLFxuICBkZWxpdmVyeUdyb3VwPzpzdHJpbmcsXG4gIGdpZnRDYXJkTnVtYmVySXNzdWVkPzogc3RyaW5nLFxuICBnaWZ0Q2FyZEFtb3VudD86IG51bWJlcixcbiAgZ2lmdENhcmRSZWNpcGllbnRFbWFpbD86IHN0cmluZyxcbiAgZ2lmdENhcmRFeHBpcnlEYXRlPzogc3RyaW5nICxcbiAgZ2lmdENhcmRSZWNpcGllbnROYW1lPzogc3RyaW5nLFxuICBnaWZ0Q2FyZD86Ym9vbGVhbixcbiAgY3VycmVuY3k/OnN0cmluZyxcbiAgaXNXZWJPcmRlcj86Ym9vbGVhbixcbiAgbGVhZFRpbWU/OiBsZWFkVGltZVxuICBcbiAgLy8gY3VycmVudHRyYW5zYWN0aW9uIGRvYyBjaGFuZ2VzXG4gIGxpbmVEaXNjb3VudD86YW55XG5cbiAgYXR0cmlidXRlcz86Q29yZUF0dHJpYnV0ZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1EaXNjb3VudHN7XG4gIHRybkRpc2NvdW50c1BvcnRpb246bnVtYmVyO1xuICB0cm5Qcm9tb3Rpb25zUG9ydGlvbjpudW1iZXI7XG4gIHJlZnVuZFBvcnRpb246bnVtYmVyO1xufVxuXG5cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21lciB7XG4gIGlkOiBzdHJpbmc7XG4gIGN1c3RvbWVySWQ/OiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBmaXJzdE5hbWU6IHN0cmluZztcbiAgbGFzdE5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgcG9zdENvZGU6IHN0cmluZztcbiAgdGVsZXBob25lPzogc3RyaW5nO1xuICBiaWxsaW5nQWRkcmVzcz86IEFkZHJlc3MgfCBBZGRyZXNzW10gfCBhbnk7XG4gIHNoaXBwaW5nQWRkcmVzcz86IEFkZHJlc3MgfCBBZGRyZXNzW10gfCBhbnk7XG4gIHNoaXBtZW50RGV0YWlscz86IFNoaXBtZW50RGV0YWlsc1tdO1xuICBhZGRyZXNzRGV0YWlsPzogc3RyaW5nO1xuICBub0N1c3RvbWVyU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBleHRlcm5hbElkPzogc3RyaW5nOyBcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRyZXNzIFxue1xuICBpZD86IHN0cmluZztcbiAgY291bnRyeUNvZGU/OiBzdHJpbmc7XG4gIGFkZHJlc3MxPzogc3RyaW5nO1xuICBhZGRyZXNzMj86IHN0cmluZztcbiAgYWRkcmVzczM/OiBzdHJpbmc7XG4gIGNpdHk/OiBzdHJpbmc7XG4gIGNvdW50eT86IHN0cmluZztcbiAgcG9zdENvZGU/OiBzdHJpbmc7XG4gIGNvdW50cnk/OiBzdHJpbmc7XG4gfVxuXG4gZXhwb3J0IGludGVyZmFjZSBTaGlwbWVudERldGFpbHMge1xuICBpZD86IHN0cmluZyxcbiAgZGVsaXZlcnlHcm91cD86IHN0cmluZyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXltZW50RGV0YWlscyB7XG4gIGNhcmROdW1iZXI/OiBhbnk7XG4gIHNxTm8/Om51bWJlcjtcbiAgcmVzdWx0Pzogc3RyaW5nO1xuICBjdXJyZW5jeTogc3RyaW5nO1xuICBhbW91bnQ6IHN0cmluZztcbiAgYXV0aGNvZGU/OiBzdHJpbmc7XG4gIHBhbj86IHN0cmluZztcbiAgY2FyZFR5cGU/OiBzdHJpbmc7XG4gIHRyYW5zYWN0aW9uRGF0ZT86IHN0cmluZztcbiAgbWlkPzogc3RyaW5nO1xuICB0aWQ/OiBzdHJpbmc7XG4gIGN2bT86IHN0cmluZztcbiAgaG9zdFJlZmVyZW5jZUlkPzogc3RyaW5nO1xuICBhaWQ/OiBzdHJpbmc7XG4gIHJlY2VpcHRObz86IHN0cmluZztcbiAgZXhwaXJ5ZGF0ZT86IHN0cmluZztcbiAgdHJhbnNhY3Rpb25SZWZlcmVuY2U6IHN0cmluZztcbiAgYXBwbGljYXRpb25WZXJzaW9uPzogc3RyaW5nO1xuICBlbnRyeU1ldGhvZD86c3RyaW5nO1xuICB0cmFuc2FjdGlvblR5cGU6c3RyaW5nO1xuICB0b3RhbGFtb3VudDpzdHJpbmc7XG4gIHBheW1lbnRUeXBlPzpzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGF4QnJlYWtkb3duXG57XG4gIHRheExpbmVzIDogVGF4TGluZVtdLFxuICB0b3RhbFRheGFibGVBbW91bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUb3RhbFRheFN1bW1hcnl7XG4gIFZBVENvZGU6c3RyaW5nLFxuICBWQVQgOiBudW1iZXI7XG4gIFByZVRheFN1bTogIG51bWJlclxuICBUYXhTdW06ICBudW1iZXJcbiAgVFhyYXRlU3VtOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYXhMaW5lXG57XG4gICAgaXRlbUxpbmVJZDogbnVtYmVyLFxuICAgIHRheGFibGVBbW91bnQ6IG51bWJlcixcbiAgICB0YXhMaW5lVG90YWw6IG51bWJlcixcbiAgICBWQVQ6IG51bWJlcixcbiAgICBWQVRDb2RlIDogc3RyaW5nLFxuICAgIFByZVRheDogbnVtYmVyXG59XG5cbmV4cG9ydCBlbnVtIERJU0NPVU5UVFlQRSB7XG4gIFBFUkNFTlQgPSAnUGVyY2VudCcsXG4gIEFNT1VOVCA9ICdBTU9VTlQnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25JbmZvIHtcbiAgc2hpcHBpbmdJZD86IHN0cmluZyxcbiAgZXh0ZXJuYWxTaGlwcGluZ0lkPzogc3RyaW5nLFxuICBpbnZvaWNlSWQ/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb3Vwb25zIHtcbiAgbmFtZT86IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHMge1xuICB1bmlxdWVJZD86IHN0cmluZyxcbiAgcHJvdmlkZXJUeXBlPzogc3RyaW5nLFxuICBkZXRhaWxzPzogVHJhbnNhY3Rpb25JbmZvLFxuICBjb3Vwb25zPzogQ291cG9uc1tdXG59XG5cbmV4cG9ydCBlbnVtIElOSVRJQVRJTkdfTU9EVUxFIHtcbiAgRUJBU0tFVCA9IFwiZUJhc2tldFwiXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgcGVuZGluZ01ldGhvZCB7XG4gIF90eXBlPzogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xuICBtZXNzYWdlPzogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xuICBkZXRhaWxzPzogU2hpcG1lbnRJZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGlwbWVudElkIHtcbiAgc2hpcG1lbnRJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21lckFkZHJlc3Mge1xuICBfdHlwZT86IHN0cmluZztcbiAgZW1haWw/OiBzdHJpbmc7XG4gIGFkZHJlc3MxPzogc3RyaW5nO1xuICBjaXR5Pzogc3RyaW5nO1xuICBjb3VudHJ5X2NvZGU/OiBzdHJpbmc7XG4gIGZpcnN0X25hbWU/OiBzdHJpbmc7XG4gIGZ1bGxfbmFtZT86IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG4gIGxhc3RfbmFtZT86IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG4gIHNhbHV0YXRpb24/OiBzdHJpbmc7XG4gIGNfYXJlYT86IHN0cmluZztcbiAgY19lbWFpbD86IHN0cmluZztcbiAgY19waG9uZVdoYXRzQXBwPzogc3RyaW5nO1xuICBjX3N0clZhbHVlPzogc3RyaW5nO1xuICBwb3N0YWxfY29kZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21lckluZm8ge1xuICBfdHlwZT86IHN0cmluZztcbiAgY3VzdG9tZXJfaWQ/OiBzdHJpbmc7XG4gIGVtYWlsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwZWRUYXhJdGVtIHtcbiAgX3R5cGU/OiBzdHJpbmc7XG4gIHRheF9yYXRlPzogbnVtYmVyO1xuICB0YXhfdmFsdWU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgYWRkaXRpb25hbE5vdGVzIHtcbiAgX3R5cGU/OiBzdHJpbmc7XG4gIGxpbms/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdEl0ZW0ge1xuICBfdHlwZT86IHN0cmluZztcbiAgYWRqdXN0ZWRfdGF4PzogbnVtYmVyO1xuICBiYXNlX3ByaWNlPzogbnVtYmVyO1xuICBib251c19wcm9kdWN0X2xpbmVfaXRlbT86IGJvb2xlYW47XG4gIGdpZnQ/OiBib29sZWFuO1xuICBpdGVtX2lkPzogc3RyaW5nO1xuICBpdGVtX3RleHQ/OiBzdHJpbmc7XG4gIHByaWNlPzogbnVtYmVyO1xuICBwcmljZV9hZGp1c3RtZW50cz86IFByaWNlQWRqdXN0bWVudFtdO1xuICBwcmljZV9hZnRlcl9pdGVtX2Rpc2NvdW50PzogbnVtYmVyO1xuICBwcmljZV9hZnRlcl9vcmRlcl9kaXNjb3VudD86IG51bWJlcjtcbiAgcHJvZHVjdF9pZD86IHN0cmluZztcbiAgcHJvZHVjdF9uYW1lPzogc3RyaW5nO1xuICBxdWFudGl0eT86IG51bWJlcjtcbiAgc2hpcG1lbnRfaWQ/OiBzdHJpbmc7XG4gIHRheD86IG51bWJlcjtcbiAgdGF4X2Jhc2lzPzogbnVtYmVyO1xuICB0YXhfY2xhc3NfaWQ/OiBzdHJpbmc7XG4gIHRheF9yYXRlPzogbnVtYmVyO1xuICBjX29zdU9iamVjdERhdGE/OnN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGlwcGluZ01ldGhvZCB7XG4gIF90eXBlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHByaWNlPzogbnVtYmVyO1xuICBjX2FwcHJvYWNoaW5nVGhyZXNob2xkTWVzc2FnZT86IHN0cmluZztcbiAgY19lc3RpbWF0ZWRBcnJpdmFsVGltZT86IHN0cmluZztcbiAgY19pc0VtYWlsPzogYm9vbGVhbjtcbiAgY19zdG9yZVBpY2t1cEVuYWJsZWQ/OiBib29sZWFuO1xuICBjX3RocmVzaG9sZFZhbHVlPzogbnVtYmVyO1xufSBcblxuZXhwb3J0IGludGVyZmFjZSBzaGlwbWVudCB7XG4gIF90eXBlPzogc3RyaW5nO1xuICBhZGp1c3RlZF9tZXJjaGFuZGl6ZV90b3RhbF90YXg/OiBudW1iZXI7XG4gIGFkanVzdGVkX3NoaXBwaW5nX3RvdGFsX3RheD86IG51bWJlcjtcbiAgZ2lmdD86IGJvb2xlYW47XG4gIG1lcmNoYW5kaXplX3RvdGFsX3RheD86IG51bWJlcjtcbiAgcHJvZHVjdF9zdWJfdG90YWw/OiBudW1iZXI7XG4gIHByb2R1Y3RfdG90YWw/OiBudW1iZXI7XG4gIHNoaXBtZW50X2lkPzogc3RyaW5nO1xuICBzaGlwbWVudF90b3RhbD86IG51bWJlcjtcbiAgc2hpcHBpbmdfYWRkcmVzcz86IEN1c3RvbWVyQWRkcmVzcztcbiAgc2hpcHBpbmdfbWV0aG9kPzogU2hpcHBpbmdNZXRob2Q7XG4gIHNoaXBwaW5nX3N0YXR1cz86IHN0cmluZztcbiAgc2hpcHBpbmdfdG90YWw/OiBudW1iZXI7XG4gIHNoaXBwaW5nX3RvdGFsX3RheD86IG51bWJlcjtcbiAgdGF4X3RvdGFsPzogbnVtYmVyO1xuICBjX2Zyb21TdG9yZUlkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoaXBwaW5nSXRlbSB7XG4gIF90eXBlPzogc3RyaW5nO1xuICBhZGp1c3RlZF90YXg/OiBudW1iZXI7XG4gIGJhc2VfcHJpY2U/OiBudW1iZXI7XG4gIGl0ZW1faWQ/OiBzdHJpbmc7XG4gIGl0ZW1fdGV4dD86IHN0cmluZztcbiAgcHJpY2U/OiBudW1iZXI7XG4gIHByaWNlX2FmdGVyX2l0ZW1fZGlzY291bnQ/OiBudW1iZXI7XG4gIHNoaXBtZW50X2lkPzogc3RyaW5nO1xuICB0YXg/OiBudW1iZXI7XG4gIHRheF9iYXNpcz86IG51bWJlcjtcbiAgdGF4X2NsYXNzX2lkPzogc3RyaW5nO1xuICB0YXhfcmF0ZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBsaWVkRGlzY291bnQge1xuICBfdHlwZT86IHN0cmluZyxcbiAgYW1vdW50PzogbnVtYmVyLFxuICBwZXJjZW50YWdlPzogbnVtYmVyLFxuICB0eXBlPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpY2VBZGp1c3RtZW50IHtcbiAgX3R5cGU/OiBzdHJpbmcsXG4gIGFwcGxpZWRfZGlzY291bnQ/OiBBcHBsaWVkRGlzY291bnQsXG4gIGNvdXBvbl9jb2RlPzogc3RyaW5nLFxuICBjcmVhdGlvbl9kYXRlPzogc3RyaW5nLFxuICBjdXN0b20/OiBib29sZWFuLFxuICBpdGVtX3RleHQ/OiBzdHJpbmcsXG4gIGxhc3RfbW9kaWZpZWQ/OiBzdHJpbmcsXG4gIG1hbnVhbD86IGJvb2xlYW4sXG4gIHByaWNlPzogbnVtYmVyXG4gIHByaWNlX2FkanVzdG1lbnRfaWQ/OiBzdHJpbmcsXG4gIHByb21vdGlvbl9pZD86IHN0cmluZyxcbiAgcHJvbW90aW9uX2xpbms/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmRlckRldGFpbHMge1xuICBfdj86IHN0cmluZztcbiAgX3R5cGU/OiBzdHJpbmc7XG4gIF9yZXNvdXJjZV9zdGF0ZT86IHN0cmluZztcbiAgX2ZsYXNoPzogcGVuZGluZ01ldGhvZFtdO1xuICBhZGp1c3RlZF9tZXJjaGFuZGl6ZV90b3RhbF90YXg/OiBudW1iZXI7XG4gIGFkanVzdGVkX3NoaXBwaW5nX3RvdGFsX3RheD86IG51bWJlcjtcbiAgYWdlbnRfYmFza2V0PzogYm9vbGVhbjtcbiAgYmFza2V0X2lkPzogc3RyaW5nO1xuICBiaWxsaW5nX2FkZHJlc3M/OiBDdXN0b21lckFkZHJlc3M7XG4gIGNoYW5uZWxfdHlwZT86IHN0cmluZztcbiAgY3JlYXRpb25fZGF0ZT86IHN0cmluZztcbiAgY3VycmVuY3k/OiBzdHJpbmc7XG4gIGN1c3RvbWVyX2luZm8/OiBDdXN0b21lckluZm87XG4gIGdyb3VwZWRfdGF4X2l0ZW1zPzogR3JvdXBlZFRheEl0ZW1bXTtcbiAgbGFzdF9tb2RpZmllZD86IHN0cmluZztcbiAgbWVyY2hhbmRpemVfdG90YWxfdGF4PzogbnVtYmVyO1xuICBub3Rlcz86IGFkZGl0aW9uYWxOb3RlcztcbiAgb3JkZXJfcHJpY2VfYWRqdXN0bWVudHM/OiBQcmljZUFkanVzdG1lbnRbXSxcbiAgb3JkZXJfbm8/OiBzdHJpbmc7XG4gIG9yZGVyX3RvdGFsPzogbnVtYmVyO1xuICBwcm9kdWN0X2l0ZW1zPzogUHJvZHVjdEl0ZW1bXTtcbiAgcHJvZHVjdF9zdWJfdG90YWw/OiBudW1iZXI7XG4gIHByb2R1Y3RfdG90YWw/OiBudW1iZXI7XG4gIHNoaXBtZW50cz86IHNoaXBtZW50W107XG4gIHNoaXBwaW5nX2l0ZW1zPzogU2hpcHBpbmdJdGVtW107XG4gIHNoaXBwaW5nX3RvdGFsPzogbnVtYmVyO1xuICBzaGlwcGluZ190b3RhbF90YXg/OiBudW1iZXI7XG4gIHRheGF0aW9uPzogc3RyaW5nO1xuICB0YXhfcm91bmRlZF9hdF9ncm91cD86IGJvb2xlYW47XG4gIHRheF90b3RhbD86IG51bWJlcjtcbiAgY19pc0luU3RvcmVPcmRlcj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBlbnVtIFBST1ZJREVSUyB7XG4gIFNBTEVTRk9SQ0UgPSBcIlNhbGVzZm9yY2VcIixcbiAgTUFHRU5UTyA9IFwiTWFnZW50b1wiLFxuICBNQUdFTlRPMiA9IFwiTWFnZW50bzJcIiAsIC8vIEl0cyBtYWdlbnRvIDIgLCAyIGlzIHRoZSByb290IHZlcnNpb24gKG1lYW5zIHNlY29uZCB2ZXJzaW9uIG9mIG1hZ2VudG8pLFxuICBTQUxFU0ZPUkNFX09TVSA9IFwiU2FsZXNmb3JjZU9TVVwiXG59XG5cbmV4cG9ydCBlbnVtIFBST01PVElPTl9MRVZFTFxue1xuICBMSU5FPVwiTElORVwiLFxuICBUUkFOU0FDVElPTj1cIlRSQU5TQUNUSU9OXCJcbn1cblxuZXhwb3J0IGVudW0gUFJPTU9USU9OX1RZUEVcbntcbiAgQ09VUE9OPVwiQ09VUE9OXCJcbn1cblxuIl19
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwcGVyLWxpYnJhcnkubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9tYXBwZXItbGlicmFyeS9zcmMvbGliL21hcHBlci1saWJyYXJ5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBTixJQUFZLGdCQU9YO0FBUEQsV0FBWSxnQkFBZ0I7SUFDMUIsaUNBQWEsQ0FBQTtJQUNiLHFDQUFpQixDQUFBO0lBQ2pCLCtDQUEyQixDQUFBO0lBQzNCLG1EQUErQixDQUFBO0lBQy9CLGlDQUFhLENBQUE7SUFDYiwrQ0FBMkIsQ0FBQTtBQUM3QixDQUFDLEVBUFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQU8zQjtBQVNELE1BQU0sQ0FBTixJQUFZLGdCQUtYO0FBTEQsV0FBWSxnQkFBZ0I7SUFDMUIsK0RBQVksQ0FBQTtJQUNaLGlFQUFhLENBQUE7SUFDYixtRkFBc0IsQ0FBQTtJQUN0Qix5RUFBaUIsQ0FBQTtBQUNuQixDQUFDLEVBTFcsZ0JBQWdCLEtBQWhCLGdCQUFnQixRQUszQjtBQWdqQkQsTUFBTSxDQUFOLElBQVksWUFHWDtBQUhELFdBQVksWUFBWTtJQUN0QixtQ0FBbUIsQ0FBQTtJQUNuQixpQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBSFcsWUFBWSxLQUFaLFlBQVksUUFHdkI7QUFvQkQsTUFBTSxDQUFOLElBQVksaUJBRVg7QUFGRCxXQUFZLGlCQUFpQjtJQUMzQix3Q0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBRlcsaUJBQWlCLEtBQWpCLGlCQUFpQixRQUU1QjtBQWlMRCxNQUFNLENBQU4sSUFBWSxTQU1YO0FBTkQsV0FBWSxTQUFTO0lBQ25CLHNDQUF5QixDQUFBO0lBQ3pCLGdDQUFtQixDQUFBO0lBQ25CLGtDQUFxQixDQUFBO0lBQ3JCLDZDQUFnQyxDQUFBO0lBQ2hDLDZDQUFnQyxDQUFBO0FBQ2xDLENBQUMsRUFOVyxTQUFTLEtBQVQsU0FBUyxRQU1wQjtBQUVELE1BQU0sQ0FBTixJQUFZLGVBSVg7QUFKRCxXQUFZLGVBQWU7SUFFekIsZ0NBQVcsQ0FBQTtJQUNYLDhDQUF5QixDQUFBO0FBQzNCLENBQUMsRUFKVyxlQUFlLEtBQWYsZUFBZSxRQUkxQjtBQUVELE1BQU0sQ0FBTixJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFFeEIsbUNBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsY0FBYyxLQUFkLGNBQWMsUUFHekIiLCJzb3VyY2VzQ29udGVudCI6WyJcblxuZXhwb3J0IGVudW0gVFJBTlNBQ1RJT05fVFlQRSB7XG4gIFNBTEUgPSBcIlNBTEVcIixcbiAgUkVGVU5EID0gXCJSRUZVTkRcIixcbiAgU0FMRV9SRUZVTkQgPSBcIlNBTEVfUkVGVU5EXCIsXG4gIFNBTEVfRVhDSEFOR0UgPSBcIlNBTEVfRVhDSEFOR0VcIixcbiAgVk9JRCA9IFwiVk9JRFwiLFxuICBXRUJfUkVUVVJOUyA9IFwiV0VCX1JFVFVSTlNcIlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1EaXNjb3VudCB7XG4gIHRybkRpc2NvdW50c1BvcnRpb246IG51bWJlcjtcbiAgdHJuUHJvbW90aW9uc1BvcnRpb246IG51bWJlcjtcbiAgcmVmdW5kUG9ydGlvbjogbnVtYmVyO1xuICBjdXJyZW50UmVmdW5kUG9ydGlvbj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGVudW0gREVMSVZFUllfTUVUSE9EUyB7XG4gIERFTElWRVJZID0gMSxcbiAgRFJPUF9TSElQID0gMixcbiAgQ09MTEVDVF9GUk9NX1NUT1JFID0gMyxcbiAgU0hJUF9UT19TVE9SRSA9IDRcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0Q2hhbmdlIHtcbiAgaXRlbUxpbmVJZD86IG51bWJlcjtcbiAgU0tVOiBzdHJpbmc7XG4gIHF1YW50aXR5OiBudW1iZXI7XG4gIHNlbGVjdGVkUHJpY2U/OiBudW1iZXI7XG4gIGxpbmVEaXNjb3VudD86IExpbmVEaXNjb3VudDtcbiAgbGluZVByb21vdGlvbnM/OiBMaW5lUHJvbW90aW9ucztcbiAgZXhjaGFuZ2U/OiBFeGNoYW5nZTtcbiAgcmVmdW5kZWRRdWFudGl0eT86IG51bWJlcjsgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250YWlucyBxdWFudGl0eSBvZiBib3RoIGZ1bGwgcHJpY2VkIGFuZCBwcm9tb3Rpb25hbCBxdWFudGl0aWVzXG4gIHJlZnVuZFByb21vdGlvbmFsUXVhbnRpdHk/OiBudW1iZXI7ICAgICAgICAgICAgICAgLy8gcHJvbW90aW9uYWwgcXVhbnRpdHlcbiAgcmVmdW5kZWQ/OiBib29sZWFuO1xuICByZWZ1bmRlZFRvdGFsPzogbnVtYmVyO1xuICByZWZ1bmRlZFJlYXNvbj86IHN0cmluZztcbiAgcmVmdW5kZWRSZWFzb25EZXNjcmlwdGlvbj86IHN0cmluZztcbiAgaXNDaGVja2VkPzogYm9vbGVhbjtcbiAgc2VhbGVkPzogYm9vbGVhbjtcbiAgaXNMYXN0RXhjaGFuZ2VkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm9kdWN0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdCBleHRlbmRzIFByb2R1Y3RDaGFuZ2Uge1xuICBpdGVtTGluZUlkPzogbnVtYmVyO1xuICBzdGF0dXM6IG51bWJlcjtcbiAgc3ViR3JvdXA6IG51bWJlcjtcbiAgYnJhbmQ6IHN0cmluZztcbiAgY3VycmVuY3k6IHN0cmluZztcbiAgY2F0ZWdvcnk6IHN0cmluZztcbiAgY291bnRyeW9mT3JpZ2luOiBzdHJpbmc7XG4gIHByb2R1Y3RJZDogc3RyaW5nO1xuICBwcm9kdWN0VHlwZTogbnVtYmVyO1xuICBuYW1lPzogc3RyaW5nO1xuICBpbWFnZVVybHM6IFtzdHJpbmddO1xuICBpc0ltYWdlRmFpbFRvTG9hZD86IGJvb2xlYW47XG4gIHNpemU6IHN0cmluZztcbiAgdHlwZTogc3RyaW5nO1xuICBzZWFzb246IG51bWJlcjtcbiAgcHJvZHVjdEdyb3VwOiBudW1iZXI7XG4gIHN0eWxlQ29kZTogc3RyaW5nO1xuICBub2RlU3RydWN0dXJlOiBOb2RlU3RydWN0dXJlW107XG4gIGJhcmNvZGU6IHN0cmluZztcbiAgcHJpY2U6IFByaWNlW107XG4gIGNvbG91cjogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICB0b3RhbExpbmVQcmljZTogbnVtYmVyO1xuICB0b3RhbDogbnVtYmVyO1xuICBhZGRlZEluQmFza2V0PzogYm9vbGVhbjtcbiAgc2VsZWN0ZWRWQVQ/OiBudW1iZXI7XG4gIHNlbGVjdGVkVkFUQ29kZT86IHN0cmluZztcbiAgc2VsZWN0ZWRSUlBQcmljZT86IG51bWJlcjtcbiAgbGluZURpc2NvdW50PzogTGluZURpc2NvdW50O1xuICBleGNoYW5nZT86IEV4Y2hhbmdlO1xuICAvLyByZWZ1bmRlZFF1YW50aXR5PzogbnVtYmVyO1xuICAvLyByZWZ1bmRlZD86IGJvb2xlYW47XG4gIC8vIHJlZnVuZGVkVG90YWw/OiBudW1iZXI7XG4gIC8vIHJlZnVuZGVkUmVhc29uRGVzY3JpcHRpb24/OnN0cmluZztcbiAgLy8gaXNDaGVja2VkPzpib29sZWFuO1xuICByZWZ1bmRQcm9tb3Rpb25hbFF1YW50aXR5PzogbnVtYmVyOyAgICAgICAgICAgICAgIC8vIHByb21vdGlvbmFsIHF1YW50aXR5XG4gIGV4Y2hhbmdlUmVhc29uPzogc3RyaW5nO1xuICBleGNoYW5nZVF1YW50aXR5PzogbnVtYmVyO1xuICBpdGVtRGlzY291bnRzOiBJdGVtRGlzY291bnQ7XG5cbiAgZ2lmdENhcmROdW1iZXJJc3N1ZWQ/OiBzdHJpbmc7XG4gIGdpZnRDYXJkQW1vdW50PzogbnVtYmVyO1xuICBnaWZ0Q2FyZFJlY2lwaWVudEVtYWlsPzogc3RyaW5nO1xuICBnaWZ0Q2FyZEV4cGlyeURhdGU/OiBzdHJpbmc7XG4gIGdpZnRDYXJkUmVjaXBpZW50TmFtZT86IHN0cmluZztcbiAgZ2lmdENhcmQ/OiBib29sZWFuO1xuXG4gIGRpc2NvdW50YWJsZTogYm9vbGVhbjtcbiAgLy8gc2VhbGVkPzpib29sZWFuO1xuICBleGNsdWRlUHJvbW90aW9uOiBib29sZWFuO1xuICBjYXRlZ29yaWVzOiBDYXRlZ29yaWVzW107XG4gIGRlc2NyaXB0aW9uczogRGVzY3JpcHRpb25zW107XG4gIGJhcmNvZGVzOiBzdHJpbmdbXTtcblxuICAvL05ldyBGZWlsZHNcbiAgZXh0ZXJuYWxJZDogc3RyaW5nO1xuICBjcmVhdGVkRGF0ZTogc3RyaW5nO1xuICB1cGRhdGVkRGF0ZTogc3RyaW5nO1xuICBjcmVhdGVkQnk6IHN0cmluZztcbiAgdXBkYXRlZEJ5OiBzdHJpbmc7XG4gIGF0dHJpYnV0ZXM6IENvcmVBdHRyaWJ1dGVbXTtcbiAgaWQ6IHN0cmluZztcbiAgbG9uZ19kZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIC8vIE1peGVkIFNhbGVzIGZpZWxkc1xuICBpc1dlYk9yZGVyPzogYm9vbGVhbixcbiAgZnVsbGZpbG1lbnRJZDogc3RyaW5nLFxuICBmdWxsZmlsbWVudExvY2F0aW9uTmFtZT86IHN0cmluZyxcbiAgZGVsaXZlcnlNZXRob2Q/OiBzdHJpbmcsXG4gIGRlbGl2ZXJ5R3JvdXA/OiBzdHJpbmcsXG4gIHNlbGVjdGVkSW52ZW50b3J5PzogSW52ZW50b3J5SW5mbztcbiAgbGVhZFRpbWU/OiBsZWFkVGltZTtcblxuICAvL25ldyBvbmUgZm9yIG9zdSBwcm92aWRlclxuICBhdmFpbGFibGVRdWFudGl0eT86IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgbGVhZFRpbWUge1xuICB0eXBlOiBzdHJpbmcsXG4gIHZhbHVlOiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeGNoYW5nZSB7XG4gIGV4Y2hhbmdlSWQ6IG51bWJlcixcbiAgbGluZUl0ZW1JZDogbnVtYmVyLFxuICByZWFzb246IHN0cmluZyxcbiAgcXVhbnRpdHk6IG51bWJlcixcbiAgbmV3SXRlbXM6IFByb2R1Y3RbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDYXRlZ29yaWVzIHtcbiAgaWQ6IHN0cmluZztcbiAgcGFyZW50SWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBjYXRlZ29yeUlkOiBzdHJpbmc7XG4gIHN0YXR1czogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZXNjcmlwdGlvbnMge1xuICBuYW1lOiBzdHJpbmc7XG4gIGNvdW50cnlDb2RlOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29yZUF0dHJpYnV0ZSB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgc2VhcmNoYWJsZTogYm9vbGVhbjtcbiAgY291bnRyeUNvZGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBCYXNrZXRcbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2tldCB7XG4gIHN1YnNpZGlhcnlJZD86IHN0cmluZztcbiAgcHJvZHVjdHM6IFByb2R1Y3RbXTtcbiAgdHJhbnNhY3Rpb25EaXNjb3VudDogYW55W107XG4gIHF1YW50aXR5OiBudW1iZXI7XG4gIHRvdGFsOiBudW1iZXI7XG4gIHNhbGVUb3RhbDogbnVtYmVyO1xuICBkaXNjb3VudFRvdGFsPzogbnVtYmVyO1xuICB0cmFuc2FjdGlvbklkPzogc3RyaW5nO1xuICBvZmZsaW5lVHJhbnNhY3Rpb25JZD86IHN0cmluZztcbiAgYmFzZUN1cnJlbmN5OiBzdHJpbmc7XG4gIGJhc2tldFRvdGFsPzogbnVtYmVyO1xuICByZWZ1bmRUb3RhbD86IG51bWJlcjtcbiAgdHJhbnNhY3Rpb25Qcm9tb3Rpb24/OiBUcmFuc2FjdGlvblByb21vdGlvbltdO1xuICBjdXN0b21lcj86IGFueTtcbiAgZXhjaGFuZ2U/OiBFeGNoYW5nZVtdO1xuICBpblN0b3JlRmxhZz86IGJvb2xlYW5cbn1cblxuXG5cbi8qKlxuICogUHJpY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcmljZSB7XG4gIFZBVDogbnVtYmVyO1xuICBWQVRDb2RlOiBzdHJpbmc7XG4gIHNhbGVzUHJpY2U6IG51bWJlcjtcbiAgY3VycmVuY3lDb2RlOiBzdHJpbmc7XG4gIFJSUFByaWNlOiBudW1iZXI7XG59XG5cbi8qKlxuICogTm9kZSBzdHJ1Y3R1cmVcbiAqL1xuaW50ZXJmYWNlIE5vZGVTdHJ1Y3R1cmUge1xuICBzdGF0dXM6IGJvb2xlYW47XG4gIG5hbWU6IHN0cmluZztcbiAgbm9kZVR5cGU6IHN0cmluZztcbiAgaXNPdmVycmlkZTogYm9vbGVhbjtcbiAgbm9kZUlkOiBzdHJpbmc7XG4gIHBhcmVudElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogTGluZSBEaXNjb3VudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpbmVEaXNjb3VudCB7XG4gIGl0ZW1MaW5lSWQ6IHN0cmluZyxcbiAgZGlzY291bnRBbW91bnQ6IG51bWJlcixcbiAgZGlzY291bnRUeXBlOiBzdHJpbmcsXG4gIC8vIHJlYXNvbkNvZGU6IHN0cmluZyxcbiAgbmFtZT86IHN0cmluZyxcbiAgdW5pdFByaWNlOiBudW1iZXIsXG4gIGRpc2NvdW50ZWRMaW5lUHJpY2U/OiBudW1iZXIsXG4gIHByaWNlTWFuYWdlck92ZXJyaWRlPzogVXNlck92ZXJyaWRlLFxuICBwcmljZU92ZXJyaWRlUmVhc29uQ29kZT86IHN0cmluZyxcbiAgcHJpY2VPdmVycmlkZVJlYXNvbk5hbWU/OiBzdHJpbmcsXG4gIHByaWNlT3ZlcnJpZGVBbW91bnQ/OiBudW1iZXIsXG4gIHBlcmNlbnRhZ2VEaXNjb3VudE1hbmFnZXJPdmVycmlkZT86IFVzZXJPdmVycmlkZSxcbiAgcGVyY2VudGFnZURpc2NvdW50UmVhc29uQ29kZT86IHN0cmluZyxcbiAgcGVyY2VudGFnZURpc2NvdW50UmVhc29uTmFtZT86IHN0cmluZyxcbiAgcGVyY2VudGFnZURpc2NvdW50VmFsdWU/OiBudW1iZXJcbn1cblxuLyoqXG4gKiBVc2VyIE92ZXJyaWRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXNlck92ZXJyaWRlIHtcbiAgdXNlcklkOiBzdHJpbmcsXG4gIGF1dG9tYXRpY0FwcHJvdmU6IHN0cmluZyxcbiAgb3JpZ2luYWxVc2VySWQ6IHN0cmluZ1xufVxuXG4vKipcbiogbGluZSBQcm9tb3Rpb25zXG4qL1xuZXhwb3J0IGludGVyZmFjZSBMaW5lUHJvbW90aW9ucyB7XG5cbiAgdHJpZ2dlcjogVHJpZ2dlcltdLFxuICBpdGVtTGluZUlkOiBudW1iZXIsXG4gIHByb21vdGlvbklkOiBzdHJpbmcsXG4gIGRpc3BsYXlUZXh0OiBzdHJpbmcsXG4gIHByb21vdGlvblR5cGU6IHN0cmluZyxcbiAgcHJvbW90aW9uQW1vdW50OiBudW1iZXIsXG4gIG5hbWU6IHN0cmluZyxcbiAgcHJvbW90aW9uSW5mbzogc3RyaW5nLFxuICBwcm9tb3Rpb25MaW5lUHJpY2U6IG51bWJlclxuICByZWZ1bmRlZD86IGJvb2xlYW47XG59XG5cbi8qKlxuKiB0cmlnZ2VyXG4qL1xuZXhwb3J0IGludGVyZmFjZSBUcmlnZ2VyIHtcbiAgaXRlbUxpbmVJZDogc3RyaW5nO1xuICBxdWFudGl0eT86IG51bWJlcjtcbiAgdG90YWxRdWFudGl0eT86IG51bWJlcjtcbiAgbGluZVByb21vdGlvbkFtb3VudD86bnVtYmVyOyAgIC8vIHByb21vdGlvbiBhbW91bnQgYXBwbGllZCBhY2Nyb3NzIHRoZSBsaW5lXG4gIHByb21vdGlvbkFtb3VudD86bnVtYmVyOyAgIC8vIHByb21vdGlvbiBhbW91bnQgYXBwbGllZCBvbiAxIHVuaXRcbiAgcmVmdW5kZWRSZWFzb24/OiBzdHJpbmc7XG4gIHJlZnVuZGVkUmVhc29uRGVzY3JpcHRpb24/OnN0cmluZztcbiAgcHJvbW90aW9uSWQ/OnN0cmluZztcbn1cblxuLyoqXG4qIFRyYW5zYWN0aW9uIFByb21vdGlvblxuKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25Qcm9tb3Rpb24ge1xuICBkaXNwbGF5VGV4dDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIHByb21vdGlvbkFtb3VudDogbnVtYmVyO1xuICBwcm9tb3Rpb25JZDogc3RyaW5nO1xuICBwcm9tb3Rpb25JbmZvOiBzdHJpbmc7XG4gIHByb21vdGlvblR5cGU6IHN0cmluZztcbiAgaXRlbUxpbmVJZHM6IG51bWJlcltdO1xuICB0eXBlPzpzdHJpbmc7XG4gIHN1YkxldmVsVHlwZT86UFJPTU9USU9OX0xFVkVMXG4gIHRyaWdnZXI/OlRyaWdnZXJbXTtcbiAgY291cG9uQ29kZT86c3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZnVuZFByb2R1Y3RDaGFuZ2Uge1xuICBpdGVtTGluZUlkPzogbnVtYmVyO1xuICByZWZ1bmRlZFF1YW50aXR5PzogbnVtYmVyO1xuICByZWZ1bmRlZFByb21vdGlvbmFsUXVhbnRpdHk/OiBudW1iZXI7XG4gIHJlZnVuZFRvdGFsPzogbnVtYmVyO1xuICByZWZ1bmRlZFJlYXNvbj86IHN0cmluZztcbiAgcmVmdW5kZWRSZWFzb25EZXNjcmlwdGlvbj86IHN0cmluZztcbiAgcmVmdW5kV2l0aFByb21vdGlvbjogYm9vbGVhbjtcbiAgaXNMYXN0RXhjaGFuZ2VkPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnZlbnRvcnlJbmZvIHtcbiAgc3RvcmVOYW1lOiBzdHJpbmcsXG4gIHN0b3JlSWQ6IHN0cmluZyxcbiAgcXVhbnRpdHlBdmFpbGFibGU6IG51bWJlcixcbiAgcXVhbnRpdHlSZXF1aXJlZDogbnVtYmVyXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW52ZW50b3J5UmVxdWVzdEluZm8gZXh0ZW5kcyBJbnZlbnRvcnlJbmZvIHtcbiAgcmVxdWVzdGVkUXVhbnRpdHk6IG51bWJlcixcbiAgcmVxdWVzdGVkQWN0aW9uOiBERUxJVkVSWV9NRVRIT0RTXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVsaXZlcnlJbmZvIHtcbiAgZ3JvdXBzOiBEZWxpdmVyeUdyb3VwSW5mb1tdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVsaXZlcnlHcm91cEluZm8ge1xuICBncm91cE51bWJlcjogbnVtYmVyO1xuICBpdGVtczogUHJvZHVjdFtdO1xuICBlc3RpbWF0ZT86IEVzdGltYXRlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVzdGltYXRlIHtcbiAgdHlwZTogc3RyaW5nLFxuICB2YWx1ZTogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25Eb2N1bWVudCB7XG4gIHRyYW5zYWN0aW9uSWQ/OiBzdHJpbmc7XG4gIHN1YnNpZGlhcnlJZD86IHN0cmluZztcbiAgb2ZmbGluZVRyYW5zYWN0aW9uSWQ/OnN0cmluZztcbiAgdHJhbnNhY3Rpb25SZWY/OiBzdHJpbmc7XG4gIGRhdGVUaW1lPzogc3RyaW5nO1xuICBvcmdDb2RlOiBzdHJpbmc7XG4gIHN0b3JlSWQ6IHN0cmluZztcbiAgc3RvcmVOb2RlSWQ6c3RyaW5nO1xuICBzdG9yZU5vZGVTdHJ1Y3R1cmU6c3RyaW5nO1xuICBkZXZpY2VJZDogc3RyaW5nO1xuICB0ZXJtaW5hbElkOnN0cmluZztcbiAgaW5pdGlhdGluZ01vZHVsZSA6c3RyaW5nO1xuICBleHBvcnQ6Ym9vbGVhbjtcbiAgdXNlcklkPzogc3RyaW5nO1xuICB1c2VyTmFtZT86c3RyaW5nO1xuICBjdXN0b21lcj86IEN1c3RvbWVyO1xuICBiYXNrZXQ6IGFueTtcbiAgYmFza2V0U3VtbWFyeTogQmFza2V0U3VtbWFyeTtcbiAgLy8gbGluZURpc2NvdW50OiBMaW5lRGlzY291bnRbXTtcbiAgYmFzZUN1cnJlbmN5OiBzdHJpbmc7XG4gIHNwbGl0UGF5bWVudD86Ym9vbGVhbjtcbiAgaXNQYXltZW50Q29tcGxldGVkPzpib29sZWFuO1xuICBwYXltZW50RGV0YWlscz86IGFueTtcbiAgdHlwZT86IHN0cmluZztcbiAgb3BlcmF0aW9uU3RhdHVzPzogc3RyaW5nO1xuICBjcmVhdGVkQXQ/OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdD86IHN0cmluZztcbiAgdHJhbnNDb21wbGV0ZWRBdD86IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG4gIHNhbGVUb3RhbD86IG51bWJlcjtcbiAgcmVhc29uQ29kZT86IHN0cmluZztcbiAgcmVhc29uRGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIG92ZXJyaWRlPzogVXNlck92ZXJyaWRlO1xuICBvcmlnaW5hbFRyYW5zSWQ/OnN0cmluZztcbiAgb3JpZ2luYWxFeHRlcm5hbElkPzogc3RyaW5nO1xuICBhcGlSZXNwb25zZT86IEFQSVJlc3BvbnNlOyAgICAvLyBUT0RPIGFkZCBoYW5kbGVyIGFzIHBlciBleHBvcnQgcHJvdmlkZXJcbiAgdW5yZWZlcmVuY2VkUmVmdW5kPzpib29sZWFuO1xuICBnaWZ0ZWRSZWNlaXB0Pzpib29sZWFuO1xuICBjdXJyZW50VHJhbnNhY3Rpb25EZXRhaWxzPzphbnk7XG4gIGlzQ2hlY2tlZD86Ym9vbGVhbjtcbiAgZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHM/OiBleHRlcm5hbFRyYW5zYWN0aW9uRGV0YWlsc1tdO1xuICByZWZ1bmRSZXF1ZXN0PzogYW55W107XG4gIGlzSW5TdG9yZU9yZGVyPzogYm9vbGVhbjsgXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVBJUmVzcG9uc2VcbntcbiAgaW50ZXJuYWxJZD86bnVtYmVyO1xuICB0cmFuaWQ/OnN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEN1cnJlbnRUcmFuc2FjdGlvbkRldGFpbHN7XG4gIHByb2R1Y3RzOiBQcm9kdWN0W107XG4gIGxpbmVEaXNjb3VudD86TGluZURpc2NvdW50W107XG4gIGxpbmVQcm9tb3Rpb24/OkxpbmVQcm9tb3Rpb25zW107XG4gIHRyYW5zYWN0aW9uUHJvbW90aW9uPzpUcmFuc2FjdGlvblByb21vdGlvbltdO1xuICB0cmFuc2FjdGlvbkRpc2NvdW50PzpUcmFuc2FjdGlvbkRpc2NvdW50W107XG4gIGJhc2tldFN1bW1hcnk/OkJhc2tldFN1bW1hcnk7ICBcbiAgdGF4QnJlYWtkb3duPzpUYXhCcmVha2Rvd247ICBcbiAgdG90YWxUYXhTdW1tYXJ5PzpUb3RhbFRheFN1bW1hcnlbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQmFza2V0U3VtbWFyeSB7XG4gIHRvdGFsSXRlbXM/OiBudW1iZXI7XG4gIHNhbGVUb3RhbD86IG51bWJlcjtcbiAgVkFUVG90YWw/OiBudW1iZXI7XG4gIGRpc2NvdW50VG90YWw/OiBudW1iZXI7XG4gIGJhc2tldFRvdGFsPzogbnVtYmVyO1xuICByZWZ1bmRUb3RhbD86bnVtYmVyO1xuICBzaGlwcGluZ1RvdGFsPzogbnVtYmVyO1xuICBiYXNrZXRUb3RhbFdpdGhTaGlwcGluZ1RvdGFsPzogbnVtYmVyO1xuICBpblN0b3JlPzogQmFza2V0U3VtbWFyeURldGFpbHM7XG4gIHdlYk9yZGVyPzogQmFza2V0U3VtbWFyeURldGFpbHM7XG4gIGNuYz86IEJhc2tldFN1bW1hcnlEZXRhaWxzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2tldFN1bW1hcnlEZXRhaWxzIHtcbiAgdG90YWxJdGVtcz86IG51bWJlcjtcbiAgc2FsZVRvdGFsPzogbnVtYmVyO1xuICBWQVRUb3RhbD86IG51bWJlcjtcbiAgZGlzY291bnRUb3RhbD86IG51bWJlcjtcbiAgYmFza2V0VG90YWw/OiBudW1iZXI7XG4gIHJlZnVuZFRvdGFsPzpudW1iZXI7XG4gIHNoaXBwaW5nVG90YWw/OiBudW1iZXI7XG4gIGJhc2tldFRvdGFsV2l0aFNoaXBwaW5nVG90YWw/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25EaXNjb3VudHtcbiAgZGlzY291bnRBbW91bnQ6bnVtYmVyO1xuICBkaXNjb3VudFR5cGU6U3RyaW5nO1xuICByZWFzb25Db2RlOnN0cmluZztcbiAgb3ZlcnJpZGU/OiBVc2VyT3ZlcnJpZGU7XG4gIGl0ZW1MaW5lSWRzPzpudW1iZXJbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUQmFza2V0IHtcbiAgcHJvZHVjdHM6IFRQcm9kdWN0W107XG4gIGxpbmVEaXNjb3VudDpMaW5lRGlzY291bnRbXTtcbiAgZXhjaGFuZ2U6RXhjaGFuZ2VbXTtcbiAgbGluZVByb21vdGlvbjpMaW5lUHJvbW90aW9uc1tdO1xuICB0cmFuc2FjdGlvblByb21vdGlvbj86VHJhbnNhY3Rpb25Qcm9tb3Rpb25bXTtcbiAgdHJhbnNhY3Rpb25EaXNjb3VudD86VHJhbnNhY3Rpb25EaXNjb3VudFtdO1xuICB0YXhCcmVha2Rvd24/OlRheEJyZWFrZG93bjtcbiAgdG90YWxUYXhTdW1tYXJ5PzpUb3RhbFRheFN1bW1hcnlbXTtcblxuICBcbn1cblxuZXhwb3J0IGludGVyZmFjZSBURXhjaGFuZ2V7XG4gIGV4Y2hhbmdlSWQ/Om51bWJlcixcbiAgbGluZUl0ZW1JZD86IG51bWJlcixcbiAgcmVhc29uPzogc3RyaW5nLFxuICBxdWFudGl0eT86IG51bWJlcixcbiAgbmV3SXRlbXM/OlROZXdJdGVtc1tdO1xuICB9XG4gIFxuICBleHBvcnQgaW50ZXJmYWNlIFROZXdJdGVtc3tcbiAgbGluZUl0ZW1JZDpudW1iZXIsXG4gICBRdWFudGl0eTpudW1iZXJcbiAgfVxuXG5leHBvcnQgaW50ZXJmYWNlIFRQcm9kdWN0IHtcbiAgaXRlbUxpbmVJZDogc3RyaW5nO1xuICBTS1U6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgaW1hZ2VVcmxzOiBbc3RyaW5nXTtcbiAgcHJpY2U6IG51bWJlcjtcbiAgdGF4Q29kZT86IHN0cmluZztcbiAgdGF4UGVyY2VudD86IHN0cmluZztcbiAgcXVhbnRpdHk6IG51bWJlcjtcbiAgcmVmdW5kZWRRdWFudGl0eT86IG51bWJlcjtcbiAgcmVmdW5kZWRQcm9tb3Rpb25hbFF1YW50aXR5PzpudW1iZXI7XG4gIHJlZnVuZGVkPzogYm9vbGVhbjtcbiAgcmVmdW5kZWRUb3RhbD86IG51bWJlcjtcbiAgcmVmdW5kZWRSZWFzb24/OnN0cmluZztcbiAgcmVmdW5kZWRSZWFzb25EZXNjcmlwdGlvbj86c3RyaW5nO1xuICBzZWxlY3RlZFJSUFByaWNlPzogbnVtYmVyO1xuICB0b3RhbExpbmVQcmljZTogbnVtYmVyO1xuICBiYXJDb2RlPzogc3RyaW5nO1xuICBiYXJjb2Rlcz86IHN0cmluZ1tdO1xuICBmbGFnZ2VkPzogYm9vbGVhbjtcbiAgZXhjaGFuZ2U/OkV4Y2hhbmdlO1xuICBleGNsdWRlUHJvbW90aW9uOmJvb2xlYW47XG4gIGRpc2NvdW50YWJsZT86Ym9vbGVhbjtcblxuICBpdGVtRGlzY291bnRzPzpJdGVtRGlzY291bnRzO1xuICBpc0xhc3RFeGNoYW5nZWQ/OiBib29sZWFuO1xuXG4gIC8vIE1peGVkIFNhbGVzIGZpZWxkc1xuICBmdWxsZmlsbWVudElkOnN0cmluZyxcbiAgZnVsbGZpbG1lbnRMb2NhdGlvbk5hbWU6c3RyaW5nLFxuICBkZWxpdmVyeU1ldGhvZD86c3RyaW5nLFxuICBkZWxpdmVyeUdyb3VwPzpzdHJpbmcsXG4gIGdpZnRDYXJkTnVtYmVySXNzdWVkPzogc3RyaW5nLFxuICBnaWZ0Q2FyZEFtb3VudD86IG51bWJlcixcbiAgZ2lmdENhcmRSZWNpcGllbnRFbWFpbD86IHN0cmluZyxcbiAgZ2lmdENhcmRFeHBpcnlEYXRlPzogc3RyaW5nICxcbiAgZ2lmdENhcmRSZWNpcGllbnROYW1lPzogc3RyaW5nLFxuICBnaWZ0Q2FyZD86Ym9vbGVhbixcbiAgY3VycmVuY3k/OnN0cmluZyxcbiAgaXNXZWJPcmRlcj86Ym9vbGVhbixcbiAgbGVhZFRpbWU/OiBsZWFkVGltZVxuICBcbiAgLy8gY3VycmVudHRyYW5zYWN0aW9uIGRvYyBjaGFuZ2VzXG4gIGxpbmVEaXNjb3VudD86YW55XG5cbiAgYXR0cmlidXRlcz86Q29yZUF0dHJpYnV0ZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEl0ZW1EaXNjb3VudHN7XG4gIHRybkRpc2NvdW50c1BvcnRpb246bnVtYmVyO1xuICB0cm5Qcm9tb3Rpb25zUG9ydGlvbjpudW1iZXI7XG4gIHJlZnVuZFBvcnRpb246bnVtYmVyO1xufVxuXG5cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21lciB7XG4gIGlkOiBzdHJpbmc7XG4gIGN1c3RvbWVySWQ/OiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBmaXJzdE5hbWU6IHN0cmluZztcbiAgbGFzdE5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgcG9zdENvZGU6IHN0cmluZztcbiAgdGVsZXBob25lPzogc3RyaW5nO1xuICBiaWxsaW5nQWRkcmVzcz86IEFkZHJlc3MgfCBBZGRyZXNzW10gfCBhbnk7XG4gIHNoaXBwaW5nQWRkcmVzcz86IEFkZHJlc3MgfCBBZGRyZXNzW10gfCBhbnk7XG4gIHNoaXBtZW50RGV0YWlscz86IFNoaXBtZW50RGV0YWlsc1tdO1xuICBhZGRyZXNzRGV0YWlsPzogc3RyaW5nO1xuICBub0N1c3RvbWVyU2VsZWN0ZWQ/OiBib29sZWFuO1xuICBleHRlcm5hbElkPzogc3RyaW5nOyBcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRyZXNzIFxue1xuICBpZD86IHN0cmluZztcbiAgY291bnRyeUNvZGU/OiBzdHJpbmc7XG4gIGFkZHJlc3MxPzogc3RyaW5nO1xuICBhZGRyZXNzMj86IHN0cmluZztcbiAgYWRkcmVzczM/OiBzdHJpbmc7XG4gIGNpdHk/OiBzdHJpbmc7XG4gIGNvdW50eT86IHN0cmluZztcbiAgcG9zdENvZGU/OiBzdHJpbmc7XG4gIGNvdW50cnk/OiBzdHJpbmc7XG4gfVxuXG4gZXhwb3J0IGludGVyZmFjZSBTaGlwbWVudERldGFpbHMge1xuICBpZD86IHN0cmluZyxcbiAgZGVsaXZlcnlHcm91cD86IHN0cmluZyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYXltZW50RGV0YWlscyB7XG4gIGNhcmROdW1iZXI/OiBhbnk7XG4gIHNxTm8/Om51bWJlcjtcbiAgcmVzdWx0Pzogc3RyaW5nO1xuICBjdXJyZW5jeTogc3RyaW5nO1xuICBhbW91bnQ6IHN0cmluZztcbiAgYXV0aGNvZGU/OiBzdHJpbmc7XG4gIHBhbj86IHN0cmluZztcbiAgY2FyZFR5cGU/OiBzdHJpbmc7XG4gIHRyYW5zYWN0aW9uRGF0ZT86IHN0cmluZztcbiAgbWlkPzogc3RyaW5nO1xuICB0aWQ/OiBzdHJpbmc7XG4gIGN2bT86IHN0cmluZztcbiAgaG9zdFJlZmVyZW5jZUlkPzogc3RyaW5nO1xuICBhaWQ/OiBzdHJpbmc7XG4gIHJlY2VpcHRObz86IHN0cmluZztcbiAgZXhwaXJ5ZGF0ZT86IHN0cmluZztcbiAgdHJhbnNhY3Rpb25SZWZlcmVuY2U6IHN0cmluZztcbiAgYXBwbGljYXRpb25WZXJzaW9uPzogc3RyaW5nO1xuICBlbnRyeU1ldGhvZD86c3RyaW5nO1xuICB0cmFuc2FjdGlvblR5cGU6c3RyaW5nO1xuICB0b3RhbGFtb3VudDpzdHJpbmc7XG4gIHBheW1lbnRUeXBlPzpzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGF4QnJlYWtkb3duXG57XG4gIHRheExpbmVzIDogVGF4TGluZVtdLFxuICB0b3RhbFRheGFibGVBbW91bnQ6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUb3RhbFRheFN1bW1hcnl7XG4gIFZBVENvZGU6c3RyaW5nLFxuICBWQVQgOiBudW1iZXI7XG4gIFByZVRheFN1bTogIG51bWJlclxuICBUYXhTdW06ICBudW1iZXJcbiAgVFhyYXRlU3VtOiBudW1iZXJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYXhMaW5lXG57XG4gICAgaXRlbUxpbmVJZDogbnVtYmVyLFxuICAgIHRheGFibGVBbW91bnQ6IG51bWJlcixcbiAgICB0YXhMaW5lVG90YWw6IG51bWJlcixcbiAgICBWQVQ6IG51bWJlcixcbiAgICBWQVRDb2RlIDogc3RyaW5nLFxuICAgIFByZVRheDogbnVtYmVyXG59XG5cbmV4cG9ydCBlbnVtIERJU0NPVU5UVFlQRSB7XG4gIFBFUkNFTlQgPSAnUGVyY2VudCcsXG4gIEFNT1VOVCA9ICdBTU9VTlQnXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25JbmZvIHtcbiAgc2hpcHBpbmdJZD86IHN0cmluZyxcbiAgZXh0ZXJuYWxTaGlwcGluZ0lkPzogc3RyaW5nLFxuICBpbnZvaWNlSWQ/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb3Vwb25zIHtcbiAgbmFtZT86IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgZXh0ZXJuYWxUcmFuc2FjdGlvbkRldGFpbHMge1xuICB1bmlxdWVJZD86IHN0cmluZyxcbiAgcHJvdmlkZXJUeXBlPzogc3RyaW5nLFxuICBkZXRhaWxzPzogVHJhbnNhY3Rpb25JbmZvLFxuICBjb3Vwb25zPzogQ291cG9uc1tdXG59XG5cbmV4cG9ydCBlbnVtIElOSVRJQVRJTkdfTU9EVUxFIHtcbiAgRUJBU0tFVCA9IFwiZUJhc2tldFwiXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgcGVuZGluZ01ldGhvZCB7XG4gIF90eXBlPzogc3RyaW5nO1xuICB0eXBlPzogc3RyaW5nO1xuICBtZXNzYWdlPzogc3RyaW5nO1xuICBwYXRoPzogc3RyaW5nO1xuICBkZXRhaWxzPzogU2hpcG1lbnRJZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGlwbWVudElkIHtcbiAgc2hpcG1lbnRJZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21lckFkZHJlc3Mge1xuICBfdHlwZT86IHN0cmluZztcbiAgZW1haWw/OiBzdHJpbmc7XG4gIGFkZHJlc3MxPzogc3RyaW5nO1xuICBjaXR5Pzogc3RyaW5nO1xuICBjb3VudHJ5X2NvZGU/OiBzdHJpbmc7XG4gIGZpcnN0X25hbWU/OiBzdHJpbmc7XG4gIGZ1bGxfbmFtZT86IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG4gIGxhc3RfbmFtZT86IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG4gIHNhbHV0YXRpb24/OiBzdHJpbmc7XG4gIGNfYXJlYT86IHN0cmluZztcbiAgY19lbWFpbD86IHN0cmluZztcbiAgY19waG9uZVdoYXRzQXBwPzogc3RyaW5nO1xuICBjX3N0clZhbHVlPzogc3RyaW5nO1xuICBwb3N0YWxfY29kZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDdXN0b21lckluZm8ge1xuICBfdHlwZT86IHN0cmluZztcbiAgY3VzdG9tZXJfaWQ/OiBzdHJpbmc7XG4gIGVtYWlsPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdyb3VwZWRUYXhJdGVtIHtcbiAgX3R5cGU/OiBzdHJpbmc7XG4gIHRheF9yYXRlPzogbnVtYmVyO1xuICB0YXhfdmFsdWU/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgYWRkaXRpb25hbE5vdGVzIHtcbiAgX3R5cGU/OiBzdHJpbmc7XG4gIGxpbms/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdEl0ZW0ge1xuICBfdHlwZT86IHN0cmluZztcbiAgYWRqdXN0ZWRfdGF4PzogbnVtYmVyO1xuICBiYXNlX3ByaWNlPzogbnVtYmVyO1xuICBib251c19wcm9kdWN0X2xpbmVfaXRlbT86IGJvb2xlYW47XG4gIGdpZnQ/OiBib29sZWFuO1xuICBpdGVtX2lkPzogc3RyaW5nO1xuICBpdGVtX3RleHQ/OiBzdHJpbmc7XG4gIHByaWNlPzogbnVtYmVyO1xuICBwcmljZV9hZGp1c3RtZW50cz86IFByaWNlQWRqdXN0bWVudFtdO1xuICBwcmljZV9hZnRlcl9pdGVtX2Rpc2NvdW50PzogbnVtYmVyO1xuICBwcmljZV9hZnRlcl9vcmRlcl9kaXNjb3VudD86IG51bWJlcjtcbiAgcHJvZHVjdF9pZD86IHN0cmluZztcbiAgcHJvZHVjdF9uYW1lPzogc3RyaW5nO1xuICBxdWFudGl0eT86IG51bWJlcjtcbiAgc2hpcG1lbnRfaWQ/OiBzdHJpbmc7XG4gIHRheD86IG51bWJlcjtcbiAgdGF4X2Jhc2lzPzogbnVtYmVyO1xuICB0YXhfY2xhc3NfaWQ/OiBzdHJpbmc7XG4gIHRheF9yYXRlPzogbnVtYmVyO1xuICBjX29zdU9iamVjdERhdGE/OnN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaGlwcGluZ01ldGhvZCB7XG4gIF90eXBlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgaWQ/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHByaWNlPzogbnVtYmVyO1xuICBjX2FwcHJvYWNoaW5nVGhyZXNob2xkTWVzc2FnZT86IHN0cmluZztcbiAgY19lc3RpbWF0ZWRBcnJpdmFsVGltZT86IHN0cmluZztcbiAgY19pc0VtYWlsPzogYm9vbGVhbjtcbiAgY19zdG9yZVBpY2t1cEVuYWJsZWQ/OiBib29sZWFuO1xuICBjX3RocmVzaG9sZFZhbHVlPzogbnVtYmVyO1xufSBcblxuZXhwb3J0IGludGVyZmFjZSBzaGlwbWVudCB7XG4gIF90eXBlPzogc3RyaW5nO1xuICBhZGp1c3RlZF9tZXJjaGFuZGl6ZV90b3RhbF90YXg/OiBudW1iZXI7XG4gIGFkanVzdGVkX3NoaXBwaW5nX3RvdGFsX3RheD86IG51bWJlcjtcbiAgZ2lmdD86IGJvb2xlYW47XG4gIG1lcmNoYW5kaXplX3RvdGFsX3RheD86IG51bWJlcjtcbiAgcHJvZHVjdF9zdWJfdG90YWw/OiBudW1iZXI7XG4gIHByb2R1Y3RfdG90YWw/OiBudW1iZXI7XG4gIHNoaXBtZW50X2lkPzogc3RyaW5nO1xuICBzaGlwbWVudF90b3RhbD86IG51bWJlcjtcbiAgc2hpcHBpbmdfYWRkcmVzcz86IEN1c3RvbWVyQWRkcmVzcztcbiAgc2hpcHBpbmdfbWV0aG9kPzogU2hpcHBpbmdNZXRob2Q7XG4gIHNoaXBwaW5nX3N0YXR1cz86IHN0cmluZztcbiAgc2hpcHBpbmdfdG90YWw/OiBudW1iZXI7XG4gIHNoaXBwaW5nX3RvdGFsX3RheD86IG51bWJlcjtcbiAgdGF4X3RvdGFsPzogbnVtYmVyO1xuICBjX2Zyb21TdG9yZUlkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNoaXBwaW5nSXRlbSB7XG4gIF90eXBlPzogc3RyaW5nO1xuICBhZGp1c3RlZF90YXg/OiBudW1iZXI7XG4gIGJhc2VfcHJpY2U/OiBudW1iZXI7XG4gIGl0ZW1faWQ/OiBzdHJpbmc7XG4gIGl0ZW1fdGV4dD86IHN0cmluZztcbiAgcHJpY2U/OiBudW1iZXI7XG4gIHByaWNlX2FmdGVyX2l0ZW1fZGlzY291bnQ/OiBudW1iZXI7XG4gIHNoaXBtZW50X2lkPzogc3RyaW5nO1xuICB0YXg/OiBudW1iZXI7XG4gIHRheF9iYXNpcz86IG51bWJlcjtcbiAgdGF4X2NsYXNzX2lkPzogc3RyaW5nO1xuICB0YXhfcmF0ZT86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBsaWVkRGlzY291bnQge1xuICBfdHlwZT86IHN0cmluZyxcbiAgYW1vdW50PzogbnVtYmVyLFxuICBwZXJjZW50YWdlPzogbnVtYmVyLFxuICB0eXBlPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpY2VBZGp1c3RtZW50IHtcbiAgX3R5cGU/OiBzdHJpbmcsXG4gIGFwcGxpZWRfZGlzY291bnQ/OiBBcHBsaWVkRGlzY291bnQsXG4gIGNvdXBvbl9jb2RlPzogc3RyaW5nLFxuICBjcmVhdGlvbl9kYXRlPzogc3RyaW5nLFxuICBjdXN0b20/OiBib29sZWFuLFxuICBpdGVtX3RleHQ/OiBzdHJpbmcsXG4gIGxhc3RfbW9kaWZpZWQ/OiBzdHJpbmcsXG4gIG1hbnVhbD86IGJvb2xlYW4sXG4gIHByaWNlPzogbnVtYmVyXG4gIHByaWNlX2FkanVzdG1lbnRfaWQ/OiBzdHJpbmcsXG4gIHByb21vdGlvbl9pZD86IHN0cmluZyxcbiAgcHJvbW90aW9uX2xpbms/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmRlckRldGFpbHMge1xuICBfdj86IHN0cmluZztcbiAgX3R5cGU/OiBzdHJpbmc7XG4gIF9yZXNvdXJjZV9zdGF0ZT86IHN0cmluZztcbiAgX2ZsYXNoPzogcGVuZGluZ01ldGhvZFtdO1xuICBhZGp1c3RlZF9tZXJjaGFuZGl6ZV90b3RhbF90YXg/OiBudW1iZXI7XG4gIGFkanVzdGVkX3NoaXBwaW5nX3RvdGFsX3RheD86IG51bWJlcjtcbiAgYWdlbnRfYmFza2V0PzogYm9vbGVhbjtcbiAgYmFza2V0X2lkPzogc3RyaW5nO1xuICBiaWxsaW5nX2FkZHJlc3M/OiBDdXN0b21lckFkZHJlc3M7XG4gIGNoYW5uZWxfdHlwZT86IHN0cmluZztcbiAgY3JlYXRpb25fZGF0ZT86IHN0cmluZztcbiAgY3VycmVuY3k/OiBzdHJpbmc7XG4gIGN1c3RvbWVyX2luZm8/OiBDdXN0b21lckluZm87XG4gIGdyb3VwZWRfdGF4X2l0ZW1zPzogR3JvdXBlZFRheEl0ZW1bXTtcbiAgbGFzdF9tb2RpZmllZD86IHN0cmluZztcbiAgbWVyY2hhbmRpemVfdG90YWxfdGF4PzogbnVtYmVyO1xuICBub3Rlcz86IGFkZGl0aW9uYWxOb3RlcztcbiAgb3JkZXJfcHJpY2VfYWRqdXN0bWVudHM/OiBQcmljZUFkanVzdG1lbnRbXSxcbiAgb3JkZXJfbm8/OiBzdHJpbmc7XG4gIG9yZGVyX3RvdGFsPzogbnVtYmVyO1xuICBwcm9kdWN0X2l0ZW1zPzogUHJvZHVjdEl0ZW1bXTtcbiAgcHJvZHVjdF9zdWJfdG90YWw/OiBudW1iZXI7XG4gIHByb2R1Y3RfdG90YWw/OiBudW1iZXI7XG4gIHNoaXBtZW50cz86IHNoaXBtZW50W107XG4gIHNoaXBwaW5nX2l0ZW1zPzogU2hpcHBpbmdJdGVtW107XG4gIHNoaXBwaW5nX3RvdGFsPzogbnVtYmVyO1xuICBzaGlwcGluZ190b3RhbF90YXg/OiBudW1iZXI7XG4gIHRheGF0aW9uPzogc3RyaW5nO1xuICB0YXhfcm91bmRlZF9hdF9ncm91cD86IGJvb2xlYW47XG4gIHRheF90b3RhbD86IG51bWJlcjtcbiAgY19pc0luU3RvcmVPcmRlcj86IGJvb2xlYW47XG4gIGNyZWF0ZWRfYnk/OiBzdHJpbmdcbn1cblxuZXhwb3J0IGVudW0gUFJPVklERVJTIHtcbiAgU0FMRVNGT1JDRSA9IFwiU2FsZXNmb3JjZVwiLFxuICBNQUdFTlRPID0gXCJNYWdlbnRvXCIsXG4gIE1BR0VOVE8yID0gXCJNYWdlbnRvMlwiICwgLy8gSXRzIG1hZ2VudG8gMiAsIDIgaXMgdGhlIHJvb3QgdmVyc2lvbiAobWVhbnMgc2Vjb25kIHZlcnNpb24gb2YgbWFnZW50byksXG4gIFNBTEVTRk9SQ0VfT1NVID0gXCJTYWxlc2ZvcmNlT1NVXCIsXG4gIFNBTEVTRk9SQ0VfWE1MID0gXCJTYWxlc2ZvcmNlWE1MXCJcbn1cblxuZXhwb3J0IGVudW0gUFJPTU9USU9OX0xFVkVMXG57XG4gIExJTkU9XCJMSU5FXCIsXG4gIFRSQU5TQUNUSU9OPVwiVFJBTlNBQ1RJT05cIlxufVxuXG5leHBvcnQgZW51bSBQUk9NT1RJT05fVFlQRVxue1xuICBDT1VQT049XCJDT1VQT05cIlxufVxuXG4iXX0=
@@ -77,6 +77,7 @@ var PROVIDERS;
77
77
  PROVIDERS["MAGENTO"] = "Magento";
78
78
  PROVIDERS["MAGENTO2"] = "Magento2";
79
79
  PROVIDERS["SALESFORCE_OSU"] = "SalesforceOSU";
80
+ PROVIDERS["SALESFORCE_XML"] = "SalesforceXML";
80
81
  })(PROVIDERS || (PROVIDERS = {}));
81
82
  var PROMOTION_LEVEL;
82
83
  (function (PROMOTION_LEVEL) {
@@ -3118,6 +3119,7 @@ class WebReturnSalesforceMapperBuilderClass {
3118
3119
  },
3119
3120
  currentTransactionDetails: {}
3120
3121
  };
3122
+ this.STORE_PREFIX = 'store@';
3121
3123
  if (orderDetails) {
3122
3124
  this.orderDetails = orderDetails;
3123
3125
  }
@@ -3185,8 +3187,8 @@ class WebReturnSalesforceMapperBuilderClass {
3185
3187
  deliveryMethod: this.getDeliveryMethod().toString(),
3186
3188
  totalLinePrice: product.price ? product.price : 0
3187
3189
  };
3188
- if ((subprovider === null || subprovider === void 0 ? void 0 : subprovider.toLocaleUpperCase()) === PROVIDERS.SALESFORCE_OSU.toLocaleUpperCase() && (product === null || product === void 0 ? void 0 : product.c_osuObjectData)) {
3189
- const availableQty = this.getAvailableQty(JSON.parse(product === null || product === void 0 ? void 0 : product.c_osuObjectData));
3190
+ if ((subprovider === null || subprovider === void 0 ? void 0 : subprovider.toLocaleUpperCase()) === PROVIDERS.SALESFORCE_OSU.toLocaleUpperCase()) {
3191
+ const availableQty = (product === null || product === void 0 ? void 0 : product.c_osuObjectData) ? this.getAvailableQty(JSON.parse(product === null || product === void 0 ? void 0 : product.c_osuObjectData)) : 0;
3190
3192
  productObj.availableQuantity = availableQty > 0 ? availableQty : 0;
3191
3193
  }
3192
3194
  if (product && product.price != 0) {
@@ -3402,10 +3404,21 @@ class WebReturnSalesforceMapperBuilderClass {
3402
3404
  AppLoggerService.logDebug(this.className, "customer", "customer mapping ended...");
3403
3405
  return this;
3404
3406
  }
3405
- isInStoreOrder() {
3407
+ isInStoreOrder(subprovider) {
3408
+ var _a, _b, _c;
3406
3409
  AppLoggerService.logDebug(this.className, "isInStoreOrder", "isInStoreOrder mapping started...");
3407
- if (this.orderDetails.c_isInStoreOrder) {
3408
- this.webReturnObject.isInStoreOrder = true;
3410
+ const provider = subprovider === null || subprovider === void 0 ? void 0 : subprovider.toLocaleUpperCase();
3411
+ switch (provider) {
3412
+ case PROVIDERS.SALESFORCE_OSU.toLocaleUpperCase():
3413
+ this.webReturnObject.isInStoreOrder = !!((_a = this.orderDetails) === null || _a === void 0 ? void 0 : _a.c_isInStoreOrder);
3414
+ break;
3415
+ case PROVIDERS.SALESFORCE_XML.toLocaleUpperCase():
3416
+ this.webReturnObject.isInStoreOrder =
3417
+ ((_c = (_b = this.orderDetails) === null || _b === void 0 ? void 0 : _b.created_by) === null || _c === void 0 ? void 0 : _c.toLowerCase().startsWith(this.STORE_PREFIX)) || false;
3418
+ break;
3419
+ default:
3420
+ this.webReturnObject.isInStoreOrder = false;
3421
+ break;
3409
3422
  }
3410
3423
  AppLoggerService.logDebug(this.className, "isInStoreOrder", "isInStoreOrder mapping ended...");
3411
3424
  return this;