@colijnit/transaction 256.1.71 → 256.1.73

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.
Files changed (28) hide show
  1. package/bundles/colijnit-transaction.umd.js +224 -112
  2. package/bundles/colijnit-transaction.umd.js.map +1 -1
  3. package/colijnit-transaction.metadata.json +1 -1
  4. package/esm2015/lib/component/add-product/add-product.component.js +83 -42
  5. package/esm2015/lib/component/quick-send-button/quick-send-button.component.js +3 -3
  6. package/esm2015/lib/component/transaction-internal/transaction-internal.component.js +2 -2
  7. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-invoice/transaction-quick-access-invoice.component.js +12 -4
  8. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-delivery/transaction-quick-access-order-delivery.component.js +12 -4
  9. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-purchase/transaction-quick-access-order-purchase.component.js +117 -73
  10. package/esm2015/lib/component/transaction-reservation/service/transaction-sales-reservation.service.js +3 -3
  11. package/esm2015/lib/component/transaction-reservation/transaction-sales-reservation-popup/transaction-sales-reservation-popup.component.js +3 -2
  12. package/esm2015/lib/enum/icon.enum.js +3 -1
  13. package/esm2015/lib/model/icon-svg.js +3 -1
  14. package/esm2015/lib/transaction-version.js +3 -3
  15. package/fesm2015/colijnit-transaction.js +229 -128
  16. package/fesm2015/colijnit-transaction.js.map +1 -1
  17. package/lib/component/add-product/add-product.component.d.ts +4 -2
  18. package/lib/component/quick-send-button/style/_layout.scss +8 -1
  19. package/lib/component/quick-send-button/style/_material-definition.scss +6 -6
  20. package/lib/component/transaction-quick-access/transaction-quick-access-invoice/transaction-quick-access-invoice.component.d.ts +1 -1
  21. package/lib/component/transaction-quick-access/transaction-quick-access-order-delivery/transaction-quick-access-order-delivery.component.d.ts +1 -1
  22. package/lib/component/transaction-quick-access/transaction-quick-access-order-purchase/transaction-quick-access-order-purchase.component.d.ts +24 -2
  23. package/lib/component/transaction-quick-access/transaction-quick-access-send-method-base.component.d.ts +1 -1
  24. package/lib/component/transaction-reservation/service/transaction-sales-reservation.service.d.ts +1 -1
  25. package/lib/component/transaction-reservation/transaction-sales-reservation-popup/transaction-sales-reservation-popup.component.d.ts +1 -0
  26. package/lib/enum/icon.enum.d.ts +2 -0
  27. package/lib/style/transaction-globals.scss +27 -0
  28. package/package.json +4 -4
@@ -15,6 +15,7 @@ import { ReportingDocumentPrintSignDocBaseRequest } from '@colijnit/mainapi/buil
15
15
  import { CoDocument } from '@colijnit/mainapi/build/model/co-document';
16
16
  import { SendMethodType } from "@colijnit/mainapi/build/enum/send-method-type.enum";
17
17
  import { TransactionLineType } from "@colijnit/transactionapi/build/enum/transaction-line-type.enum";
18
+ import { LayoutCode } from "@colijnit/transactionapi/build/enum/layout-code.enum";
18
19
  export class TransactionQuickAccessOrderDeliveryComponent extends TransactionQuickAccessSendMethodBaseComponent {
19
20
  constructor() {
20
21
  super(...arguments);
@@ -33,6 +34,7 @@ export class TransactionQuickAccessOrderDeliveryComponent extends TransactionQui
33
34
  this._subs.push(this.transactionEventService.allLinesSelectedForDelivery.subscribe(() => __awaiter(this, void 0, void 0, function* () {
34
35
  yield this.transactionService.updateQuantitySelectedForAllLines(this.transactionInfo, this.transactionLines, this.deliveryCostLines, this.allSelected || !this.transactionInfo.allowPartialDelivery);
35
36
  })));
37
+ this.getHistoricDocuments();
36
38
  super.ngOnInit();
37
39
  }
38
40
  ngAfterViewInit() {
@@ -132,8 +134,14 @@ export class TransactionQuickAccessOrderDeliveryComponent extends TransactionQui
132
134
  _prepareHistoricRequest(request) {
133
135
  request.reportDataId = this.sendDocumentsComponent.activeReport.reportId;
134
136
  }
135
- historicDocuments() {
136
- return this.sendDocumentsComponent && this.sendDocumentsComponent.historicReports.length > 0 && !!this.sendDocumentsComponent.activeReport;
137
+ getHistoricDocuments() {
138
+ this.transactionService.getHistoricDocuments(this.transactionInfo.id, LayoutCode.DeliveryNote)
139
+ .then((result) => {
140
+ if (result) {
141
+ this.historicReports = result;
142
+ this.detectChanges();
143
+ }
144
+ });
137
145
  }
138
146
  handleSendDocument(defaultSendMethod) {
139
147
  this.handleSend(defaultSendMethod).then(() => this.sendDocumentsComponent.getHistoricDocuments());
@@ -174,7 +182,7 @@ TransactionQuickAccessOrderDeliveryComponent.decorators = [
174
182
  (modelChange)="handleSelectAllLines($event)"
175
183
  ></co-input-checkbox>
176
184
  </div>
177
- <co-quick-send-button *ngIf="canDeliver || historicDocuments()"
185
+ <co-quick-send-button *ngIf="canDeliver"
178
186
  [defaultMethodIcon]="defaultSendMethodIcon"
179
187
  [showLoader]="showLoader"
180
188
  (sendIconClicked)="handleSendDocument(defaultSendMethod)"
@@ -215,4 +223,4 @@ TransactionQuickAccessOrderDeliveryComponent.propDecorators = {
215
223
  sendDocumentsComponent: [{ type: ViewChild, args: [TransactionSendDocumentsComponent,] }],
216
224
  showClass: [{ type: HostBinding, args: ["class.co-transaction-quick-access-order-delivery",] }]
217
225
  };
218
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW9yZGVyLWRlbGl2ZXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3Mtb3JkZXItZGVsaXZlcnkvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW9yZGVyLWRlbGl2ZXJ5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsV0FBVyxFQUFxQixTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFDLDZDQUE2QyxFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFHckgsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDMUcsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDMUcsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFFdEcsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sNEVBQTRFLENBQUM7QUFDM0gsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0sdUVBQXVFLENBQUM7QUFDeEgsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sbUVBQW1FLENBQUM7QUFDbEgsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sMkVBQTJFLENBQUM7QUFDM0gsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sMkVBQTJFLENBQUM7QUFDM0gsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0seUVBQXlFLENBQUM7QUFDdkgsT0FBTyxFQUFDLHdDQUF3QyxFQUFDLE1BQU0sOEVBQThFLENBQUM7QUFDdEksT0FBTyxFQUFDLHdDQUF3QyxFQUFDLE1BQU0sOEVBQThFLENBQUM7QUFDdEksT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDJDQUEyQyxDQUFDO0FBR3JFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUNsRixPQUFPLEVBQUMsbUJBQW1CLEVBQUMsTUFBTSxnRUFBZ0UsQ0FBQztBQWlEbkcsTUFBTSxPQUFPLDRDQUE2QyxTQUFRLDZDQUE2QztJQS9DL0c7O1FBeURTLCtCQUEwQixHQUE2QyxJQUFJLHdDQUF3QyxFQUFFLENBQUM7UUFDdEgsK0JBQTBCLEdBQTZDLElBQUksd0NBQXdDLEVBQUUsQ0FBQztRQUN0SCw2QkFBd0IsR0FBb0MsSUFBSSwrQkFBK0IsRUFBRSxDQUFDO1FBRWxHLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBQy9CLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFFNUIsVUFBSyxHQUFtQixFQUFFLENBQUM7SUEwSnJDLENBQUM7SUF0S1EsU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQVlELFFBQVE7UUFDTixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FDWCxJQUFJLENBQUMsdUJBQXVCLENBQUMsMkJBQTJCLENBQUMsU0FBUyxDQUFDLEdBQVMsRUFBRTtZQUM1RSxNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQ0FBaUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFDekcsSUFBSSxDQUFDLGlCQUFpQixFQUFDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDM0YsQ0FBQyxDQUFBLENBQUMsQ0FDTCxDQUFBO1FBQ0QsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFTSxlQUFlO1FBQ3BCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQztJQUNqRSxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDekMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxLQUFjO1FBQ3hDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxtQ0FBbUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVTLDBCQUEwQjtRQUNsQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxrQ0FBa0M7SUFDaEUsQ0FBQztJQUVTLG9CQUFvQjtRQUM1QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBRVMsZUFBZTtRQUN2QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hGLENBQUM7SUFFUyxlQUFlO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVTLFdBQVcsQ0FBQywrQkFBZ0U7UUFDcEYsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFO1lBQ3hDLE1BQU0sOEJBQThCLEdBQ2xDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSw4QkFBOEIsRUFBRSxFQUFFLCtCQUErQixDQUFDLENBQUM7WUFDdkYsSUFBSSxDQUFDLHVCQUF1QixDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFDN0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHVCQUF1QixDQUFDLDhCQUE4QixDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDeEYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLE1BQU0sc0JBQXNCLEdBQzFCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxzQkFBc0IsRUFBRSxFQUFFLCtCQUErQixDQUFDLENBQUM7WUFDL0UsSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1lBQzdDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO2dCQUN4RSxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDMUMsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFUyxhQUFhLENBQUMsaUNBQTJFO1FBQ2pHLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtZQUN4QyxNQUFNLGdDQUFnQyxHQUNwQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksZ0NBQWdDLEVBQUUsRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDO1lBQzNGLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx5QkFBeUIsQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7Z0JBQzVGLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQyxDQUFDLENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxNQUFNLHdCQUF3QixHQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksd0JBQXdCLEVBQUUsRUFBRSxpQ0FBaUMsQ0FBQyxDQUFDO1lBQ25GLElBQUksQ0FBQyxlQUFlLENBQUMsd0JBQXdCLENBQUMsQ0FBQztZQUMvQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUE0QixFQUFFLEVBQUU7Z0JBQ3hHLElBQUksTUFBTSxZQUFZLFVBQVUsRUFBRTtvQkFDaEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7aUJBQzlDO2dCQUNELElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQyxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVTLGFBQWEsQ0FBQyxpQ0FBMkU7UUFDakcsSUFBSSxJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxFQUFFO1lBQ3hDLE1BQU0sZ0NBQWdDLEdBQ3BDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxnQ0FBZ0MsRUFBRSxFQUFFLGlDQUFpQyxDQUFDLENBQUM7WUFDM0YsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGdDQUFnQyxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLHlCQUF5QixDQUFDLGdDQUFnQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDNUYsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTTtZQUNMLE1BQU0sd0JBQXdCLEdBQzVCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSx3QkFBd0IsRUFBRSxFQUFFLGlDQUFpQyxDQUFDLENBQUM7WUFDbkYsSUFBSSxDQUFDLGVBQWUsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1lBQy9DLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQTRCLEVBQUUsRUFBRTtnQkFDeEcsSUFBSSxNQUFNLFlBQVksVUFBVSxFQUFFO29CQUNoQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztpQkFDOUM7Z0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzFDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRU0sY0FBYztRQUNuQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsZ0JBQWdCLENBQUM7SUFDNUUsQ0FBQztJQUVNLGVBQWUsQ0FBQyxPQUFxRjtRQUMxRyxJQUFJLGFBQWEsR0FBMEIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQy9FLE9BQU8sQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLG1CQUFtQixDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2xMLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDMUIsTUFBTSxpQkFBaUIsR0FBc0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNsRyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUIsR0FBRyxDQUFDLENBQUE7WUFDMUgsQ0FBQyxDQUFDLENBQUM7WUFDSCxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsaUJBQWlCLENBQUMsQ0FBQztTQUMxQztRQUVELElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDNUIsT0FBTyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUNwRTtJQUNILENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxPQUE2RztRQUMxSSxPQUFPLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0lBQzNFLENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLElBQUksSUFBSSxDQUFDLHNCQUFzQixDQUFDLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxDQUFDO0lBQzdJLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxpQkFBeUI7UUFDakQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFWSx1QkFBdUIsQ0FBQyxNQUFjOztZQUNqRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1lBQ2xDLElBQUksTUFBTSxLQUFLLGNBQWMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7YUFDckQ7aUJBQU0sSUFBSSxNQUFNLEtBQUssY0FBYyxDQUFDLEtBQUssRUFBRTtnQkFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQzthQUNyRDtpQkFBTSxJQUFJLE1BQU0sS0FBSyxjQUFjLENBQUMsR0FBRyxFQUFFO2dCQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO2FBQ2pEO1lBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLENBQUM7S0FBQTtJQUNPLG1CQUFtQixDQUFDLGFBQW9DO1FBQzlELE9BQU8sYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ2hDLE1BQU0sK0JBQStCLEdBQW9DLElBQUksK0JBQStCLEVBQUUsQ0FBQztZQUMvRywrQkFBK0IsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztZQUNyRCwrQkFBK0IsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixDQUFDO1lBQ3BKLE9BQU8sK0JBQStCLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUExTkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSw0Q0FBNEM7Z0JBQ3RELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMENUO2dCQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2FBQ3RDOzs7cUNBR0UsU0FBUyxTQUFDLGlDQUFpQzt3QkFHM0MsV0FBVyxTQUFDLGtEQUFrRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgT25EZXN0cm95LCBPbkluaXQsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uUXVpY2tBY2Nlc3NTZW5kTWV0aG9kQmFzZUNvbXBvbmVudH0gZnJvbSAnLi4vdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLXNlbmQtbWV0aG9kLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHtSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcmVwb3J0LWxheW91dC1zZWxlY3Rpb24tcHJpbnQuYm8nO1xyXG5pbXBvcnQge1JlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnQtbGF5b3V0LXNlbGVjdGlvbi1lbWFpbC5ibyc7XHJcbmltcG9ydCB7RW1haWxEZWxpdmVyeU5vdGVSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtZGVsaXZlcnktbm90ZS1yZXF1ZXN0JztcclxuaW1wb3J0IHtQcmludERlbGl2ZXJ5Tm90ZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1kZWxpdmVyeS1ub3RlLXJlcXVlc3QnO1xyXG5pbXBvcnQge1BkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wZGYtZGVsaXZlcnktbm90ZS1yZXF1ZXN0JztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVJbmZvfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1pbmZvLmJvJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkxpbmVSZXBvcnRpbmdSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tbGluZS1yZXBvcnRpbmctcmVxdWVzdC5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZW5kRG9jdW1lbnRzQ29tcG9uZW50fSBmcm9tICcuLi8uLi90cmFuc2FjdGlvbi1zZW5kLWRvY3VtZW50cy90cmFuc2FjdGlvbi1zZW5kLWRvY3VtZW50cy5jb21wb25lbnQnO1xyXG5pbXBvcnQge1JlcG9ydGluZ0RvY3VtZW50UGRmQmFzZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydGluZy1kb2N1bWVudC1wZGYtYmFzZS1yZXF1ZXN0JztcclxuaW1wb3J0IHtFbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2VtYWlsLWhpc3RvcmljLWRlbGl2ZXJ5LW5vdGUtcmVxdWVzdCc7XHJcbmltcG9ydCB7UHJpbnRIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9wcmludC1oaXN0b3JpYy1kZWxpdmVyeS1ub3RlLXJlcXVlc3QnO1xyXG5pbXBvcnQge1BkZkhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1oaXN0b3JpYy1kZWxpdmVyeS1ub3RlLXJlcXVlc3QnO1xyXG5pbXBvcnQge1JlcG9ydGluZ0RvY3VtZW50RW1haWxTaWduRG9jQmFzZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydGluZy1kb2N1bWVudC1lbWFpbC1zaWduLWRvYy1iYXNlLXJlcXVlc3QnO1xyXG5pbXBvcnQge1JlcG9ydGluZ0RvY3VtZW50UHJpbnRTaWduRG9jQmFzZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydGluZy1kb2N1bWVudC1wcmludC1zaWduLWRvYy1iYXNlLXJlcXVlc3QnO1xyXG5pbXBvcnQge0NvRG9jdW1lbnR9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2NvLWRvY3VtZW50JztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkRlbGl2ZXJ5Q29zdExpbmVJbmZvfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tZGVsaXZlcnktY29zdC1saW5lLWluZm8uYm8nO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7U2VuZE1ldGhvZFR5cGV9IGZyb20gXCJAY29saWpuaXQvbWFpbmFwaS9idWlsZC9lbnVtL3NlbmQtbWV0aG9kLXR5cGUuZW51bVwiO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZVR5cGV9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvZW51bS90cmFuc2FjdGlvbi1saW5lLXR5cGUuZW51bVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY28tdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW9yZGVyLWRlbGl2ZXJ5XCIsXHJcbiAgdGVtcGxhdGU6IGBcclxuICAgIDxkaXYgY2xhc3M9XCJxdWljay1hY2Nlc3MtY29udGVudC13cmFwcGVyXCIgKm5nSWY9XCJ0cmFuc2FjdGlvbkluZm8udHJhbnNhY3Rpb25EZWZpbml0aXZlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3QtYWxsLXdyYXBwZXJcIiBbY2xhc3MuaGlkZGVuXT1cIiFoYXNMaW5lc1RvRGVsaXZlciB8fCAhdHJhbnNhY3Rpb25JbmZvLmFsbG93UGFydGlhbERlbGl2ZXJ5XCI+XHJcbiAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94XHJcbiAgICAgICAgICBbKG1vZGVsKV09XCJhbGxTZWxlY3RlZFwiXHJcbiAgICAgICAgICBbbGFiZWxdPVwiJ1NFTEVDVF9BTExfTElORVMnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZVNlbGVjdEFsbExpbmVzKCRldmVudClcIlxyXG4gICAgICAgID48L2NvLWlucHV0LWNoZWNrYm94PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGNvLXF1aWNrLXNlbmQtYnV0dG9uICpuZ0lmPVwiY2FuRGVsaXZlciB8fCBoaXN0b3JpY0RvY3VtZW50cygpXCJcclxuICAgICAgICBbZGVmYXVsdE1ldGhvZEljb25dPVwiZGVmYXVsdFNlbmRNZXRob2RJY29uXCJcclxuICAgICAgICBbc2hvd0xvYWRlcl09XCJzaG93TG9hZGVyXCJcclxuICAgICAgICAoc2VuZEljb25DbGlja2VkKT1cImhhbmRsZVNlbmREb2N1bWVudChkZWZhdWx0U2VuZE1ldGhvZClcIlxyXG4gICAgICAgIChvcGVuU2VuZE1ldGhvZERpYWxvZyk9XCJzaG93U2VuZE1ldGhvZERpYWxvZyA9IHRydWVcIlxyXG4gICAgICA+PC9jby1xdWljay1zZW5kLWJ1dHRvbj5cclxuICAgICAgPGNvLXRyYW5zYWN0aW9uLXNlbmQtZG9jdW1lbnRzXHJcbiAgICAgICAgW2hpc3RvcmljUmVwb3J0c109XCJoaXN0b3JpY1JlcG9ydHNcIlxyXG4gICAgICAgIFt0cmFuc2FjdGlvblR5cGVDYXRlZ29yeV09XCJ0cmFuc2FjdGlvblR5cGVDYXRlZ29yeS5TYWxlc09yZGVyRGVsaXZlcnlOb3RlXCJcclxuICAgICAgPjwvY28tdHJhbnNhY3Rpb24tc2VuZC1kb2N1bWVudHM+XHJcbiAgICAgIDxjby11bmRvLWRlbGl2ZXJ5XHJcbiAgICAgICAgW3RyYW5zYWN0aW9uVHlwZUNhdGVnb3J5XT1cInRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJEZWxpdmVyeU5vdGVcIlxyXG4gICAgICA+PC9jby11bmRvLWRlbGl2ZXJ5PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8Y28tc2VuZC1tZXRob2QtZGlhbG9nICpuZ0lmPVwic2hvd1NlbmRNZXRob2REaWFsb2dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVhZGVyVGl0bGVdPVwiJ1ZlcnplbmRtZXRob2RlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcmludGVyTGlzdF09XCJwcmludGVyTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0U2VuZE1ldGhvZF09XCJkZWZhdWx0U2VuZE1ldGhvZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aXNpYmxlTWV0aG9kc109XCJbc2VuZE1ldGhvZFR5cGUuUHJpbnQsIHNlbmRNZXRob2RUeXBlLkVtYWlsLCBzZW5kTWV0aG9kVHlwZS5QZGZdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VtYWlsQWRkcmVzc2VzXT1cImVtYWlsQWRkcmVzc2VzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VtYWlsTGF5b3V0c109XCJlbWFpbExheW91dHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJpbnRMYXlvdXRzXT1cInByaW50TGF5b3V0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0RvY1NpZ25FbmFibGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbKHJlcG9ydGluZ0RvY3VtZW50RW1haWxSZXF1ZXN0KV09XCJyZXBvcnREb2N1bWVudEVtYWlsUmVxdWVzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFsocmVwb3J0aW5nRG9jdW1lbnRQcmludFJlcXVlc3QpXT1cInJlcG9ydERvY3VtZW50UHJpbnRSZXF1ZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhyZXBvcnRpbmdEb2N1bWVudFBkZlJlcXVlc3QpXT1cInJlcG9ydERvY3VtZW50UGRmUmVxdWVzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZUNsaWNrKT1cInNob3dTZW5kTWV0aG9kRGlhbG9nID0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob2tDbGljayk9XCJoYW5kbGVTZW5kTWV0aG9kT2tDbGljaygkZXZlbnQpXCJcclxuICAgID48L2NvLXNlbmQtbWV0aG9kLWRpYWxvZz5cclxuICAgIDxjby1kaWdpdGFsLXNpZ25hdHVyZVxyXG4gICAgICBbZG9jdW1lbnRJZF09XCJzaWduYXR1cmVEb2N1bWVudElkXCJcclxuICAgICAgKGRvY3VtZW50U3RvcmVkKT1cImNvbW1pdEFuZFJlZnJlc2hUcmFuc2FjdGlvbigpXCJcclxuICAgID48L2NvLWRpZ2l0YWwtc2lnbmF0dXJlPlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25RdWlja0FjY2Vzc09yZGVyRGVsaXZlcnlDb21wb25lbnQgZXh0ZW5kcyBUcmFuc2FjdGlvblF1aWNrQWNjZXNzU2VuZE1ldGhvZEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoVHJhbnNhY3Rpb25TZW5kRG9jdW1lbnRzQ29tcG9uZW50KVxyXG4gIHB1YmxpYyBzZW5kRG9jdW1lbnRzQ29tcG9uZW50OiBUcmFuc2FjdGlvblNlbmREb2N1bWVudHNDb21wb25lbnQ7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNvLXRyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1vcmRlci1kZWxpdmVyeVwiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZXBvcnREb2N1bWVudEVtYWlsUmVxdWVzdDogUmVwb3J0aW5nRG9jdW1lbnRFbWFpbFNpZ25Eb2NCYXNlUmVxdWVzdCA9IG5ldyBSZXBvcnRpbmdEb2N1bWVudEVtYWlsU2lnbkRvY0Jhc2VSZXF1ZXN0KCk7XHJcbiAgcHVibGljIHJlcG9ydERvY3VtZW50UHJpbnRSZXF1ZXN0OiBSZXBvcnRpbmdEb2N1bWVudFByaW50U2lnbkRvY0Jhc2VSZXF1ZXN0ID0gbmV3IFJlcG9ydGluZ0RvY3VtZW50UHJpbnRTaWduRG9jQmFzZVJlcXVlc3QoKTtcclxuICBwdWJsaWMgcmVwb3J0RG9jdW1lbnRQZGZSZXF1ZXN0OiBSZXBvcnRpbmdEb2N1bWVudFBkZkJhc2VSZXF1ZXN0ID0gbmV3IFJlcG9ydGluZ0RvY3VtZW50UGRmQmFzZVJlcXVlc3QoKTtcclxuXHJcbiAgcHVibGljIGFsbG93RGVsaXZlcnk6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgY2FuRGVsaXZlcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBhbGxTZWxlY3RlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9zdWJzOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuX3N1YnMucHVzaChcclxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLmFsbExpbmVzU2VsZWN0ZWRGb3JEZWxpdmVyeS5zdWJzY3JpYmUoYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UudXBkYXRlUXVhbnRpdHlTZWxlY3RlZEZvckFsbExpbmVzKHRoaXMudHJhbnNhY3Rpb25JbmZvLCB0aGlzLnRyYW5zYWN0aW9uTGluZXMsXHJcbiAgICAgICAgICAgIHRoaXMuZGVsaXZlcnlDb3N0TGluZXMsdGhpcy5hbGxTZWxlY3RlZCB8fCAhdGhpcy50cmFuc2FjdGlvbkluZm8uYWxsb3dQYXJ0aWFsRGVsaXZlcnkpO1xyXG4gICAgICAgIH0pXHJcbiAgICApXHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuYWxsb3dEZWxpdmVyeSA9IHRoaXMudHJhbnNhY3Rpb25JbmZvLmFsbG93UGFydGlhbERlbGl2ZXJ5O1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLl9zdWJzLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xyXG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVTZWxlY3RBbGxMaW5lcyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2FjdGlvbkV2ZW50U2VydmljZS5zZWxlY3RBbGxTYWxlc09yZGVyTGluZXNGb3JEZWxpdmVyeS5uZXh0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXREZWZhdWx0RW1haWxBZGRyZXNzTGlzdCgpOiBQcm9taXNlPHN0cmluZ1tdPiB7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTsgLy8gTm90IHlldCBwcm92aWRlZCBieSBtaWRkbGUgdGllclxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldERlZmF1bHRTZW5kTWV0aG9kKCk6IFByb21pc2U8bnVtYmVyPiB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0RGVsaXZlcnlOb3RlRGVmYXVsdFNlbmRNZXRob2QodGhpcy50cmFuc2FjdGlvbkluZm8ucmVsYXRpb24ucmVsYXRpb25JZCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0RW1haWxMYXlvdXRzKCk6IFByb21pc2U8UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWxbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldERlbGl2ZXJ5Tm90ZUVtYWlsTGF5b3V0cyh0aGlzLnRyYW5zYWN0aW9uSW5mby51dWlkKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRQcmludExheW91dHMoKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0RGVsaXZlcnlOb3RlUHJpbnRMYXlvdXRzKHRoaXMudHJhbnNhY3Rpb25JbmZvLnV1aWQpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHBkZkRvY3VtZW50KHJlcG9ydGluZ0RvY3VtZW50UGRmQmFzZVJlcXVlc3Q6IFJlcG9ydGluZ0RvY3VtZW50UGRmQmFzZVJlcXVlc3QpIHtcclxuICAgIGlmICh0aGlzLnNlbmREb2N1bWVudHNDb21wb25lbnQuc2VsZWN0ZWQpIHtcclxuICAgICAgY29uc3QgcGRmSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0OiBQZGZIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3QgPVxyXG4gICAgICAgIE9iamVjdC5hc3NpZ24obmV3IFBkZkhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCgpLCByZXBvcnRpbmdEb2N1bWVudFBkZkJhc2VSZXF1ZXN0KTtcclxuICAgICAgdGhpcy5fcHJlcGFyZUhpc3RvcmljUmVxdWVzdChwZGZIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3QpO1xyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5wZGZIaXN0b3JpY0RlbGl2ZXJ5Tm90ZShwZGZIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3QpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hUcmFuc2FjdGlvbnMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBwZGZEZWxpdmVyeU5vdGVSZXF1ZXN0OiBQZGZEZWxpdmVyeU5vdGVSZXF1ZXN0ID1cclxuICAgICAgICBPYmplY3QuYXNzaWduKG5ldyBQZGZEZWxpdmVyeU5vdGVSZXF1ZXN0KCksIHJlcG9ydGluZ0RvY3VtZW50UGRmQmFzZVJlcXVlc3QpO1xyXG4gICAgICB0aGlzLl9wcmVwYXJlUmVxdWVzdChwZGZEZWxpdmVyeU5vdGVSZXF1ZXN0KTtcclxuICAgICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UucGRmRGVsaXZlcnlOb3RlKHBkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3QpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hUcmFuc2FjdGlvbnMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcHJpbnREb2N1bWVudChyZXBvcnRpbmdEb2N1bWVudFByaW50QmFzZVJlcXVlc3Q6IFJlcG9ydGluZ0RvY3VtZW50UHJpbnRTaWduRG9jQmFzZVJlcXVlc3QpIHtcclxuICAgIGlmICh0aGlzLnNlbmREb2N1bWVudHNDb21wb25lbnQuc2VsZWN0ZWQpIHtcclxuICAgICAgY29uc3QgcHJpbnRIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IFByaW50SGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0ID1cclxuICAgICAgICBPYmplY3QuYXNzaWduKG5ldyBQcmludEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCgpLCByZXBvcnRpbmdEb2N1bWVudFByaW50QmFzZVJlcXVlc3QpO1xyXG4gICAgICB0aGlzLl9wcmVwYXJlSGlzdG9yaWNSZXF1ZXN0KHByaW50SGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0KTtcclxuICAgICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UucHJpbnRIaXN0b3JpY0RlbGl2ZXJ5Tm90ZShwcmludEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaFRyYW5zYWN0aW9ucygpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHByaW50RGVsaXZlcnlOb3RlUmVxdWVzdDogUHJpbnREZWxpdmVyeU5vdGVSZXF1ZXN0ID1cclxuICAgICAgICBPYmplY3QuYXNzaWduKG5ldyBQcmludERlbGl2ZXJ5Tm90ZVJlcXVlc3QoKSwgcmVwb3J0aW5nRG9jdW1lbnRQcmludEJhc2VSZXF1ZXN0KTtcclxuICAgICAgdGhpcy5fcHJlcGFyZVJlcXVlc3QocHJpbnREZWxpdmVyeU5vdGVSZXF1ZXN0KTtcclxuICAgICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UucHJpbnREZWxpdmVyeU5vdGUocHJpbnREZWxpdmVyeU5vdGVSZXF1ZXN0KS50aGVuKChyZXN1bHQ6IENvRG9jdW1lbnQgfCBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIENvRG9jdW1lbnQpIHtcclxuICAgICAgICAgIHRoaXMuc2lnbmF0dXJlRG9jdW1lbnRJZCA9IHJlc3VsdC5kb2N1bWVudElkO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoVHJhbnNhY3Rpb25zKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGVtYWlsRG9jdW1lbnQocmVwb3J0aW5nRG9jdW1lbnRFbWFpbEJhc2VSZXF1ZXN0OiBSZXBvcnRpbmdEb2N1bWVudEVtYWlsU2lnbkRvY0Jhc2VSZXF1ZXN0KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZW5kRG9jdW1lbnRzQ29tcG9uZW50LnNlbGVjdGVkKSB7XHJcbiAgICAgIGNvbnN0IGVtYWlsSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0OiBFbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCA9XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihuZXcgRW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3QoKSwgcmVwb3J0aW5nRG9jdW1lbnRFbWFpbEJhc2VSZXF1ZXN0KTtcclxuICAgICAgdGhpcy5fcHJlcGFyZUhpc3RvcmljUmVxdWVzdChlbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCk7XHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmVtYWlsSGlzdG9yaWNEZWxpdmVyeU5vdGUoZW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3QpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hUcmFuc2FjdGlvbnMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBlbWFpbERlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IEVtYWlsRGVsaXZlcnlOb3RlUmVxdWVzdCA9XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihuZXcgRW1haWxEZWxpdmVyeU5vdGVSZXF1ZXN0KCksIHJlcG9ydGluZ0RvY3VtZW50RW1haWxCYXNlUmVxdWVzdCk7XHJcbiAgICAgIHRoaXMuX3ByZXBhcmVSZXF1ZXN0KGVtYWlsRGVsaXZlcnlOb3RlUmVxdWVzdCk7XHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmVtYWlsRGVsaXZlcnlOb3RlKGVtYWlsRGVsaXZlcnlOb3RlUmVxdWVzdCkudGhlbigocmVzdWx0OiBDb0RvY3VtZW50IHwgYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBDb0RvY3VtZW50KSB7XHJcbiAgICAgICAgICB0aGlzLnNpZ25hdHVyZURvY3VtZW50SWQgPSByZXN1bHQuZG9jdW1lbnRJZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaFRyYW5zYWN0aW9ucygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cmFuc2FjdGlvblNldCgpIHtcclxuICAgIHN1cGVyLnRyYW5zYWN0aW9uU2V0KCk7XHJcbiAgICB0aGlzLmNhbkRlbGl2ZXIgPSAhdGhpcy50cmFuc2FjdGlvbkluZm8uaGVhZGVySW5mb1N0YXR1cy5pc0Z1bGx5RGVsaXZlcmVkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIF9wcmVwYXJlUmVxdWVzdChyZXF1ZXN0OiBFbWFpbERlbGl2ZXJ5Tm90ZVJlcXVlc3QgfCBQcmludERlbGl2ZXJ5Tm90ZVJlcXVlc3QgfCBQZGZEZWxpdmVyeU5vdGVSZXF1ZXN0KTogdm9pZCB7XHJcbiAgICBsZXQgc2VsZWN0ZWRMaW5lczogVHJhbnNhY3Rpb25MaW5lSW5mb1tdID0gdGhpcy50cmFuc2FjdGlvbkxpbmVzLmZpbHRlcigobGluZSkgPT4ge1xyXG4gICAgICByZXR1cm4gKGxpbmUubGluZVR5cGUgIT09IFRyYW5zYWN0aW9uTGluZVR5cGUuVGV4dExpbmUgJiYgKCF0aGlzLnRyYW5zYWN0aW9uSW5mby5hbGxvd1BhcnRpYWxEZWxpdmVyeSA/IHRydWUgOiBsaW5lLnNlbGVjdGVkICYmIGxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlUb0RlbGl2ZXIgIT09IDApKVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKHRoaXMuZGVsaXZlcnlDb3N0TGluZXMpIHtcclxuICAgICAgY29uc3QgZGVsaXZlcnlDb3N0TGluZXM6IFRyYW5zYWN0aW9uRGVsaXZlcnlDb3N0TGluZUluZm9bXSA9IHRoaXMuZGVsaXZlcnlDb3N0TGluZXMuZmlsdGVyKChsaW5lKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLnRyYW5zYWN0aW9uSW5mby5hbGxvd1BhcnRpYWxEZWxpdmVyeSA/IHRydWUgOiBsaW5lLnNlbGVjdGVkICYmIGxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlUb0RlbGl2ZXIgPiAwXHJcbiAgICAgIH0pO1xyXG4gICAgICBzZWxlY3RlZExpbmVzLnB1c2goLi4uZGVsaXZlcnlDb3N0TGluZXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChzZWxlY3RlZExpbmVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgcmVxdWVzdC50cmFuc2FjdGlvbkxpbmVzID0gdGhpcy5fY3JlYXRlUmVxdWVzdExpbmVzKHNlbGVjdGVkTGluZXMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIF9wcmVwYXJlSGlzdG9yaWNSZXF1ZXN0KHJlcXVlc3Q6IEVtYWlsSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0IHwgUHJpbnRIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3QgfCBQZGZIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3QpOiB2b2lkIHtcclxuICAgIHJlcXVlc3QucmVwb3J0RGF0YUlkID0gdGhpcy5zZW5kRG9jdW1lbnRzQ29tcG9uZW50LmFjdGl2ZVJlcG9ydC5yZXBvcnRJZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoaXN0b3JpY0RvY3VtZW50cygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLnNlbmREb2N1bWVudHNDb21wb25lbnQgJiYgdGhpcy5zZW5kRG9jdW1lbnRzQ29tcG9uZW50Lmhpc3RvcmljUmVwb3J0cy5sZW5ndGggPiAwICYmICEhdGhpcy5zZW5kRG9jdW1lbnRzQ29tcG9uZW50LmFjdGl2ZVJlcG9ydDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVTZW5kRG9jdW1lbnQoZGVmYXVsdFNlbmRNZXRob2Q6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgdGhpcy5oYW5kbGVTZW5kKGRlZmF1bHRTZW5kTWV0aG9kKS50aGVuKCgpID0+IHRoaXMuc2VuZERvY3VtZW50c0NvbXBvbmVudC5nZXRIaXN0b3JpY0RvY3VtZW50cygpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVTZW5kTWV0aG9kT2tDbGljayhtZXRob2Q6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5zaG93U2VuZE1ldGhvZERpYWxvZyA9IGZhbHNlO1xyXG4gICAgaWYgKG1ldGhvZCA9PT0gU2VuZE1ldGhvZFR5cGUuUHJpbnQpIHtcclxuICAgICAgdGhpcy5wcmludERvY3VtZW50KHRoaXMucmVwb3J0RG9jdW1lbnRQcmludFJlcXVlc3QpO1xyXG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT09IFNlbmRNZXRob2RUeXBlLkVtYWlsKSB7XHJcbiAgICAgIHRoaXMuZW1haWxEb2N1bWVudCh0aGlzLnJlcG9ydERvY3VtZW50RW1haWxSZXF1ZXN0KTtcclxuICAgIH0gZWxzZSBpZiAobWV0aG9kID09PSBTZW5kTWV0aG9kVHlwZS5QZGYpIHtcclxuICAgICAgdGhpcy5wZGZEb2N1bWVudCh0aGlzLnJlcG9ydERvY3VtZW50UGRmUmVxdWVzdCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9zZXREZWZhdWx0TWV0aG9kKG1ldGhvZCk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX2NyZWF0ZVJlcXVlc3RMaW5lcyhzZWxlY3RlZExpbmVzOiBUcmFuc2FjdGlvbkxpbmVJbmZvW10pOiBUcmFuc2FjdGlvbkxpbmVSZXBvcnRpbmdSZXF1ZXN0W10ge1xyXG4gICAgcmV0dXJuIHNlbGVjdGVkTGluZXMubWFwKChsaW5lKSA9PiB7XHJcbiAgICAgIGNvbnN0IHRyYW5zYWN0aW9uTGluZVJlcG9ydGluZ1JlcXVlc3Q6IFRyYW5zYWN0aW9uTGluZVJlcG9ydGluZ1JlcXVlc3QgPSBuZXcgVHJhbnNhY3Rpb25MaW5lUmVwb3J0aW5nUmVxdWVzdCgpO1xyXG4gICAgICB0cmFuc2FjdGlvbkxpbmVSZXBvcnRpbmdSZXF1ZXN0LmxpbmVOciA9IGxpbmUubGluZU5yO1xyXG4gICAgICB0cmFuc2FjdGlvbkxpbmVSZXBvcnRpbmdSZXF1ZXN0LmFtb3VudCA9IHRoaXMudHJhbnNhY3Rpb25JbmZvLmFsbG93UGFydGlhbERlbGl2ZXJ5ID8gbGluZS5hbW91bnRTZWxlY3RlZCA6IGxpbmUuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlUb0RlbGl2ZXI7XHJcbiAgICAgIHJldHVybiB0cmFuc2FjdGlvbkxpbmVSZXBvcnRpbmdSZXF1ZXN0O1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
226
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW9yZGVyLWRlbGl2ZXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3Mtb3JkZXItZGVsaXZlcnkvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW9yZGVyLWRlbGl2ZXJ5LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsV0FBVyxFQUFxQixTQUFTLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFDLDZDQUE2QyxFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFHckgsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDMUcsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDMUcsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sZ0VBQWdFLENBQUM7QUFFdEcsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sNEVBQTRFLENBQUM7QUFDM0gsT0FBTyxFQUFDLGlDQUFpQyxFQUFDLE1BQU0sdUVBQXVFLENBQUM7QUFDeEgsT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sbUVBQW1FLENBQUM7QUFDbEgsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sMkVBQTJFLENBQUM7QUFDM0gsT0FBTyxFQUFDLGdDQUFnQyxFQUFDLE1BQU0sMkVBQTJFLENBQUM7QUFDM0gsT0FBTyxFQUFDLDhCQUE4QixFQUFDLE1BQU0seUVBQXlFLENBQUM7QUFDdkgsT0FBTyxFQUFDLHdDQUF3QyxFQUFDLE1BQU0sOEVBQThFLENBQUM7QUFDdEksT0FBTyxFQUFDLHdDQUF3QyxF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QUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLENBQUM7YUFDakQ7WUFDRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakMsQ0FBQztLQUFBO0lBQ08sbUJBQW1CLENBQUMsYUFBb0M7UUFDOUQsT0FBTyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDaEMsTUFBTSwrQkFBK0IsR0FBb0MsSUFBSSwrQkFBK0IsRUFBRSxDQUFDO1lBQy9HLCtCQUErQixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ3JELCtCQUErQixDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLENBQUM7WUFDcEosT0FBTywrQkFBK0IsQ0FBQztRQUN6QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQWpPRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLDRDQUE0QztnQkFDdEQsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwQ1Q7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7OztxQ0FHRSxTQUFTLFNBQUMsaUNBQWlDO3dCQUczQyxXQUFXLFNBQUMsa0RBQWtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25RdWlja0FjY2Vzc1NlbmRNZXRob2RCYXNlQ29tcG9uZW50fSBmcm9tICcuLi90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3Mtc2VuZC1tZXRob2QtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQge1JlcG9ydExheW91dFNlbGVjdGlvblByaW50fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnQtbGF5b3V0LXNlbGVjdGlvbi1wcmludC5ibyc7XHJcbmltcG9ydCB7UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWx9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydC1sYXlvdXQtc2VsZWN0aW9uLWVtYWlsLmJvJztcclxuaW1wb3J0IHtFbWFpbERlbGl2ZXJ5Tm90ZVJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9lbWFpbC1kZWxpdmVyeS1ub3RlLXJlcXVlc3QnO1xyXG5pbXBvcnQge1ByaW50RGVsaXZlcnlOb3RlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWRlbGl2ZXJ5LW5vdGUtcmVxdWVzdCc7XHJcbmltcG9ydCB7UGRmRGVsaXZlcnlOb3RlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1kZWxpdmVyeS1ub3RlLXJlcXVlc3QnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZUluZm99IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm8nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZVJlcG9ydGluZ1JlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLXJlcG9ydGluZy1yZXF1ZXN0LmJvJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlbmREb2N1bWVudHNDb21wb25lbnR9IGZyb20gJy4uLy4uL3RyYW5zYWN0aW9uLXNlbmQtZG9jdW1lbnRzL3RyYW5zYWN0aW9uLXNlbmQtZG9jdW1lbnRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7UmVwb3J0aW5nRG9jdW1lbnRQZGZCYXNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcmVwb3J0aW5nLWRvY3VtZW50LXBkZi1iYXNlLXJlcXVlc3QnO1xyXG5pbXBvcnQge0VtYWlsSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZW1haWwtaGlzdG9yaWMtZGVsaXZlcnktbm90ZS1yZXF1ZXN0JztcclxuaW1wb3J0IHtQcmludEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LWhpc3RvcmljLWRlbGl2ZXJ5LW5vdGUtcmVxdWVzdCc7XHJcbmltcG9ydCB7UGRmSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLWhpc3RvcmljLWRlbGl2ZXJ5LW5vdGUtcmVxdWVzdCc7XHJcbmltcG9ydCB7UmVwb3J0aW5nRG9jdW1lbnRFbWFpbFNpZ25Eb2NCYXNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcmVwb3J0aW5nLWRvY3VtZW50LWVtYWlsLXNpZ24tZG9jLWJhc2UtcmVxdWVzdCc7XHJcbmltcG9ydCB7UmVwb3J0aW5nRG9jdW1lbnRQcmludFNpZ25Eb2NCYXNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcmVwb3J0aW5nLWRvY3VtZW50LXByaW50LXNpZ24tZG9jLWJhc2UtcmVxdWVzdCc7XHJcbmltcG9ydCB7Q29Eb2N1bWVudH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvY28tZG9jdW1lbnQnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uRGVsaXZlcnlDb3N0TGluZUluZm99IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1kZWxpdmVyeS1jb3N0LWxpbmUtaW5mby5ibyc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtTZW5kTWV0aG9kVHlwZX0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL2VudW0vc2VuZC1tZXRob2QtdHlwZS5lbnVtXCI7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25MaW5lVHlwZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL3RyYW5zYWN0aW9uLWxpbmUtdHlwZS5lbnVtXCI7XHJcbmltcG9ydCB7TGF5b3V0Q29kZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9lbnVtL2xheW91dC1jb2RlLmVudW1cIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImNvLXRyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1vcmRlci1kZWxpdmVyeVwiLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwicXVpY2stYWNjZXNzLWNvbnRlbnQtd3JhcHBlclwiICpuZ0lmPVwidHJhbnNhY3Rpb25JbmZvLnRyYW5zYWN0aW9uRGVmaW5pdGl2ZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LWFsbC13cmFwcGVyXCIgW2NsYXNzLmhpZGRlbl09XCIhaGFzTGluZXNUb0RlbGl2ZXIgfHwgIXRyYW5zYWN0aW9uSW5mby5hbGxvd1BhcnRpYWxEZWxpdmVyeVwiPlxyXG4gICAgICAgIDxjby1pbnB1dC1jaGVja2JveFxyXG4gICAgICAgICAgWyhtb2RlbCldPVwiYWxsU2VsZWN0ZWRcIlxyXG4gICAgICAgICAgW2xhYmVsXT1cIidTRUxFQ1RfQUxMX0xJTkVTJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVTZWxlY3RBbGxMaW5lcygkZXZlbnQpXCJcclxuICAgICAgICA+PC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxjby1xdWljay1zZW5kLWJ1dHRvbiAqbmdJZj1cImNhbkRlbGl2ZXJcIlxyXG4gICAgICAgIFtkZWZhdWx0TWV0aG9kSWNvbl09XCJkZWZhdWx0U2VuZE1ldGhvZEljb25cIlxyXG4gICAgICAgIFtzaG93TG9hZGVyXT1cInNob3dMb2FkZXJcIlxyXG4gICAgICAgIChzZW5kSWNvbkNsaWNrZWQpPVwiaGFuZGxlU2VuZERvY3VtZW50KGRlZmF1bHRTZW5kTWV0aG9kKVwiXHJcbiAgICAgICAgKG9wZW5TZW5kTWV0aG9kRGlhbG9nKT1cInNob3dTZW5kTWV0aG9kRGlhbG9nID0gdHJ1ZVwiXHJcbiAgICAgID48L2NvLXF1aWNrLXNlbmQtYnV0dG9uPlxyXG4gICAgICA8Y28tdHJhbnNhY3Rpb24tc2VuZC1kb2N1bWVudHNcclxuICAgICAgICBbaGlzdG9yaWNSZXBvcnRzXT1cImhpc3RvcmljUmVwb3J0c1wiXHJcbiAgICAgICAgW3RyYW5zYWN0aW9uVHlwZUNhdGVnb3J5XT1cInRyYW5zYWN0aW9uVHlwZUNhdGVnb3J5LlNhbGVzT3JkZXJEZWxpdmVyeU5vdGVcIlxyXG4gICAgICA+PC9jby10cmFuc2FjdGlvbi1zZW5kLWRvY3VtZW50cz5cclxuICAgICAgPGNvLXVuZG8tZGVsaXZlcnlcclxuICAgICAgICBbdHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnldPVwidHJhbnNhY3Rpb25UeXBlQ2F0ZWdvcnkuU2FsZXNPcmRlckRlbGl2ZXJ5Tm90ZVwiXHJcbiAgICAgID48L2NvLXVuZG8tZGVsaXZlcnk+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxjby1zZW5kLW1ldGhvZC1kaWFsb2cgKm5nSWY9XCJzaG93U2VuZE1ldGhvZERpYWxvZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWFkZXJUaXRsZV09XCInVmVyemVuZG1ldGhvZGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ByaW50ZXJMaXN0XT1cInByaW50ZXJMaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHRTZW5kTWV0aG9kXT1cImRlZmF1bHRTZW5kTWV0aG9kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Zpc2libGVNZXRob2RzXT1cIltzZW5kTWV0aG9kVHlwZS5QcmludCwgc2VuZE1ldGhvZFR5cGUuRW1haWwsIHNlbmRNZXRob2RUeXBlLlBkZl1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbZW1haWxBZGRyZXNzZXNdPVwiZW1haWxBZGRyZXNzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbZW1haWxMYXlvdXRzXT1cImVtYWlsTGF5b3V0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcmludExheW91dHNdPVwicHJpbnRMYXlvdXRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRG9jU2lnbkVuYWJsZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFsocmVwb3J0aW5nRG9jdW1lbnRFbWFpbFJlcXVlc3QpXT1cInJlcG9ydERvY3VtZW50RW1haWxSZXF1ZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhyZXBvcnRpbmdEb2N1bWVudFByaW50UmVxdWVzdCldPVwicmVwb3J0RG9jdW1lbnRQcmludFJlcXVlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbKHJlcG9ydGluZ0RvY3VtZW50UGRmUmVxdWVzdCldPVwicmVwb3J0RG9jdW1lbnRQZGZSZXF1ZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsb3NlQ2xpY2spPVwic2hvd1NlbmRNZXRob2REaWFsb2cgPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChva0NsaWNrKT1cImhhbmRsZVNlbmRNZXRob2RPa0NsaWNrKCRldmVudClcIlxyXG4gICAgPjwvY28tc2VuZC1tZXRob2QtZGlhbG9nPlxyXG4gICAgPGNvLWRpZ2l0YWwtc2lnbmF0dXJlXHJcbiAgICAgIFtkb2N1bWVudElkXT1cInNpZ25hdHVyZURvY3VtZW50SWRcIlxyXG4gICAgICAoZG9jdW1lbnRTdG9yZWQpPVwiY29tbWl0QW5kUmVmcmVzaFRyYW5zYWN0aW9uKClcIlxyXG4gICAgPjwvY28tZGlnaXRhbC1zaWduYXR1cmU+XHJcbiAgYCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvblF1aWNrQWNjZXNzT3JkZXJEZWxpdmVyeUNvbXBvbmVudCBleHRlbmRzIFRyYW5zYWN0aW9uUXVpY2tBY2Nlc3NTZW5kTWV0aG9kQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgQFZpZXdDaGlsZChUcmFuc2FjdGlvblNlbmREb2N1bWVudHNDb21wb25lbnQpXHJcbiAgcHVibGljIHNlbmREb2N1bWVudHNDb21wb25lbnQ6IFRyYW5zYWN0aW9uU2VuZERvY3VtZW50c0NvbXBvbmVudDtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW9yZGVyLWRlbGl2ZXJ5XCIpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlcG9ydERvY3VtZW50RW1haWxSZXF1ZXN0OiBSZXBvcnRpbmdEb2N1bWVudEVtYWlsU2lnbkRvY0Jhc2VSZXF1ZXN0ID0gbmV3IFJlcG9ydGluZ0RvY3VtZW50RW1haWxTaWduRG9jQmFzZVJlcXVlc3QoKTtcclxuICBwdWJsaWMgcmVwb3J0RG9jdW1lbnRQcmludFJlcXVlc3Q6IFJlcG9ydGluZ0RvY3VtZW50UHJpbnRTaWduRG9jQmFzZVJlcXVlc3QgPSBuZXcgUmVwb3J0aW5nRG9jdW1lbnRQcmludFNpZ25Eb2NCYXNlUmVxdWVzdCgpO1xyXG4gIHB1YmxpYyByZXBvcnREb2N1bWVudFBkZlJlcXVlc3Q6IFJlcG9ydGluZ0RvY3VtZW50UGRmQmFzZVJlcXVlc3QgPSBuZXcgUmVwb3J0aW5nRG9jdW1lbnRQZGZCYXNlUmVxdWVzdCgpO1xyXG5cclxuICBwdWJsaWMgYWxsb3dEZWxpdmVyeTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBjYW5EZWxpdmVyOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIGFsbFNlbGVjdGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5fc3Vicy5wdXNoKFxyXG4gICAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2UuYWxsTGluZXNTZWxlY3RlZEZvckRlbGl2ZXJ5LnN1YnNjcmliZShhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS51cGRhdGVRdWFudGl0eVNlbGVjdGVkRm9yQWxsTGluZXModGhpcy50cmFuc2FjdGlvbkluZm8sIHRoaXMudHJhbnNhY3Rpb25MaW5lcyxcclxuICAgICAgICAgICAgdGhpcy5kZWxpdmVyeUNvc3RMaW5lcyx0aGlzLmFsbFNlbGVjdGVkIHx8ICF0aGlzLnRyYW5zYWN0aW9uSW5mby5hbGxvd1BhcnRpYWxEZWxpdmVyeSk7XHJcbiAgICAgICAgfSlcclxuICAgIClcclxuICAgIHRoaXMuZ2V0SGlzdG9yaWNEb2N1bWVudHMoKTtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5hbGxvd0RlbGl2ZXJ5ID0gdGhpcy50cmFuc2FjdGlvbkluZm8uYWxsb3dQYXJ0aWFsRGVsaXZlcnk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuX3N1YnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XHJcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVNlbGVjdEFsbExpbmVzKHZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLnNlbGVjdEFsbFNhbGVzT3JkZXJMaW5lc0ZvckRlbGl2ZXJ5Lm5leHQodmFsdWUpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldERlZmF1bHRFbWFpbEFkZHJlc3NMaXN0KCk6IFByb21pc2U8c3RyaW5nW10+IHtcclxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoW10pOyAvLyBOb3QgeWV0IHByb3ZpZGVkIGJ5IG1pZGRsZSB0aWVyXHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0RGVmYXVsdFNlbmRNZXRob2QoKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXREZWxpdmVyeU5vdGVEZWZhdWx0U2VuZE1ldGhvZCh0aGlzLnRyYW5zYWN0aW9uSW5mby5yZWxhdGlvbi5yZWxhdGlvbklkKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRFbWFpbExheW91dHMoKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0RGVsaXZlcnlOb3RlRW1haWxMYXlvdXRzKHRoaXMudHJhbnNhY3Rpb25JbmZvLnV1aWQpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGdldFByaW50TGF5b3V0cygpOiBQcm9taXNlPFJlcG9ydExheW91dFNlbGVjdGlvblByaW50W10+IHtcclxuICAgIHJldHVybiB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXREZWxpdmVyeU5vdGVQcmludExheW91dHModGhpcy50cmFuc2FjdGlvbkluZm8udXVpZCk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgcGRmRG9jdW1lbnQocmVwb3J0aW5nRG9jdW1lbnRQZGZCYXNlUmVxdWVzdDogUmVwb3J0aW5nRG9jdW1lbnRQZGZCYXNlUmVxdWVzdCkge1xyXG4gICAgaWYgKHRoaXMuc2VuZERvY3VtZW50c0NvbXBvbmVudC5zZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBwZGZIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IFBkZkhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCA9XHJcbiAgICAgICAgT2JqZWN0LmFzc2lnbihuZXcgUGRmSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0KCksIHJlcG9ydGluZ0RvY3VtZW50UGRmQmFzZVJlcXVlc3QpO1xyXG4gICAgICB0aGlzLl9wcmVwYXJlSGlzdG9yaWNSZXF1ZXN0KHBkZkhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCk7XHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLnBkZkhpc3RvcmljRGVsaXZlcnlOb3RlKHBkZkhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaFRyYW5zYWN0aW9ucygpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHBkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IFBkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3QgPVxyXG4gICAgICAgIE9iamVjdC5hc3NpZ24obmV3IFBkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3QoKSwgcmVwb3J0aW5nRG9jdW1lbnRQZGZCYXNlUmVxdWVzdCk7XHJcbiAgICAgIHRoaXMuX3ByZXBhcmVSZXF1ZXN0KHBkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3QpO1xyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5wZGZEZWxpdmVyeU5vdGUocGRmRGVsaXZlcnlOb3RlUmVxdWVzdCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaFRyYW5zYWN0aW9ucygpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBwcmludERvY3VtZW50KHJlcG9ydGluZ0RvY3VtZW50UHJpbnRCYXNlUmVxdWVzdDogUmVwb3J0aW5nRG9jdW1lbnRQcmludFNpZ25Eb2NCYXNlUmVxdWVzdCkge1xyXG4gICAgaWYgKHRoaXMuc2VuZERvY3VtZW50c0NvbXBvbmVudC5zZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBwcmludEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdDogUHJpbnRIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3QgPVxyXG4gICAgICAgIE9iamVjdC5hc3NpZ24obmV3IFByaW50SGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0KCksIHJlcG9ydGluZ0RvY3VtZW50UHJpbnRCYXNlUmVxdWVzdCk7XHJcbiAgICAgIHRoaXMuX3ByZXBhcmVIaXN0b3JpY1JlcXVlc3QocHJpbnRIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3QpO1xyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5wcmludEhpc3RvcmljRGVsaXZlcnlOb3RlKHByaW50SGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0KS50aGVuKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoVHJhbnNhY3Rpb25zKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcHJpbnREZWxpdmVyeU5vdGVSZXF1ZXN0OiBQcmludERlbGl2ZXJ5Tm90ZVJlcXVlc3QgPVxyXG4gICAgICAgIE9iamVjdC5hc3NpZ24obmV3IFByaW50RGVsaXZlcnlOb3RlUmVxdWVzdCgpLCByZXBvcnRpbmdEb2N1bWVudFByaW50QmFzZVJlcXVlc3QpO1xyXG4gICAgICB0aGlzLl9wcmVwYXJlUmVxdWVzdChwcmludERlbGl2ZXJ5Tm90ZVJlcXVlc3QpO1xyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5wcmludERlbGl2ZXJ5Tm90ZShwcmludERlbGl2ZXJ5Tm90ZVJlcXVlc3QpLnRoZW4oKHJlc3VsdDogQ29Eb2N1bWVudCB8IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgQ29Eb2N1bWVudCkge1xyXG4gICAgICAgICAgdGhpcy5zaWduYXR1cmVEb2N1bWVudElkID0gcmVzdWx0LmRvY3VtZW50SWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2VhcmNoU2VydmljZS5zZWFyY2hUcmFuc2FjdGlvbnMoKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZW1haWxEb2N1bWVudChyZXBvcnRpbmdEb2N1bWVudEVtYWlsQmFzZVJlcXVlc3Q6IFJlcG9ydGluZ0RvY3VtZW50RW1haWxTaWduRG9jQmFzZVJlcXVlc3QpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbmREb2N1bWVudHNDb21wb25lbnQuc2VsZWN0ZWQpIHtcclxuICAgICAgY29uc3QgZW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3Q6IEVtYWlsSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0ID1cclxuICAgICAgICBPYmplY3QuYXNzaWduKG5ldyBFbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCgpLCByZXBvcnRpbmdEb2N1bWVudEVtYWlsQmFzZVJlcXVlc3QpO1xyXG4gICAgICB0aGlzLl9wcmVwYXJlSGlzdG9yaWNSZXF1ZXN0KGVtYWlsSGlzdG9yaWNEZWxpdmVyeU5vdGVSZXF1ZXN0KTtcclxuICAgICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZShlbWFpbEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hTZXJ2aWNlLnNlYXJjaFRyYW5zYWN0aW9ucygpO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGVtYWlsRGVsaXZlcnlOb3RlUmVxdWVzdDogRW1haWxEZWxpdmVyeU5vdGVSZXF1ZXN0ID1cclxuICAgICAgICBPYmplY3QuYXNzaWduKG5ldyBFbWFpbERlbGl2ZXJ5Tm90ZVJlcXVlc3QoKSwgcmVwb3J0aW5nRG9jdW1lbnRFbWFpbEJhc2VSZXF1ZXN0KTtcclxuICAgICAgdGhpcy5fcHJlcGFyZVJlcXVlc3QoZW1haWxEZWxpdmVyeU5vdGVSZXF1ZXN0KTtcclxuICAgICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZW1haWxEZWxpdmVyeU5vdGUoZW1haWxEZWxpdmVyeU5vdGVSZXF1ZXN0KS50aGVuKChyZXN1bHQ6IENvRG9jdW1lbnQgfCBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIENvRG9jdW1lbnQpIHtcclxuICAgICAgICAgIHRoaXMuc2lnbmF0dXJlRG9jdW1lbnRJZCA9IHJlc3VsdC5kb2N1bWVudElkO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoVHJhbnNhY3Rpb25zKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYW5zYWN0aW9uU2V0KCkge1xyXG4gICAgc3VwZXIudHJhbnNhY3Rpb25TZXQoKTtcclxuICAgIHRoaXMuY2FuRGVsaXZlciA9ICF0aGlzLnRyYW5zYWN0aW9uSW5mby5oZWFkZXJJbmZvU3RhdHVzLmlzRnVsbHlEZWxpdmVyZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgX3ByZXBhcmVSZXF1ZXN0KHJlcXVlc3Q6IEVtYWlsRGVsaXZlcnlOb3RlUmVxdWVzdCB8IFByaW50RGVsaXZlcnlOb3RlUmVxdWVzdCB8IFBkZkRlbGl2ZXJ5Tm90ZVJlcXVlc3QpOiB2b2lkIHtcclxuICAgIGxldCBzZWxlY3RlZExpbmVzOiBUcmFuc2FjdGlvbkxpbmVJbmZvW10gPSB0aGlzLnRyYW5zYWN0aW9uTGluZXMuZmlsdGVyKChsaW5lKSA9PiB7XHJcbiAgICAgIHJldHVybiAobGluZS5saW5lVHlwZSAhPT0gVHJhbnNhY3Rpb25MaW5lVHlwZS5UZXh0TGluZSAmJiAoIXRoaXMudHJhbnNhY3Rpb25JbmZvLmFsbG93UGFydGlhbERlbGl2ZXJ5ID8gdHJ1ZSA6IGxpbmUuc2VsZWN0ZWQgJiYgbGluZS5hcnRpY2xlTGluZVN0YXR1cy5xdWFudGl0eVRvRGVsaXZlciAhPT0gMCkpXHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAodGhpcy5kZWxpdmVyeUNvc3RMaW5lcykge1xyXG4gICAgICBjb25zdCBkZWxpdmVyeUNvc3RMaW5lczogVHJhbnNhY3Rpb25EZWxpdmVyeUNvc3RMaW5lSW5mb1tdID0gdGhpcy5kZWxpdmVyeUNvc3RMaW5lcy5maWx0ZXIoKGxpbmUpID0+IHtcclxuICAgICAgICByZXR1cm4gIXRoaXMudHJhbnNhY3Rpb25JbmZvLmFsbG93UGFydGlhbERlbGl2ZXJ5ID8gdHJ1ZSA6IGxpbmUuc2VsZWN0ZWQgJiYgbGluZS5hcnRpY2xlTGluZVN0YXR1cy5xdWFudGl0eVRvRGVsaXZlciA+IDBcclxuICAgICAgfSk7XHJcbiAgICAgIHNlbGVjdGVkTGluZXMucHVzaCguLi5kZWxpdmVyeUNvc3RMaW5lcyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkTGluZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICByZXF1ZXN0LnRyYW5zYWN0aW9uTGluZXMgPSB0aGlzLl9jcmVhdGVSZXF1ZXN0TGluZXMoc2VsZWN0ZWRMaW5lcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgX3ByZXBhcmVIaXN0b3JpY1JlcXVlc3QocmVxdWVzdDogRW1haWxIaXN0b3JpY0RlbGl2ZXJ5Tm90ZVJlcXVlc3QgfCBQcmludEhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCB8IFBkZkhpc3RvcmljRGVsaXZlcnlOb3RlUmVxdWVzdCk6IHZvaWQge1xyXG4gICAgcmVxdWVzdC5yZXBvcnREYXRhSWQgPSB0aGlzLnNlbmREb2N1bWVudHNDb21wb25lbnQuYWN0aXZlUmVwb3J0LnJlcG9ydElkO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEhpc3RvcmljRG9jdW1lbnRzKCk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0SGlzdG9yaWNEb2N1bWVudHModGhpcy50cmFuc2FjdGlvbkluZm8uaWQsIExheW91dENvZGUuRGVsaXZlcnlOb3RlKVxyXG4gICAgICAudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3VsdCkge1xyXG4gICAgICAgICAgdGhpcy5oaXN0b3JpY1JlcG9ydHMgPSByZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZVNlbmREb2N1bWVudChkZWZhdWx0U2VuZE1ldGhvZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmhhbmRsZVNlbmQoZGVmYXVsdFNlbmRNZXRob2QpLnRoZW4oKCkgPT4gdGhpcy5zZW5kRG9jdW1lbnRzQ29tcG9uZW50LmdldEhpc3RvcmljRG9jdW1lbnRzKCkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZVNlbmRNZXRob2RPa0NsaWNrKG1ldGhvZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLnNob3dTZW5kTWV0aG9kRGlhbG9nID0gZmFsc2U7XHJcbiAgICBpZiAobWV0aG9kID09PSBTZW5kTWV0aG9kVHlwZS5QcmludCkge1xyXG4gICAgICB0aGlzLnByaW50RG9jdW1lbnQodGhpcy5yZXBvcnREb2N1bWVudFByaW50UmVxdWVzdCk7XHJcbiAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PT0gU2VuZE1ldGhvZFR5cGUuRW1haWwpIHtcclxuICAgICAgdGhpcy5lbWFpbERvY3VtZW50KHRoaXMucmVwb3J0RG9jdW1lbnRFbWFpbFJlcXVlc3QpO1xyXG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT09IFNlbmRNZXRob2RUeXBlLlBkZikge1xyXG4gICAgICB0aGlzLnBkZkRvY3VtZW50KHRoaXMucmVwb3J0RG9jdW1lbnRQZGZSZXF1ZXN0KTtcclxuICAgIH1cclxuICAgIHRoaXMuX3NldERlZmF1bHRNZXRob2QobWV0aG9kKTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfY3JlYXRlUmVxdWVzdExpbmVzKHNlbGVjdGVkTGluZXM6IFRyYW5zYWN0aW9uTGluZUluZm9bXSk6IFRyYW5zYWN0aW9uTGluZVJlcG9ydGluZ1JlcXVlc3RbXSB7XHJcbiAgICByZXR1cm4gc2VsZWN0ZWRMaW5lcy5tYXAoKGxpbmUpID0+IHtcclxuICAgICAgY29uc3QgdHJhbnNhY3Rpb25MaW5lUmVwb3J0aW5nUmVxdWVzdDogVHJhbnNhY3Rpb25MaW5lUmVwb3J0aW5nUmVxdWVzdCA9IG5ldyBUcmFuc2FjdGlvbkxpbmVSZXBvcnRpbmdSZXF1ZXN0KCk7XHJcbiAgICAgIHRyYW5zYWN0aW9uTGluZVJlcG9ydGluZ1JlcXVlc3QubGluZU5yID0gbGluZS5saW5lTnI7XHJcbiAgICAgIHRyYW5zYWN0aW9uTGluZVJlcG9ydGluZ1JlcXVlc3QuYW1vdW50ID0gdGhpcy50cmFuc2FjdGlvbkluZm8uYWxsb3dQYXJ0aWFsRGVsaXZlcnkgPyBsaW5lLmFtb3VudFNlbGVjdGVkIDogbGluZS5hcnRpY2xlTGluZVN0YXR1cy5xdWFudGl0eVRvRGVsaXZlcjtcclxuICAgICAgcmV0dXJuIHRyYW5zYWN0aW9uTGluZVJlcG9ydGluZ1JlcXVlc3Q7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,5 +1,5 @@
1
1
  import { __awaiter } from "tslib";
2
- import { ChangeDetectorRef, Component, HostBinding, ViewEncapsulation } from '@angular/core';
2
+ import { ChangeDetectorRef, Component, HostBinding, ViewChild, ViewEncapsulation } from '@angular/core';
3
3
  import { TransactionQuickAccessSendMethodBaseComponent } from '../transaction-quick-access-send-method-base.component';
4
4
  import { ReportingDocumentPrintSignDocBaseRequest } from '@colijnit/mainapi/build/model/reporting-document-print-sign-doc-base-request';
5
5
  import { ReportingDocumentEmailSignDocBaseRequest } from '@colijnit/mainapi/build/model/reporting-document-email-sign-doc-base-request';
@@ -15,6 +15,9 @@ import { TransactionService } from '../../../service/transaction.service';
15
15
  import { TransactionDialogService } from '../../../service/transaction-dialog.service';
16
16
  import { TransactionSalesReservationService } from '../../transaction-reservation/service/transaction-sales-reservation.service';
17
17
  import { TransactionHeaderService } from '../../core/base/service/transaction-header.service';
18
+ import { BatchTransactionSendingRequest } from '@colijnit/transactionapi/build/model/batch-transaction-sending-request';
19
+ import { LayoutCode } from "@colijnit/transactionapi/build/enum/layout-code.enum";
20
+ import { TransactionSendDocumentsComponent } from "../../transaction-send-documents/transaction-send-documents.component";
18
21
  export class TransactionQuickAccessOrderPurchaseComponent extends TransactionQuickAccessSendMethodBaseComponent {
19
22
  constructor(searchService, transactionHeaderService, transactionEventService, iconCacheService, screenConfigService, imageService, dictionaryService, transactionService, changeDetector, dialogService, salesReservationService) {
20
23
  super(searchService, transactionHeaderService, transactionEventService, iconCacheService, screenConfigService, imageService, dictionaryService, transactionService, changeDetector, dialogService);
@@ -25,6 +28,13 @@ export class TransactionQuickAccessOrderPurchaseComponent extends TransactionQui
25
28
  this.reportDocumentEmailRequest = new ReportingDocumentEmailSignDocBaseRequest();
26
29
  this.reportDocumentPrintRequest = new ReportingDocumentPrintSignDocBaseRequest();
27
30
  this.reportDocumentPdfRequest = new ReportingDocumentPdfBaseRequest();
31
+ this.batchTransactionSendingRequest = new BatchTransactionSendingRequest();
32
+ this.printPurchaseOrderForSalesOrderRequest = new PrintPurchaseOrderForSalesOrderRequest();
33
+ this.useDefaultLayout = false;
34
+ this.useDefaultShippingMethods = false;
35
+ this.saveDefaultPrinterForUser = false;
36
+ this.saveDefaultPrinterForAllUsers = false;
37
+ this.printerList = [];
28
38
  this.defaultSendMethodInitialized = false;
29
39
  this._subs = [];
30
40
  }
@@ -46,39 +56,58 @@ export class TransactionQuickAccessOrderPurchaseComponent extends TransactionQui
46
56
  }
47
57
  handleSend(method) {
48
58
  return __awaiter(this, void 0, void 0, function* () {
49
- const isPrintDefaultMethod = yield this.transactionService.isPrintIsDefaultSendMethodForPurchaseOrder(this.transactionInfo.id);
50
- if (isPrintDefaultMethod) {
51
- this.showShippingMethodDialog = true;
52
- this.changeDetector.detectChanges();
53
- }
54
- else {
55
- yield this.printDocument(this.reportDocumentPrintRequest);
56
- this._setDefaultMethod(method);
57
- }
59
+ // const isPrintDefaultMethod: boolean = await this.transactionService.isPrintIsDefaultSendMethodForPurchaseOrder(this.transactionInfo.id);
60
+ // if (isPrintDefaultMethod) {
61
+ this.showSendMethodDialog = true;
62
+ this.changeDetector.detectChanges();
63
+ /* } else {
64
+ await this.printDocument(this.reportDocumentPrintRequest);
65
+ this._setDefaultMethod(method);
66
+ } */
58
67
  });
59
68
  }
60
- handleSendMethodOkClick(method) {
69
+ handleSendMethodOkClick(methodData) {
70
+ var _a, _b, _c, _d, _e, _f;
61
71
  return __awaiter(this, void 0, void 0, function* () {
62
72
  this.showSendMethodDialog = false;
63
- yield this.printDocument(this.reportDocumentPrintRequest);
64
- this._setDefaultMethod(method);
65
- });
66
- }
67
- handleShippingMethodOkClick(request) {
68
- return __awaiter(this, void 0, void 0, function* () {
69
- this.showShippingMethodDialog = false;
70
- if (request.printerName) {
71
- this.reportDocumentPrintRequest.printerName = request.printerName;
73
+ this.useDefaultLayout = methodData.useDefaultLayout;
74
+ this.useDefaultShippingMethods = methodData.useDefaultShippingMethods;
75
+ this.saveDefaultPrinterForUser = methodData.saveDefaultPrinterForUser;
76
+ this.saveDefaultPrinterForAllUsers = methodData.saveDefaultPrinterForAllUsers;
77
+ this.reportIdForPrinting = (_a = methodData.reportIdForPrinting) === null || _a === void 0 ? void 0 : _a.reportId;
78
+ this.reportIdForEmail = (_b = methodData.reportIdForEmail) === null || _b === void 0 ? void 0 : _b.reportId;
79
+ if (!this.useDefaultShippingMethods) {
80
+ this.overruledEmail = methodData.overruledEmail;
81
+ this.overruledEdi = methodData.overruledEdi;
82
+ this.overruledPrint = methodData.overruledPrint;
83
+ }
84
+ if (!this.useDefaultLayout) {
85
+ if (this.reportIdForPrinting) {
86
+ this.printPurchaseOrderForSalesOrderRequest.reportIdForPrinting = this.reportIdForPrinting;
87
+ }
88
+ if (this.reportIdForEmail) {
89
+ this.printPurchaseOrderForSalesOrderRequest.reportIdForEmail = this.reportIdForEmail;
90
+ }
91
+ }
92
+ if (methodData.printerName) {
93
+ this.selectedPrinter = this.printerList.find(p => p.name === methodData.printerName) || null;
94
+ }
95
+ this.printPurchaseOrderForSalesOrderRequest.useRelationSpecificReports = this.useDefaultLayout;
96
+ this.printPurchaseOrderForSalesOrderRequest.useRelationSpecificSendMethods = this.useDefaultShippingMethods;
97
+ this.printPurchaseOrderForSalesOrderRequest.saveDefaultPrinterForUser = this.saveDefaultPrinterForUser;
98
+ this.printPurchaseOrderForSalesOrderRequest.saveDefaultPrinterForAllUsers = this.saveDefaultPrinterForAllUsers;
99
+ this.printPurchaseOrderForSalesOrderRequest.printerName = ((_c = this.selectedPrinter) === null || _c === void 0 ? void 0 : _c.name) || null;
100
+ if (!this.useDefaultShippingMethods) {
101
+ this.printPurchaseOrderForSalesOrderRequest.overruleSendMethodForEmail = (_d = this.overruledEmail) === null || _d === void 0 ? void 0 : _d.code;
102
+ this.printPurchaseOrderForSalesOrderRequest.overruleSendMethodForPrinting = (_e = this.overruledPrint) === null || _e === void 0 ? void 0 : _e.code;
103
+ this.printPurchaseOrderForSalesOrderRequest.overruleSendMethodForEDI = (_f = this.overruledEdi) === null || _f === void 0 ? void 0 : _f.code;
104
+ }
105
+ if (!this.useDefaultLayout) {
106
+ this.printPurchaseOrderForSalesOrderRequest.reportIdForPrinting = this.reportIdForPrinting;
107
+ this.printPurchaseOrderForSalesOrderRequest.reportIdForEmail = this.reportIdForEmail;
72
108
  }
73
- const defaultMethodNumber = typeof this.defaultSendMethod === 'number' ? this.defaultSendMethod : 1;
74
- // Determine the overridden send method, prioritizing print, email, and then EDI
75
- const selectedMethodNumber = request.overruleSendMethodForPrinting
76
- || request.overruleSendMethodForEmail
77
- || request.overruleSendMethodForEDI
78
- || defaultMethodNumber; // Ensure fallback is always a number
79
- const methodString = selectedMethodNumber.toString();
80
109
  yield this.printDocument(this.reportDocumentPrintRequest);
81
- this._setDefaultMethod(methodString);
110
+ this._setDefaultMethod(this.defaultSendMethod);
82
111
  });
83
112
  }
84
113
  handleReservationModeClick() {
@@ -102,7 +131,15 @@ export class TransactionQuickAccessOrderPurchaseComponent extends TransactionQui
102
131
  this._checkPurchaseOrders();
103
132
  }
104
133
  openSendDialog() {
105
- this.showShippingMethodDialog = true;
134
+ this.showSendMethodDialog = true;
135
+ }
136
+ loadDefaultPrinterName(reportId) {
137
+ this.transactionService.getDefaultPrinter(reportId, LayoutCode.OrderConfirmation).then((printerName) => {
138
+ if (printerName && this.printerList.find((printer) => printer.name === printerName)) {
139
+ this.defaultPrinterName = printerName;
140
+ this.changeDetector.detectChanges();
141
+ }
142
+ });
106
143
  }
107
144
  _checkPurchaseOrders() {
108
145
  this.canGenerate = this.transactionLines &&
@@ -123,18 +160,28 @@ export class TransactionQuickAccessOrderPurchaseComponent extends TransactionQui
123
160
  });
124
161
  }
125
162
  getEmailLayouts() {
126
- return Promise.resolve([]);
163
+ return this.transactionService.getPurchaseOrderEmailLayouts(this.transactionInfo.uuid);
127
164
  }
128
165
  getPrintLayouts() {
129
- return Promise.resolve([]);
166
+ return this.transactionService.getPurchaseOrderPrintLayouts(this.transactionInfo.uuid);
130
167
  }
131
168
  pdfDocument(request) {
132
169
  }
133
170
  emailDocument(request) {
134
171
  }
135
172
  printDocument(request) {
173
+ var _a, _b;
136
174
  return __awaiter(this, void 0, void 0, function* () {
137
175
  const printPurchaseOrderForSalesOrderRequest = Object.assign(new PrintPurchaseOrderForSalesOrderRequest(), request);
176
+ printPurchaseOrderForSalesOrderRequest.useRelationSpecificReports = (_a = this.printPurchaseOrderForSalesOrderRequest.useRelationSpecificReports) !== null && _a !== void 0 ? _a : true;
177
+ printPurchaseOrderForSalesOrderRequest.useRelationSpecificSendMethods = (_b = this.printPurchaseOrderForSalesOrderRequest.useRelationSpecificSendMethods) !== null && _b !== void 0 ? _b : true;
178
+ printPurchaseOrderForSalesOrderRequest.reportIdForPrinting = this.printPurchaseOrderForSalesOrderRequest.reportIdForPrinting;
179
+ printPurchaseOrderForSalesOrderRequest.reportIdForEmail = this.printPurchaseOrderForSalesOrderRequest.reportIdForEmail;
180
+ printPurchaseOrderForSalesOrderRequest.overruleSendMethodForEmail = this.printPurchaseOrderForSalesOrderRequest.overruleSendMethodForEmail;
181
+ printPurchaseOrderForSalesOrderRequest.overruleSendMethodForPrinting = this.printPurchaseOrderForSalesOrderRequest.overruleSendMethodForPrinting;
182
+ printPurchaseOrderForSalesOrderRequest.overruleSendMethodForEDI = this.printPurchaseOrderForSalesOrderRequest.overruleSendMethodForEDI;
183
+ printPurchaseOrderForSalesOrderRequest.saveDefaultPrinterForUser = this.printPurchaseOrderForSalesOrderRequest.saveDefaultPrinterForUser;
184
+ printPurchaseOrderForSalesOrderRequest.saveDefaultPrinterForAllUsers = this.printPurchaseOrderForSalesOrderRequest.saveDefaultPrinterForAllUsers;
138
185
  yield this.transactionService.generateAndSendPurchaseOrdersForSalesOrder(printPurchaseOrderForSalesOrderRequest, this.transactionInfo.version);
139
186
  });
140
187
  }
@@ -143,48 +190,44 @@ TransactionQuickAccessOrderPurchaseComponent.decorators = [
143
190
  { type: Component, args: [{
144
191
  selector: 'co-transaction-quick-access-order-purchase',
145
192
  template: `
146
- <div class="quick-access-content-wrapper" *ngIf="canGenerate && transactionInfo.transactionDefinitive">
147
- <div class="select-all-wrapper">
148
- <co-input-checkbox
149
- [label]="'SELECT_ALL_LINES' | localize"
150
- (modelChange)="handleSelectAllLines($event)">
151
- </co-input-checkbox>
152
- </div>
153
- <co-quick-send-button
154
- [defaultMethodIcon]="defaultSendMethodIcon"
155
- [showLoader]="showLoader"
156
- (sendIconClicked)="handleSend(defaultSendMethod)"
157
- (openSendMethodDialog)="openSendDialog()">
158
- </co-quick-send-button>
159
-
160
- <span class="button" [class.selected]="transactionHeaderService.reservationMode">
161
- <co-icon (click)="handleReservationModeClick()" [iconData]="iconCacheService.getIcon(icons.PalletBoxesRotate)"></co-icon>
162
- </span>
193
+ <div class="quick-access-content-wrapper" *ngIf="canGenerate && transactionInfo.transactionDefinitive">
194
+ <div class="select-all-wrapper">
195
+ <co-input-checkbox
196
+ [label]="'SELECT_ALL_LINES' | localize"
197
+ (modelChange)="handleSelectAllLines($event)">
198
+ </co-input-checkbox>
163
199
  </div>
164
- <co-send-method-dialog
165
- *ngIf="showSendMethodDialog"
166
- [printerList]="printerList"
167
- [headerTitle]="'CREATE_PURCHASE_ORDER' | localize"
168
- [defaultSendMethod]="defaultSendMethod"
169
- [visibleMethods]="[sendMethodType.Print]"
170
- [emailAddresses]="emailAddresses"
171
- [emailLayouts]="emailLayouts"
172
- [isPrinterLayoutsEnabled]="false"
173
- [isDocSignEnabled]="false"
174
- [(reportingDocumentEmailRequest)]="reportDocumentEmailRequest"
175
- [(reportingDocumentPrintRequest)]="reportDocumentPrintRequest"
176
- [(reportingDocumentPdfRequest)]="reportDocumentPdfRequest"
177
- (closeClick)="showSendMethodDialog = false"
178
- (okClick)="handleSendMethodOkClick($event)">
179
- </co-send-method-dialog>
200
+ <co-quick-send-button
201
+ [defaultMethodIcon]="defaultSendMethodIcon"
202
+ [showLoader]="showLoader"
203
+ (sendIconClicked)="handleSend(defaultSendMethod)"
204
+ (openSendMethodDialog)="openSendDialog()">
205
+ </co-quick-send-button>
206
+
207
+ <span class="button" [class.selected]="transactionHeaderService.reservationMode">
208
+ <co-icon (click)="handleReservationModeClick()" [iconData]="iconCacheService.getIcon(icons.PalletBoxesRotate)"></co-icon>
209
+ </span>
210
+ </div>
211
+
212
+ <co-send-method-dialog *ngIf="showSendMethodDialog"
213
+ [headerTitle]="'CREATE_PURCHASE_ORDER' | localize"
214
+ [printerList]="printerList"
215
+ [defaultSendMethod]="defaultSendMethod"
216
+ [visibleMethods]="[sendMethodType.Print, sendMethodType.Email]"
217
+ [emailAddresses]="emailAddresses"
218
+ [emailLayouts]="emailLayouts"
219
+ [printLayouts]="printLayouts"
220
+ [defaultPrinterName]="defaultPrinterName"
221
+ [disablePdfPreview]="true"
222
+ [isDocSignEnabled]="true"
180
223
 
181
- <co-shipping-method-dialog
182
- *ngIf="showShippingMethodDialog"
183
- [category]="'purchase'"
184
- [selectedTransactions]="selectedTransactions"
185
- (cancelClicked)="showShippingMethodDialog = false"
186
- (saveClicked)="handleShippingMethodOkClick($event)">
187
- </co-shipping-method-dialog>
224
+ [(reportingDocumentEmailRequest)]="reportDocumentEmailRequest"
225
+ [(reportingDocumentPrintRequest)]="reportDocumentPrintRequest"
226
+ [(reportingDocumentPdfRequest)]="reportDocumentPdfRequest"
227
+ (closeClick)="showSendMethodDialog = false"
228
+ (okClick)="handleSendMethodOkClick($event)"
229
+ [usePurchaseSendMethod]="true"
230
+ ></co-send-method-dialog>
188
231
  `,
189
232
  encapsulation: ViewEncapsulation.None
190
233
  },] }
@@ -203,6 +246,7 @@ TransactionQuickAccessOrderPurchaseComponent.ctorParameters = () => [
203
246
  { type: TransactionSalesReservationService }
204
247
  ];
205
248
  TransactionQuickAccessOrderPurchaseComponent.propDecorators = {
206
- showClass: [{ type: HostBinding, args: ['class.co-transaction-quick-access-order-purchase',] }]
249
+ showClass: [{ type: HostBinding, args: ['class.co-transaction-quick-access-order-purchase',] }],
250
+ sendDocumentsComponent: [{ type: ViewChild, args: [TransactionSendDocumentsComponent,] }]
207
251
  };
208
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW9yZGVyLXB1cmNoYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3Mtb3JkZXItcHVyY2hhc2UvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW9yZGVyLXB1cmNoYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHM0YsT0FBTyxFQUFDLDZDQUE2QyxFQUFDLE1BQU0sd0RBQXdELENBQUM7QUFDckgsT0FBTyxFQUFDLHdDQUF3QyxFQUFDLE1BQU0sOEVBQThFLENBQUM7QUFDdEksT0FBTyxFQUFDLHdDQUF3QyxFQUFDLE1BQU0sOEVBQThFLENBQUM7QUFDdEksT0FBTyxFQUFDLCtCQUErQixFQUFDLE1BQU0sbUVBQW1FLENBQUM7QUFHbEgsT0FBTyxFQUFDLHNDQUFzQyxFQUFDLE1BQU0sbUZBQW1GLENBQUM7QUFDekksT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDbkYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUFDLHFDQUFxQyxFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDaEgsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sNkRBQTZELENBQUM7QUFDckcsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDbkYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0scUNBQXFDLENBQUM7QUFDdEUsT0FBTyxFQUFDLGtCQUFrQixF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RCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtTdWJzY3JpcHRpb259IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uTGluZUluZm99IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1saW5lLWluZm8uYm8nO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uUXVpY2tBY2Nlc3NTZW5kTWV0aG9kQmFzZUNvbXBvbmVudH0gZnJvbSAnLi4vdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLXNlbmQtbWV0aG9kLWJhc2UuY29tcG9uZW50JztcclxuaW1wb3J0IHtSZXBvcnRpbmdEb2N1bWVudFByaW50U2lnbkRvY0Jhc2VSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnRpbmctZG9jdW1lbnQtcHJpbnQtc2lnbi1kb2MtYmFzZS1yZXF1ZXN0JztcclxuaW1wb3J0IHtSZXBvcnRpbmdEb2N1bWVudEVtYWlsU2lnbkRvY0Jhc2VSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnRpbmctZG9jdW1lbnQtZW1haWwtc2lnbi1kb2MtYmFzZS1yZXF1ZXN0JztcclxuaW1wb3J0IHtSZXBvcnRpbmdEb2N1bWVudFBkZkJhc2VSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnRpbmctZG9jdW1lbnQtcGRmLWJhc2UtcmVxdWVzdCc7XHJcbmltcG9ydCB7UmVwb3J0TGF5b3V0U2VsZWN0aW9uRW1haWx9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydC1sYXlvdXQtc2VsZWN0aW9uLWVtYWlsLmJvJztcclxuaW1wb3J0IHtSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcmVwb3J0LWxheW91dC1zZWxlY3Rpb24tcHJpbnQuYm8nO1xyXG5pbXBvcnQge1ByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcHJpbnQtcHVyY2hhc2Utb3JkZXItZm9yLXNhbGVzLW9yZGVyLXJlcXVlc3QnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWV2ZW50LnNlcnZpY2UnO1xyXG5pbXBvcnQge0ljb25DYWNoZVNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvaWNvbi1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNjcmVlbi1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VhcmNoU2VydmljZX0gZnJvbSAnLi4vLi4vdHJhbnNhY3Rpb24tc2VhcmNoL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2VhcmNoLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uSW1hZ2VTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLWltYWdlLnNlcnZpY2UnO1xyXG5pbXBvcnQge0RpY3Rpb25hcnlTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2RpY3Rpb25hcnkuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uRGlhbG9nU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TYWxlc1Jlc2VydmF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vdHJhbnNhY3Rpb24tcmVzZXJ2YXRpb24vc2VydmljZS90cmFuc2FjdGlvbi1zYWxlcy1yZXNlcnZhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkhlYWRlclNlcnZpY2V9IGZyb20gJy4uLy4uL2NvcmUvYmFzZS9zZXJ2aWNlL3RyYW5zYWN0aW9uLWhlYWRlci5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaFZpZXd9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1zZWFyY2gtdmlldy5ibyc7XHJcbmltcG9ydCB7QmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvYmF0Y2gtdHJhbnNhY3Rpb24tc2VuZGluZy1yZXF1ZXN0JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW9yZGVyLXB1cmNoYXNlJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwicXVpY2stYWNjZXNzLWNvbnRlbnQtd3JhcHBlclwiICpuZ0lmPVwiY2FuR2VuZXJhdGUgJiYgdHJhbnNhY3Rpb25JbmZvLnRyYW5zYWN0aW9uRGVmaW5pdGl2ZVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdC1hbGwtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveFxyXG4gICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidTRUxFQ1RfQUxMX0xJTkVTJyB8IGxvY2FsaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJoYW5kbGVTZWxlY3RBbGxMaW5lcygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgPC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGNvLXF1aWNrLXNlbmQtYnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIFtkZWZhdWx0TWV0aG9kSWNvbl09XCJkZWZhdWx0U2VuZE1ldGhvZEljb25cIlxyXG4gICAgICAgICAgICAgICAgICBbc2hvd0xvYWRlcl09XCJzaG93TG9hZGVyXCJcclxuICAgICAgICAgICAgICAgICAgKHNlbmRJY29uQ2xpY2tlZCk9XCJoYW5kbGVTZW5kKGRlZmF1bHRTZW5kTWV0aG9kKVwiXHJcbiAgICAgICAgICAgICAgICAgIChvcGVuU2VuZE1ldGhvZERpYWxvZyk9XCJvcGVuU2VuZERpYWxvZygpXCI+XHJcbiAgICAgICAgICA8L2NvLXF1aWNrLXNlbmQtYnV0dG9uPlxyXG5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uXCIgW2NsYXNzLnNlbGVjdGVkXT1cInRyYW5zYWN0aW9uSGVhZGVyU2VydmljZS5yZXNlcnZhdGlvbk1vZGVcIj5cclxuICAgICAgICAgICAgICA8Y28taWNvbiAoY2xpY2spPVwiaGFuZGxlUmVzZXJ2YXRpb25Nb2RlQ2xpY2soKVwiIFtpY29uRGF0YV09XCJpY29uQ2FjaGVTZXJ2aWNlLmdldEljb24oaWNvbnMuUGFsbGV0Qm94ZXNSb3RhdGUpXCI+PC9jby1pY29uPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGNvLXNlbmQtbWV0aG9kLWRpYWxvZ1xyXG4gICAgICAgICAgICAgICpuZ0lmPVwic2hvd1NlbmRNZXRob2REaWFsb2dcIlxyXG4gICAgICAgICAgICAgIFtwcmludGVyTGlzdF09XCJwcmludGVyTGlzdFwiXHJcbiAgICAgICAgICAgICAgW2hlYWRlclRpdGxlXT1cIidDUkVBVEVfUFVSQ0hBU0VfT1JERVInIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICAgIFtkZWZhdWx0U2VuZE1ldGhvZF09XCJkZWZhdWx0U2VuZE1ldGhvZFwiXHJcbiAgICAgICAgICAgICAgW3Zpc2libGVNZXRob2RzXT1cIltzZW5kTWV0aG9kVHlwZS5QcmludF1cIlxyXG4gICAgICAgICAgICAgIFtlbWFpbEFkZHJlc3Nlc109XCJlbWFpbEFkZHJlc3Nlc1wiXHJcbiAgICAgICAgICAgICAgW2VtYWlsTGF5b3V0c109XCJlbWFpbExheW91dHNcIlxyXG4gICAgICAgICAgICAgIFtpc1ByaW50ZXJMYXlvdXRzRW5hYmxlZF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgW2lzRG9jU2lnbkVuYWJsZWRdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFsocmVwb3J0aW5nRG9jdW1lbnRFbWFpbFJlcXVlc3QpXT1cInJlcG9ydERvY3VtZW50RW1haWxSZXF1ZXN0XCJcclxuICAgICAgICAgICAgICBbKHJlcG9ydGluZ0RvY3VtZW50UHJpbnRSZXF1ZXN0KV09XCJyZXBvcnREb2N1bWVudFByaW50UmVxdWVzdFwiXHJcbiAgICAgICAgICAgICAgWyhyZXBvcnRpbmdEb2N1bWVudFBkZlJlcXVlc3QpXT1cInJlcG9ydERvY3VtZW50UGRmUmVxdWVzdFwiXHJcbiAgICAgICAgICAgICAgKGNsb3NlQ2xpY2spPVwic2hvd1NlbmRNZXRob2REaWFsb2cgPSBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgKG9rQ2xpY2spPVwiaGFuZGxlU2VuZE1ldGhvZE9rQ2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICA8L2NvLXNlbmQtbWV0aG9kLWRpYWxvZz5cclxuXHJcbiAgICAgIDxjby1zaGlwcGluZy1tZXRob2QtZGlhbG9nXHJcbiAgICAgICAgICAgICAgKm5nSWY9XCJzaG93U2hpcHBpbmdNZXRob2REaWFsb2dcIlxyXG4gICAgICAgICAgICAgIFtjYXRlZ29yeV09XCIncHVyY2hhc2UnXCJcclxuICAgICAgICAgICAgICBbc2VsZWN0ZWRUcmFuc2FjdGlvbnNdPVwic2VsZWN0ZWRUcmFuc2FjdGlvbnNcIlxyXG4gICAgICAgICAgICAgIChjYW5jZWxDbGlja2VkKT1cInNob3dTaGlwcGluZ01ldGhvZERpYWxvZyA9IGZhbHNlXCJcclxuICAgICAgICAgICAgICAoc2F2ZUNsaWNrZWQpPVwiaGFuZGxlU2hpcHBpbmdNZXRob2RPa0NsaWNrKCRldmVudClcIj5cclxuICAgICAgPC9jby1zaGlwcGluZy1tZXRob2QtZGlhbG9nPlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25RdWlja0FjY2Vzc09yZGVyUHVyY2hhc2VDb21wb25lbnQgZXh0ZW5kcyBUcmFuc2FjdGlvblF1aWNrQWNjZXNzU2VuZE1ldGhvZEJhc2VDb21wb25lbnQge1xyXG5cclxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmNvLXRyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1vcmRlci1wdXJjaGFzZScpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNhbkdlbmVyYXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dTaGlwcGluZ01ldGhvZERpYWxvZzogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzZWxlY3RlZFRyYW5zYWN0aW9uczogVHJhbnNhY3Rpb25TZWFyY2hWaWV3W10gPSBbXTtcclxuXHJcbiAgcHVibGljIHJlcG9ydERvY3VtZW50RW1haWxSZXF1ZXN0OiBSZXBvcnRpbmdEb2N1bWVudEVtYWlsU2lnbkRvY0Jhc2VSZXF1ZXN0ID0gbmV3IFJlcG9ydGluZ0RvY3VtZW50RW1haWxTaWduRG9jQmFzZVJlcXVlc3QoKTtcclxuICBwdWJsaWMgcmVwb3J0RG9jdW1lbnRQcmludFJlcXVlc3Q6IFJlcG9ydGluZ0RvY3VtZW50UHJpbnRTaWduRG9jQmFzZVJlcXVlc3QgPSBuZXcgUmVwb3J0aW5nRG9jdW1lbnRQcmludFNpZ25Eb2NCYXNlUmVxdWVzdCgpO1xyXG4gIHB1YmxpYyByZXBvcnREb2N1bWVudFBkZlJlcXVlc3Q6IFJlcG9ydGluZ0RvY3VtZW50UGRmQmFzZVJlcXVlc3QgPSBuZXcgUmVwb3J0aW5nRG9jdW1lbnRQZGZCYXNlUmVxdWVzdCgpO1xyXG5cclxuICBwdWJsaWMgZGVmYXVsdFNlbmRNZXRob2Q6IHN0cmluZztcclxuICBwcml2YXRlIGRlZmF1bHRTZW5kTWV0aG9kSW5pdGlhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfc3ViczogU3Vic2NyaXB0aW9uW10gPSBbXTtcclxuXHJcbiAgY29uc3RydWN0b3Ioc2VhcmNoU2VydmljZTogVHJhbnNhY3Rpb25TZWFyY2hTZXJ2aWNlLCB0cmFuc2FjdGlvbkhlYWRlclNlcnZpY2U6IFRyYW5zYWN0aW9uSGVhZGVyU2VydmljZSwgdHJhbnNhY3Rpb25FdmVudFNlcnZpY2U6IFRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLCBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLCBzY3JlZW5Db25maWdTZXJ2aWNlOiBUcmFuc2FjdGlvblNjcmVlbkNvbmZpZ3VyYXRpb25TZXJ2aWNlLCBpbWFnZVNlcnZpY2U6IFRyYW5zYWN0aW9uSW1hZ2VTZXJ2aWNlLCBkaWN0aW9uYXJ5U2VydmljZTogRGljdGlvbmFyeVNlcnZpY2UsIHRyYW5zYWN0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLCBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsIGRpYWxvZ1NlcnZpY2U6IFRyYW5zYWN0aW9uRGlhbG9nU2VydmljZSwgcHVibGljIHNhbGVzUmVzZXJ2YXRpb25TZXJ2aWNlOiBUcmFuc2FjdGlvblNhbGVzUmVzZXJ2YXRpb25TZXJ2aWNlKSB7XHJcbiAgICBzdXBlcihzZWFyY2hTZXJ2aWNlLCB0cmFuc2FjdGlvbkhlYWRlclNlcnZpY2UsIHRyYW5zYWN0aW9uRXZlbnRTZXJ2aWNlLCBpY29uQ2FjaGVTZXJ2aWNlLCBzY3JlZW5Db25maWdTZXJ2aWNlLCBpbWFnZVNlcnZpY2UsIGRpY3Rpb25hcnlTZXJ2aWNlLCB0cmFuc2FjdGlvblNlcnZpY2UsIGNoYW5nZURldGVjdG9yLCBkaWFsb2dTZXJ2aWNlKTtcclxuXHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLl9zdWJzLnB1c2goXHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2UudHJhbnNhY3Rpb25MaW5lQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fY2hlY2tQdXJjaGFzZU9yZGVycygpKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IHRyYW5zSXRlbSA9IHRoaXMudHJhbnNhY3Rpb24gYXMgdW5rbm93biBhcyBUcmFuc2FjdGlvblNlYXJjaFZpZXc7XHJcbiAgICB0aGlzLnNlbGVjdGVkVHJhbnNhY3Rpb25zLnB1c2godHJhbnNJdGVtKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2VsZWN0QWxsTGluZXModmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2Uuc2VsZWN0QWxsU2FsZXNPcmRlckxpbmVzRm9yUHVyY2hhc2UubmV4dCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlU2VuZChtZXRob2Q6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgY29uc3QgaXNQcmludERlZmF1bHRNZXRob2Q6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5pc1ByaW50SXNEZWZhdWx0U2VuZE1ldGhvZEZvclB1cmNoYXNlT3JkZXIodGhpcy50cmFuc2FjdGlvbkluZm8uaWQpO1xyXG4gICAgaWYgKGlzUHJpbnREZWZhdWx0TWV0aG9kKSB7XHJcbiAgICAgIHRoaXMuc2hvd1NoaXBwaW5nTWV0aG9kRGlhbG9nID0gdHJ1ZTtcclxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBhd2FpdCB0aGlzLnByaW50RG9jdW1lbnQodGhpcy5yZXBvcnREb2N1bWVudFByaW50UmVxdWVzdCk7XHJcbiAgICAgIHRoaXMuX3NldERlZmF1bHRNZXRob2QobWV0aG9kKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVTZW5kTWV0aG9kT2tDbGljayhtZXRob2Q6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5zaG93U2VuZE1ldGhvZERpYWxvZyA9IGZhbHNlO1xyXG4gICAgYXdhaXQgdGhpcy5wcmludERvY3VtZW50KHRoaXMucmVwb3J0RG9jdW1lbnRQcmludFJlcXVlc3QpO1xyXG4gICAgdGhpcy5fc2V0RGVmYXVsdE1ldGhvZChtZXRob2QpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZVNoaXBwaW5nTWV0aG9kT2tDbGljayhyZXF1ZXN0OiBCYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc2hvd1NoaXBwaW5nTWV0aG9kRGlhbG9nID0gZmFsc2U7XHJcblxyXG4gICAgaWYgKHJlcXVlc3QucHJpbnRlck5hbWUpIHtcclxuICAgICAgdGhpcy5yZXBvcnREb2N1bWVudFByaW50UmVxdWVzdC5wcmludGVyTmFtZSA9IHJlcXVlc3QucHJpbnRlck5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGVmYXVsdE1ldGhvZE51bWJlcjogbnVtYmVyID0gdHlwZW9mIHRoaXMuZGVmYXVsdFNlbmRNZXRob2QgPT09ICdudW1iZXInID8gdGhpcy5kZWZhdWx0U2VuZE1ldGhvZCA6IDE7XHJcblxyXG4gICAgLy8gRGV0ZXJtaW5lIHRoZSBvdmVycmlkZGVuIHNlbmQgbWV0aG9kLCBwcmlvcml0aXppbmcgcHJpbnQsIGVtYWlsLCBhbmQgdGhlbiBFRElcclxuICAgIGNvbnN0IHNlbGVjdGVkTWV0aG9kTnVtYmVyOiBudW1iZXIgPSByZXF1ZXN0Lm92ZXJydWxlU2VuZE1ldGhvZEZvclByaW50aW5nXHJcbiAgICAgIHx8IHJlcXVlc3Qub3ZlcnJ1bGVTZW5kTWV0aG9kRm9yRW1haWxcclxuICAgICAgfHwgcmVxdWVzdC5vdmVycnVsZVNlbmRNZXRob2RGb3JFRElcclxuICAgICAgfHwgZGVmYXVsdE1ldGhvZE51bWJlcjsgLy8gRW5zdXJlIGZhbGxiYWNrIGlzIGFsd2F5cyBhIG51bWJlclxyXG5cclxuICAgIGNvbnN0IG1ldGhvZFN0cmluZyA9IHNlbGVjdGVkTWV0aG9kTnVtYmVyLnRvU3RyaW5nKCk7XHJcblxyXG4gICAgYXdhaXQgdGhpcy5wcmludERvY3VtZW50KHRoaXMucmVwb3J0RG9jdW1lbnRQcmludFJlcXVlc3QpO1xyXG4gICAgdGhpcy5fc2V0RGVmYXVsdE1ldGhvZChtZXRob2RTdHJpbmcpO1xyXG5cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVSZXNlcnZhdGlvbk1vZGVDbGljaygpIHtcclxuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uPy50cmFuc2FjdGlvbkluZm8/LmlkKSB7XHJcbiAgICAgIGlmICghdGhpcy50cmFuc2FjdGlvbkhlYWRlclNlcnZpY2UucmVzZXJ2YXRpb25Nb2RlKSB7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5zYWxlc1Jlc2VydmF0aW9uU2VydmljZS5nZXRTYWxlc09yZGVyTGluZXModGhpcy50cmFuc2FjdGlvbi50cmFuc2FjdGlvbkluZm8uaWQpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2FsZXNSZXNlcnZhdGlvblNlcnZpY2UucHVyY2hhc2VSZXNlcnZhdGlvbnMgPSBbXTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy50cmFuc2FjdGlvbkhlYWRlclNlcnZpY2UucmVzZXJ2YXRpb25Nb2RlID0gIXRoaXMudHJhbnNhY3Rpb25IZWFkZXJTZXJ2aWNlLnJlc2VydmF0aW9uTW9kZTtcclxuICAgICAgdGhpcy50cmFuc2FjdGlvbkhlYWRlclNlcnZpY2UucmVzZXJ2YXRpb25TdGF0ZUNoYW5nZS5uZXh0KHRoaXMudHJhbnNhY3Rpb25IZWFkZXJTZXJ2aWNlLnJlc2VydmF0aW9uTW9kZSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cmFuc2FjdGlvblNldCgpIHtcclxuICAgIHN1cGVyLnRyYW5zYWN0aW9uU2V0KCk7XHJcbiAgICB0aGlzLl9jaGVja1B1cmNoYXNlT3JkZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlblNlbmREaWFsb2coKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dTaGlwcGluZ01ldGhvZERpYWxvZyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jaGVja1B1cmNoYXNlT3JkZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW5HZW5lcmF0ZSA9IHRoaXMudHJhbnNhY3Rpb25MaW5lcyAmJlxyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uTGluZXMuZmlsdGVyKGwgPT4gbC5jb21taXNzaW9uQ29kZSA9PT0gJzAnICYmIChsLmFydGljbGVMaW5lU3RhdHVzICYmIGwuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlPcmRlcmVkICE9PSBsLmFtb3VudCkpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3QoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0RGVmYXVsdFNlbmRNZXRob2QoKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgIGlmICh0aGlzLmRlZmF1bHRTZW5kTWV0aG9kSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgcmV0dXJuIHBhcnNlSW50KHRoaXMuZGVmYXVsdFNlbmRNZXRob2QpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGVmYXVsdE1ldGhvZE51bWJlciA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmlzUHJpbnRJc0RlZmF1bHRTZW5kTWV0aG9kRm9yUHVyY2hhc2VPcmRlcih0aGlzLnRyYW5zYWN0aW9uSW5mby5pZCkgPyAxIDogMjtcclxuXHJcbiAgICB0aGlzLmRlZmF1bHRTZW5kTWV0aG9kID0gZGVmYXVsdE1ldGhvZE51bWJlci50b1N0cmluZygpO1xyXG4gICAgdGhpcy5kZWZhdWx0U2VuZE1ldGhvZEluaXRpYWxpemVkID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gZGVmYXVsdE1ldGhvZE51bWJlcjtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRFbWFpbExheW91dHMoKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbFtdPiB7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRQcmludExheW91dHMoKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFtdKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBwZGZEb2N1bWVudChyZXF1ZXN0OiBSZXBvcnRpbmdEb2N1bWVudFBkZkJhc2VSZXF1ZXN0KSB7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZW1haWxEb2N1bWVudChyZXF1ZXN0OiBSZXBvcnRpbmdEb2N1bWVudEVtYWlsU2lnbkRvY0Jhc2VSZXF1ZXN0KSB7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYXN5bmMgcHJpbnREb2N1bWVudChyZXF1ZXN0OiBSZXBvcnRpbmdEb2N1bWVudFByaW50U2lnbkRvY0Jhc2VSZXF1ZXN0KSB7XHJcbiAgICBjb25zdCBwcmludFB1cmNoYXNlT3JkZXJGb3JTYWxlc09yZGVyUmVxdWVzdDogUHJpbnRQdXJjaGFzZU9yZGVyRm9yU2FsZXNPcmRlclJlcXVlc3QgPVxyXG4gICAgICBPYmplY3QuYXNzaWduKG5ldyBQcmludFB1cmNoYXNlT3JkZXJGb3JTYWxlc09yZGVyUmVxdWVzdCgpLCByZXF1ZXN0KTtcclxuICAgIGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdlbmVyYXRlQW5kU2VuZFB1cmNoYXNlT3JkZXJzRm9yU2FsZXNPcmRlcihwcmludFB1cmNoYXNlT3JkZXJGb3JTYWxlc09yZGVyUmVxdWVzdCwgdGhpcy50cmFuc2FjdGlvbkluZm8udmVyc2lvbik7XHJcbiAgfVxyXG59XHJcbiJdfQ==
252
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW9yZGVyLXB1cmNoYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy90cmFuc2FjdGlvbi1xdWljay1hY2Nlc3Mtb3JkZXItcHVyY2hhc2UvdHJhbnNhY3Rpb24tcXVpY2stYWNjZXNzLW9yZGVyLXB1cmNoYXNlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRXRHLE9BQU8sRUFBQyw2Q0FBNkMsRUFBQyxNQUFNLHdEQUF3RCxDQUFDO0FBQ3JILE9BQU8sRUFBQyx3Q0FBd0MsRUFBQyxNQUFNLDhFQUE4RSxDQUFDO0FBQ3RJLE9BQU8sRUFBQyx3Q0FBd0MsRUFBQyxNQUFNLDhFQUE4RSxDQUFDO0FBQ3RJLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLG1FQUFtRSxDQUFDO0FBR2xILE9BQU8sRUFBQyxzQ0FBc0MsRUFBQyxNQUFNLG1GQUFtRixDQUFDO0FBQ3pJLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ25GLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxxQ0FBcUMsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQ2hILE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDZEQUE2RCxDQUFDO0FBQ3JHLE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQ25GLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFB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QXdCLENBQUM7WUFDdkksc0NBQXNDLENBQUMseUJBQXlCLEdBQUcsSUFBSSxDQUFDLHNDQUFzQyxDQUFDLHlCQUF5QixDQUFDO1lBQ3pJLHNDQUFzQyxDQUFDLDZCQUE2QixHQUFHLElBQUksQ0FBQyxzQ0FBc0MsQ0FBQyw2QkFBNkIsQ0FBQztZQUNqSixNQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQywwQ0FBMEMsQ0FBQyxzQ0FBc0MsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDOztLQUNoSjs7O1lBN1BGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsNENBQTRDO2dCQUN0RCxRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVDVDtnQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTthQUN0Qzs7O1lBaEVPLHdCQUF3QjtZQU14Qix3QkFBd0I7WUFUeEIsdUJBQXVCO1lBQ3ZCLGdCQUFnQjtZQUNoQixxQ0FBcUM7WUFFckMsdUJBQXVCO1lBQ3ZCLGlCQUFpQjtZQUNqQixrQkFBa0I7WUFmbEIsaUJBQWlCO1lBZ0JqQix3QkFBd0I7WUFDeEIsa0NBQWtDOzs7d0JBOER2QyxXQUFXLFNBQUMsa0RBQWtEO3FDQUs5RCxTQUFTLFNBQUMsaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBIb3N0QmluZGluZywgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7U3Vic2NyaXB0aW9ufSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblF1aWNrQWNjZXNzU2VuZE1ldGhvZEJhc2VDb21wb25lbnR9IGZyb20gJy4uL3RyYW5zYWN0aW9uLXF1aWNrLWFjY2Vzcy1zZW5kLW1ldGhvZC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7UmVwb3J0aW5nRG9jdW1lbnRQcmludFNpZ25Eb2NCYXNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcmVwb3J0aW5nLWRvY3VtZW50LXByaW50LXNpZ24tZG9jLWJhc2UtcmVxdWVzdCc7XHJcbmltcG9ydCB7UmVwb3J0aW5nRG9jdW1lbnRFbWFpbFNpZ25Eb2NCYXNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcmVwb3J0aW5nLWRvY3VtZW50LWVtYWlsLXNpZ24tZG9jLWJhc2UtcmVxdWVzdCc7XHJcbmltcG9ydCB7UmVwb3J0aW5nRG9jdW1lbnRQZGZCYXNlUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L21haW5hcGkvYnVpbGQvbW9kZWwvcmVwb3J0aW5nLWRvY3VtZW50LXBkZi1iYXNlLXJlcXVlc3QnO1xyXG5pbXBvcnQge1JlcG9ydExheW91dFNlbGVjdGlvbkVtYWlsfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9yZXBvcnQtbGF5b3V0LXNlbGVjdGlvbi1lbWFpbC5ibyc7XHJcbmltcG9ydCB7UmVwb3J0TGF5b3V0U2VsZWN0aW9uUHJpbnR9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3JlcG9ydC1sYXlvdXQtc2VsZWN0aW9uLXByaW50LmJvJztcclxuaW1wb3J0IHtQcmludFB1cmNoYXNlT3JkZXJGb3JTYWxlc09yZGVyUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3ByaW50LXB1cmNoYXNlLW9yZGVyLWZvci1zYWxlcy1vcmRlci1yZXF1ZXN0JztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkV2ZW50U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1ldmVudC5zZXJ2aWNlJztcclxuaW1wb3J0IHtJY29uQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2ljb24tY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TY3JlZW5Db25maWd1cmF0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1zY3JlZW4tY29uZmlndXJhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlYXJjaFNlcnZpY2V9IGZyb20gJy4uLy4uL3RyYW5zYWN0aW9uLXNlYXJjaC9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNlYXJjaC5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkltYWdlU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1pbWFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtEaWN0aW9uYXJ5U2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9kaWN0aW9uYXJ5LnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkRpYWxvZ1NlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvdHJhbnNhY3Rpb24tZGlhbG9nLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2FsZXNSZXNlcnZhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uL3RyYW5zYWN0aW9uLXJlc2VydmF0aW9uL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2FsZXMtcmVzZXJ2YXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25IZWFkZXJTZXJ2aWNlfSBmcm9tICcuLi8uLi9jb3JlL2Jhc2Uvc2VydmljZS90cmFuc2FjdGlvbi1oZWFkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hWaWV3fSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvdHJhbnNhY3Rpb24tc2VhcmNoLXZpZXcuYm8nO1xyXG5pbXBvcnQge0JhdGNoVHJhbnNhY3Rpb25TZW5kaW5nUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2JhdGNoLXRyYW5zYWN0aW9uLXNlbmRpbmctcmVxdWVzdCc7XHJcbmltcG9ydCB7UHJpbnRlcn0gZnJvbSBcIkBjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3ByaW50ZXIuYm9cIjtcclxuaW1wb3J0IHtMYXlvdXRDb2RlfSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL2VudW0vbGF5b3V0LWNvZGUuZW51bVwiO1xyXG5pbXBvcnQge1BkZkhpc3RvcmljSW52b2ljZVJlcXVlc3R9IGZyb20gXCJAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvcGRmLWhpc3RvcmljLWludm9pY2UtcmVxdWVzdFwiO1xyXG5pbXBvcnQge1BkZkludm9pY2VSZXF1ZXN0fSBmcm9tIFwiQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3BkZi1pbnZvaWNlLXJlcXVlc3RcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlbmREb2N1bWVudHNDb21wb25lbnR9IGZyb20gXCIuLi8uLi90cmFuc2FjdGlvbi1zZW5kLWRvY3VtZW50cy90cmFuc2FjdGlvbi1zZW5kLWRvY3VtZW50cy5jb21wb25lbnRcIjtcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkluZm9SZXNwb25zZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC90cmFuc2FjdGlvbi1pbmZvLXJlc3BvbnNlLmJvXCI7XHJcblxyXG5pbnRlcmZhY2UgT3ZlcnJ1bGVPcHRpb25zIHtcclxuICBjb2RlOiBudW1iZXI7XHJcbiAgZGVzY3JpcHRpb246IHN0cmluZztcclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdjby10cmFuc2FjdGlvbi1xdWljay1hY2Nlc3Mtb3JkZXItcHVyY2hhc2UnLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwicXVpY2stYWNjZXNzLWNvbnRlbnQtd3JhcHBlclwiICpuZ0lmPVwiY2FuR2VuZXJhdGUgJiYgdHJhbnNhY3Rpb25JbmZvLnRyYW5zYWN0aW9uRGVmaW5pdGl2ZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0LWFsbC13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94XHJcbiAgICAgICAgICBbbGFiZWxdPVwiJ1NFTEVDVF9BTExfTElORVMnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImhhbmRsZVNlbGVjdEFsbExpbmVzKCRldmVudClcIj5cclxuICAgICAgICA8L2NvLWlucHV0LWNoZWNrYm94PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGNvLXF1aWNrLXNlbmQtYnV0dG9uXHJcbiAgICAgICAgW2RlZmF1bHRNZXRob2RJY29uXT1cImRlZmF1bHRTZW5kTWV0aG9kSWNvblwiXHJcbiAgICAgICAgW3Nob3dMb2FkZXJdPVwic2hvd0xvYWRlclwiXHJcbiAgICAgICAgKHNlbmRJY29uQ2xpY2tlZCk9XCJoYW5kbGVTZW5kKGRlZmF1bHRTZW5kTWV0aG9kKVwiXHJcbiAgICAgICAgKG9wZW5TZW5kTWV0aG9kRGlhbG9nKT1cIm9wZW5TZW5kRGlhbG9nKClcIj5cclxuICAgICAgPC9jby1xdWljay1zZW5kLWJ1dHRvbj5cclxuXHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiYnV0dG9uXCIgW2NsYXNzLnNlbGVjdGVkXT1cInRyYW5zYWN0aW9uSGVhZGVyU2VydmljZS5yZXNlcnZhdGlvbk1vZGVcIj5cclxuICAgICAgICAgICAgPGNvLWljb24gKGNsaWNrKT1cImhhbmRsZVJlc2VydmF0aW9uTW9kZUNsaWNrKClcIiBbaWNvbkRhdGFdPVwiaWNvbkNhY2hlU2VydmljZS5nZXRJY29uKGljb25zLlBhbGxldEJveGVzUm90YXRlKVwiPjwvY28taWNvbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8Y28tc2VuZC1tZXRob2QtZGlhbG9nICpuZ0lmPVwic2hvd1NlbmRNZXRob2REaWFsb2dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVhZGVyVGl0bGVdPVwiJ0NSRUFURV9QVVJDSEFTRV9PUkRFUicgfCBsb2NhbGl6ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwcmludGVyTGlzdF09XCJwcmludGVyTGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkZWZhdWx0U2VuZE1ldGhvZF09XCJkZWZhdWx0U2VuZE1ldGhvZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aXNpYmxlTWV0aG9kc109XCJbc2VuZE1ldGhvZFR5cGUuUHJpbnQsIHNlbmRNZXRob2RUeXBlLkVtYWlsXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbWFpbEFkZHJlc3Nlc109XCJlbWFpbEFkZHJlc3Nlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbWFpbExheW91dHNdPVwiZW1haWxMYXlvdXRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ByaW50TGF5b3V0c109XCJwcmludExheW91dHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdFByaW50ZXJOYW1lXT1cImRlZmF1bHRQcmludGVyTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlUGRmUHJldmlld109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzRG9jU2lnbkVuYWJsZWRdPVwidHJ1ZVwiXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbKHJlcG9ydGluZ0RvY3VtZW50RW1haWxSZXF1ZXN0KV09XCJyZXBvcnREb2N1bWVudEVtYWlsUmVxdWVzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFsocmVwb3J0aW5nRG9jdW1lbnRQcmludFJlcXVlc3QpXT1cInJlcG9ydERvY3VtZW50UHJpbnRSZXF1ZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhyZXBvcnRpbmdEb2N1bWVudFBkZlJlcXVlc3QpXT1cInJlcG9ydERvY3VtZW50UGRmUmVxdWVzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbG9zZUNsaWNrKT1cInNob3dTZW5kTWV0aG9kRGlhbG9nID0gZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAob2tDbGljayk9XCJoYW5kbGVTZW5kTWV0aG9kT2tDbGljaygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZVB1cmNoYXNlU2VuZE1ldGhvZF09XCJ0cnVlXCJcclxuICAgID48L2NvLXNlbmQtbWV0aG9kLWRpYWxvZz5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uUXVpY2tBY2Nlc3NPcmRlclB1cmNoYXNlQ29tcG9uZW50IGV4dGVuZHMgVHJhbnNhY3Rpb25RdWlja0FjY2Vzc1NlbmRNZXRob2RCYXNlQ29tcG9uZW50IHtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5jby10cmFuc2FjdGlvbi1xdWljay1hY2Nlc3Mtb3JkZXItcHVyY2hhc2UnKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIEBWaWV3Q2hpbGQoVHJhbnNhY3Rpb25TZW5kRG9jdW1lbnRzQ29tcG9uZW50KVxyXG4gIHB1YmxpYyBzZW5kRG9jdW1lbnRzQ29tcG9uZW50OiBUcmFuc2FjdGlvblNlbmREb2N1bWVudHNDb21wb25lbnQ7XHJcblxyXG4gIHB1YmxpYyBjYW5HZW5lcmF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyBzaG93U2hpcHBpbmdNZXRob2REaWFsb2c6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2VsZWN0ZWRUcmFuc2FjdGlvbnM6IFRyYW5zYWN0aW9uU2VhcmNoVmlld1tdID0gW107XHJcblxyXG4gIHB1YmxpYyByZXBvcnREb2N1bWVudEVtYWlsUmVxdWVzdDogUmVwb3J0aW5nRG9jdW1lbnRFbWFpbFNpZ25Eb2NCYXNlUmVxdWVzdCA9IG5ldyBSZXBvcnRpbmdEb2N1bWVudEVtYWlsU2lnbkRvY0Jhc2VSZXF1ZXN0KCk7XHJcbiAgcHVibGljIHJlcG9ydERvY3VtZW50UHJpbnRSZXF1ZXN0OiBSZXBvcnRpbmdEb2N1bWVudFByaW50U2lnbkRvY0Jhc2VSZXF1ZXN0ID0gbmV3IFJlcG9ydGluZ0RvY3VtZW50UHJpbnRTaWduRG9jQmFzZVJlcXVlc3QoKTtcclxuICBwdWJsaWMgcmVwb3J0RG9jdW1lbnRQZGZSZXF1ZXN0OiBSZXBvcnRpbmdEb2N1bWVudFBkZkJhc2VSZXF1ZXN0ID0gbmV3IFJlcG9ydGluZ0RvY3VtZW50UGRmQmFzZVJlcXVlc3QoKTtcclxuICBwdWJsaWMgYmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0OiBCYXRjaFRyYW5zYWN0aW9uU2VuZGluZ1JlcXVlc3QgPSBuZXcgQmF0Y2hUcmFuc2FjdGlvblNlbmRpbmdSZXF1ZXN0KCk7XHJcbiAgcHVibGljIHByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0OiBQcmludFB1cmNoYXNlT3JkZXJGb3JTYWxlc09yZGVyUmVxdWVzdCA9IG5ldyBQcmludFB1cmNoYXNlT3JkZXJGb3JTYWxlc09yZGVyUmVxdWVzdCgpO1xyXG5cclxuICBwdWJsaWMgdXNlRGVmYXVsdExheW91dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHB1YmxpYyB1c2VEZWZhdWx0U2hpcHBpbmdNZXRob2RzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNhdmVEZWZhdWx0UHJpbnRlckZvclVzZXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2F2ZURlZmF1bHRQcmludGVyRm9yQWxsVXNlcnM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgcHJpbnRlckxpc3Q6IFByaW50ZXJbXSA9IFtdO1xyXG4gIHB1YmxpYyBzZWxlY3RlZFByaW50ZXI6IFByaW50ZXI7XHJcbiAgcHVibGljIG92ZXJydWxlZEVtYWlsOiBPdmVycnVsZU9wdGlvbnM7XHJcbiAgcHVibGljIG92ZXJydWxlZEVkaTogT3ZlcnJ1bGVPcHRpb25zO1xyXG4gIHB1YmxpYyBvdmVycnVsZWRQcmludDogT3ZlcnJ1bGVPcHRpb25zO1xyXG4gIHB1YmxpYyByZXBvcnRJZEZvclByaW50aW5nOiBudW1iZXI7XHJcbiAgcHVibGljIHJlcG9ydElkRm9yRW1haWw6IG51bWJlcjtcclxuXHJcbiAgcHVibGljIGRlZmF1bHRTZW5kTWV0aG9kOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBkZWZhdWx0U2VuZE1ldGhvZEluaXRpYWxpemVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIHByaXZhdGUgX3N1YnM6IFN1YnNjcmlwdGlvbltdID0gW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgc2VhcmNoU2VydmljZTogVHJhbnNhY3Rpb25TZWFyY2hTZXJ2aWNlLFxyXG4gICAgdHJhbnNhY3Rpb25IZWFkZXJTZXJ2aWNlOiBUcmFuc2FjdGlvbkhlYWRlclNlcnZpY2UsXHJcbiAgICB0cmFuc2FjdGlvbkV2ZW50U2VydmljZTogVHJhbnNhY3Rpb25FdmVudFNlcnZpY2UsXHJcbiAgICBpY29uQ2FjaGVTZXJ2aWNlOiBJY29uQ2FjaGVTZXJ2aWNlLFxyXG4gICAgc2NyZWVuQ29uZmlnU2VydmljZTogVHJhbnNhY3Rpb25TY3JlZW5Db25maWd1cmF0aW9uU2VydmljZSxcclxuICAgIGltYWdlU2VydmljZTogVHJhbnNhY3Rpb25JbWFnZVNlcnZpY2UsXHJcbiAgICBkaWN0aW9uYXJ5U2VydmljZTogRGljdGlvbmFyeVNlcnZpY2UsXHJcbiAgICB0cmFuc2FjdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcclxuICAgIGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIGRpYWxvZ1NlcnZpY2U6IFRyYW5zYWN0aW9uRGlhbG9nU2VydmljZSxcclxuICAgIHB1YmxpYyBzYWxlc1Jlc2VydmF0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TYWxlc1Jlc2VydmF0aW9uU2VydmljZVxyXG4gICkge1xyXG4gICAgc3VwZXIoc2VhcmNoU2VydmljZSwgdHJhbnNhY3Rpb25IZWFkZXJTZXJ2aWNlLCB0cmFuc2FjdGlvbkV2ZW50U2VydmljZSwgaWNvbkNhY2hlU2VydmljZSwgc2NyZWVuQ29uZmlnU2VydmljZSwgaW1hZ2VTZXJ2aWNlLCBkaWN0aW9uYXJ5U2VydmljZSwgdHJhbnNhY3Rpb25TZXJ2aWNlLCBjaGFuZ2VEZXRlY3RvciwgZGlhbG9nU2VydmljZSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcbiAgICB0aGlzLl9zdWJzLnB1c2goXHJcbiAgICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2UudHJhbnNhY3Rpb25MaW5lQ2hhbmdlZC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fY2hlY2tQdXJjaGFzZU9yZGVycygpKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IHRyYW5zSXRlbSA9IHRoaXMudHJhbnNhY3Rpb24gYXMgdW5rbm93biBhcyBUcmFuc2FjdGlvblNlYXJjaFZpZXc7XHJcbiAgICB0aGlzLnNlbGVjdGVkVHJhbnNhY3Rpb25zLnB1c2godHJhbnNJdGVtKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3Vicy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcclxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2VsZWN0QWxsTGluZXModmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25FdmVudFNlcnZpY2Uuc2VsZWN0QWxsU2FsZXNPcmRlckxpbmVzRm9yUHVyY2hhc2UubmV4dCh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgaGFuZGxlU2VuZChtZXRob2Q6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgLy8gY29uc3QgaXNQcmludERlZmF1bHRNZXRob2Q6IGJvb2xlYW4gPSBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5pc1ByaW50SXNEZWZhdWx0U2VuZE1ldGhvZEZvclB1cmNoYXNlT3JkZXIodGhpcy50cmFuc2FjdGlvbkluZm8uaWQpO1xyXG4gICAgLy8gaWYgKGlzUHJpbnREZWZhdWx0TWV0aG9kKSB7XHJcbiAgICB0aGlzLnNob3dTZW5kTWV0aG9kRGlhbG9nID0gdHJ1ZTtcclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgLyogfSBlbHNlIHtcclxuICAgICAgIGF3YWl0IHRoaXMucHJpbnREb2N1bWVudCh0aGlzLnJlcG9ydERvY3VtZW50UHJpbnRSZXF1ZXN0KTtcclxuICAgICAgIHRoaXMuX3NldERlZmF1bHRNZXRob2QobWV0aG9kKTtcclxuICAgICB9ICovXHJcbiAgfVxyXG4gIHB1YmxpYyBhc3luYyBoYW5kbGVTZW5kTWV0aG9kT2tDbGljayhtZXRob2REYXRhOiBhbnkpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuc2hvd1NlbmRNZXRob2REaWFsb2cgPSBmYWxzZTtcclxuXHJcbiAgICB0aGlzLnVzZURlZmF1bHRMYXlvdXQgPSBtZXRob2REYXRhLnVzZURlZmF1bHRMYXlvdXQ7XHJcbiAgICB0aGlzLnVzZURlZmF1bHRTaGlwcGluZ01ldGhvZHMgPSBtZXRob2REYXRhLnVzZURlZmF1bHRTaGlwcGluZ01ldGhvZHM7XHJcbiAgICB0aGlzLnNhdmVEZWZhdWx0UHJpbnRlckZvclVzZXIgPSBtZXRob2REYXRhLnNhdmVEZWZhdWx0UHJpbnRlckZvclVzZXI7XHJcbiAgICB0aGlzLnNhdmVEZWZhdWx0UHJpbnRlckZvckFsbFVzZXJzID0gbWV0aG9kRGF0YS5zYXZlRGVmYXVsdFByaW50ZXJGb3JBbGxVc2VycztcclxuICAgIHRoaXMucmVwb3J0SWRGb3JQcmludGluZyA9IG1ldGhvZERhdGEucmVwb3J0SWRGb3JQcmludGluZz8ucmVwb3J0SWQ7XHJcbiAgICB0aGlzLnJlcG9ydElkRm9yRW1haWwgPSBtZXRob2REYXRhLnJlcG9ydElkRm9yRW1haWw/LnJlcG9ydElkO1xyXG5cclxuICAgIGlmICghdGhpcy51c2VEZWZhdWx0U2hpcHBpbmdNZXRob2RzKSB7XHJcbiAgICAgIHRoaXMub3ZlcnJ1bGVkRW1haWwgPSBtZXRob2REYXRhLm92ZXJydWxlZEVtYWlsO1xyXG4gICAgICB0aGlzLm92ZXJydWxlZEVkaSA9IG1ldGhvZERhdGEub3ZlcnJ1bGVkRWRpO1xyXG4gICAgICB0aGlzLm92ZXJydWxlZFByaW50ID0gbWV0aG9kRGF0YS5vdmVycnVsZWRQcmludDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIXRoaXMudXNlRGVmYXVsdExheW91dCkge1xyXG4gICAgICBpZiAodGhpcy5yZXBvcnRJZEZvclByaW50aW5nKSB7XHJcbiAgICAgICAgdGhpcy5wcmludFB1cmNoYXNlT3JkZXJGb3JTYWxlc09yZGVyUmVxdWVzdC5yZXBvcnRJZEZvclByaW50aW5nID0gdGhpcy5yZXBvcnRJZEZvclByaW50aW5nO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnJlcG9ydElkRm9yRW1haWwpIHtcclxuICAgICAgICB0aGlzLnByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0LnJlcG9ydElkRm9yRW1haWwgPSB0aGlzLnJlcG9ydElkRm9yRW1haWw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAobWV0aG9kRGF0YS5wcmludGVyTmFtZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkUHJpbnRlciA9IHRoaXMucHJpbnRlckxpc3QuZmluZChwID0+IHAubmFtZSA9PT0gbWV0aG9kRGF0YS5wcmludGVyTmFtZSkgfHwgbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0LnVzZVJlbGF0aW9uU3BlY2lmaWNSZXBvcnRzID0gdGhpcy51c2VEZWZhdWx0TGF5b3V0O1xyXG4gICAgdGhpcy5wcmludFB1cmNoYXNlT3JkZXJGb3JTYWxlc09yZGVyUmVxdWVzdC51c2VSZWxhdGlvblNwZWNpZmljU2VuZE1ldGhvZHMgPSB0aGlzLnVzZURlZmF1bHRTaGlwcGluZ01ldGhvZHM7XHJcbiAgICB0aGlzLnByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0LnNhdmVEZWZhdWx0UHJpbnRlckZvclVzZXIgPSB0aGlzLnNhdmVEZWZhdWx0UHJpbnRlckZvclVzZXI7XHJcbiAgICB0aGlzLnByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0LnNhdmVEZWZhdWx0UHJpbnRlckZvckFsbFVzZXJzID0gdGhpcy5zYXZlRGVmYXVsdFByaW50ZXJGb3JBbGxVc2VycztcclxuICAgIHRoaXMucHJpbnRQdXJjaGFzZU9yZGVyRm9yU2FsZXNPcmRlclJlcXVlc3QucHJpbnRlck5hbWUgPSB0aGlzLnNlbGVjdGVkUHJpbnRlcj8ubmFtZSB8fCBudWxsO1xyXG5cclxuICAgIGlmICghdGhpcy51c2VEZWZhdWx0U2hpcHBpbmdNZXRob2RzKSB7XHJcbiAgICAgIHRoaXMucHJpbnRQdXJjaGFzZU9yZGVyRm9yU2FsZXNPcmRlclJlcXVlc3Qub3ZlcnJ1bGVTZW5kTWV0aG9kRm9yRW1haWwgPSB0aGlzLm92ZXJydWxlZEVtYWlsPy5jb2RlO1xyXG4gICAgICB0aGlzLnByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0Lm92ZXJydWxlU2VuZE1ldGhvZEZvclByaW50aW5nID0gdGhpcy5vdmVycnVsZWRQcmludD8uY29kZTtcclxuICAgICAgdGhpcy5wcmludFB1cmNoYXNlT3JkZXJGb3JTYWxlc09yZGVyUmVxdWVzdC5vdmVycnVsZVNlbmRNZXRob2RGb3JFREkgPSB0aGlzLm92ZXJydWxlZEVkaT8uY29kZTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy51c2VEZWZhdWx0TGF5b3V0KSB7XHJcbiAgICAgIHRoaXMucHJpbnRQdXJjaGFzZU9yZGVyRm9yU2FsZXNPcmRlclJlcXVlc3QucmVwb3J0SWRGb3JQcmludGluZyA9IHRoaXMucmVwb3J0SWRGb3JQcmludGluZztcclxuICAgICAgdGhpcy5wcmludFB1cmNoYXNlT3JkZXJGb3JTYWxlc09yZGVyUmVxdWVzdC5yZXBvcnRJZEZvckVtYWlsID0gdGhpcy5yZXBvcnRJZEZvckVtYWlsO1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IHRoaXMucHJpbnREb2N1bWVudCh0aGlzLnJlcG9ydERvY3VtZW50UHJpbnRSZXF1ZXN0KTtcclxuICAgIHRoaXMuX3NldERlZmF1bHRNZXRob2QodGhpcy5kZWZhdWx0U2VuZE1ldGhvZCk7XHJcblxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGhhbmRsZVJlc2VydmF0aW9uTW9kZUNsaWNrKCkge1xyXG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24/LnRyYW5zYWN0aW9uSW5mbz8uaWQpIHtcclxuICAgICAgaWYgKCF0aGlzLnRyYW5zYWN0aW9uSGVhZGVyU2VydmljZS5yZXNlcnZhdGlvbk1vZGUpIHtcclxuICAgICAgICBhd2FpdCB0aGlzLnNhbGVzUmVzZXJ2YXRpb25TZXJ2aWNlLmdldFNhbGVzT3JkZXJMaW5lcyh0aGlzLnRyYW5zYWN0aW9uLnRyYW5zYWN0aW9uSW5mby5pZCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zYWxlc1Jlc2VydmF0aW9uU2VydmljZS5wdXJjaGFzZVJlc2VydmF0aW9ucyA9IFtdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uSGVhZGVyU2VydmljZS5yZXNlcnZhdGlvbk1vZGUgPSAhdGhpcy50cmFuc2FjdGlvbkhlYWRlclNlcnZpY2UucmVzZXJ2YXRpb25Nb2RlO1xyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uSGVhZGVyU2VydmljZS5yZXNlcnZhdGlvblN0YXRlQ2hhbmdlLm5leHQodGhpcy50cmFuc2FjdGlvbkhlYWRlclNlcnZpY2UucmVzZXJ2YXRpb25Nb2RlKTtcclxuICAgIH1cclxuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRyYW5zYWN0aW9uU2V0KCkge1xyXG4gICAgc3VwZXIudHJhbnNhY3Rpb25TZXQoKTtcclxuICAgIHRoaXMuX2NoZWNrUHVyY2hhc2VPcmRlcnMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuU2VuZERpYWxvZygpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1NlbmRNZXRob2REaWFsb2cgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxvYWREZWZhdWx0UHJpbnRlck5hbWUocmVwb3J0SWQ6IG51bWJlcikge1xyXG4gICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0RGVmYXVsdFByaW50ZXIocmVwb3J0SWQsIExheW91dENvZGUuT3JkZXJDb25maXJtYXRpb24pLnRoZW4oKHByaW50ZXJOYW1lOiBzdHJpbmcpID0+IHtcclxuICAgICAgaWYgKHByaW50ZXJOYW1lICYmIHRoaXMucHJpbnRlckxpc3QuZmluZCggKHByaW50ZXI6IFByaW50ZXIpID0+IHByaW50ZXIubmFtZSA9PT0gcHJpbnRlck5hbWUpKSB7XHJcbiAgICAgICAgdGhpcy5kZWZhdWx0UHJpbnRlck5hbWUgPSBwcmludGVyTmFtZTtcclxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jaGVja1B1cmNoYXNlT3JkZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYW5HZW5lcmF0ZSA9IHRoaXMudHJhbnNhY3Rpb25MaW5lcyAmJlxyXG4gICAgICB0aGlzLnRyYW5zYWN0aW9uTGluZXMuZmlsdGVyKGwgPT4gbC5jb21taXNzaW9uQ29kZSA9PT0gJzAnICYmIChsLmFydGljbGVMaW5lU3RhdHVzICYmIGwuYXJ0aWNsZUxpbmVTdGF0dXMucXVhbnRpdHlPcmRlcmVkICE9PSBsLmFtb3VudCkpLmxlbmd0aCA+IDA7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgZ2V0RGVmYXVsdEVtYWlsQWRkcmVzc0xpc3QoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xyXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYXN5bmMgZ2V0RGVmYXVsdFNlbmRNZXRob2QoKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgIGlmICh0aGlzLmRlZmF1bHRTZW5kTWV0aG9kSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgcmV0dXJuIHBhcnNlSW50KHRoaXMuZGVmYXVsdFNlbmRNZXRob2QpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZGVmYXVsdE1ldGhvZE51bWJlciA9IGF3YWl0IHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmlzUHJpbnRJc0RlZmF1bHRTZW5kTWV0aG9kRm9yUHVyY2hhc2VPcmRlcih0aGlzLnRyYW5zYWN0aW9uSW5mby5pZCkgPyAxIDogMjtcclxuXHJcbiAgICB0aGlzLmRlZmF1bHRTZW5kTWV0aG9kID0gZGVmYXVsdE1ldGhvZE51bWJlci50b1N0cmluZygpO1xyXG4gICAgdGhpcy5kZWZhdWx0U2VuZE1ldGhvZEluaXRpYWxpemVkID0gdHJ1ZTtcclxuXHJcbiAgICByZXR1cm4gZGVmYXVsdE1ldGhvZE51bWJlcjtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRFbWFpbExheW91dHMoKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25FbWFpbFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0UHVyY2hhc2VPcmRlckVtYWlsTGF5b3V0cyh0aGlzLnRyYW5zYWN0aW9uSW5mby51dWlkKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBnZXRQcmludExheW91dHMoKTogUHJvbWlzZTxSZXBvcnRMYXlvdXRTZWxlY3Rpb25QcmludFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0UHVyY2hhc2VPcmRlclByaW50TGF5b3V0cyh0aGlzLnRyYW5zYWN0aW9uSW5mby51dWlkKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBwZGZEb2N1bWVudChyZXF1ZXN0OiBSZXBvcnRpbmdEb2N1bWVudFBkZkJhc2VSZXF1ZXN0KSB7XHJcbiAgfVxyXG4gIHByb3RlY3RlZCBlbWFpbERvY3VtZW50KHJlcXVlc3Q6IFJlcG9ydGluZ0RvY3VtZW50RW1haWxTaWduRG9jQmFzZVJlcXVlc3QpIHtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBhc3luYyBwcmludERvY3VtZW50KHJlcXVlc3Q6IFJlcG9ydGluZ0RvY3VtZW50UHJpbnRTaWduRG9jQmFzZVJlcXVlc3QpIHtcclxuICAgIGNvbnN0IHByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0OiBQcmludFB1cmNoYXNlT3JkZXJGb3JTYWxlc09yZGVyUmVxdWVzdCA9IE9iamVjdC5hc3NpZ24obmV3IFByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0KCksIHJlcXVlc3QpO1xyXG4gICAgcHJpbnRQdXJjaGFzZU9yZGVyRm9yU2FsZXNPcmRlclJlcXVlc3QudXNlUmVsYXRpb25TcGVjaWZpY1JlcG9ydHMgPSB0aGlzLnByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0LnVzZVJlbGF0aW9uU3BlY2lmaWNSZXBvcnRzID8/IHRydWU7XHJcbiAgICBwcmludFB1cmNoYXNlT3JkZXJGb3JTYWxlc09yZGVyUmVxdWVzdC51c2VSZWxhdGlvblNwZWNpZmljU2VuZE1ldGhvZHMgPSB0aGlzLnByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0LnVzZVJlbGF0aW9uU3BlY2lmaWNTZW5kTWV0aG9kcyA/PyB0cnVlO1xyXG4gICAgcHJpbnRQdXJjaGFzZU9yZGVyRm9yU2FsZXNPcmRlclJlcXVlc3QucmVwb3J0SWRGb3JQcmludGluZyA9IHRoaXMucHJpbnRQdXJjaGFzZU9yZGVyRm9yU2FsZXNPcmRlclJlcXVlc3QucmVwb3J0SWRGb3JQcmludGluZztcclxuICAgIHByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0LnJlcG9ydElkRm9yRW1haWwgPSB0aGlzLnByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0LnJlcG9ydElkRm9yRW1haWw7XHJcbiAgICBwcmludFB1cmNoYXNlT3JkZXJGb3JTYWxlc09yZGVyUmVxdWVzdC5vdmVycnVsZVNlbmRNZXRob2RGb3JFbWFpbCA9IHRoaXMucHJpbnRQdXJjaGFzZU9yZGVyRm9yU2FsZXNPcmRlclJlcXVlc3Qub3ZlcnJ1bGVTZW5kTWV0aG9kRm9yRW1haWw7XHJcbiAgICBwcmludFB1cmNoYXNlT3JkZXJGb3JTYWxlc09yZGVyUmVxdWVzdC5vdmVycnVsZVNlbmRNZXRob2RGb3JQcmludGluZyA9IHRoaXMucHJpbnRQdXJjaGFzZU9yZGVyRm9yU2FsZXNPcmRlclJlcXVlc3Qub3ZlcnJ1bGVTZW5kTWV0aG9kRm9yUHJpbnRpbmc7XHJcbiAgICBwcmludFB1cmNoYXNlT3JkZXJGb3JTYWxlc09yZGVyUmVxdWVzdC5vdmVycnVsZVNlbmRNZXRob2RGb3JFREkgPSB0aGlzLnByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0Lm92ZXJydWxlU2VuZE1ldGhvZEZvckVESTtcclxuICAgIHByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0LnNhdmVEZWZhdWx0UHJpbnRlckZvclVzZXIgPSB0aGlzLnByaW50UHVyY2hhc2VPcmRlckZvclNhbGVzT3JkZXJSZXF1ZXN0LnNhdmVEZWZhdWx0UHJpbnRlckZvclVzZXI7XHJcbiAgICBwcmludFB1cmNoYXNlT3JkZXJGb3JTYWxlc09yZGVyUmVxdWVzdC5zYXZlRGVmYXVsdFByaW50ZXJGb3JBbGxVc2VycyA9IHRoaXMucHJpbnRQdXJjaGFzZU9yZGVyRm9yU2FsZXNPcmRlclJlcXVlc3Quc2F2ZURlZmF1bHRQcmludGVyRm9yQWxsVXNlcnM7XHJcbiAgICBhd2FpdCB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZW5lcmF0ZUFuZFNlbmRQdXJjaGFzZU9yZGVyc0ZvclNhbGVzT3JkZXIocHJpbnRQdXJjaGFzZU9yZGVyRm9yU2FsZXNPcmRlclJlcXVlc3QsIHRoaXMudHJhbnNhY3Rpb25JbmZvLnZlcnNpb24pO1xyXG4gIH1cclxufVxyXG4iXX0=