@rangertechnologies/ngnxt 2.1.71 → 2.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.
@@ -239,7 +239,7 @@ export class BookletComponent {
239
239
  const currentBook = dataToParent['jsonBook'].bookQuestionsMap[key];
240
240
  currentBook.Questions__r.records.forEach(element => {
241
241
  // VD 01Aug24 - validation change
242
- if (element.Is_Optional__c && dataToParent['action'] == 'submit' && !element.input && !element.Is_Hide__c && element.Type__c != 'Label' && element.Type__c != 'Image') {
242
+ if (element.Is_Optional__c && dataToParent['action'] == 'submit' && (!element.input || (Array.isArray(element.input) && element.input.length === 0)) && !element.Is_Hide__c && element.Type__c != 'Label' && element.Type__c != 'Image') { //SKS5NOV25
243
243
  element.error = true;
244
244
  validForm = false;
245
245
  this.changeService.submitChange(element.Id);
@@ -329,7 +329,7 @@ export class BookletComponent {
329
329
  }
330
330
  // HA 24JAN24 To bind-in Date and DateTime
331
331
  else if (ques.Type__c === 'Date' || ques.Type__c == 'DateTime') {
332
- ques.input = new Date(value.toString());
332
+ ques.input = new Date(value?.toString());
333
333
  }
334
334
  // HA 12FEB24 To bind-in Location Type
335
335
  else if (ques.Type__c === 'Location') {
@@ -358,7 +358,7 @@ export class BookletComponent {
358
358
  referenceQuestions.forEach(field => {
359
359
  if (field.Reference_Field__c == k) {
360
360
  if (field.Type__c === 'Date' || field.Type__c == 'DateTime' || field.Type__c == 'Time') {
361
- field.input = new Date(v.toString());
361
+ field.input = new Date(v?.toString());
362
362
  }
363
363
  if (field.Type__c === 'Dropdown' || field.Type__c === 'Radio') {
364
364
  field.selectedValue = v;
@@ -533,4 +533,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
533
533
  }], dataBind: [{
534
534
  type: Input
535
535
  }] } });
536
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2xldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvcGFnZXMvYm9va2xldC9ib29rbGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9ib29rbGV0L2Jvb2tsZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FJYixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBa0J2QixNQUFNLE9BQU8sZ0JBQWdCO0lBbUNqQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFFRDtJQXpDQSxTQUFTLENBQVM7SUFDbEIsSUFBSSxDQUFTO0lBQ2IsR0FBRyxDQUFTO0lBQ1osV0FBVyxDQUFNO0lBQ2pCLHFCQUFxQixDQUFLO0lBQzFCLFVBQVUsQ0FBUTtJQUNsQixLQUFLLENBQVE7SUFDYixZQUFZLENBQVEsQ0FBRSxtQ0FBbUM7SUFDekQsaUJBQWlCLENBQU0sQ0FBQyx1Q0FBdUM7SUFDOUQsd0JBQXdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDakUsVUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ25ELHNCQUFzQixHQUFxQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3pFLDhCQUE4QjtJQUNuQixrQkFBa0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUMzRCxtQkFBbUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUUvRCxVQUFVLENBQWlCO0lBRTNCLE9BQU8sR0FBVSxFQUFFLENBQUM7SUFDcEIsTUFBTSxHQUFRLEVBQUUsQ0FBQztJQUNqQixPQUFPLEdBQWlCLEVBQUUsQ0FBQztJQUMzQixnQkFBZ0IsR0FBUSxJQUFJLEdBQUcsRUFB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QztJQUNKLENBQUM7SUFDRCxXQUFXLENBQUMsS0FBUztRQUNuQixJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRiw4QkFBOEI7SUFDN0IsZUFBZSxDQUFDLEtBQVM7UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsS0FBUztRQUN4QixLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN2QyxDQUFDO3dHQXJnQlUsZ0JBQWdCOzRGQUFoQixnQkFBZ0IsNmpCQzdCN0IsK3lHQXlEQTs7NEZENUJhLGdCQUFnQjtrQkFMNUIsU0FBUzsrQkFDRSxhQUFhO3NTQUtkLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLEdBQUc7c0JBQVgsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDSSx3QkFBd0I7c0JBQWpDLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBRUcsa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFnQkUsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBPbkNoYW5nZXMsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgRWxlbWVudFJlZixcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFNhbGVzZm9yY2VTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NhbGVzZm9yY2Uuc2VydmljZVwiO1xuaW1wb3J0IHsgRGF0YVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9kYXRhLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUsIFBhcmFtcyB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcbmltcG9ydCB7IERvbVNhbml0aXplciwgU2FmZUh0bWwgfSBmcm9tIFwiQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlclwiO1xuaW1wb3J0IHsgQWN0aW9uTWV0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvYWN0aW9uTWV0YSc7XG5pbXBvcnQgeyBRdWVzdGlvbiB9IGZyb20gXCIuLi8uLi93cmFwcGVyXCI7XG5pbXBvcnQgeyBCb29rbGV0V3JhcHBlciB9IGZyb20gXCIuLi8uLi9tb2RlbC9ib29rbGV0V3JhcHBlclwiO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9zdG9yYWdlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbmdlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9jaGFuZ2Uuc2VydmljZVwiO1xuLy8gSEEgMTlERUMyMyBpbXBvcnRlZCB0cmFuc2xhdGlvbiBzZXJ2aWNlXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gXCIuLi8uLi9pMThuLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWJvb2tsZXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYm9va2xldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Jvb2tsZXQuY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIEJvb2tsZXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBib29rbGV0SWQ6IHN0cmluZztcbiAgQElucHV0KCkgc2Vydjogc3RyaW5nO1xuICBASW5wdXQoKSB0a246IHN0cmluZztcbiAgQElucHV0KCkgYm9va2xldEpTT046IGFueTtcbiAgQElucHV0KCkgZHJvcGRvd25EZXBlbmRlbnREYXRhOmFueTtcbiAgQElucHV0KCkgbGFiZWxWYWx1ZTpzdHJpbmc7XG4gIEBJbnB1dCgpIHRva2VuOnN0cmluZztcbiAgQElucHV0KCkgbGFuZ3VhZ2VDb2RlOnN0cmluZzsgIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIEBJbnB1dCgpIGZpZWxkUmVzdHJpY3Rpb25zOiBhbnk7IC8vIFZEIDEySnVuMjQgLSBmaWVsZCBwZXJtaXNzaW9uIGNoYW5nZVxuICBAT3V0cHV0KCkgaGFuZGxlQm9va2xldEFjdGlvbkV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGhhbmRsZVBhZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaGFkbGVEcm9wRG93bkRlcGVuZGVudDpFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgQE91dHB1dCgpIGhhbmRsZUNhbGVuZGFyRGF0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBoYW5kbGVDYWxlbmRhckV2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgbnh0Qm9va2xldDogQm9va2xldFdyYXBwZXI7XG5cbiAgcHVibGljIGJvb2tsZXQ6IGFueVtdID0gW107XG4gIHB1YmxpYyBhYkl0ZW06IGFueSA9IHt9O1xuICBwdWJsaWMgYWN0aW9uczogQWN0aW9uTWV0YVtdID0gW107XG4gIHB1YmxpYyBib29rUXVlc3Rpb25zTWFwOiBhbnkgPSBuZXcgTWFwKCk7XG4gIHB1YmxpYyB0cmFuc2xhdGVNYXA6IGFueSA9IG5ldyBNYXAoKTsgIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIHByaXZhdGUgc3FPcHRpb25zOiBhbnkgPSBuZXcgTWFwKCk7XG4gIHB1YmxpYyBpc0Fuc3dlckZsYWc6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIHNwaW5uZXJOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBzcGlubmVyVHlwZTogc3RyaW5nO1xuICAvLyBIQSAxOURFQzIzIGxhbmdEaXJlY3Rpb24gdmFyaWFibGUgaXMgY3JlYXRlZCB0byBhc3NpZ24gdGhlIGRpcmVjdGlvbiBhcyBjbGFzc1xuICBsYW5nRGlyZWN0aW9uID0gJ2x0cic7IC8vIEhBIDI4REVDMjMgbWFraW5nIGx0ciBhcyBkZWZhdWx0IGRpcmVjdGlvblxuICBhbnN3ZXJMaXN0ID0gW107IC8vIEhBIDExLUpBTi0yNCBBbnN3ZXJsaXN0IHRvIHN0b3JlIHRoZSBtaW5pbWFsIHZhbHVlXG4gIEBJbnB1dCgpIGRhdGFCaW5kOmFueTsvLyBIQSAxOC1KQU4tMjQgVG8gaW5zZXJ0IHRoZSBlbmRwb2ludCB2YWx1ZSB0byB0aGUgcXVlc3Rpb25cbiAgYWxsRXZlbnRzOmFueVtdPVtdOyAgLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gIFxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNmU2VydmljZTogU2FsZXNmb3JjZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBkYXRhU2VydmljZTogRGF0YVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICBwcml2YXRlIGNoYW5nZVNlcnZpY2U6IENoYW5nZVNlcnZpY2UsIFxuICAgIGVsOiBFbGVtZW50UmVmLFxuICAgIHB1YmxpYyBpMThuU2VydmljZTogSTE4blNlcnZpY2VcbiAgKSB7IFxuICAgIHRoaXMuc3Bpbm5lck5hbWUgPSBcInNwMVwiO1xuICAgIHRoaXMuc3Bpbm5lclR5cGUgPSBcImJhbGwtc3Bpbi1jbG9ja3dpc2VcIjtcbiAgICBjb25zb2xlLmxvZygnZHJvcGRvd25EZXBlbmRlbnREYXRhJyx0aGlzLmRyb3Bkb3duRGVwZW5kZW50RGF0YSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBcbi8vICBWRCAxMkphbjI0IGZpZWxkUmVzdHJpY3Rpb25zIGZvcm1hdGUgXG4gIC8vICAge1xuICAvLyAgICAgXCJmaWVsZHNcIiA6IHtcbiAgLy8gICAgICAgICBcInRyYW5zUWItMDFcIiA6IFwicmVhZE9ubHlcIixcbiAgLy8gICAgICAgICBcIlRyYW5zRmlyMDJcIiA6IFwiXCIsXG4gIC8vICAgICAgICAgXCJUcmFuc0xhc3QwM1wiIDogXCJyZWFkT25seVwiLFxuICAvLyAgICAgICAgIFwiYmsyLXEyXCIgOiBcImhpZGVcIlxuICAvLyAgICAgfVxuICAvLyAgfVxuXG4gICAgLy8gSEEgMTgtSkFOLTI0IER1bW15IFN0YXRpYyBkYXRhIGZvciB0ZXN0aW5nXG4gICAgLy8gdGhpcy5kYXRhQmluZCA9IHtcbiAgICAvLyAgIFwiX2lkXCI6IFwiNjU5ZWQwMDJlZDUxYmI4MDYxNTQ0MjU1XCIsXG4gICAgLy8gICBcImNvbXBhbnlJZFwiOiBcIjV1bGxoMUJXcFlxbnZ6S2g5TFwiLFxuICAgIC8vICAgXCJuYW1lXCI6IFwiQWwgWWFzbWluZVwiLFxuICAgIC8vICAgXCJjb2RlXCI6IFwiY2hlY2tcIixcbiAgICAvLyAgIFwic3RhdHVzXCI6IFwiSW4tUHJvZ3Jlc3NcIixcbiAgICAvLyAgIFwiY3JlYXRlZEF0XCI6IFwiMjAyNC0wMS0xMFQxNzoxMjozNC42ODZaXCIsXG4gICAgLy8gICBcInVwZGF0ZWRBdFwiOiBcIjIwMjQtMDEtMTBUMTk6NTM6MDguMTM1WlwiLFxuICAgIC8vICAgXCJfX3ZcIjogMCxcbiAgICAvLyAgIFwib3duZXJcIjogXCJjaGVja1wiLFxuICAgIC8vICAgXCJjdXN0b21lclwiOiBcImNoZWNrXCIsXG4gICAgLy8gICBcImRhdGlcIjogXCIyMDI0LTAxLTIzVDE4OjMwOjAwLjAwMFpcIixcbiAgICAvLyAgIFwidGltaVwiOiBcIjIwMjQtMDEtMjNUMTg6MzA6MDAuMDAwWlwiLFxuICAgIC8vIFwiZk5hbWVcIjogXCJIYWlkZXJcIixcbiAgICAvLyBcImxOYW1lXCI6IFwiQWxpXCIsXG4gICAgLy8gXCJkZWZhdWx0QXBwXCI6IFwiTlhUXCIsXG4gICAgLy8gXCJlbWFpbFwiOiBcImhhaWRlckBnbWFpbC5jb21cIixcbiAgICAvLyBcImxvY2F0aW9uXCI6IHthZGRyZXNzOiBcIjEwNywgQXNob2sgTmFnYXIsIEthZHVnb25kYW5haGFsbGksIEJlbmdhbHVydSwgS2FybmF0YWthIDU2MDA0NSwgSW5kaWFcIixcbiAgICAvLyAgIGxhdGl0dWRlOiAxMy4wMjAwNTc1LFxuICAgIC8vICAgbG9uZ2l0dWRlOiA3Ny42MTI5ODE2fSxcbiAgICAvLyBcImxvY2F0aW9uXCI6IFwiMTA3LCBBc2hvayBOYWdhciwgS2FkdWdvbmRhbmFoYWxsaSwgQmVuZ2FsdXJ1LCBLYXJuYXRha2EgNTYwMDQ1LCBJbmRpYVwiLFxuICAgIC8vIFwidGV4dEFyZWFcIjogXCJMb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gVXQgZW5pbSBhZCBtaW5pbSB2ZW5pYW0sIHF1aXMgbm9zdHJ1ZCBleGVyY2l0YXRpb24gdWxsYW1jbyBsYWJvcmlzIG5pc2kgdXQgYWxpcXVpcCBleCBlYSBjb21tb2RvIGNvbnNlcXVhdC4gRHVpcyBhdXRlIGlydXJlIGRvbG9yIGluIHJlcHJlaGVuZGVyaXQgaW4gdm9sdXB0YXRlIHZlbGl0IGVzc2UgY2lsbHVtIGRvbG9yZSBldSBmdWdpYXQgbnVsbGEgcGFyaWF0dXIuIEV4Y2VwdGV1ciBzaW50IG9jY2FlY2F0IGN1cGlkYXRhdCBub24gcHJvaWRlbnQsIHN1bnQgaW4gY3VscGEgcXVpIG9mZmljaWEgZGVzZXJ1bnQgbW9sbGl0IGFuaW0gaWQgZXN0IGxhYm9ydW1cIixcbiAgICAvLyB9O1xuICAgICAgICB0aGlzLnByb2Nlc3NCb29rbGV0KCk7XG4gIH1cbiAvLyBWRCBOT1YyMyAtIHVwZGF0ZSB0aGUganNvbiBkYXRhIHdoZW4gYm9va2xldElkIGFuZCBib29rbGV0SlNPTiBjaGFuZ2VzXG4gIG5nT25DaGFuZ2VzKHNpbXBsZWNoYW5nZXM6U2ltcGxlQ2hhbmdlcykge1xuICAgLy8gSEEgMjNKQU4yNCBUbyBhdm9pZCB1bmRlZmluZWQgZXJyb3JcbiAgIGlmKHNpbXBsZWNoYW5nZXNbJ2Jvb2tsZXRJZCddIHx8IChzaW1wbGVjaGFuZ2VzWydib29rbGV0SlNPTiddICYmIChzaW1wbGVjaGFuZ2VzWydib29rbGV0SlNPTiddLmN1cnJlbnRWYWx1ZSAhPSBudWxsIHx8IHNpbXBsZWNoYW5nZXNbJ2Jvb2tsZXRKU09OJ10uY3VycmVudFZhbHVlICE9IHVuZGVmaW5lZCkpIHx8IChzaW1wbGVjaGFuZ2VzWydkYXRhQmluZCddICYmIChzaW1wbGVjaGFuZ2VzWydkYXRhQmluZCddLmN1cnJlbnRWYWx1ZSAhPSBudWxsIHx8IHNpbXBsZWNoYW5nZXNbJ2RhdGFCaW5kJ10uY3VycmVudFZhbHVlICE9IHVuZGVmaW5lZCkpICl7XG4gICAgICB0aGlzLmFsbEV2ZW50cyA9IFtdO1xuICAgICAgdGhpcy5wcm9jZXNzQm9va2xldCgpO1xuICAgIH1cbiAgICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIFF1ZXN0aW9ubmFpcmUgbmdPbkNoYW5nZXMnKTtcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmJvb2tsZXQpO1xuICAgIC8vIGlmKHRoaXMuYm9va2xldCA9PSB1bmRlZmluZWQgfHwgdGhpcy5ib29rbGV0Lmxlbmd0aCA9PSAwKSB7XG4gICAgLy8gICB0aGlzLnByb2Nlc3NCb29rbGV0KCk7XG4gICAgLy8gfVxuICB9XG5cbiAgcHJvY2Vzc0Jvb2tsZXQoKSB7XG4gICAgaWYgKHRoaXMuYm9va2xldElkKSB7XG4gICAgICBpZiAodGhpcy5ib29rbGV0SWQubGVuZ3RoID09IDE4KSB7XG4gICAgICAgIHRoaXMucmVhZEJvb2tsZXQodGhpcy5ib29rbGV0SWQpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZih0aGlzLmJvb2tsZXRKU09OKSB7XG4gICAgICAvLyBUcnkgdG8gcGFzcyBhIHZhbHVlIGZyb20gQmFja2VuZCB0byBkaWZmZXJlbnRpYXRlIHRoZSBRdWVzdGlvbkJvb2sgUmVhZCBhbmQgQW5zd2VyQm9vayBSZWFkXG4gICAgICB0aGlzLmlzQW5zd2VyRmxhZyA9IHRydWU7XG5cbiAgICAgIGlmKHRoaXMuYm9va2xldEpTT04gIT0gbnVsbCB8fCB0aGlzLmJvb2tsZXRKU09OICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8vIFN0b3JpbmcgdGhlIEFQSSByZXNwb25zZSBmb3IgZnV0dXJlIHVzZVxuICAgICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2F2ZSh0aGlzLmJvb2tsZXRKU09OKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5ib29rbGV0ID0gdGhpcy5ib29rbGV0SlNPTi5yZWNvcmRzO1xuICAgICAgdGhpcy5hYkl0ZW0gPSB0aGlzLmJvb2tsZXRKU09OLmFuc3dlcmJvb2s7XG5cbiAgICAgIC8vIFByb2Nlc3MgdGhlIFN1YiBRdWVzdGlvbiBPcHRpb25zIC0gVGhpcyBzaG91bGQgYmUgbWVyZ2VkIHdpdGggYm9va1F1ZXN0aW9uc01hcCBpbiBmdXR1cmVcbiAgICAgIGZvciAodmFyIHNxIGluIHRoaXMuYm9va2xldEpTT04uc3FPcHRpb25zKSB7XG4gICAgICAgIHRoaXMuc3FPcHRpb25zLnNldChzcSwgdGhpcy5ib29rbGV0SlNPTi5zcU9wdGlvbnNbc3FdKTtcbiAgICAgIH1cblxuICAgICAgLy8gUHJvY2VzcyB0aGUgUXVlc3Rpb25zXG4gICAgICAvLyBIQSAyOERFQzIzIHRoaXMgYXBwbGllcyBmb3IgYm9va2xldFxuICAgICAgLy8gSEEgMTdKQU4yNCBBZGRlZCB0ZXJuYXJ5IG9wZXJhdG9yIHRvIGF2b2lkIHVuZGVmaW5lZCBzY2VuYXJpb1xuICAgICAgLy8gSEEgMDlGRUIyNCBBZGRpbmcgY29uZGl0aW9uIHRvIGF2b2lkIHVuZGVmaW5lZCBlcnJvclxuICAgICAgaWYodGhpcy5ib29rbGV0SlNPTj8uYm9va1F1ZXN0aW9uc01hcCAmJiBPYmplY3Qua2V5cyh0aGlzLmJvb2tsZXRKU09OPy5ib29rUXVlc3Rpb25zTWFwKS5sZW5ndGggPiAwKXtcbiAgICAgICAgZm9yICh2YXIgdmFsdWUgaW4gdGhpcy5ib29rbGV0SlNPTi5ib29rUXVlc3Rpb25zTWFwKSB7XG4gICAgICAgICAgdGhpcy5ib29rUXVlc3Rpb25zTWFwLnNldCh2YWx1ZSwgdGhpcy5ib29rbGV0SlNPTi5ib29rUXVlc3Rpb25zTWFwW3ZhbHVlXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIEhBIDI4REVDMjMgdGhpcyBhcHBsaWVzIGZvciBib29rIG9yIHF1ZXN0aW9uc1xuICAgICAgZWxzZXtcbiAgICAgICAgdmFyIHZhbHVlID0gJyc7XG4gICAgICAgIC8vIEhBIDA5RkVCMjQgQWRkZWQgdGVybmFyeVxuICAgICAgICB2YWx1ZSA9IHRoaXMuYm9va2xldEpTT04ucmVjb3Jkc1swXT8uSWQ7XG4gICAgICAgIHRoaXMuYm9va1F1ZXN0aW9uc01hcC5zZXQodmFsdWUsIHRoaXMuYm9va2xldEpTT04ucXVlc3Rpb25ib29rKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgIC8vIFZEIDIwSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gICAgICAgZm9yICh2YXIgdmFsdWUgaW4gdGhpcy5ib29rbGV0SlNPTj8udHJhbnNsYXRpb25NYXApIHtcbiAgICAgICAgdGhpcy50cmFuc2xhdGVNYXAuc2V0KHZhbHVlLCB0aGlzLmJvb2tsZXRKU09OLnRyYW5zbGF0aW9uTWFwW3ZhbHVlXSk7XG4gICAgICB9XG5cbiAgICAgIGlmKHRoaXMuYm9va2xldEpTT04ucXVlc3Rpb25ib29rPy5BY3Rpb25zX19jICE9IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmFjdGlvbnMgPSBKU09OLnBhcnNlKHRoaXMuYm9va2xldEpTT04ucXVlc3Rpb25ib29rLkFjdGlvbnNfX2MpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBIQSAxOURFQzIzIGxhbmdEaXJlY3Rpb24gdmFyaWFibGUgdmFsdWUgYXNzaWduaW5nXG4gICAgLy8gY29uc29sZS5sb2coJ1N0eWxlX19jJywgdGhpcy5ib29rbGV0SlNPTi5xdWVzdGlvbmJvb2suU3R5bGVfX2MpO1xuICAgIGlmKHRoaXMuYm9va2xldEpTT04/LnF1ZXN0aW9uYm9vaz8uU3R5bGVfX2Mpe1xuICAgICAgdmFyIHN0eWxlID0gSlNPTi5wYXJzZShKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuYm9va2xldEpTT04/LnF1ZXN0aW9uYm9vaz8uU3R5bGVfX2MpKSk7XG4gICAgICB0aGlzLmxhbmdEaXJlY3Rpb24gPSBzdHlsZT8uZGlyZWN0aW9uO1xuICAgIH1cbiAgICBlbHNlIGlmKHRoaXMuYm9va2xldEpTT04/LnJlY29yZHNbMF0/LlN0eWxlX19jKXtcbiAgICAgIHZhciBzdHlsZSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ib29rbGV0SlNPTj8ucmVjb3Jkc1swXT8uU3R5bGVfX2MpKTtcbiAgICAgIHRoaXMubGFuZ0RpcmVjdGlvbiA9IHN0eWxlPy5kaXJlY3Rpb247XG4gICAgfVxuXG4gICAgLy8gSEEgMTgtSkFOLTI0IFRoZSBjb25kaXRpb24gaXMgdXNlZCBmb3IgQmluZC1JbiBMb2dpYyBcbiAgICB0aGlzLmhhbmRsZUNvbXBsZXRlQm9va2xldCh0aGlzLmJvb2tsZXRKU09OKTsgXG4gIH1cbiAvLyBWRCAxMkp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlc1xuICBwcml2YXRlIHJlYWRCb29rbGV0ID0gKHV1aWQ6IHN0cmluZykgPT4ge1xuICAgIGlmKHRoaXMuc2VydiA9PSBcImFwaVwiKSB7XG4gICAgICB0aGlzLmRhdGFTZXJ2aWNlLmdldEFQSURhdGEoXG4gICAgICAgIHRoaXMudGtuLFxuICAgICAgICBbXCJCb29rbGV0XCIsIFwicmVhZFwiLCB1dWlkLHRoaXMubGFuZ3VhZ2VDb2RlXSxcbiAgICAgICAgdGhpcy5zdWNjZXNzUmVhZEJvb2tsZXQsXG4gICAgICAgIHRoaXMuZmFpbHVyZVJlYWRCb29rbGV0XG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcGFyYW1NYXAgPSB7IGNyZWF0ZUFuc3dlckJvb2tGbGFnOiBmYWxzZSB9O1xuICAgICAgcGFyYW1NYXBbJ2NfX3FiX2lkJ10gPSAnJztcbiAgICAgIHBhcmFtTWFwW1wiY19fcmVjb3JkX2lkXCJdID0gJyc7XG4gICAgICB0aGlzLnNmU2VydmljZS5yZW1vdGVBY3Rpb24oXG4gICAgICAgIFwiTnh0Q29udHJvbGxlci5uZXdQcm9jZXNzXCIsXG4gICAgICAgIFtcIkJvb2tsZXRcIiwgXCJyZWFkXCIsIHV1aWQsSlNPTi5zdHJpbmdpZnkocGFyYW1NYXApLHRoaXMubGFuZ3VhZ2VDb2RlXSxcbiAgICAgICAgdGhpcy5zdWNjZXNzUmVhZEJvb2tsZXQsXG4gICAgICAgIHRoaXMuZmFpbHVyZVJlYWRCb29rbGV0XG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3VjY2Vzc1JlYWRCb29rbGV0ID0gKHJlc3BvbnNlKSA9PiB7XG4gICAgY29uc29sZS5sb2coJ0luc2lkZSB0aGUgc3VjY2Vzc1JlYWRCb29rbGV0Jyk7XG4gICAgLy8gY29uc29sZS5sb2cocmVzcG9uc2UpO1xuICAgIGlmKHJlc3BvbnNlICE9IG51bGwgfHwgcmVzcG9uc2UgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBTdG9yaW5nIHRoZSBBUEkgcmVzcG9uc2UgZm9yIGZ1dHVyZSB1c2VcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2F2ZShyZXNwb25zZSk7XG5cbiAgICAgIC8vIFRyeSB0byBwYXNzIGEgdmFsdWUgZnJvbSBCYWNrZW5kIHRvIGRpZmZlcmVudGlhdGUgdGhlIFF1ZXN0aW9uQm9vayBSZWFkIGFuZCBBbnN3ZXJCb29rIFJlYWRcbiAgICAgIC8vIHRoaXMuaXNBbnN3ZXJGbGFnID0gdHJ1ZTtcbiAgICAgIFxuICAgICAgdGhpcy5ib29rbGV0ID0gcmVzcG9uc2UucmVjb3JkcztcbiAgICAgIHRoaXMuYWJJdGVtID0gcmVzcG9uc2UuYW5zd2VyYm9vaztcbiAgICAgIFxuICAgICAgLy8gUHJvY2VzcyB0aGUgU3ViIFF1ZXN0aW9uIE9wdGlvbnMgLSBUaGlzIHNob3VsZCBiZSBtZXJnZWQgd2l0aCBib29rUXVlc3Rpb25zTWFwIGluIGZ1dHVyZVxuICAgICAgZm9yICh2YXIgc3EgaW4gcmVzcG9uc2Uuc3FPcHRpb25zKSB7XG4gICAgICAgIHRoaXMuc3FPcHRpb25zLnNldChzcSwgcmVzcG9uc2Uuc3FPcHRpb25zW3NxXSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFByb2Nlc3MgdGhlIFF1ZXN0aW9uc1xuICAgICAgZm9yICh2YXIgdmFsdWUgaW4gcmVzcG9uc2UuYm9va1F1ZXN0aW9uc01hcCkge1xuICAgICAgICB0aGlzLmJvb2tRdWVzdGlvbnNNYXAuc2V0KHZhbHVlLCByZXNwb25zZS5ib29rUXVlc3Rpb25zTWFwW3ZhbHVlXSk7XG4gICAgICB9XG4gLy8gVkQgMTFKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXNcbiAgICAgIGZvciAodmFyIHZhbHVlIGluIHJlc3BvbnNlLnRyYW5zbGF0aW9uTWFwKSB7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlTWFwLnNldCh2YWx1ZSwgcmVzcG9uc2UudHJhbnNsYXRpb25NYXBbdmFsdWVdKTtcbiAgICAgIH1cblxuICAgICAgaWYocmVzcG9uc2UucXVlc3Rpb25ib29rPy5BY3Rpb25zX19jICE9IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLmFjdGlvbnMgPSBKU09OLnBhcnNlKHJlc3BvbnNlLnF1ZXN0aW9uYm9vay5BY3Rpb25zX19jKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gSEEgMTlERUMyMyBsYW5nRGlyZWN0aW9uIHZhcmlhYmxlIHZhbHVlIGFzc2lnbmluZ1xuICAgIGlmKHJlc3BvbnNlPy5xdWVzdGlvbmJvb2s/LlN0eWxlX19jKXtcbiAgICAgIHZhciBzdHlsZSA9IEpTT04ucGFyc2UoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXNwb25zZT8ucXVlc3Rpb25ib29rPy5TdHlsZV9fYykpKTtcbiAgICAgIHRoaXMubGFuZ0RpcmVjdGlvbiA9IHN0eWxlPy5kaXJlY3Rpb247XG4gICAgfVxuICAgIGVsc2UgaWYocmVzcG9uc2U/LnJlY29yZHNbMF0/LlN0eWxlX19jKXtcbiAgICAgIHZhciBzdHlsZSA9IEpTT04ucGFyc2UoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXNwb25zZT8ucmVjb3Jkc1swXT8uU3R5bGVfX2MpKSk7XG4gICAgICB0aGlzLmxhbmdEaXJlY3Rpb24gPSBzdHlsZT8uZGlyZWN0aW9uO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmFpbHVyZVJlYWRCb29rbGV0ID0gKHJlc3BvbnNlKSA9PiB7XG5cbiAgfVxuXG4gIGhhbmRsZUJvb2tsZXRBY3Rpb25DbGljayhhY3Rpb246QWN0aW9uTWV0YSkge1xuICAgIC8vIEhBIDE5SkFOMjQgQWN0aW9uIGNoYW5nZXNcbiAgICB0aGlzLmFuc3dlckxpc3QgPSBbXTtcbiAgICB0aGlzLmRhdGFCaW5kID0gW107IC8vIEhBIDEyRkVCMjQgQ2xlYXJpbmcgZGF0YUJpbmQgdXBvbiBidXR0b24gYWN0aW9uIHNvIHRoYXQgZGF0YUJpbmQgdmFsdWUgd2lsbCBub3Qgb3ZlcnJpZGUgdGhlIGNoYW5nZWQgdmFsdWVcbiAgICBjb25zb2xlLmxvZyhhY3Rpb24pO1xuICAgIGxldCBkYXRhVG9QYXJlbnQgPSB7fTtcbiAgICBsZXQgdmFsaWRGb3JtID0gdHJ1ZTsgLy8gVkQgMDFBdWcyNCAtIHZhbGlkYXRpb24gY2hhbmdlXG4gICAgLy8gSEEgMjJKQU4yNCB0aGlzIGNoYW5nZSB0byBtYWtlIGNsb3NlIGV2ZW50IHdvcmtcbiAgICBkYXRhVG9QYXJlbnRbJ2FjdGlvbiddID0gYWN0aW9uLmV2ZW50dG9lbWl0O1xuICAgIGlmKCEoYWN0aW9uLmV2ZW50dG9lbWl0ID09PSAnY2xvc2UnIHx8IGFjdGlvbi5ldmVudHRvZW1pdCA9PT0gJ3ByaW50Jykpe1xuICAgICAgLy8gSEEgMTgtSkFOLTI0IFNlbmRpbmcgdGhlIGNvbXBsZXRlIGpzb24gZGF0YSBhbHNvIFxuICAgICAgZGF0YVRvUGFyZW50Wydqc29uQm9vayddID0gdGhpcy5zdG9yYWdlU2VydmljZS5nZXQoKTtcbiAgICAgIC8vIEhBIDE3SkFOMjQgbnh0SWQgdG8gZGF0YVBhcmVudCBvYmplY3RcbiAgICAgIGlmKHRoaXMuYm9va2xldEpTT04pe1xuICAgICAgICBkYXRhVG9QYXJlbnRbJ254dElkJ10gPSBPYmplY3Qua2V5cyh0aGlzLmJvb2tsZXRKU09OPy5ib29rUXVlc3Rpb25zTWFwKVswXTtcbiAgICAgIH1cbiAgICAgIC8vIEhBIDExLUpBTi0yNCBNaW5pbWl6aW5nIHRoZSB2YWx1ZSB3aGljaCBoYXMgdG8gYmUgcGFzc2VkIHRvIHRoZSBzZXJ2ZXJcbiAgICAgIHRoaXMuaGFuZGxlQ29tcGxldGVCb29rbGV0KGRhdGFUb1BhcmVudFsnanNvbkJvb2snXSk7XG4gICAgICBkYXRhVG9QYXJlbnRbJ2RhdGEnXSA9IHRoaXMuYW5zd2VyTGlzdCA/IHRoaXMuYW5zd2VyTGlzdCA6IGRhdGFUb1BhcmVudFsnZGF0YSddO1xuICAgICAgLy8gd2hlbiBjbGlja2luZyB0aGUgc3VibWl0IGJ1dHRvbiB2YWxpZGF0aW5nIHRoZSByZXF1aXJlZCBmaWVsZHNcbiAgICAgIGZvcihsZXQga2V5IGluIGRhdGFUb1BhcmVudFsnanNvbkJvb2snXS5ib29rUXVlc3Rpb25zTWFwKXtcbiAgICAgICAgY29uc3QgY3VycmVudEJvb2sgID0gZGF0YVRvUGFyZW50Wydqc29uQm9vayddLmJvb2tRdWVzdGlvbnNNYXBba2V5XTtcbiAgICAgICAgY3VycmVudEJvb2suUXVlc3Rpb25zX19yLnJlY29yZHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgICAgIC8vIFZEIDAxQXVnMjQgLSB2YWxpZGF0aW9uIGNoYW5nZVxuICAgICAgICAgIGlmKGVsZW1lbnQuSXNfT3B0aW9uYWxfX2MgJiYgZGF0YVRvUGFyZW50WydhY3Rpb24nXSA9PSAnc3VibWl0JyAmJiAhZWxlbWVudC5pbnB1dCAmJiAhZWxlbWVudC5Jc19IaWRlX19jICYmIGVsZW1lbnQuVHlwZV9fYyAhPSAnTGFiZWwnICYmIGVsZW1lbnQuVHlwZV9fYyAhPSAnSW1hZ2UnICl7XG4gICAgICAgICAgICBlbGVtZW50LmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhbGlkRm9ybSA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VTZXJ2aWNlLnN1Ym1pdENoYW5nZShlbGVtZW50LklkKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gVkQgMDJBdWcyNCAtIGNsZWFyIGFjdGlvbiBjaGFuZ2VzXG4gICAgICAgICAgaWYoZGF0YVRvUGFyZW50WydhY3Rpb24nXSA9PSAnY2xlYXInKXtcbiAgICAgICAgICAgIGlmKGVsZW1lbnQuVHlwZV9fYyA9PSAnRHJvcGRvd24nIHx8IGVsZW1lbnQuVHlwZV9fYyA9PSAnTG9jYXRpb24nIHx8IGVsZW1lbnQuVHlwZV9fYyA9PSAnUmFkaW8nKSB7XG4gICAgICAgICAgICAgIGVsZW1lbnQuc2VsZWN0ZWRWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1lbHNlIGlmKGVsZW1lbnQuVHlwZV9fYyA9PSAnRmlsZScpe1xuICAgICAgICAgICAgICBlbGVtZW50LmlucHV0ID0gW107XG4gICAgICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICAgIGVsZW1lbnQuaW5wdXQgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gVkQgMTNNQVkyNCAtIHByaW50IFFSIGJ1dHRvbiBjaGFuZ2VzXG4gICAgaWYoYWN0aW9uLmV2ZW50dG9lbWl0ID09PSAncHJpbnQnKXtcbiAgICAgIGRhdGFUb1BhcmVudFsnYWN0aW9uRGF0YSddID0gYWN0aW9uWydkYXRhJ107XG4gICAgfVxuICAgIC8vIEhBIDIzSkFOMjQgVG8gY2FsbCB0aGUgYWN0aW9uIG9uIGFueSBldmVudFxuICAgLy8gIFZEIDAxQXVnMjQgLSB2YWxpZGF0aW9uIGNoYW5nZVxuICAgIGlmKHZhbGlkRm9ybSl7XG4gICAgICB0aGlzLmhhbmRsZUJvb2tsZXRBY3Rpb25FdmVudC5lbWl0KGRhdGFUb1BhcmVudCk7XG4gICAgfWVsc2Uge1xuICAgICAgZGF0YVRvUGFyZW50WydhY3Rpb24nXSA9ICdlcnJvcic7XG4gICAgICB0aGlzLmhhbmRsZUJvb2tsZXRBY3Rpb25FdmVudC5lbWl0KGRhdGFUb1BhcmVudCk7XG4gICAgfVxuICB9XG5cbiAgLy8gSEEgMTgtSkFOLTI0IGhhbmRsZUNvbXBsZXRlQm9va2xldCBpcyB0byBzaW1wbGlmeSB0aGUgbG9naWNcbiAgaGFuZGxlQ29tcGxldGVCb29rbGV0KGNvbXBsZXRlQm9va2xldCl7XG4gICAgaWYoT2JqZWN0LmtleXMoY29tcGxldGVCb29rbGV0Py5ib29rUXVlc3Rpb25zTWFwID8/IHt9KS5sZW5ndGggPT09IDApeyAvLyBIQSAxMS1KQU4tMjQgSWYgY29uZGl0aW9uIHRvIGxvYWQgYm9va2xldFxuICAgICAgdGhpcy5oYW5kbGVCb29rKGNvbXBsZXRlQm9va2xldD8ucXVlc3Rpb25ib29rPy5RdWVzdGlvbnNfX3IpO1xuICAgIH1cbiAgICBlbHNleyAvLyBIQSAxMS1KQU4tMjQgVG8gbG9hZCBib29rIHF1ZXN0aW9uc1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gY29tcGxldGVCb29rbGV0LmJvb2tRdWVzdGlvbnNNYXApIHtcbiAgICAgICAgY29uc3QgdmFsID0gY29tcGxldGVCb29rbGV0LmJvb2tRdWVzdGlvbnNNYXBba2V5XTtcbiAgICAgICAgaWYodmFsLlR5cGVfX2MgPT09ICdCb29rJyl7XG4gICAgICAgICAgdGhpcy5oYW5kbGVCb29rKHZhbC5RdWVzdGlvbnNfX3IpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2V7XG4gICAgICAgICAgdGhpcy5oYW5kbGVRdWVzKHZhbCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBIQSAxMS1KQU4tMjQgaGFuZGxlQm9vayBsb2FkcyB0aGUgQm9va1xuICBoYW5kbGVCb29rKHF1ZXNMaXN0OiBhbnkpe1xuICAgIHF1ZXNMaXN0Py5yZWNvcmRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICBpZihlbGVtZW50LlR5cGVfX2MgPT09ICdCb29rJyl7XG4gICAgICAgIC8vIEhBIDI0SkFOMjQgRmV0Y2hpbmcgZnJvbSBRQiByZWZlcmVuY2VcbiAgICAgICAgdmFyIGJvb2sgPSBKU09OLnBhcnNlKGVsZW1lbnQuUUJfUmVmZXJlbmNlX1F1ZXN0aW9uc19fYyk7XG4gICAgICAgIGJvb2sucXVlc3Rpb25ib29rLlF1ZXN0aW9uc19fci5yZWNvcmRzLmZvckVhY2gocXVlcyA9PiB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVRdWVzKHF1ZXMpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGVsc2V7XG4gICAgICAgIHRoaXMuaGFuZGxlUXVlcyhlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBWRCAxM1NlcDI0IC0gZGF0YWJpbmQgY2hhbmdlc1xuICAgIC8vIFZEIDIzIE9jdDI0IC0gZmlsZSB0eXBlIGNoYW5nZXNcbiAgICBpZih0aGlzLmRhdGFCaW5kICYmIE9iamVjdC5rZXlzKHRoaXMuZGF0YUJpbmQpLmxlbmd0aCA+IDApe1xuICAgICAgdGhpcy5jaGFuZ2VTZXJ2aWNlLmRhdGFDaGFuZ2VzKCdkYXRhQmluZCcpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEhBIDExLUpBTi0yNCBoYW5kbGVRdWVzIHRvIGxvYWQgcXVlc3Rpb25cbiAgLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gIGhhbmRsZVF1ZXMocXVlczogYW55KXtcbiAgICAvLyBIQSAxOS1KQU4tMjQgSWYgY29uZGl0aW9uIGlzIGZvciBiaW5kLWluLCBjb3JyZWN0aW9uXG4gICAgLy8gSEEgMDlGRUIyNCBBZGRpbmcgY29uZGl0aW9uIHRvIGF2b2lkIHVuZGVmaW5lZCBlcnJvclxuICAgIGlmKHRoaXMuZGF0YUJpbmQgJiYgT2JqZWN0LmtleXModGhpcy5kYXRhQmluZCkubGVuZ3RoID4gMCl7XG4gICAgICBmb3IobGV0IFtrZXksIHZhbF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5kYXRhQmluZCkpe1xuICAgICAgICBsZXQgdmFsdWU6YW55ID0gdmFsO1xuICAgICAgICBpZihxdWVzLlJlZmVyZW5jZV9GaWVsZF9fYyA9PT0ga2V5KXtcbiAgICAgICAgICBpZihxdWVzLlR5cGVfX2MgPT09ICdEcm9wZG93bicgfHwgcXVlcy5UeXBlX19jID09PSAnUmFkaW8nICl7XG4gICAgICAgICAgICB0aGlzLnNxT3B0aW9ucy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICBpZihlbGVtZW50WydSZWZlcmVuY2VfRmllbGRfX2MnXSA9PT0ga2V5KXtcbiAgICAgICAgICAgICAgICBlbGVtZW50WydpbnB1dCddID0gcXVlcy5pbnB1dCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGVsZW1lbnRbJ3NlbGVjdGVkVmFsdWUnXSA9IHF1ZXMuc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gSEEgMjRKQU4yNCBUbyBiaW5kLWluIERhdGUgYW5kIERhdGVUaW1lXG4gICAgICAgICAgZWxzZSBpZihxdWVzLlR5cGVfX2MgPT09ICdEYXRlJyB8fCBxdWVzLlR5cGVfX2MgPT0gJ0RhdGVUaW1lJyl7XG4gICAgICAgICAgICBxdWVzLmlucHV0ID0gbmV3IERhdGUodmFsdWUudG9TdHJpbmcoKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEhBIDEyRkVCMjQgVG8gYmluZC1pbiBMb2NhdGlvbiBUeXBlXG4gICAgICAgICAgZWxzZSBpZihxdWVzLlR5cGVfX2MgPT09ICdMb2NhdGlvbicpe1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3ZhbHVlICcsIHZhbHVlKTtcbiAgICAgICAgICAgIHF1ZXMuaW5wdXQgPSB2YWx1ZTtcbiAgICAgICAgICAgIHF1ZXMuc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlWydhZGRyZXNzJ10gPyB2YWx1ZVsnYWRkcmVzcyddIDogdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXMgZm9yIGRhdGEgYmluZEluXG4gICAgICAgICAgZWxzZSBpZihxdWVzLlR5cGVfX2MgPT09ICdDYWxlbmRhcicpe1xuICAgICAgICAgICAgbGV0IGVudHJpZXMgPSBKU09OLnBhcnNlKHF1ZXNbJ0ZpZWxkc19NZXRhX19jJ10pO1xuICAgICAgICAgICAgaWYoZW50cmllcyl7XG4gICAgICAgICAgICAgIGxldCByZWZlcmVuY2VRdWVzdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgaWYoZW50cmllcy5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgICAgICAgZW50cmllcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgaWYoZWxlbWVudC5xdWVzdGlvblJlZmVyZW5jZSl7XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBxUmVmZXJlbmNlID0gSlNPTi5wYXJzZShlbGVtZW50LnF1ZXN0aW9uUmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlUXVlc3Rpb25zLnB1c2gocVJlZmVyZW5jZT8ucXVlc3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZihyZWZlcmVuY2VRdWVzdGlvbnMubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICAgICAgdmFsdWU/LmZvckVhY2goY2FsZW5kYXJBcnJheSA9PiB7XG4gICAgICAgICAgICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKGNhbGVuZGFyQXJyYXkuZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyQXJyYXkuZW50cmllcy5mb3JFYWNoKGlucHV0RW50cnk9PntcbiAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhpbnB1dEVudHJ5KSl7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VRdWVzdGlvbnMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZpZWxkLlJlZmVyZW5jZV9GaWVsZF9fYyA9PSBrKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZpZWxkLlR5cGVfX2MgPT09ICdEYXRlJyB8fCBmaWVsZC5UeXBlX19jID09ICdEYXRlVGltZScgfHwgZmllbGQuVHlwZV9fYyA9PSAnVGltZScpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmlucHV0ID0gbmV3IERhdGUodi50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9aWYoZmllbGQuVHlwZV9fYyA9PT0gJ0Ryb3Bkb3duJyB8fCBmaWVsZC5UeXBlX19jID09PSAnUmFkaW8nKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnNlbGVjdGVkVmFsdWUgPSB2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGQuaW5wdXQgPSB2O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmlucHV0ID0gdjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgIH0gXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRFdmVudChkYXRlLHJlZmVyZW5jZVF1ZXN0aW9ucyk7Ly9TS1MgMjdTRVAyNCBlYWNoIGV2ZW50IGFkZGVkIHRvIGFsbEV2ZW50cyBhcnJheVxuICAgICAgICAgICAgICAgICAgICB9KSAgXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuYWRkRXZlbnQoZGF0ZSxyZWZlcmVuY2VRdWVzdGlvbnMpOyAvL3RoaXMgaXMgb25seSBsYXN0IGV2ZW50IGFkZGVkIHRvIGFsbEV2ZW50cyBhcnJheVxuICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcXVlcy5pbnB1dCA9IHRoaXMuYWxsRXZlbnRzLmxlbmd0aCA+IDAgPyB0aGlzLmFsbEV2ZW50cyA6ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBWRCAyMyBPY3QyNCAtIGZpbGUgdHlwZSBjaGFuZ2VzXG4gICAgICAgICAgZWxzZSBpZihxdWVzLlR5cGVfX2MgPT09ICdGaWxlJyl7XG4gICAgICAgICAgICBxdWVzLmlucHV0ID0gW107XG4gICAgICAgICAgICBxdWVzLmlucHV0ID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICBxdWVzLmlucHV0ID0gdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYW5zd2VyTGlzdC5wdXNoKHF1ZXMpOyAvLyBIQSAxMkZFQjI0IFRvIGdpdmUgdGhlIHZhbHVlIGZvciBkYXRhXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIGNvbnN0IHF1ZXN0aW9uID0ge307XG4gICAgICBxdWVzdGlvblsnaWQnXSA9IHF1ZXMuSWQ7XG4gICAgICAvLyBxdWVzdGlvblsnUXVlc3Rpb25fX2MnXSA9IHF1ZXMuUXVlc3Rpb25fX2M7XG4gICAgICBxdWVzdGlvblsnaW5wdXQnXSA9IHF1ZXMuaW5wdXQ7XG4gICAgICAvLyBIQSAxMkZFQjI0IFRvIGJpbmQtb3V0IExvY2F0aW9uIFR5cGVcbiAgICAgIGlmKHF1ZXMuVHlwZV9fYyA9PT0gJ0xvY2F0aW9uJyl7XG4gICAgICAgIHF1ZXN0aW9uWydpbnB1dCddID0gcXVlcy5pbnB1dCA/IHF1ZXMuaW5wdXQgOiBxdWVzLnNlbGVjdGVkVmFsdWU7XG4gICAgICB9ZWxzZSBpZihxdWVzLlR5cGVfX2MgPT0gJ0ZpbGUnKXtcbiAgICAgICAgIC8vIFZEIDIzIE9jdDI0IC0gZmlsZSB0eXBlIGNoYW5nZXNcbiAgICAgICAgcXVlc3Rpb25bJ2lucHV0J10gPSBxdWVzLmlucHV0ID8gcXVlcy5pbnB1dCA6IFtdO1xuICAgICAgfVxuICAgICAgcXVlc3Rpb25bJ1R5cGVfX2MnXSA9IHF1ZXMuVHlwZV9fYztcbiAgICAgIHF1ZXN0aW9uWydRdWVzdGlvbl9Ob19fYyddID0gcXVlcy5RdWVzdGlvbl9Ob19fYztcbiAgICAgIHF1ZXN0aW9uWydSZWZlcmVuY2VfRmllbGRfX2MnXSA9IHF1ZXM/LlJlZmVyZW5jZV9GaWVsZF9fYztcbiAgICAgIHRoaXMuYW5zd2VyTGlzdC5wdXNoKHF1ZXN0aW9uKTtcbiAgICB9XG4gIH1cblxuLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzIGZvciBkYXRhIGJpbmRJblxuICBhZGRFdmVudChkYXk6IGFueSwgZW50cnlRdWVzKSB7XG4gICAgLy8gVHJhbnNmb3JtIG5ldyBlbnRyaWVzIGludG8gdGhlIGRlc2lyZWQgZm9ybWF0XG4gICAgY29uc3QgbmV3RW50cmllcyA9IGVudHJ5UXVlcy5yZWR1Y2UoKGFjYywgcSkgPT4ge1xuICAgICAgICBhY2NbcS5JZF0gPSB7IC4uLnEgfTtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICB9LCB7fSk7XG5cbiAgICAvLyBGaW5kIGlmIGFuIGV2ZW50IGFscmVhZHkgZXhpc3RzIGZvciB0aGUgZ2l2ZW4gZGF0ZVxuICAgIGNvbnN0IGV4aXN0aW5nRXZlbnQgPSB0aGlzLmFsbEV2ZW50cy5maW5kKGV2ZW50ID0+IGV2ZW50LmRhdGUudG9EYXRlU3RyaW5nKCkgPT09IGRheS50b0RhdGVTdHJpbmcoKSk7XG5cbiAgICBpZiAoZXhpc3RpbmdFdmVudCkge1xuICAgICAgICAvLyBJZiB0aGUgZXZlbnQgZXhpc3RzLCBwdXNoIHRoZSBuZXcgZW50cmllcyB0byB0aGUgZXhpc3RpbmcgZW50cmllc1xuICAgICAgICBjb25zdCBleGlzdGluZ0VudHJpZXMgPSBleGlzdGluZ0V2ZW50LmVudHJpZXMubWFwKGVudHJ5ID0+ICh7IC4uLmVudHJ5IH0pKTtcbiAgICAgICAgZXhpc3RpbmdFbnRyaWVzLnB1c2gobmV3RW50cmllcyk7XG4gICAgICAgIGV4aXN0aW5nRXZlbnQuZW50cmllcyA9IGV4aXN0aW5nRW50cmllcztcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgZXZlbnQgaWYgaXQgZG9lc24ndCBleGlzdCBmb3IgdGhlIGdpdmVuIGRhdGVcbiAgICAgICAgY29uc3QgbmV3RXZlbnQgPSB7XG4gICAgICAgICAgICBpZDogJ18nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyKDIsIDkpLFxuICAgICAgICAgICAgZGF0ZTogZGF5LFxuICAgICAgICAgICAgZW50cmllczogW25ld0VudHJpZXNdIC8vIFdyYXAgdGhlIG5ldyBlbnRyaWVzIGluIGFuIGFycmF5XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYWxsRXZlbnRzLnB1c2gobmV3RXZlbnQpO1xuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKCdhbGwgZXZlbnRzIGJvb2tsZXQnKTtcbiAgICBjb25zb2xlLmxvZyh0aGlzLmFsbEV2ZW50cyk7XG59XG5cblxuICByZWFkUXVlc3Rpb25zKHFiSWQ6IHN0cmluZykge1xuICAgIC8vIGNvbnNvbGUubG9nKCdpbnNpZGUgQm9va2xldENvbXBvbmVudC5yZWFkUXVlc3Rpb25zICcgKyBxYklkKTtcbiAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmJvb2tRdWVzdGlvbnNNYXAuc2l6ZSk7XG4gICAgbGV0IHF1ZXN0aW9ucyA9IFtdO1xuICAgIC8vIEhBIDMxLUpBTi0yNCBBZGRlZCB0ZXJuYXJ5IHRvIGF2b2lkIHVuZGVmaW5lZFxuICAgIGZvcih2YXIgc3EgaW4gdGhpcy5ib29rUXVlc3Rpb25zTWFwPy5nZXQocWJJZCk/LlF1ZXN0aW9uc19fcj8ucmVjb3Jkcykge1xuICAgICAgbGV0IHE6IFF1ZXN0aW9uID0gdGhpcy5ib29rUXVlc3Rpb25zTWFwPy5nZXQocWJJZCkuUXVlc3Rpb25zX19yLnJlY29yZHNbc3FdO1xuICAgICAgLy8gSEEgMDlGRUIyNCBpZiBxdWVzdGlvbiBpcyB0aGVyZSBwcm9jZXNzXG4gICAgICBpZihxKXtcbiAgICAgICAgaWYoKHEuVHlwZV9fYyA9PSAnRHJvcGRvd24nIHx8IHEuVHlwZV9fYyA9PSAnUmFkaW8nKSAmJiB0aGlzLnNxT3B0aW9ucy5nZXQocS5JZCkpIHtcbiAgICAgICAgICBxdWVzdGlvbnMucHVzaCh0aGlzLnNxT3B0aW9ucy5nZXQocS5JZCkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHF1ZXN0aW9ucy5wdXNoKHEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVkQgMTJKdW4yNCBmaWVsZCBwZXJtaXNpc2lvbiBjaGFuZ2VzXG4gICAgaWYgKHRoaXMuZmllbGRSZXN0cmljdGlvbnMpIHtcbiAgICAgIGNvbnN0IGZpZWxkUmVzdHJpY3Rpb25zID0gbmV3IE1hcChPYmplY3QuZW50cmllcyh0aGlzLmZpZWxkUmVzdHJpY3Rpb25zLmZpZWxkcykpO1xuICAgICAgcXVlc3Rpb25zLmZvckVhY2gocXVlcyA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzdHJpY3Rpb24gPSBmaWVsZFJlc3RyaWN0aW9ucy5nZXQocXVlcy5VbmlxdWVfSWRlbnRpZmllcl9fYyk7XG4gIFxuICAgICAgICAgIGlmIChyZXN0cmljdGlvbikge1xuICAgICAgICAgICAgICBxdWVzLlJlYWRfT25seV9fYyA9IHJlc3RyaWN0aW9uID09PSAncmVhZE9ubHknO1xuICAgICAgICAgICAgICBxdWVzLklzX0hpZGVfX2MgPSByZXN0cmljdGlvbiA9PT0gJ2hpZGUnO1xuICAgICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG4gICAgLy8gY29uc29sZS5sb2cocXVlc3Rpb25zKTtcbiAgICByZXR1cm4gcXVlc3Rpb25zO1xuICB9XG4gLy8gVkQgMTFKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXNcbiAgcmVhZFRyYW5zUXVlc3Rpb25zKHFiSWQ6IHN0cmluZyl7XG4gICAgbGV0IHJlY29yZCA9IFtdO1xuICAgICAgbGV0IHRyYW5zbGF0ZVJlY29yZCA9IHRoaXMudHJhbnNsYXRlTWFwLmdldChxYklkKTtcbiAgICAgaWYodHJhbnNsYXRlUmVjb3JkICYmIHRyYW5zbGF0ZVJlY29yZC5sZW5ndGggPiAwKSB7XG4gICAgICB0cmFuc2xhdGVSZWNvcmQuZm9yRWFjaChsYW5SZWMgPT4ge1xuICAgICAgICBpZihsYW5SZWMubGFuZ3VhZ2VDb2RlID09IHRoaXMubGFuZ3VhZ2VDb2RlKXtcbiAgICAgICAgICAgcmVjb3JkID0gbGFuUmVjLmZpZWxkc1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgfVxuICAgICAgcmV0dXJuIHJlY29yZDtcbiAgfVxuXG4gIGdldFRleHQodmFsdWUpIHtcbiAgICB2YXIgZG9jID0gbmV3IERPTVBhcnNlcigpLnBhcnNlRnJvbVN0cmluZyh2YWx1ZSwgXCJ0ZXh0L2h0bWxcIik7XG4gICAgLy9jb25zb2xlLmxvZyggZG9jLmRvY3VtZW50RWxlbWVudC50ZXh0Q29udGVudCk7XG4gICAgcmV0dXJuIHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKFxuICAgICAgZG9jLmRvY3VtZW50RWxlbWVudC50ZXh0Q29udGVudFxuICAgICk7XG4gIH1cbiAgZ2V0RHJvcERvd24oZXZlbnQ6YW55KXtcbiAgICB0aGlzLmhhZGxlRHJvcERvd25EZXBlbmRlbnQuZW1pdChldmVudCk7XG4gIH1cbiAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgZ2V0Q2FsZW5kYXJEYXRlKGV2ZW50OmFueSl7XG4gICAgdGhpcy5oYW5kbGVDYWxlbmRhckRhdGUuZW1pdChldmVudCk7XG4gIH1cbiAgZ2V0Q2FsZW5kYXJFdmVudChldmVudDphbnkpe1xuICAgIGV2ZW50W1wibnh0SWRcIl09IE9iamVjdC5rZXlzKHRoaXMuYm9va2xldEpTT04/LmJvb2tRdWVzdGlvbnNNYXApWzBdO1xuICAgIHRoaXMuaGFuZGxlQ2FsZW5kYXJFdmVudC5lbWl0KGV2ZW50KTtcbiAgfVxufVxuIiwiPG5neC1zcGlubmVyIHNpemU9XCJtZWRpdW1cIiBbbmFtZV09XCJzcGlubmVyTmFtZVwiIFt0eXBlXT1cInNwaW5uZXJUeXBlXCI+PC9uZ3gtc3Bpbm5lcj5cbjwhLS0gQm9va2xldCBIYW5kbGluZy0tPlxuPCEtLSBIQSAxOURFQzIzIEZvciBEaXJlY3Rpb24gLS0+XG48ZGl2ICpuZ0Zvcj1cImxldCBxYiBvZiBib29rbGV0XCIgW25nQ2xhc3NdPVwibGFuZ0RpcmVjdGlvblwiPlxuICAgIDwhLS0gTVIgQ29tbWVudGVkIGJlbG93IGNvZGUgdG8gZW5zdXJlIHNpbmdsZSBKU09OIGZvciBVTkNPTkRJVElPTkFMIEJvb2tsZXRzIC0tPlxuICAgIDwhLS0gPGxpYi1xdWVzdGlvbm5haXJlIFtzZXJ2XT1cInNlcnZcIiBbcWJJZF09XCJxYi5JZFwiIFt0a25dPVwidGtuXCI+PC9saWItcXVlc3Rpb25uYWlyZT4gLS0+XG4gICAgPCEtLSBIQSAyOERFQzIzIEJlbG93IElmIGxvZ2ljIGlzIHRvIGxvYWQgZnJvbSBib29rbGV0ICAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwicWIuUXVlc3Rpb25zX19yPy5yZWNvcmRzOyBlbHNlIGVsc2VCbG9ja1wiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBxdWVzIG9mIHFiLlF1ZXN0aW9uc19fci5yZWNvcmRzXCIgY2xhc3M9XCJxdWVzdGlvbmRpdjFcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPCEtLSBIQSAxN0pBTjI0IC0gSXMgdGl0bGUgaXMgZW5hYmxlZCBzbyB0aGF0IGJhc2VkIG9uIHRoZSBib29sZWFuIGRpdiB3aWxsIGJlIHZpc2libGUgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuSXNfVGl0bGVfX2NcIiBbY2xhc3NdPVwicWIuaXNTaGVuZ2VsX19jID8gJ2hlYWRlci1zdHlsZScgOiAncXVlc3Rpb24tZi1zaXplIGFkZGl0aW9uYWwnXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVkQgMDhOT1YyMyAtIHNob3dpbmcgbGFibGUgd2hlbiBpdHMgYXZhaWxhYmxlLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJnZXRUZXh0KHF1ZXM/LlF1ZXN0aW9uX1RleHRfX2MpXCIgKm5nSWY9XCJxdWVzPy5RdWVzdGlvbl9UZXh0X19jXCIgPiBcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHF1ZXM/LlF1ZXN0aW9uX1RleHRfX2MgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+IDwhLS0gVkQgMTlKQU4yNCAtIGdldHRpbmcgdG9rZW4gYXMgaW5wdXQgLS0+IDwhLS1WRCAxMUp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlcy0tPlxuICAgICAgICAgICAgICAgIDwhLS1WRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXMtLT4gXG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbmJvb2sgW3FiSXRlbV09XCJxYlwiIFt0b2tlbl09XCJ0b2tlblwiIFxuICAgICAgICAgICAgICAgIFtsYWJlbFZhbHVlXT1cImxhYmVsVmFsdWVcIiBcbiAgICAgICAgICAgICAgICBbcXVlc3Rpb25JdGVtXT1cInF1ZXNcIiBcbiAgICAgICAgICAgICAgICBbdHJhbnNsYXRlZFF1ZXN0aW9uc109XCJyZWFkVHJhbnNRdWVzdGlvbnMocWIuSWQpXCIgXG4gICAgICAgICAgICAgICAgW3F1ZXN0aW9uc109XCJyZWFkUXVlc3Rpb25zKHFiLklkKVwiICBcbiAgICAgICAgICAgICAgICAoaGFuZGxlRHJvcERvd24pPVwiZ2V0RHJvcERvd24oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGhhbmRsZUNhbGVuZGFyRGF0ZSk9XCJnZXRDYWxlbmRhckRhdGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGhhbmRsZUNhbGVuZGFyRXZlbnQpPVwiZ2V0Q2FsZW5kYXJFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9saWItcXVlc3Rpb25ib29rPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gSEEgMjhERUMyMyBCZWxvdyBlbHNlIGxvZ2ljIGlzIHRvIGxvYWQgZnJvbSBib29rcyBvciBxdWVzdGlvbnMgLS0+XG4gICAgPG5nLXRlbXBsYXRlICNlbHNlQmxvY2s+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJxdWVzdGlvbmRpdjFcIj5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFxYi5Jc19UaXRsZV9fY1wiIFtjbGFzc109XCJxYi5pc1NoZW5nZWxfX2MgPyAnaGVhZGVyLXN0eWxlJyA6ICdxdWVzdGlvbi1mLXNpemUgYWRkaXRpb25hbCdcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBWRCAwOE5PVjIzIC0gc2hvd2luZyBsYWJsZSB3aGVuIGl0cyBhdmFpbGFibGUtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbaW5uZXJIVE1MXT1cImdldFRleHQocWI/LlF1ZXN0aW9uX1RleHRfX2MpXCIgKm5nSWY9XCJxYj8uUXVlc3Rpb25fVGV4dF9fY1wiID4gXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBxYj8uUXVlc3Rpb25fVGV4dF9fYyB9fVxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcWI/LlRpdGxlX19jIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PiA8IS0tIFZEIDE5SkFOMjQgLSBnZXR0aW5nIHRva2VuIGFzIGlucHV0IC0tPiA8IS0tICAvLyBWRCAxMUp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlcy0tPlxuICAgICAgICAgICAgICAgIDxsaWItcXVlc3Rpb25ib29rIFtxYkl0ZW1dPVwicWJcIiBbdG9rZW5dPVwidG9rZW5cIiBbbGFiZWxWYWx1ZV09XCJsYWJlbFZhbHVlXCIgW3F1ZXN0aW9uSXRlbV09XCJxYlwiIFt0cmFuc2xhdGVkUXVlc3Rpb25zXT1cInJlYWRUcmFuc1F1ZXN0aW9ucyhxYi5JZClcIiBbcXVlc3Rpb25zXT1cInJlYWRRdWVzdGlvbnMocWIuSWQpXCIgIChoYW5kbGVEcm9wRG93bik9XCJnZXREcm9wRG93bigkZXZlbnQpXCI+PC9saWItcXVlc3Rpb25ib29rPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuPCEtLSBHcm91cCBBY3Rpb25zIC0tPlxuPCEtLSBIQSAxOURFQzIzIEZvciBEaXJlY3Rpb24gLS0+XG48ZGl2IGNsYXNzPVwiYWxpZ24tc3VibWl0LXJvd1wiICpuZ0lmPVwiYWJJdGVtPy5TdGF0dXNfX2MgIT0gJ0NvbXBsZXRlZCdcIiBbbmdDbGFzc109XCJsYW5nRGlyZWN0aW9uXCI+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGFjdGlvbnM7IGxldCBpID0gaW5kZXhcIj5cbiAgICA8IS0tIC8vIEhBIDIySkFOMjQgQ29tbW9uaXNlIHRoZSBidXR0b24gc3R5bGUgaW4gZnVzaW9uIC0tPlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJoYW5kbGVCb29rbGV0QWN0aW9uQ2xpY2soYWN0aW9uKVwiIG5nQ2xhc3M9XCJidG4gYnRuLXByaW1hcnkgZmMtYnV0dG9uIG54dEJ1dHRvblwiPlxuICAgICAgICAgICAge3sgYWN0aW9uLm5hbWUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
536
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9va2xldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ueHQtYXBwL3NyYy9saWIvcGFnZXMvYm9va2xldC9ib29rbGV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9ib29rbGV0L2Jvb2tsZXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFJVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksR0FJYixNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBa0J2QixNQUFNLE9BQU8sZ0JBQWdCO0lBbUNqQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFFRDtJQXpDQSxTQUFTLENBQVM7SUFDbEIsSUFBSSxDQUFTO0lBQ2IsR0FBRyxDQUFTO0lBQ1osV0FBVyxDQUFNO0lBQ2pCLHFCQUFxQixDQUFLO0lBQzFCLFVBQVUsQ0FBUTtJQUNsQixLQUFLLENBQVE7SUFDYixZQUFZLENBQVEsQ0FBRSxtQ0FBbUM7SUFDekQsaUJBQWlCLENBQU0sQ0FBQyx1Q0FBdUM7SUFDOUQsd0JBQXdCLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDakUsVUFBVSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ25ELHNCQUFzQixHQUFxQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3pFLDhCQUE4QjtJQUNuQixrQkFBa0IsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUMzRCxtQkFBbUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUUvRCxVQUFVLENBQWlCO0lBRTNCLE9BQU8sR0FBVSxFQUFFLENBQUM7SUFDcEIsTUFBTSxHQUFRLEVBQUUsQ0FBQztJQUNqQixPQUFPLEdBQWlCLEVBQUUsQ0FBQztJQUMzQixnQkFBZ0IsR0FBUSxJQUFJLEdBQUcsRUFB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c0JBQTVCLE1BQU07Z0JBZ0JFLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uSW5pdCxcbiAgT25DaGFuZ2VzLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIEVsZW1lbnRSZWYsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBTYWxlc2ZvcmNlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zYWxlc2ZvcmNlLnNlcnZpY2VcIjtcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7IEFjdGlvbk1ldGEgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2FjdGlvbk1ldGEnO1xuaW1wb3J0IHsgUXVlc3Rpb24gfSBmcm9tIFwiLi4vLi4vd3JhcHBlclwiO1xuaW1wb3J0IHsgQm9va2xldFdyYXBwZXIgfSBmcm9tIFwiLi4vLi4vbW9kZWwvYm9va2xldFdyYXBwZXJcIjtcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvc3RvcmFnZS5zZXJ2aWNlJztcbmltcG9ydCB7IENoYW5nZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvY2hhbmdlLnNlcnZpY2VcIjtcbi8vIEhBIDE5REVDMjMgaW1wb3J0ZWQgdHJhbnNsYXRpb24gc2VydmljZVxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vaTE4bi5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1ib29rbGV0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Jvb2tsZXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9ib29rbGV0LmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBCb29rbGV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgYm9va2xldElkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNlcnY6IHN0cmluZztcbiAgQElucHV0KCkgdGtuOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGJvb2tsZXRKU09OOiBhbnk7XG4gIEBJbnB1dCgpIGRyb3Bkb3duRGVwZW5kZW50RGF0YTphbnk7XG4gIEBJbnB1dCgpIGxhYmVsVmFsdWU6c3RyaW5nO1xuICBASW5wdXQoKSB0b2tlbjpzdHJpbmc7XG4gIEBJbnB1dCgpIGxhbmd1YWdlQ29kZTpzdHJpbmc7ICAvLyBWRCAxMUp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlc1xuICBASW5wdXQoKSBmaWVsZFJlc3RyaWN0aW9uczogYW55OyAvLyBWRCAxMkp1bjI0IC0gZmllbGQgcGVybWlzc2lvbiBjaGFuZ2VcbiAgQE91dHB1dCgpIGhhbmRsZUJvb2tsZXRBY3Rpb25FdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIEBPdXRwdXQoKSBoYW5kbGVQYWdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGhhZGxlRHJvcERvd25EZXBlbmRlbnQ6RXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gIEBPdXRwdXQoKSBoYW5kbGVDYWxlbmRhckRhdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgaGFuZGxlQ2FsZW5kYXJFdmVudDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIG54dEJvb2tsZXQ6IEJvb2tsZXRXcmFwcGVyO1xuXG4gIHB1YmxpYyBib29rbGV0OiBhbnlbXSA9IFtdO1xuICBwdWJsaWMgYWJJdGVtOiBhbnkgPSB7fTtcbiAgcHVibGljIGFjdGlvbnM6IEFjdGlvbk1ldGFbXSA9IFtdO1xuICBwdWJsaWMgYm9va1F1ZXN0aW9uc01hcDogYW55ID0gbmV3IE1hcCgpO1xuICBwdWJsaWMgdHJhbnNsYXRlTWFwOiBhbnkgPSBuZXcgTWFwKCk7ICAvLyBWRCAxMUp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlc1xuICBwcml2YXRlIHNxT3B0aW9uczogYW55ID0gbmV3IE1hcCgpO1xuICBwdWJsaWMgaXNBbnN3ZXJGbGFnOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBzcGlubmVyTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgc3Bpbm5lclR5cGU6IHN0cmluZztcbiAgLy8gSEEgMTlERUMyMyBsYW5nRGlyZWN0aW9uIHZhcmlhYmxlIGlzIGNyZWF0ZWQgdG8gYXNzaWduIHRoZSBkaXJlY3Rpb24gYXMgY2xhc3NcbiAgbGFuZ0RpcmVjdGlvbiA9ICdsdHInOyAvLyBIQSAyOERFQzIzIG1ha2luZyBsdHIgYXMgZGVmYXVsdCBkaXJlY3Rpb25cbiAgYW5zd2VyTGlzdCA9IFtdOyAvLyBIQSAxMS1KQU4tMjQgQW5zd2VybGlzdCB0byBzdG9yZSB0aGUgbWluaW1hbCB2YWx1ZVxuICBASW5wdXQoKSBkYXRhQmluZDphbnk7Ly8gSEEgMTgtSkFOLTI0IFRvIGluc2VydCB0aGUgZW5kcG9pbnQgdmFsdWUgdG8gdGhlIHF1ZXN0aW9uXG4gIGFsbEV2ZW50czphbnlbXT1bXTsgIC8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICBcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzZlNlcnZpY2U6IFNhbGVzZm9yY2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgZGF0YVNlcnZpY2U6IERhdGFTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXG4gICAgcHJpdmF0ZSBjaGFuZ2VTZXJ2aWNlOiBDaGFuZ2VTZXJ2aWNlLCBcbiAgICBlbDogRWxlbWVudFJlZixcbiAgICBwdWJsaWMgaTE4blNlcnZpY2U6IEkxOG5TZXJ2aWNlXG4gICkgeyBcbiAgICB0aGlzLnNwaW5uZXJOYW1lID0gXCJzcDFcIjtcbiAgICB0aGlzLnNwaW5uZXJUeXBlID0gXCJiYWxsLXNwaW4tY2xvY2t3aXNlXCI7XG4gICAgY29uc29sZS5sb2coJ2Ryb3Bkb3duRGVwZW5kZW50RGF0YScsdGhpcy5kcm9wZG93bkRlcGVuZGVudERhdGEpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgXG4vLyAgVkQgMTJKYW4yNCBmaWVsZFJlc3RyaWN0aW9ucyBmb3JtYXRlIFxuICAvLyAgIHtcbiAgLy8gICAgIFwiZmllbGRzXCIgOiB7XG4gIC8vICAgICAgICAgXCJ0cmFuc1FiLTAxXCIgOiBcInJlYWRPbmx5XCIsXG4gIC8vICAgICAgICAgXCJUcmFuc0ZpcjAyXCIgOiBcIlwiLFxuICAvLyAgICAgICAgIFwiVHJhbnNMYXN0MDNcIiA6IFwicmVhZE9ubHlcIixcbiAgLy8gICAgICAgICBcImJrMi1xMlwiIDogXCJoaWRlXCJcbiAgLy8gICAgIH1cbiAgLy8gIH1cblxuICAgIC8vIEhBIDE4LUpBTi0yNCBEdW1teSBTdGF0aWMgZGF0YSBmb3IgdGVzdGluZ1xuICAgIC8vIHRoaXMuZGF0YUJpbmQgPSB7XG4gICAgLy8gICBcIl9pZFwiOiBcIjY1OWVkMDAyZWQ1MWJiODA2MTU0NDI1NVwiLFxuICAgIC8vICAgXCJjb21wYW55SWRcIjogXCI1dWxsaDFCV3BZcW52ektoOUxcIixcbiAgICAvLyAgIFwibmFtZVwiOiBcIkFsIFlhc21pbmVcIixcbiAgICAvLyAgIFwiY29kZVwiOiBcImNoZWNrXCIsXG4gICAgLy8gICBcInN0YXR1c1wiOiBcIkluLVByb2dyZXNzXCIsXG4gICAgLy8gICBcImNyZWF0ZWRBdFwiOiBcIjIwMjQtMDEtMTBUMTc6MTI6MzQuNjg2WlwiLFxuICAgIC8vICAgXCJ1cGRhdGVkQXRcIjogXCIyMDI0LTAxLTEwVDE5OjUzOjA4LjEzNVpcIixcbiAgICAvLyAgIFwiX192XCI6IDAsXG4gICAgLy8gICBcIm93bmVyXCI6IFwiY2hlY2tcIixcbiAgICAvLyAgIFwiY3VzdG9tZXJcIjogXCJjaGVja1wiLFxuICAgIC8vICAgXCJkYXRpXCI6IFwiMjAyNC0wMS0yM1QxODozMDowMC4wMDBaXCIsXG4gICAgLy8gICBcInRpbWlcIjogXCIyMDI0LTAxLTIzVDE4OjMwOjAwLjAwMFpcIixcbiAgICAvLyBcImZOYW1lXCI6IFwiSGFpZGVyXCIsXG4gICAgLy8gXCJsTmFtZVwiOiBcIkFsaVwiLFxuICAgIC8vIFwiZGVmYXVsdEFwcFwiOiBcIk5YVFwiLFxuICAgIC8vIFwiZW1haWxcIjogXCJoYWlkZXJAZ21haWwuY29tXCIsXG4gICAgLy8gXCJsb2NhdGlvblwiOiB7YWRkcmVzczogXCIxMDcsIEFzaG9rIE5hZ2FyLCBLYWR1Z29uZGFuYWhhbGxpLCBCZW5nYWx1cnUsIEthcm5hdGFrYSA1NjAwNDUsIEluZGlhXCIsXG4gICAgLy8gICBsYXRpdHVkZTogMTMuMDIwMDU3NSxcbiAgICAvLyAgIGxvbmdpdHVkZTogNzcuNjEyOTgxNn0sXG4gICAgLy8gXCJsb2NhdGlvblwiOiBcIjEwNywgQXNob2sgTmFnYXIsIEthZHVnb25kYW5haGFsbGksIEJlbmdhbHVydSwgS2FybmF0YWthIDU2MDA0NSwgSW5kaWFcIixcbiAgICAvLyBcInRleHRBcmVhXCI6IFwiTG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwgc2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWduYSBhbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1YXQuIER1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRldXIgc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtXCIsXG4gICAgLy8gfTtcbiAgICAgICAgdGhpcy5wcm9jZXNzQm9va2xldCgpO1xuICB9XG4gLy8gVkQgTk9WMjMgLSB1cGRhdGUgdGhlIGpzb24gZGF0YSB3aGVuIGJvb2tsZXRJZCBhbmQgYm9va2xldEpTT04gY2hhbmdlc1xuICBuZ09uQ2hhbmdlcyhzaW1wbGVjaGFuZ2VzOlNpbXBsZUNoYW5nZXMpIHtcbiAgIC8vIEhBIDIzSkFOMjQgVG8gYXZvaWQgdW5kZWZpbmVkIGVycm9yXG4gICBpZihzaW1wbGVjaGFuZ2VzWydib29rbGV0SWQnXSB8fCAoc2ltcGxlY2hhbmdlc1snYm9va2xldEpTT04nXSAmJiAoc2ltcGxlY2hhbmdlc1snYm9va2xldEpTT04nXS5jdXJyZW50VmFsdWUgIT0gbnVsbCB8fCBzaW1wbGVjaGFuZ2VzWydib29rbGV0SlNPTiddLmN1cnJlbnRWYWx1ZSAhPSB1bmRlZmluZWQpKSB8fCAoc2ltcGxlY2hhbmdlc1snZGF0YUJpbmQnXSAmJiAoc2ltcGxlY2hhbmdlc1snZGF0YUJpbmQnXS5jdXJyZW50VmFsdWUgIT0gbnVsbCB8fCBzaW1wbGVjaGFuZ2VzWydkYXRhQmluZCddLmN1cnJlbnRWYWx1ZSAhPSB1bmRlZmluZWQpKSApe1xuICAgICAgdGhpcy5hbGxFdmVudHMgPSBbXTtcbiAgICAgIHRoaXMucHJvY2Vzc0Jvb2tsZXQoKTtcbiAgICB9XG4gICAgLy8gY29uc29sZS5sb2coJ2luc2lkZSBRdWVzdGlvbm5haXJlIG5nT25DaGFuZ2VzJyk7XG4gICAgLy8gY29uc29sZS5sb2codGhpcy5ib29rbGV0KTtcbiAgICAvLyBpZih0aGlzLmJvb2tsZXQgPT0gdW5kZWZpbmVkIHx8IHRoaXMuYm9va2xldC5sZW5ndGggPT0gMCkge1xuICAgIC8vICAgdGhpcy5wcm9jZXNzQm9va2xldCgpO1xuICAgIC8vIH1cbiAgfVxuXG4gIHByb2Nlc3NCb29rbGV0KCkge1xuICAgIGlmICh0aGlzLmJvb2tsZXRJZCkge1xuICAgICAgaWYgKHRoaXMuYm9va2xldElkLmxlbmd0aCA9PSAxOCkge1xuICAgICAgICB0aGlzLnJlYWRCb29rbGV0KHRoaXMuYm9va2xldElkKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYodGhpcy5ib29rbGV0SlNPTikge1xuICAgICAgLy8gVHJ5IHRvIHBhc3MgYSB2YWx1ZSBmcm9tIEJhY2tlbmQgdG8gZGlmZmVyZW50aWF0ZSB0aGUgUXVlc3Rpb25Cb29rIFJlYWQgYW5kIEFuc3dlckJvb2sgUmVhZFxuICAgICAgdGhpcy5pc0Fuc3dlckZsYWcgPSB0cnVlO1xuXG4gICAgICBpZih0aGlzLmJvb2tsZXRKU09OICE9IG51bGwgfHwgdGhpcy5ib29rbGV0SlNPTiAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAvLyBTdG9yaW5nIHRoZSBBUEkgcmVzcG9uc2UgZm9yIGZ1dHVyZSB1c2VcbiAgICAgICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNhdmUodGhpcy5ib29rbGV0SlNPTik7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYm9va2xldCA9IHRoaXMuYm9va2xldEpTT04ucmVjb3JkcztcbiAgICAgIHRoaXMuYWJJdGVtID0gdGhpcy5ib29rbGV0SlNPTi5hbnN3ZXJib29rO1xuXG4gICAgICAvLyBQcm9jZXNzIHRoZSBTdWIgUXVlc3Rpb24gT3B0aW9ucyAtIFRoaXMgc2hvdWxkIGJlIG1lcmdlZCB3aXRoIGJvb2tRdWVzdGlvbnNNYXAgaW4gZnV0dXJlXG4gICAgICBmb3IgKHZhciBzcSBpbiB0aGlzLmJvb2tsZXRKU09OLnNxT3B0aW9ucykge1xuICAgICAgICB0aGlzLnNxT3B0aW9ucy5zZXQoc3EsIHRoaXMuYm9va2xldEpTT04uc3FPcHRpb25zW3NxXSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFByb2Nlc3MgdGhlIFF1ZXN0aW9uc1xuICAgICAgLy8gSEEgMjhERUMyMyB0aGlzIGFwcGxpZXMgZm9yIGJvb2tsZXRcbiAgICAgIC8vIEhBIDE3SkFOMjQgQWRkZWQgdGVybmFyeSBvcGVyYXRvciB0byBhdm9pZCB1bmRlZmluZWQgc2NlbmFyaW9cbiAgICAgIC8vIEhBIDA5RkVCMjQgQWRkaW5nIGNvbmRpdGlvbiB0byBhdm9pZCB1bmRlZmluZWQgZXJyb3JcbiAgICAgIGlmKHRoaXMuYm9va2xldEpTT04/LmJvb2tRdWVzdGlvbnNNYXAgJiYgT2JqZWN0LmtleXModGhpcy5ib29rbGV0SlNPTj8uYm9va1F1ZXN0aW9uc01hcCkubGVuZ3RoID4gMCl7XG4gICAgICAgIGZvciAodmFyIHZhbHVlIGluIHRoaXMuYm9va2xldEpTT04uYm9va1F1ZXN0aW9uc01hcCkge1xuICAgICAgICAgIHRoaXMuYm9va1F1ZXN0aW9uc01hcC5zZXQodmFsdWUsIHRoaXMuYm9va2xldEpTT04uYm9va1F1ZXN0aW9uc01hcFt2YWx1ZV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBIQSAyOERFQzIzIHRoaXMgYXBwbGllcyBmb3IgYm9vayBvciBxdWVzdGlvbnNcbiAgICAgIGVsc2V7XG4gICAgICAgIHZhciB2YWx1ZSA9ICcnO1xuICAgICAgICAvLyBIQSAwOUZFQjI0IEFkZGVkIHRlcm5hcnlcbiAgICAgICAgdmFsdWUgPSB0aGlzLmJvb2tsZXRKU09OLnJlY29yZHNbMF0/LklkO1xuICAgICAgICB0aGlzLmJvb2tRdWVzdGlvbnNNYXAuc2V0KHZhbHVlLCB0aGlzLmJvb2tsZXRKU09OLnF1ZXN0aW9uYm9vayk7XG4gICAgICB9XG4gICAgICBcbiAgICAgICAvLyBWRCAyMEp1bjI0IC0gdHJhbnNsYXRpb24gY2hhbmdlc1xuICAgICAgIGZvciAodmFyIHZhbHVlIGluIHRoaXMuYm9va2xldEpTT04/LnRyYW5zbGF0aW9uTWFwKSB7XG4gICAgICAgIHRoaXMudHJhbnNsYXRlTWFwLnNldCh2YWx1ZSwgdGhpcy5ib29rbGV0SlNPTi50cmFuc2xhdGlvbk1hcFt2YWx1ZV0pO1xuICAgICAgfVxuXG4gICAgICBpZih0aGlzLmJvb2tsZXRKU09OLnF1ZXN0aW9uYm9vaz8uQWN0aW9uc19fYyAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5hY3Rpb25zID0gSlNPTi5wYXJzZSh0aGlzLmJvb2tsZXRKU09OLnF1ZXN0aW9uYm9vay5BY3Rpb25zX19jKTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gSEEgMTlERUMyMyBsYW5nRGlyZWN0aW9uIHZhcmlhYmxlIHZhbHVlIGFzc2lnbmluZ1xuICAgIC8vIGNvbnNvbGUubG9nKCdTdHlsZV9fYycsIHRoaXMuYm9va2xldEpTT04ucXVlc3Rpb25ib29rLlN0eWxlX19jKTtcbiAgICBpZih0aGlzLmJvb2tsZXRKU09OPy5xdWVzdGlvbmJvb2s/LlN0eWxlX19jKXtcbiAgICAgIHZhciBzdHlsZSA9IEpTT04ucGFyc2UoSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmJvb2tsZXRKU09OPy5xdWVzdGlvbmJvb2s/LlN0eWxlX19jKSkpO1xuICAgICAgdGhpcy5sYW5nRGlyZWN0aW9uID0gc3R5bGU/LmRpcmVjdGlvbjtcbiAgICB9XG4gICAgZWxzZSBpZih0aGlzLmJvb2tsZXRKU09OPy5yZWNvcmRzWzBdPy5TdHlsZV9fYyl7XG4gICAgICB2YXIgc3R5bGUgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuYm9va2xldEpTT04/LnJlY29yZHNbMF0/LlN0eWxlX19jKSk7XG4gICAgICB0aGlzLmxhbmdEaXJlY3Rpb24gPSBzdHlsZT8uZGlyZWN0aW9uO1xuICAgIH1cblxuICAgIC8vIEhBIDE4LUpBTi0yNCBUaGUgY29uZGl0aW9uIGlzIHVzZWQgZm9yIEJpbmQtSW4gTG9naWMgXG4gICAgdGhpcy5oYW5kbGVDb21wbGV0ZUJvb2tsZXQodGhpcy5ib29rbGV0SlNPTik7IFxuICB9XG4gLy8gVkQgMTJKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXNcbiAgcHJpdmF0ZSByZWFkQm9va2xldCA9ICh1dWlkOiBzdHJpbmcpID0+IHtcbiAgICBpZih0aGlzLnNlcnYgPT0gXCJhcGlcIikge1xuICAgICAgdGhpcy5kYXRhU2VydmljZS5nZXRBUElEYXRhKFxuICAgICAgICB0aGlzLnRrbixcbiAgICAgICAgW1wiQm9va2xldFwiLCBcInJlYWRcIiwgdXVpZCx0aGlzLmxhbmd1YWdlQ29kZV0sXG4gICAgICAgIHRoaXMuc3VjY2Vzc1JlYWRCb29rbGV0LFxuICAgICAgICB0aGlzLmZhaWx1cmVSZWFkQm9va2xldFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHBhcmFtTWFwID0geyBjcmVhdGVBbnN3ZXJCb29rRmxhZzogZmFsc2UgfTtcbiAgICAgIHBhcmFtTWFwWydjX19xYl9pZCddID0gJyc7XG4gICAgICBwYXJhbU1hcFtcImNfX3JlY29yZF9pZFwiXSA9ICcnO1xuICAgICAgdGhpcy5zZlNlcnZpY2UucmVtb3RlQWN0aW9uKFxuICAgICAgICBcIk54dENvbnRyb2xsZXIubmV3UHJvY2Vzc1wiLFxuICAgICAgICBbXCJCb29rbGV0XCIsIFwicmVhZFwiLCB1dWlkLEpTT04uc3RyaW5naWZ5KHBhcmFtTWFwKSx0aGlzLmxhbmd1YWdlQ29kZV0sXG4gICAgICAgIHRoaXMuc3VjY2Vzc1JlYWRCb29rbGV0LFxuICAgICAgICB0aGlzLmZhaWx1cmVSZWFkQm9va2xldFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN1Y2Nlc3NSZWFkQm9va2xldCA9IChyZXNwb25zZSkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCdJbnNpZGUgdGhlIHN1Y2Nlc3NSZWFkQm9va2xldCcpO1xuICAgIC8vIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICBpZihyZXNwb25zZSAhPSBudWxsIHx8IHJlc3BvbnNlICE9IHVuZGVmaW5lZCkge1xuICAgICAgLy8gU3RvcmluZyB0aGUgQVBJIHJlc3BvbnNlIGZvciBmdXR1cmUgdXNlXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNhdmUocmVzcG9uc2UpO1xuXG4gICAgICAvLyBUcnkgdG8gcGFzcyBhIHZhbHVlIGZyb20gQmFja2VuZCB0byBkaWZmZXJlbnRpYXRlIHRoZSBRdWVzdGlvbkJvb2sgUmVhZCBhbmQgQW5zd2VyQm9vayBSZWFkXG4gICAgICAvLyB0aGlzLmlzQW5zd2VyRmxhZyA9IHRydWU7XG4gICAgICBcbiAgICAgIHRoaXMuYm9va2xldCA9IHJlc3BvbnNlLnJlY29yZHM7XG4gICAgICB0aGlzLmFiSXRlbSA9IHJlc3BvbnNlLmFuc3dlcmJvb2s7XG4gICAgICBcbiAgICAgIC8vIFByb2Nlc3MgdGhlIFN1YiBRdWVzdGlvbiBPcHRpb25zIC0gVGhpcyBzaG91bGQgYmUgbWVyZ2VkIHdpdGggYm9va1F1ZXN0aW9uc01hcCBpbiBmdXR1cmVcbiAgICAgIGZvciAodmFyIHNxIGluIHJlc3BvbnNlLnNxT3B0aW9ucykge1xuICAgICAgICB0aGlzLnNxT3B0aW9ucy5zZXQoc3EsIHJlc3BvbnNlLnNxT3B0aW9uc1tzcV0pO1xuICAgICAgfVxuXG4gICAgICAvLyBQcm9jZXNzIHRoZSBRdWVzdGlvbnNcbiAgICAgIGZvciAodmFyIHZhbHVlIGluIHJlc3BvbnNlLmJvb2tRdWVzdGlvbnNNYXApIHtcbiAgICAgICAgdGhpcy5ib29rUXVlc3Rpb25zTWFwLnNldCh2YWx1ZSwgcmVzcG9uc2UuYm9va1F1ZXN0aW9uc01hcFt2YWx1ZV0pO1xuICAgICAgfVxuIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gICAgICBmb3IgKHZhciB2YWx1ZSBpbiByZXNwb25zZS50cmFuc2xhdGlvbk1hcCkge1xuICAgICAgICB0aGlzLnRyYW5zbGF0ZU1hcC5zZXQodmFsdWUsIHJlc3BvbnNlLnRyYW5zbGF0aW9uTWFwW3ZhbHVlXSk7XG4gICAgICB9XG5cbiAgICAgIGlmKHJlc3BvbnNlLnF1ZXN0aW9uYm9vaz8uQWN0aW9uc19fYyAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5hY3Rpb25zID0gSlNPTi5wYXJzZShyZXNwb25zZS5xdWVzdGlvbmJvb2suQWN0aW9uc19fYyk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEhBIDE5REVDMjMgbGFuZ0RpcmVjdGlvbiB2YXJpYWJsZSB2YWx1ZSBhc3NpZ25pbmdcbiAgICBpZihyZXNwb25zZT8ucXVlc3Rpb25ib29rPy5TdHlsZV9fYyl7XG4gICAgICB2YXIgc3R5bGUgPSBKU09OLnBhcnNlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2U/LnF1ZXN0aW9uYm9vaz8uU3R5bGVfX2MpKSk7XG4gICAgICB0aGlzLmxhbmdEaXJlY3Rpb24gPSBzdHlsZT8uZGlyZWN0aW9uO1xuICAgIH1cbiAgICBlbHNlIGlmKHJlc3BvbnNlPy5yZWNvcmRzWzBdPy5TdHlsZV9fYyl7XG4gICAgICB2YXIgc3R5bGUgPSBKU09OLnBhcnNlKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocmVzcG9uc2U/LnJlY29yZHNbMF0/LlN0eWxlX19jKSkpO1xuICAgICAgdGhpcy5sYW5nRGlyZWN0aW9uID0gc3R5bGU/LmRpcmVjdGlvbjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZhaWx1cmVSZWFkQm9va2xldCA9IChyZXNwb25zZSkgPT4ge1xuXG4gIH1cblxuICBoYW5kbGVCb29rbGV0QWN0aW9uQ2xpY2soYWN0aW9uOkFjdGlvbk1ldGEpIHtcbiAgICAvLyBIQSAxOUpBTjI0IEFjdGlvbiBjaGFuZ2VzXG4gICAgdGhpcy5hbnN3ZXJMaXN0ID0gW107XG4gICAgdGhpcy5kYXRhQmluZCA9IFtdOyAvLyBIQSAxMkZFQjI0IENsZWFyaW5nIGRhdGFCaW5kIHVwb24gYnV0dG9uIGFjdGlvbiBzbyB0aGF0IGRhdGFCaW5kIHZhbHVlIHdpbGwgbm90IG92ZXJyaWRlIHRoZSBjaGFuZ2VkIHZhbHVlXG4gICAgY29uc29sZS5sb2coYWN0aW9uKTtcbiAgICBsZXQgZGF0YVRvUGFyZW50ID0ge307XG4gICAgbGV0IHZhbGlkRm9ybSA9IHRydWU7IC8vIFZEIDAxQXVnMjQgLSB2YWxpZGF0aW9uIGNoYW5nZVxuICAgIC8vIEhBIDIySkFOMjQgdGhpcyBjaGFuZ2UgdG8gbWFrZSBjbG9zZSBldmVudCB3b3JrXG4gICAgZGF0YVRvUGFyZW50WydhY3Rpb24nXSA9IGFjdGlvbi5ldmVudHRvZW1pdDtcbiAgICBpZighKGFjdGlvbi5ldmVudHRvZW1pdCA9PT0gJ2Nsb3NlJyB8fCBhY3Rpb24uZXZlbnR0b2VtaXQgPT09ICdwcmludCcpKXtcbiAgICAgIC8vIEhBIDE4LUpBTi0yNCBTZW5kaW5nIHRoZSBjb21wbGV0ZSBqc29uIGRhdGEgYWxzbyBcbiAgICAgIGRhdGFUb1BhcmVudFsnanNvbkJvb2snXSA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0KCk7XG4gICAgICAvLyBIQSAxN0pBTjI0IG54dElkIHRvIGRhdGFQYXJlbnQgb2JqZWN0XG4gICAgICBpZih0aGlzLmJvb2tsZXRKU09OKXtcbiAgICAgICAgZGF0YVRvUGFyZW50WydueHRJZCddID0gT2JqZWN0LmtleXModGhpcy5ib29rbGV0SlNPTj8uYm9va1F1ZXN0aW9uc01hcClbMF07XG4gICAgICB9XG4gICAgICAvLyBIQSAxMS1KQU4tMjQgTWluaW1pemluZyB0aGUgdmFsdWUgd2hpY2ggaGFzIHRvIGJlIHBhc3NlZCB0byB0aGUgc2VydmVyXG4gICAgICB0aGlzLmhhbmRsZUNvbXBsZXRlQm9va2xldChkYXRhVG9QYXJlbnRbJ2pzb25Cb29rJ10pO1xuICAgICAgZGF0YVRvUGFyZW50WydkYXRhJ10gPSB0aGlzLmFuc3dlckxpc3QgPyB0aGlzLmFuc3dlckxpc3QgOiBkYXRhVG9QYXJlbnRbJ2RhdGEnXTtcbiAgICAgIC8vIHdoZW4gY2xpY2tpbmcgdGhlIHN1Ym1pdCBidXR0b24gdmFsaWRhdGluZyB0aGUgcmVxdWlyZWQgZmllbGRzXG4gICAgICBmb3IobGV0IGtleSBpbiBkYXRhVG9QYXJlbnRbJ2pzb25Cb29rJ10uYm9va1F1ZXN0aW9uc01hcCl7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRCb29rICA9IGRhdGFUb1BhcmVudFsnanNvbkJvb2snXS5ib29rUXVlc3Rpb25zTWFwW2tleV07XG4gICAgICAgIGN1cnJlbnRCb29rLlF1ZXN0aW9uc19fci5yZWNvcmRzLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAvLyBWRCAwMUF1ZzI0IC0gdmFsaWRhdGlvbiBjaGFuZ2VcbiAgICAgICAgICBpZihlbGVtZW50LklzX09wdGlvbmFsX19jICYmIGRhdGFUb1BhcmVudFsnYWN0aW9uJ10gPT0gJ3N1Ym1pdCcgJiYgKCFlbGVtZW50LmlucHV0IHx8IChBcnJheS5pc0FycmF5KGVsZW1lbnQuaW5wdXQpICYmIGVsZW1lbnQuaW5wdXQubGVuZ3RoID09PSAwKSkgJiYgIWVsZW1lbnQuSXNfSGlkZV9fYyAmJiBlbGVtZW50LlR5cGVfX2MgIT0gJ0xhYmVsJyAmJiBlbGVtZW50LlR5cGVfX2MgIT0gJ0ltYWdlJyApeyAvL1NLUzVOT1YyNSBcbiAgICAgICAgICAgIGVsZW1lbnQuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgdmFsaWRGb3JtID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVNlcnZpY2Uuc3VibWl0Q2hhbmdlKGVsZW1lbnQuSWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBWRCAwMkF1ZzI0IC0gY2xlYXIgYWN0aW9uIGNoYW5nZXNcbiAgICAgICAgICBpZihkYXRhVG9QYXJlbnRbJ2FjdGlvbiddID09ICdjbGVhcicpe1xuICAgICAgICAgICAgaWYoZWxlbWVudC5UeXBlX19jID09ICdEcm9wZG93bicgfHwgZWxlbWVudC5UeXBlX19jID09ICdMb2NhdGlvbicgfHwgZWxlbWVudC5UeXBlX19jID09ICdSYWRpbycpIHtcbiAgICAgICAgICAgICAgZWxlbWVudC5zZWxlY3RlZFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfWVsc2UgaWYoZWxlbWVudC5UeXBlX19jID09ICdGaWxlJyl7XG4gICAgICAgICAgICAgIGVsZW1lbnQuaW5wdXQgPSBbXTtcbiAgICAgICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgICAgZWxlbWVudC5pbnB1dCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBWRCAxM01BWTI0IC0gcHJpbnQgUVIgYnV0dG9uIGNoYW5nZXNcbiAgICBpZihhY3Rpb24uZXZlbnR0b2VtaXQgPT09ICdwcmludCcpe1xuICAgICAgZGF0YVRvUGFyZW50WydhY3Rpb25EYXRhJ10gPSBhY3Rpb25bJ2RhdGEnXTtcbiAgICB9XG4gICAgLy8gSEEgMjNKQU4yNCBUbyBjYWxsIHRoZSBhY3Rpb24gb24gYW55IGV2ZW50XG4gICAvLyAgVkQgMDFBdWcyNCAtIHZhbGlkYXRpb24gY2hhbmdlXG4gICAgaWYodmFsaWRGb3JtKXtcbiAgICAgIHRoaXMuaGFuZGxlQm9va2xldEFjdGlvbkV2ZW50LmVtaXQoZGF0YVRvUGFyZW50KTtcbiAgICB9ZWxzZSB7XG4gICAgICBkYXRhVG9QYXJlbnRbJ2FjdGlvbiddID0gJ2Vycm9yJztcbiAgICAgIHRoaXMuaGFuZGxlQm9va2xldEFjdGlvbkV2ZW50LmVtaXQoZGF0YVRvUGFyZW50KTtcbiAgICB9XG4gIH1cblxuICAvLyBIQSAxOC1KQU4tMjQgaGFuZGxlQ29tcGxldGVCb29rbGV0IGlzIHRvIHNpbXBsaWZ5IHRoZSBsb2dpY1xuICBoYW5kbGVDb21wbGV0ZUJvb2tsZXQoY29tcGxldGVCb29rbGV0KXtcbiAgICBpZihPYmplY3Qua2V5cyhjb21wbGV0ZUJvb2tsZXQ/LmJvb2tRdWVzdGlvbnNNYXAgPz8ge30pLmxlbmd0aCA9PT0gMCl7IC8vIEhBIDExLUpBTi0yNCBJZiBjb25kaXRpb24gdG8gbG9hZCBib29rbGV0XG4gICAgICB0aGlzLmhhbmRsZUJvb2soY29tcGxldGVCb29rbGV0Py5xdWVzdGlvbmJvb2s/LlF1ZXN0aW9uc19fcik7XG4gICAgfVxuICAgIGVsc2V7IC8vIEhBIDExLUpBTi0yNCBUbyBsb2FkIGJvb2sgcXVlc3Rpb25zXG4gICAgICBmb3IgKGNvbnN0IGtleSBpbiBjb21wbGV0ZUJvb2tsZXQuYm9va1F1ZXN0aW9uc01hcCkge1xuICAgICAgICBjb25zdCB2YWwgPSBjb21wbGV0ZUJvb2tsZXQuYm9va1F1ZXN0aW9uc01hcFtrZXldO1xuICAgICAgICBpZih2YWwuVHlwZV9fYyA9PT0gJ0Jvb2snKXtcbiAgICAgICAgICB0aGlzLmhhbmRsZUJvb2sodmFsLlF1ZXN0aW9uc19fcik7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZXtcbiAgICAgICAgICB0aGlzLmhhbmRsZVF1ZXModmFsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhBIDExLUpBTi0yNCBoYW5kbGVCb29rIGxvYWRzIHRoZSBCb29rXG4gIGhhbmRsZUJvb2socXVlc0xpc3Q6IGFueSl7XG4gICAgcXVlc0xpc3Q/LnJlY29yZHMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIGlmKGVsZW1lbnQuVHlwZV9fYyA9PT0gJ0Jvb2snKXtcbiAgICAgICAgLy8gSEEgMjRKQU4yNCBGZXRjaGluZyBmcm9tIFFCIHJlZmVyZW5jZVxuICAgICAgICB2YXIgYm9vayA9IEpTT04ucGFyc2UoZWxlbWVudC5RQl9SZWZlcmVuY2VfUXVlc3Rpb25zX19jKTtcbiAgICAgICAgYm9vay5xdWVzdGlvbmJvb2suUXVlc3Rpb25zX19yLnJlY29yZHMuZm9yRWFjaChxdWVzID0+IHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVF1ZXMocXVlcyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZWxzZXtcbiAgICAgICAgdGhpcy5oYW5kbGVRdWVzKGVsZW1lbnQpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vIFZEIDEzU2VwMjQgLSBkYXRhYmluZCBjaGFuZ2VzXG4gICAgLy8gVkQgMjMgT2N0MjQgLSBmaWxlIHR5cGUgY2hhbmdlc1xuICAgIGlmKHRoaXMuZGF0YUJpbmQgJiYgT2JqZWN0LmtleXModGhpcy5kYXRhQmluZCkubGVuZ3RoID4gMCl7XG4gICAgICB0aGlzLmNoYW5nZVNlcnZpY2UuZGF0YUNoYW5nZXMoJ2RhdGFCaW5kJyk7XG4gICAgfVxuICB9XG5cbiAgLy8gSEEgMTEtSkFOLTI0IGhhbmRsZVF1ZXMgdG8gbG9hZCBxdWVzdGlvblxuICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgaGFuZGxlUXVlcyhxdWVzOiBhbnkpe1xuICAgIC8vIEhBIDE5LUpBTi0yNCBJZiBjb25kaXRpb24gaXMgZm9yIGJpbmQtaW4sIGNvcnJlY3Rpb25cbiAgICAvLyBIQSAwOUZFQjI0IEFkZGluZyBjb25kaXRpb24gdG8gYXZvaWQgdW5kZWZpbmVkIGVycm9yXG4gICAgaWYodGhpcy5kYXRhQmluZCAmJiBPYmplY3Qua2V5cyh0aGlzLmRhdGFCaW5kKS5sZW5ndGggPiAwKXtcbiAgICAgIGZvcihsZXQgW2tleSwgdmFsXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmRhdGFCaW5kKSl7XG4gICAgICAgIGxldCB2YWx1ZTphbnkgPSB2YWw7XG4gICAgICAgIGlmKHF1ZXMuUmVmZXJlbmNlX0ZpZWxkX19jID09PSBrZXkpe1xuICAgICAgICAgIGlmKHF1ZXMuVHlwZV9fYyA9PT0gJ0Ryb3Bkb3duJyB8fCBxdWVzLlR5cGVfX2MgPT09ICdSYWRpbycgKXtcbiAgICAgICAgICAgIHRoaXMuc3FPcHRpb25zLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgIGlmKGVsZW1lbnRbJ1JlZmVyZW5jZV9GaWVsZF9fYyddID09PSBrZXkpe1xuICAgICAgICAgICAgICAgIGVsZW1lbnRbJ2lucHV0J10gPSBxdWVzLmlucHV0ID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgZWxlbWVudFsnc2VsZWN0ZWRWYWx1ZSddID0gcXVlcy5zZWxlY3RlZFZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBIQSAyNEpBTjI0IFRvIGJpbmQtaW4gRGF0ZSBhbmQgRGF0ZVRpbWVcbiAgICAgICAgICBlbHNlIGlmKHF1ZXMuVHlwZV9fYyA9PT0gJ0RhdGUnIHx8IHF1ZXMuVHlwZV9fYyA9PSAnRGF0ZVRpbWUnKXtcbiAgICAgICAgICAgIHF1ZXMuaW5wdXQgPSBuZXcgRGF0ZSh2YWx1ZT8udG9TdHJpbmcoKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIEhBIDEyRkVCMjQgVG8gYmluZC1pbiBMb2NhdGlvbiBUeXBlXG4gICAgICAgICAgZWxzZSBpZihxdWVzLlR5cGVfX2MgPT09ICdMb2NhdGlvbicpe1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3ZhbHVlICcsIHZhbHVlKTtcbiAgICAgICAgICAgIHF1ZXMuaW5wdXQgPSB2YWx1ZTtcbiAgICAgICAgICAgIHF1ZXMuc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlWydhZGRyZXNzJ10gPyB2YWx1ZVsnYWRkcmVzcyddIDogdmFsdWU7XG4gICAgICAgICAgfVxuICAgICAgICAgICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXMgZm9yIGRhdGEgYmluZEluXG4gICAgICAgICAgZWxzZSBpZihxdWVzLlR5cGVfX2MgPT09ICdDYWxlbmRhcicpe1xuICAgICAgICAgICAgbGV0IGVudHJpZXMgPSBKU09OLnBhcnNlKHF1ZXNbJ0ZpZWxkc19NZXRhX19jJ10pO1xuICAgICAgICAgICAgaWYoZW50cmllcyl7XG4gICAgICAgICAgICAgIGxldCByZWZlcmVuY2VRdWVzdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgaWYoZW50cmllcy5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgICAgICAgZW50cmllcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgaWYoZWxlbWVudC5xdWVzdGlvblJlZmVyZW5jZSl7XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBxUmVmZXJlbmNlID0gSlNPTi5wYXJzZShlbGVtZW50LnF1ZXN0aW9uUmVmZXJlbmNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlUXVlc3Rpb25zLnB1c2gocVJlZmVyZW5jZT8ucXVlc3Rpb24pO1xuICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZihyZWZlcmVuY2VRdWVzdGlvbnMubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICAgICAgdmFsdWU/LmZvckVhY2goY2FsZW5kYXJBcnJheSA9PiB7XG4gICAgICAgICAgICAgICAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKGNhbGVuZGFyQXJyYXkuZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyQXJyYXkuZW50cmllcy5mb3JFYWNoKGlucHV0RW50cnk9PntcbiAgICAgICAgICAgICAgICAgICAgICBmb3IobGV0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyhpbnB1dEVudHJ5KSl7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VRdWVzdGlvbnMuZm9yRWFjaChmaWVsZCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZpZWxkLlJlZmVyZW5jZV9GaWVsZF9fYyA9PSBrKXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGZpZWxkLlR5cGVfX2MgPT09ICdEYXRlJyB8fCBmaWVsZC5UeXBlX19jID09ICdEYXRlVGltZScgfHwgZmllbGQuVHlwZV9fYyA9PSAnVGltZScpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmlucHV0ID0gbmV3IERhdGUodj8udG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWlmKGZpZWxkLlR5cGVfX2MgPT09ICdEcm9wZG93bicgfHwgZmllbGQuVHlwZV9fYyA9PT0gJ1JhZGlvJyl7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5zZWxlY3RlZFZhbHVlID0gdjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLmlucHV0ID0gdjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5pbnB1dCA9IHY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICB9IFxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRXZlbnQoZGF0ZSxyZWZlcmVuY2VRdWVzdGlvbnMpOy8vU0tTIDI3U0VQMjQgZWFjaCBldmVudCBhZGRlZCB0byBhbGxFdmVudHMgYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgfSkgIFxuICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLmFkZEV2ZW50KGRhdGUscmVmZXJlbmNlUXVlc3Rpb25zKTsgLy90aGlzIGlzIG9ubHkgbGFzdCBldmVudCBhZGRlZCB0byBhbGxFdmVudHMgYXJyYXlcbiAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHF1ZXMuaW5wdXQgPSB0aGlzLmFsbEV2ZW50cy5sZW5ndGggPiAwID8gdGhpcy5hbGxFdmVudHMgOiAnJztcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gVkQgMjMgT2N0MjQgLSBmaWxlIHR5cGUgY2hhbmdlc1xuICAgICAgICAgIGVsc2UgaWYocXVlcy5UeXBlX19jID09PSAnRmlsZScpe1xuICAgICAgICAgICAgcXVlcy5pbnB1dCA9IFtdO1xuICAgICAgICAgICAgcXVlcy5pbnB1dCA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgcXVlcy5pbnB1dCA9IHZhbHVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmFuc3dlckxpc3QucHVzaChxdWVzKTsgLy8gSEEgMTJGRUIyNCBUbyBnaXZlIHRoZSB2YWx1ZSBmb3IgZGF0YVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICBjb25zdCBxdWVzdGlvbiA9IHt9O1xuICAgICAgcXVlc3Rpb25bJ2lkJ10gPSBxdWVzLklkO1xuICAgICAgLy8gcXVlc3Rpb25bJ1F1ZXN0aW9uX19jJ10gPSBxdWVzLlF1ZXN0aW9uX19jO1xuICAgICAgcXVlc3Rpb25bJ2lucHV0J10gPSBxdWVzLmlucHV0O1xuICAgICAgLy8gSEEgMTJGRUIyNCBUbyBiaW5kLW91dCBMb2NhdGlvbiBUeXBlXG4gICAgICBpZihxdWVzLlR5cGVfX2MgPT09ICdMb2NhdGlvbicpe1xuICAgICAgICBxdWVzdGlvblsnaW5wdXQnXSA9IHF1ZXMuaW5wdXQgPyBxdWVzLmlucHV0IDogcXVlcy5zZWxlY3RlZFZhbHVlO1xuICAgICAgfWVsc2UgaWYocXVlcy5UeXBlX19jID09ICdGaWxlJyl7XG4gICAgICAgICAvLyBWRCAyMyBPY3QyNCAtIGZpbGUgdHlwZSBjaGFuZ2VzXG4gICAgICAgIHF1ZXN0aW9uWydpbnB1dCddID0gcXVlcy5pbnB1dCA/IHF1ZXMuaW5wdXQgOiBbXTtcbiAgICAgIH1cbiAgICAgIHF1ZXN0aW9uWydUeXBlX19jJ10gPSBxdWVzLlR5cGVfX2M7XG4gICAgICBxdWVzdGlvblsnUXVlc3Rpb25fTm9fX2MnXSA9IHF1ZXMuUXVlc3Rpb25fTm9fX2M7XG4gICAgICBxdWVzdGlvblsnUmVmZXJlbmNlX0ZpZWxkX19jJ10gPSBxdWVzPy5SZWZlcmVuY2VfRmllbGRfX2M7XG4gICAgICB0aGlzLmFuc3dlckxpc3QucHVzaChxdWVzdGlvbik7XG4gICAgfVxuICB9XG5cbi8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlcyBmb3IgZGF0YSBiaW5kSW5cbiAgYWRkRXZlbnQoZGF5OiBhbnksIGVudHJ5UXVlcykge1xuICAgIC8vIFRyYW5zZm9ybSBuZXcgZW50cmllcyBpbnRvIHRoZSBkZXNpcmVkIGZvcm1hdFxuICAgIGNvbnN0IG5ld0VudHJpZXMgPSBlbnRyeVF1ZXMucmVkdWNlKChhY2MsIHEpID0+IHtcbiAgICAgICAgYWNjW3EuSWRdID0geyAuLi5xIH07XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuXG4gICAgLy8gRmluZCBpZiBhbiBldmVudCBhbHJlYWR5IGV4aXN0cyBmb3IgdGhlIGdpdmVuIGRhdGVcbiAgICBjb25zdCBleGlzdGluZ0V2ZW50ID0gdGhpcy5hbGxFdmVudHMuZmluZChldmVudCA9PiBldmVudC5kYXRlLnRvRGF0ZVN0cmluZygpID09PSBkYXkudG9EYXRlU3RyaW5nKCkpO1xuXG4gICAgaWYgKGV4aXN0aW5nRXZlbnQpIHtcbiAgICAgICAgLy8gSWYgdGhlIGV2ZW50IGV4aXN0cywgcHVzaCB0aGUgbmV3IGVudHJpZXMgdG8gdGhlIGV4aXN0aW5nIGVudHJpZXNcbiAgICAgICAgY29uc3QgZXhpc3RpbmdFbnRyaWVzID0gZXhpc3RpbmdFdmVudC5lbnRyaWVzLm1hcChlbnRyeSA9PiAoeyAuLi5lbnRyeSB9KSk7XG4gICAgICAgIGV4aXN0aW5nRW50cmllcy5wdXNoKG5ld0VudHJpZXMpO1xuICAgICAgICBleGlzdGluZ0V2ZW50LmVudHJpZXMgPSBleGlzdGluZ0VudHJpZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IGV2ZW50IGlmIGl0IGRvZXNuJ3QgZXhpc3QgZm9yIHRoZSBnaXZlbiBkYXRlXG4gICAgICAgIGNvbnN0IG5ld0V2ZW50ID0ge1xuICAgICAgICAgICAgaWQ6ICdfJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCA5KSxcbiAgICAgICAgICAgIGRhdGU6IGRheSxcbiAgICAgICAgICAgIGVudHJpZXM6IFtuZXdFbnRyaWVzXSAvLyBXcmFwIHRoZSBuZXcgZW50cmllcyBpbiBhbiBhcnJheVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmFsbEV2ZW50cy5wdXNoKG5ld0V2ZW50KTtcbiAgICB9XG5cbiAgICBjb25zb2xlLmxvZygnYWxsIGV2ZW50cyBib29rbGV0Jyk7XG4gICAgY29uc29sZS5sb2codGhpcy5hbGxFdmVudHMpO1xufVxuXG5cbiAgcmVhZFF1ZXN0aW9ucyhxYklkOiBzdHJpbmcpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIEJvb2tsZXRDb21wb25lbnQucmVhZFF1ZXN0aW9ucyAnICsgcWJJZCk7XG4gICAgLy8gY29uc29sZS5sb2codGhpcy5ib29rUXVlc3Rpb25zTWFwLnNpemUpO1xuICAgIGxldCBxdWVzdGlvbnMgPSBbXTtcbiAgICAvLyBIQSAzMS1KQU4tMjQgQWRkZWQgdGVybmFyeSB0byBhdm9pZCB1bmRlZmluZWRcbiAgICBmb3IodmFyIHNxIGluIHRoaXMuYm9va1F1ZXN0aW9uc01hcD8uZ2V0KHFiSWQpPy5RdWVzdGlvbnNfX3I/LnJlY29yZHMpIHtcbiAgICAgIGxldCBxOiBRdWVzdGlvbiA9IHRoaXMuYm9va1F1ZXN0aW9uc01hcD8uZ2V0KHFiSWQpLlF1ZXN0aW9uc19fci5yZWNvcmRzW3NxXTtcbiAgICAgIC8vIEhBIDA5RkVCMjQgaWYgcXVlc3Rpb24gaXMgdGhlcmUgcHJvY2Vzc1xuICAgICAgaWYocSl7XG4gICAgICAgIGlmKChxLlR5cGVfX2MgPT0gJ0Ryb3Bkb3duJyB8fCBxLlR5cGVfX2MgPT0gJ1JhZGlvJykgJiYgdGhpcy5zcU9wdGlvbnMuZ2V0KHEuSWQpKSB7XG4gICAgICAgICAgcXVlc3Rpb25zLnB1c2godGhpcy5zcU9wdGlvbnMuZ2V0KHEuSWQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBxdWVzdGlvbnMucHVzaChxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFZEIDEySnVuMjQgZmllbGQgcGVybWlzaXNpb24gY2hhbmdlc1xuICAgIGlmICh0aGlzLmZpZWxkUmVzdHJpY3Rpb25zKSB7XG4gICAgICBjb25zdCBmaWVsZFJlc3RyaWN0aW9ucyA9IG5ldyBNYXAoT2JqZWN0LmVudHJpZXModGhpcy5maWVsZFJlc3RyaWN0aW9ucy5maWVsZHMpKTtcbiAgICAgIHF1ZXN0aW9ucy5mb3JFYWNoKHF1ZXMgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3RyaWN0aW9uID0gZmllbGRSZXN0cmljdGlvbnMuZ2V0KHF1ZXMuVW5pcXVlX0lkZW50aWZpZXJfX2MpO1xuICBcbiAgICAgICAgICBpZiAocmVzdHJpY3Rpb24pIHtcbiAgICAgICAgICAgICAgcXVlcy5SZWFkX09ubHlfX2MgPSByZXN0cmljdGlvbiA9PT0gJ3JlYWRPbmx5JztcbiAgICAgICAgICAgICAgcXVlcy5Jc19IaWRlX19jID0gcmVzdHJpY3Rpb24gPT09ICdoaWRlJztcbiAgICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuICAgIC8vIGNvbnNvbGUubG9nKHF1ZXN0aW9ucyk7XG4gICAgcmV0dXJuIHF1ZXN0aW9ucztcbiAgfVxuIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIHJlYWRUcmFuc1F1ZXN0aW9ucyhxYklkOiBzdHJpbmcpe1xuICAgIGxldCByZWNvcmQgPSBbXTtcbiAgICAgIGxldCB0cmFuc2xhdGVSZWNvcmQgPSB0aGlzLnRyYW5zbGF0ZU1hcC5nZXQocWJJZCk7XG4gICAgIGlmKHRyYW5zbGF0ZVJlY29yZCAmJiB0cmFuc2xhdGVSZWNvcmQubGVuZ3RoID4gMCkge1xuICAgICAgdHJhbnNsYXRlUmVjb3JkLmZvckVhY2gobGFuUmVjID0+IHtcbiAgICAgICAgaWYobGFuUmVjLmxhbmd1YWdlQ29kZSA9PSB0aGlzLmxhbmd1YWdlQ29kZSl7XG4gICAgICAgICAgIHJlY29yZCA9IGxhblJlYy5maWVsZHNcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgIH1cbiAgICAgIHJldHVybiByZWNvcmQ7XG4gIH1cblxuICBnZXRUZXh0KHZhbHVlKSB7XG4gICAgdmFyIGRvYyA9IG5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcodmFsdWUsIFwidGV4dC9odG1sXCIpO1xuICAgIC8vY29uc29sZS5sb2coIGRvYy5kb2N1bWVudEVsZW1lbnQudGV4dENvbnRlbnQpO1xuICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChcbiAgICAgIGRvYy5kb2N1bWVudEVsZW1lbnQudGV4dENvbnRlbnRcbiAgICApO1xuICB9XG4gIGdldERyb3BEb3duKGV2ZW50OmFueSl7XG4gICAgdGhpcy5oYWRsZURyb3BEb3duRGVwZW5kZW50LmVtaXQoZXZlbnQpO1xuICB9XG4gLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gIGdldENhbGVuZGFyRGF0ZShldmVudDphbnkpe1xuICAgIHRoaXMuaGFuZGxlQ2FsZW5kYXJEYXRlLmVtaXQoZXZlbnQpO1xuICB9XG4gIGdldENhbGVuZGFyRXZlbnQoZXZlbnQ6YW55KXtcbiAgICBldmVudFtcIm54dElkXCJdPSBPYmplY3Qua2V5cyh0aGlzLmJvb2tsZXRKU09OPy5ib29rUXVlc3Rpb25zTWFwKVswXTtcbiAgICB0aGlzLmhhbmRsZUNhbGVuZGFyRXZlbnQuZW1pdChldmVudCk7XG4gIH1cbn1cbiIsIjxuZ3gtc3Bpbm5lciBzaXplPVwibWVkaXVtXCIgW25hbWVdPVwic3Bpbm5lck5hbWVcIiBbdHlwZV09XCJzcGlubmVyVHlwZVwiPjwvbmd4LXNwaW5uZXI+XG48IS0tIEJvb2tsZXQgSGFuZGxpbmctLT5cbjwhLS0gSEEgMTlERUMyMyBGb3IgRGlyZWN0aW9uIC0tPlxuPGRpdiAqbmdGb3I9XCJsZXQgcWIgb2YgYm9va2xldFwiIFtuZ0NsYXNzXT1cImxhbmdEaXJlY3Rpb25cIj5cbiAgICA8IS0tIE1SIENvbW1lbnRlZCBiZWxvdyBjb2RlIHRvIGVuc3VyZSBzaW5nbGUgSlNPTiBmb3IgVU5DT05ESVRJT05BTCBCb29rbGV0cyAtLT5cbiAgICA8IS0tIDxsaWItcXVlc3Rpb25uYWlyZSBbc2Vydl09XCJzZXJ2XCIgW3FiSWRdPVwicWIuSWRcIiBbdGtuXT1cInRrblwiPjwvbGliLXF1ZXN0aW9ubmFpcmU+IC0tPlxuICAgIDwhLS0gSEEgMjhERUMyMyBCZWxvdyBJZiBsb2dpYyBpcyB0byBsb2FkIGZyb20gYm9va2xldCAgLS0+XG4gICAgPGRpdiAqbmdJZj1cInFiLlF1ZXN0aW9uc19fcj8ucmVjb3JkczsgZWxzZSBlbHNlQmxvY2tcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcXVlcyBvZiBxYi5RdWVzdGlvbnNfX3IucmVjb3Jkc1wiIGNsYXNzPVwicXVlc3Rpb25kaXYxXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDwhLS0gSEEgMTdKQU4yNCAtIElzIHRpdGxlIGlzIGVuYWJsZWQgc28gdGhhdCBiYXNlZCBvbiB0aGUgYm9vbGVhbiBkaXYgd2lsbCBiZSB2aXNpYmxlIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLklzX1RpdGxlX19jXCIgW2NsYXNzXT1cInFiLmlzU2hlbmdlbF9fYyA/ICdoZWFkZXItc3R5bGUnIDogJ3F1ZXN0aW9uLWYtc2l6ZSBhZGRpdGlvbmFsJ1wiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIFZEIDA4Tk9WMjMgLSBzaG93aW5nIGxhYmxlIHdoZW4gaXRzIGF2YWlsYWJsZS0tPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpbm5lckhUTUxdPVwiZ2V0VGV4dChxdWVzPy5RdWVzdGlvbl9UZXh0X19jKVwiICpuZ0lmPVwicXVlcz8uUXVlc3Rpb25fVGV4dF9fY1wiID4gXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBxdWVzPy5RdWVzdGlvbl9UZXh0X19jIH19XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PiA8IS0tIFZEIDE5SkFOMjQgLSBnZXR0aW5nIHRva2VuIGFzIGlucHV0IC0tPiA8IS0tVkQgMTFKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXMtLT5cbiAgICAgICAgICAgICAgICA8IS0tVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzLS0+IFxuICAgICAgICAgICAgICAgIDxsaWItcXVlc3Rpb25ib29rIFtxYkl0ZW1dPVwicWJcIiBbdG9rZW5dPVwidG9rZW5cIiBcbiAgICAgICAgICAgICAgICBbbGFiZWxWYWx1ZV09XCJsYWJlbFZhbHVlXCIgXG4gICAgICAgICAgICAgICAgW3F1ZXN0aW9uSXRlbV09XCJxdWVzXCIgXG4gICAgICAgICAgICAgICAgW3RyYW5zbGF0ZWRRdWVzdGlvbnNdPVwicmVhZFRyYW5zUXVlc3Rpb25zKHFiLklkKVwiIFxuICAgICAgICAgICAgICAgIFtxdWVzdGlvbnNdPVwicmVhZFF1ZXN0aW9ucyhxYi5JZClcIiAgXG4gICAgICAgICAgICAgICAgKGhhbmRsZURyb3BEb3duKT1cImdldERyb3BEb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChoYW5kbGVDYWxlbmRhckRhdGUpPVwiZ2V0Q2FsZW5kYXJEYXRlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChoYW5kbGVDYWxlbmRhckV2ZW50KT1cImdldENhbGVuZGFyRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvbGliLXF1ZXN0aW9uYm9vaz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIEhBIDI4REVDMjMgQmVsb3cgZWxzZSBsb2dpYyBpcyB0byBsb2FkIGZyb20gYm9va3Mgb3IgcXVlc3Rpb25zIC0tPlxuICAgIDxuZy10ZW1wbGF0ZSAjZWxzZUJsb2NrPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicXVlc3Rpb25kaXYxXCI+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhcWIuSXNfVGl0bGVfX2NcIiBbY2xhc3NdPVwicWIuaXNTaGVuZ2VsX19jID8gJ2hlYWRlci1zdHlsZScgOiAncXVlc3Rpb24tZi1zaXplIGFkZGl0aW9uYWwnXCI+XG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVkQgMDhOT1YyMyAtIHNob3dpbmcgbGFibGUgd2hlbiBpdHMgYXZhaWxhYmxlLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySFRNTF09XCJnZXRUZXh0KHFiPy5RdWVzdGlvbl9UZXh0X19jKVwiICpuZ0lmPVwicWI/LlF1ZXN0aW9uX1RleHRfX2NcIiA+IFxuICAgICAgICAgICAgICAgICAgICAgICAge3sgcWI/LlF1ZXN0aW9uX1RleHRfX2MgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IHFiPy5UaXRsZV9fYyB9fVxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj4gPCEtLSBWRCAxOUpBTjI0IC0gZ2V0dGluZyB0b2tlbiBhcyBpbnB1dCAtLT4gPCEtLSAgLy8gVkQgMTFKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXMtLT5cbiAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uYm9vayBbcWJJdGVtXT1cInFiXCIgW3Rva2VuXT1cInRva2VuXCIgW2xhYmVsVmFsdWVdPVwibGFiZWxWYWx1ZVwiIFtxdWVzdGlvbkl0ZW1dPVwicWJcIiBbdHJhbnNsYXRlZFF1ZXN0aW9uc109XCJyZWFkVHJhbnNRdWVzdGlvbnMocWIuSWQpXCIgW3F1ZXN0aW9uc109XCJyZWFkUXVlc3Rpb25zKHFiLklkKVwiICAoaGFuZGxlRHJvcERvd24pPVwiZ2V0RHJvcERvd24oJGV2ZW50KVwiPjwvbGliLXF1ZXN0aW9uYm9vaz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG5cbjwhLS0gR3JvdXAgQWN0aW9ucyAtLT5cbjwhLS0gSEEgMTlERUMyMyBGb3IgRGlyZWN0aW9uIC0tPlxuPGRpdiBjbGFzcz1cImFsaWduLXN1Ym1pdC1yb3dcIiAqbmdJZj1cImFiSXRlbT8uU3RhdHVzX19jICE9ICdDb21wbGV0ZWQnXCIgW25nQ2xhc3NdPVwibGFuZ0RpcmVjdGlvblwiPlxuICAgIDxkaXYgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBhY3Rpb25zOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgPCEtLSAvLyBIQSAyMkpBTjI0IENvbW1vbmlzZSB0aGUgYnV0dG9uIHN0eWxlIGluIGZ1c2lvbiAtLT5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiaGFuZGxlQm9va2xldEFjdGlvbkNsaWNrKGFjdGlvbilcIiBuZ0NsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGZjLWJ1dHRvbiBueHRCdXR0b25cIj5cbiAgICAgICAgICAgIHt7IGFjdGlvbi5uYW1lIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -295,7 +295,7 @@ export class QuestionbookComponent {
295
295
  else if (ques.Type__c == 'Date' || ques.Type__c == 'DateTime') { // HA 24JAN24 Converting Date and DateTime to UTC
296
296
  if (event.value) {
297
297
  let d = new Date(event.value);
298
- let utcString = d.toISOString();
298
+ let utcString = d?.toISOString();
299
299
  ques.input = utcString;
300
300
  }
301
301
  else {
@@ -412,4 +412,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
412
412
  }], handleCalendarEvent: [{
413
413
  type: Output
414
414
  }] } });
415
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25ib29rLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUE2RCxNQUFNLGVBQWUsQ0FBQztBQU9sSixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQTRCLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFakUsa0dBQWtHO0FBQ2xHLHVHQUF1RztBQU92RyxNQUFNLE9BQU8scUJBQXFCO0lBMkJaO0lBQ1Y7SUFDQTtJQUNBO0lBQ0Q7SUFDQztJQUNrQjtJQWhDbkIsTUFBTSxDQUFlO0lBQ3JCLFlBQVksQ0FBVztJQUN2QixtQkFBbUIsR0FBVyxFQUFFLENBQUEsQ0FBRSxtQ0FBbUM7SUFDckUsU0FBUyxDQUFhO0lBQ3RCLFlBQVksQ0FBSztJQUNqQixVQUFVLENBQVE7SUFDbEIsS0FBSyxDQUFRLENBQUMsc0NBQXNDO0lBQ25ELGNBQWMsR0FBcUIsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUMzRCxjQUFjLEdBQXFCLElBQUksWUFBWSxFQUFPLENBQUMsQ0FBQyxvQ0FBb0M7SUFDakcsWUFBWSxDQUFLO0lBQzFCLDJGQUEyRjtJQUMzRixZQUFZLENBQWE7SUFDekIsZ0JBQWdCLEdB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QUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9GLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9GLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlGLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVGLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzlGLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBRXhHLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7WUFHMUcsOENBQThDO1lBQzlDLElBQUcsT0FBTyxDQUFDLGtCQUFrQixFQUFDO2dCQUM1QixPQUFPLENBQUMsWUFBWSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQzthQUNuRDtZQUNELElBQUcsT0FBTyxDQUFDLFdBQVcsRUFBQztnQkFDcEIsSUFBSSxhQUFhLEdBQW1CLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNwRSxJQUFHLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBQztvQkFDL0IsT0FBTyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7aUJBQzVCO2dCQUNGLHVDQUF1QztnQkFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FDL0QsQ0FBQyxXQUFXLEVBQUUsRUFBRTtvQkFDYix1Q0FBdUM7b0JBQ3hDLElBQUcsV0FBVyxJQUFJLFNBQVMsSUFBSSxhQUFhLENBQUMsZ0JBQWdCLEVBQUU7d0JBQzdELHFEQUFxRDt3QkFDckQsSUFBRyxXQUFXLENBQUMsUUFBUSxJQUFJLFNBQVMsSUFBSSxXQUFXLENBQUMsY0FBYyxJQUFJLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRTs0QkFDbEcsK0NBQStDOzRCQUNoRCxnQ0FBZ0M7NEJBQ2pDLElBQUcsYUFBYSxDQUFDLGNBQWMsSUFBSSxXQUFXLENBQUMsUUFBUSxFQUFDO2dDQUNyRCxPQUFPLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztnQ0FDM0IsT0FBTyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7Z0NBQ25CLE9BQU8sQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO2dDQUNuQyxJQUFHLE9BQU8sQ0FBQyxZQUFZLElBQUksV0FBVyxDQUFDLGNBQWMsRUFBQztvQ0FDcEQsT0FBTyxDQUFDLGtCQUFrQixHQUFHLFdBQVcsQ0FBQyxjQUFjLENBQUM7aUNBQ3pEOzZCQUNGO2lDQUFLO2dDQUNKLE9BQU8sQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO2dDQUMxQixPQUFPLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztnQ0FDbkIsT0FBTyxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7Z0NBQ2xDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7Z0NBQ3ZDLDBEQUEwRDtnQ0FDMUQsSUFBRyxPQUFPLENBQUMsWUFBWSxJQUFJLFdBQVcsQ0FBQyxjQUFjLEVBQUM7b0NBQ2xELE9BQU8sQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7aUNBQ25DOzZCQUNGO3lCQUNGO3FCQUNGO2dCQUNILENBQUMsQ0FDRixDQUFDO2dCQUNKLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1lBQ0QsaUJBQWlCO1lBQ2pCLHdDQUF3QztZQUN4Qyx5Q0FBeUM7WUFDekMsSUFBSTtRQUNOLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUNILHVDQUF1QztJQUNyQyxxQkFBcUIsQ0FBQyxTQUFTO1FBQzdCLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1lBQzVDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRTtnQkFDaEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQ3hDLE9BQU8sTUFBTSxDQUFDLGdCQUFnQixJQUFJLFNBQVMsQ0FBQzthQUMvQztZQUNELE9BQU8sS0FBSyxDQUFDO1FBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBRUgsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtZQUN4QixFQUFFLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztZQUNyQixFQUFFLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNkLEVBQUUsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDO1lBQzdCLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9CLGtEQUFrRDtZQUNsRCxJQUFJLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3RDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVDLFlBQVksQ0FBQyxNQUFNO1FBQ2pCLDREQUE0RDtRQUM1RCxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxNQUFNLENBQUMsQ0FBQztRQUNwRSxLQUFLLElBQUksRUFBRSxJQUFJLE1BQU0sRUFBRTtZQUNyQixFQUFFLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztTQUNqQjtJQUNILENBQUM7SUFDRixtQ0FBbUM7SUFDbEMsMEJBQTBCO1FBQ3hCLElBQUksSUFBSSxDQUFDLG1CQUFtQixJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25FLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBZ0IsRUFBQyxFQUFFO2dCQUN2QyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBaUIsRUFBRSxFQUFFO29CQUNwRCxJQUFHLFdBQVcsQ0FBQyxvQkFBb0IsSUFBSSxhQUFhLENBQUMsVUFBVSxFQUFDO3dCQUM5RCxXQUFXLENBQUMsZ0JBQWdCLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQzt3QkFDbkQsV0FBVyxDQUFDLFdBQVcsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDO3FCQUNyRDtnQkFDSixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1lBQ0osT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDakQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQU87UUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxrQ0FBa0M7SUFDbEMsaUJBQWlCLENBQUMsS0FBSyxFQUFFLElBQVM7UUFDaEMsSUFBSSxZQUFZLEdBQUksRUFBRSxDQUFDO1FBQ3hCLGlFQUFpRTtRQUNoRSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLElBQUcsSUFBSSxFQUFDO1lBQ04sSUFBRyxJQUFJLENBQUMsT0FBTyxJQUFJLFVBQVUsSUFBRyxJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sRUFBRztnQkFDeEQsMkNBQTJDO2dCQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDMUQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO2dCQUNwRSxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztnQkFDNUQsbUNBQW1DO2dCQUNuQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztnQkFDdkMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztnQkFDNUIsSUFBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEVBQUM7b0JBQ3ZCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2lCQUN4QyxDQUFFLHNDQUFzQzthQUMxQztpQkFBTSxJQUFHLElBQUksQ0FBQyxPQUFPLElBQUksVUFBVSxFQUFDO2dCQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7YUFDN0M7aUJBQUssSUFBRyxJQUFJLENBQUMsT0FBTyxJQUFJLE1BQU0sRUFBQztnQkFDOUIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO2FBQzVDO2lCQUFLLElBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxVQUFVLEVBQUMsRUFBRSxpREFBaUQ7Z0JBQzlHLElBQUcsS0FBSyxDQUFDLEtBQUssRUFBQztvQkFDZCxJQUFJLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzlCLElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7aUJBQ3ZCO3FCQUFLO29CQUNMLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2lCQUNoQjthQUNIO2lCQUFLLElBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxNQUFNLEVBQUM7Z0JBQzlCLG1FQUFtRTtnQkFDbkUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUNwRTtpQkFBSTtnQkFDSCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQzthQUNwQjtZQUNELDZCQUE2QjtZQUM3QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLEtBQUssTUFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUMzSSxJQUFJLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQ2xELDZGQUE2RjtZQUM3RixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqQyxvQ0FBb0M7WUFDcEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7SUFDSCxDQUFDO0lBQ0QsVUFBVSxDQUFDLFFBQVk7UUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUMsUUFBUSxDQUFDLENBQUE7SUFDbEMsQ0FBQztJQUNELFdBQVcsQ0FBQyxLQUFTO1FBQ25CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNILDhCQUE4QjtJQUM1QixrQkFBa0IsQ0FBQyxLQUFTO1FBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQVM7UUFDeEIsSUFBRyxLQUFLLEVBQUM7WUFDUCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQ3RDO0lBQ0gsQ0FBQztJQUVGLHFEQUFxRDtJQUNwRCx3QkFBd0I7SUFDeEIsZ0JBQWdCLENBQUMsWUFBbUI7UUFDakMsSUFBSSxXQUFXLEdBQUcsWUFBWSxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEQsT0FBTyxXQUFXLENBQUM7SUFDdEIsQ0FBQztJQUVILGlCQUFpQjtJQUNmLGdDQUFnQztJQUNoQyxnRUFBZ0U7SUFDaEUsMEJBQTBCO0lBQzFCLGdDQUFnQztJQUNoQyxzRkFBc0Y7SUFDdEYsNkNBQTZDO0lBQzdDLG9HQUFvRztJQUNwRyxpR0FBaUc7SUFDakcsTUFBTTtJQUNOLElBQUk7SUFFSixtQkFBbUIsR0FBRyxLQUFLLENBQUM7SUFDNUIsa0JBQWtCLENBQUs7SUFDdkIsaUJBQWlCLENBQUs7SUFDdEIsdUJBQXVCLENBQU07SUFDN0Isa0JBQWtCLEdBQUcsRUFBRSxDQUFDO0lBQ3hCLGNBQWMsQ0FBSztJQUNuQix3QkFBd0IsQ0FBSztJQUU3QixpQkFBaUIsQ0FBQyxLQUFLO1FBQ3JCLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztRQUMzQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDO1FBQ25ELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1FBQzNDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDO1FBQ3pDLElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO1FBQ3JELElBQUksQ0FBQyx3QkFBd0IsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO0lBQ3BELENBQUM7SUFHRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMscUJBQXFCLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBR0QsbUJBQW1CLENBQUMsS0FBSztRQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQUs7UUFDdEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDO3dHQWxXVSxxQkFBcUIscU1BaUN0QixRQUFROzRGQWpDUCxxQkFBcUIsdWZDckJsQyxxNFZBb0x5RCw2M0dEL0o1QyxxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0Usa0JBQWtCOzswQkFxQ3pCLE1BQU07MkJBQUMsUUFBUTs0Q0FoQ1QsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0UsWUFBWTtzQkFBcEIsS0FBSztnQkFZSSxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBRUcsa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgVmlld0NoaWxkLCBDaGFuZ2VEZXRlY3RvclJlZiwgU2ltcGxlQ2hhbmdlcywgQ29tcG9uZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBRdWVzdGlvbiwgUXVlc3Rpb25Cb29rIH0gZnJvbSAnLi4vLi4vd3JhcHBlcic7XG5pbXBvcnQgeyBTYWxlc2ZvcmNlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zYWxlc2ZvcmNlLnNlcnZpY2VcIjtcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IENoYW5nZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jaGFuZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IEVycm9yV3JhcHBlciB9IGZyb20gJy4uLy4uL21vZGVsL2Vycm9yV3JhcHBlcic7XG4vLyBIQSAxOURFQzIzIGltcG9ydGVkIHRyYW5zbGF0aW9uIHNlcnZpY2VcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZXBlbmRlbmN5TWV0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZGVwZW5kZW5jeU1ldGEnO1xuLy9pbXBvcnQgeyBDb21wb25lbnRob3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb21wb25lbnRob3N0L2NvbXBvbmVudGhvc3QuZGlyZWN0aXZlJztcbi8vaW1wb3J0IHsgQ3VzdG9tQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2N1c3RvbS1jYWxlbmRhci9jdXN0b20tY2FsZW5kYXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXF1ZXN0aW9uYm9vaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVzdGlvbmJvb2suY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xdWVzdGlvbmJvb2suY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9uYm9va0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHFiSXRlbTogUXVlc3Rpb25Cb29rO1xuICBASW5wdXQoKSBxdWVzdGlvbkl0ZW06IFF1ZXN0aW9uO1xuICBASW5wdXQoKSB0cmFuc2xhdGVkUXVlc3Rpb25zIDogYW55W10gPSBbXSAgLy8gVkQgMTFKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXNcbiAgQElucHV0KCkgcXVlc3Rpb25zOiBRdWVzdGlvbltdO1xuICBASW5wdXQoKSBlcnJvckZpZWxkSWQ6YW55O1xuICBASW5wdXQoKSBsYWJlbFZhbHVlOnN0cmluZzsgXG4gIEBJbnB1dCgpIHRva2VuOnN0cmluZzsgLy8gVkQgMTlKQU4yNCAtIGdldHRpbmcgdG9rZW4gYXMgaW5wdXRcbiAgQE91dHB1dCgpIGhhbmRsZURyb3BEb3duOkV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBoYW5kbGVRdWVzdGlvbjpFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpOyAvLyBWRCAxOUp1bDAxIC0gZ2V0IHVwZGF0ZWQgcXVlc3Rpb25cbiAgQElucHV0KCkgZHJvcERvd25EYXRhOmFueTtcbiAgLy9AVmlld0NoaWxkKENvbXBvbmVudGhvc3REaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIGR5bmFtaWNIb3N0OiBDb21wb25lbnRob3N0RGlyZWN0aXZlO1xuICBzdWJRdWVzdGlvbnM6IFF1ZXN0aW9uW107XG4gIHNlbGVjdGVkRmlsZURhdGE6IGFueVtdID0gW107XG4gIGxvYWRDb21wb25lbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIC8vIEhBIDI4REVDMjMgQWRkZWQgc3R5bGluZyBhbmQgbG9naWNzIHRvIGxvYWQgdGhlIGJvb2sgdHlwZSBxdWVzdGlvbnMgXG4gIHFiUmVmOiBRdWVzdGlvbkJvb2s7XG4gIC8vICBIQSAxOURFQzIzIERlY2xhcmF0aW9uIGZvciBTYWxlc2ZvcmNlIFN0eWxpbmdcbiAgc3R5bGU6IGFueTtcbiAgbGFuZ0RpcmVjdGlvbiA9ICdsdHInO1xuICBib29rU3R5bGU6IGFueTtcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIEBPdXRwdXQoKSBoYWRsZURyb3BEb3duRGVwZW5kZW50OkV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgQE91dHB1dCgpIGhhbmRsZUNhbGVuZGFyRGF0ZTpFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGhhbmRsZUNhbGVuZGFyRXZlbnQ6RXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHB1YmxpYyBib29rUXVlc3Rpb25zTWFwOiBhbnkgPSBuZXcgTWFwKCk7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2ZTZXJ2aWNlOiBTYWxlc2ZvcmNlU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZVNlcnZpY2U6IENoYW5nZVNlcnZpY2UsIFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxuICAgIHB1YmxpYyBpMThuU2VydmljZTogSTE4blNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50XG4gICAgKSB7IFxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gVkQgMTNTZXAyNCBjaGFuZ2VzXG4gICAgdGhpcy5wcm9jZXNzRGF0YSgpO1xuICAgIC8vIFZEIHNlcDEzMjQgY2hhbmdlcyAtIHByb2Nlc3MgZGF0YSB3aGVuIGRhdGFiaW5kIHZhbHVlIGNoYW5nZVxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jaGFuZ2VTZXJ2aWNlLmN1c3RvbUNoYW5nZSQuc3Vic2NyaWJlKFxuICAgICAgKGNoYW5nZVZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYoY2hhbmdlVmFsdWUgPT0gJ2RhdGFCaW5kJykge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzRGF0YSgpO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgIC8vIFZEIDEzU2VwMjQgY2hhbmdlc1xuICBwcm9jZXNzRGF0YSgpe1xuICAgIGNvbnNvbGUubG9nKCdpbnNpZGUgUXVlc3Rpb25Cb29rQ29tcG9uZW50IE9uSW5pdCcpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdxYkl0ZW0nLCB0aGlzLnFiSXRlbSk7XG4gICAgLy8gY29uc29sZS5sb2codGhpcy5xdWVzdGlvbnMpO1xuICAgIC8vICBIQSAxOURFQzIzIExvZ2ljIGZvciBRdWVzdGlvbiBCb29rIFN0eWxpbmcoU2xhZXNmb3JjZSlcbiAgICAvLyBIQSAwOUZFQjI0IEFkZGVkIHRlcm5hcnlcbiAgICBpZih0aGlzLnFiSXRlbT8uU3R5bGVfX2Mpe1xuICAgICAgLy8gSEEgMjhERUMyMyBBZGRlZCBzdHlsaW5nIGFuZCBsb2dpY3MgdG8gbG9hZCB0aGUgYm9vayB0eXBlIHF1ZXN0aW9ucyBcbiAgICAgIHRoaXMucWJJdGVtLlN0eWxlX19jID0gdHlwZW9mIHRoaXMucWJJdGVtLlN0eWxlX19jID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UoJycrdGhpcy5xYkl0ZW0/LlN0eWxlX19jKSA6IHRoaXMucWJJdGVtLlN0eWxlX19jO1xuICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MubGFiZWxDbGFzcyA9IHRoaXMucWJJdGVtLlN0eWxlX19jPy5sYWJlbENsYXNzID8gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmxhYmVsQ2xhc3MgOiBcIlwiO1xuICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MubGFiZWxTdHlsZSA9IHRoaXMucWJJdGVtLlN0eWxlX19jPy5sYWJlbFN0eWxlID8gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmxhYmVsU3R5bGUgOiBcIlwiO1xuICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MubGFiZWxWYWx1ZVN0eWxlID0gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmxhYmVsVmFsdWVTdHlsZSA/IHRoaXMucWJJdGVtLlN0eWxlX19jPy5sYWJlbFZhbHVlU3R5bGUgOiBcIlwiO1xuICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MuaW5wdXRDbGFzcyA9IHRoaXMucWJJdGVtLlN0eWxlX19jPy5pbnB1dENsYXNzID8gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmlucHV0Q2xhc3MgOiBcIlwiO1xuICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MuaW5wdXRTdHlsZSA9IHRoaXMucWJJdGVtLlN0eWxlX19jLmlucHV0U3R5bGUgPyB0aGlzLnFiSXRlbS5TdHlsZV9fYz8uaW5wdXRTdHlsZSA6IFwiXCI7XG4gICAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYy5ib29rU3R5bGUgPSB0aGlzLnFiSXRlbS5TdHlsZV9fYz8uYm9va1N0eWxlID8gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmJvb2tTdHlsZSA6IFwiXCI7XG4gICAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYy5zaG93TGFiZWwgPSB0aGlzLnFiSXRlbS5TdHlsZV9fYz8uc2hvd0xhYmVsID8gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LnNob3dMYWJlbCA6IHRydWU7XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICBpZih0aGlzLnFiSXRlbSl7XG4gICAgICAgIHRoaXMucWJJdGVtLlN0eWxlX19jID0ge1xuICAgICAgICAgIFwibGFiZWxDbGFzc1wiIDogXCJcIixcbiAgICAgICAgICBcImxhYmVsU3R5bGVcIiA6IFwiXCIsXG4gICAgICAgICAgXCJsYWJlbFZhbHVlU3R5bGVcIiA6IFwiXCIsXG4gICAgICAgICAgXCJpbnB1dENsYXNzXCIgOiBcIlwiLFxuICAgICAgICAgIFwiaW5wdXRTdHlsZVwiIDogXCJcIixcbiAgICAgICAgICBcImJvb2tTdHlsZVwiIDogXCJcIixcbiAgICAgICAgICBcInNob3dMYWJlbFwiOiB0cnVlLFxuICAgICAgICAgIFwiZGlyZWN0aW9uXCIgOiBcImx0clwiLFxuICAgICAgICAgIFwicXVlc3Rpb25TdHlsZVwiOiBcIlwiXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucWJJdGVtLlN0eWxlX19jLnF1ZXN0aW9uU3R5bGUgPSB0aGlzLnFiSXRlbT8uU3R5bGVfX2M/LnF1ZXN0aW9uU3R5bGUgPyB0aGlzLnFiSXRlbT8uU3R5bGVfX2MucXVlc3Rpb25TdHlsZSA6IFwiXCI7XG4gICAgdGhpcy5sYW5nRGlyZWN0aW9uID0gdGhpcy5xYkl0ZW0uU3R5bGVfX2MuZGlyZWN0aW9uID0gdGhpcy5xYkl0ZW0/LlN0eWxlX19jPy5kaXJlY3Rpb24gPyB0aGlzLnFiSXRlbT8uU3R5bGVfX2M/LmRpcmVjdGlvbiA6ICdsdHInO1xuICAgIHRoaXMuYm9va1N0eWxlID0gdGhpcy5xYkl0ZW0/LlN0eWxlX19jPy5ib29rU3R5bGU7XG4gICAgdGhpcy5xdWVzdGlvbnMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIHZhciBodG1sRWxlbWVudCA9IGVsZW1lbnQ/LlF1ZXN0aW9uX1RleHRfX2MgO1xuICAgICAgdmFyIHRleHRPbmx5ID0gaHRtbEVsZW1lbnQ/LnJlcGxhY2UoLzxbXj5dKj4vZywgJycpXG4gICAgICBlbGVtZW50LlF1ZXN0aW9uX1RleHRfX2MgPSB0ZXh0T25seTtcbiAgICAgIC8vICBIQSAxOURFQzIzIExvZ2ljIGZvciBRdWVzdGlvbiBTdHlsaW5nKFNsYWVzZm9yY2UpXG4gICAgICAvLyBIQSAyOERFQzIzIEFkZGVkIHN0eWxpbmcgYW5kIGxvZ2ljcyB0byBsb2FkIHRoZSBib29rIHR5cGUgcXVlc3Rpb25zIFxuICAgICAgaWYoZWxlbWVudC5UeXBlX19jID09PSAnQm9vaycpe1xuICAgICAgICBpZihlbGVtZW50WydRQl9SZWZlcmVuY2VfUXVlc3Rpb25zX19jJ10pe1xuICAgICAgICAgIHZhciBxYiA9IEpTT04ucGFyc2UoZWxlbWVudFsnUUJfUmVmZXJlbmNlX1F1ZXN0aW9uc19fYyddKTtcbiAgICAgICAgICBpZihxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2Mpe1xuICAgICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jID0gdHlwZW9mIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYyA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKCcnK3FiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYykgOiBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MgPSB0aGlzLnFiSXRlbS5TdHlsZV9fYztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBCb29rIHR5cGUgcXVlc3Rpb24gc3R5bGluZ1xuICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5sYWJlbENsYXNzID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jPy5sYWJlbENsYXNzID8gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jPy5sYWJlbENsYXNzIDogXCJcIjtcbiAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MubGFiZWxTdHlsZSA9IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8ubGFiZWxTdHlsZSA/IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8ubGFiZWxTdHlsZSA6IFwiXCI7XG4gICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmxhYmVsVmFsdWVTdHlsZSA9IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fPy5sYWJlbFZhbHVlU3R5bGUgPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MubGFiZWxWYWx1ZVN0eWxlIDogXCJcIjtcbiAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MuaW5wdXRDbGFzcyA9IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8uaW5wdXRDbGFzcyA/IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8uaW5wdXRDbGFzcyA6IFwiXCI7XG4gICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmlucHV0U3R5bGUgPSBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LmlucHV0U3R5bGUgPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LmlucHV0U3R5bGUgOiBcIlwiO1xuICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5ib29rU3R5bGUgPSBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LmJvb2tTdHlsZSA/IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8uYm9va1N0eWxlIDogXCJcIjtcbiAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2Muc2hvd0xhYmVsID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jPy5zaG93TGFiZWwgPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LnNob3dMYWJlbCA6IHRydWU7XG4gICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLnF1ZXN0aW9uU3R5bGUgPSBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LnF1ZXN0aW9uU3R5bGUgPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LnF1ZXN0aW9uU3R5bGUgOiBcIlwiO1xuICAgICAgICAgIHFiWydsYW5nRGlyZWN0aW9uJ10gPSBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MuZGlyZWN0aW9uID8gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jPy5kaXJlY3Rpb24gOiB0aGlzLmxhbmdEaXJlY3Rpb247XG4gICAgICAgICAgXG4gICAgICAgICAgLy8gTG9vcCBmb3IgZWFjaCBxdWVzdGlvbiBpbiB0aGUgYm9va1xuICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5RdWVzdGlvbnNfX3IucmVjb3Jkcy5mb3JFYWNoKHF1ZXN0aW9uRnJvbUJvb2sgPT4ge1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYyA9IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MgPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jIDogcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5sYWJlbENsYXNzID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8ubGFiZWxDbGFzcyA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LmxhYmVsQ2xhc3MgOiBcIlwiO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5sYWJlbFN0eWxlID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8ubGFiZWxTdHlsZSA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LmxhYmVsU3R5bGUgOiBcIlwiO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5sYWJlbFZhbHVlU3R5bGUgPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5sYWJlbFZhbHVlU3R5bGUgPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5sYWJlbFZhbHVlU3R5bGUgOiBcIlwiO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5pbnB1dENsYXNzID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8uaW5wdXRDbGFzcyA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LmlucHV0Q2xhc3MgOiBcIlwiO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5pbnB1dFN0eWxlID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8uaW5wdXRTdHlsZSA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LmlucHV0U3R5bGUgOiBcIlwiO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5ib29rU3R5bGUgPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5ib29rU3R5bGUgPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5ib29rU3R5bGUgOiBcIlwiO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5zaG93TGFiZWwgPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5zaG93TGFiZWwgPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5zaG93TGFiZWwgOiB0cnVlO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5xdWVzdGlvblN0eWxlID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8ucXVlc3Rpb25TdHlsZSA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LnF1ZXN0aW9uU3R5bGUgOiBcIlwiO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9va1snbGFuZ0RpcmVjdGlvbiddID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8uZGlyZWN0aW9uID8gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8uZGlyZWN0aW9uIDogdGhpcy5sYW5nRGlyZWN0aW9uO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGVsZW1lbnRbJ3FiSXRlbSddID0gcWJbJ3F1ZXN0aW9uYm9vayddO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbGVtZW50LlN0eWxlX19jID0gZWxlbWVudC5TdHlsZV9fYyA/IHR5cGVvZiBlbGVtZW50LlN0eWxlX19jID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UoJycrZWxlbWVudD8uU3R5bGVfX2MpIDogZWxlbWVudD8uU3R5bGVfX2MgOiB0aGlzLnFiSXRlbT8uU3R5bGVfX2M7XG5cbiAgICAgIGVsZW1lbnQuU3R5bGVfX2MubGFiZWxDbGFzcyA9IGVsZW1lbnQuU3R5bGVfX2M/LmxhYmVsQ2xhc3MgPyBlbGVtZW50LlN0eWxlX19jPy5sYWJlbENsYXNzIDogXCJcIjtcbiAgICAgIGVsZW1lbnQuU3R5bGVfX2MubGFiZWxTdHlsZSA9IGVsZW1lbnQuU3R5bGVfX2M/LmxhYmVsU3R5bGUgPyBlbGVtZW50LlN0eWxlX19jPy5sYWJlbFN0eWxlIDogXCJcIjtcbiAgICAgIGVsZW1lbnQuU3R5bGVfX2MubGFiZWxWYWx1ZVN0eWxlID0gZWxlbWVudC5TdHlsZV9fYz8ubGFiZWxWYWx1ZVN0eWxlID8gZWxlbWVudC5TdHlsZV9fYy5sYWJlbFZhbHVlU3R5bGUgOiBcIlwiO1xuICAgICAgZWxlbWVudC5TdHlsZV9fYy5pbnB1dENsYXNzID0gZWxlbWVudC5TdHlsZV9fYz8uaW5wdXRDbGFzcyA/IGVsZW1lbnQuU3R5bGVfX2M/LmlucHV0Q2xhc3MgOiBcIlwiO1xuICAgICAgZWxlbWVudC5TdHlsZV9fYy5pbnB1dFN0eWxlID0gZWxlbWVudC5TdHlsZV9fYy5pbnB1dFN0eWxlID8gZWxlbWVudC5TdHlsZV9fYz8uaW5wdXRTdHlsZSA6IFwiXCI7XG4gICAgICBlbGVtZW50LlN0eWxlX19jLmJvb2tTdHlsZSA9IGVsZW1lbnQuU3R5bGVfX2M/LmJvb2tTdHlsZSA/IGVsZW1lbnQuU3R5bGVfX2M/LmJvb2tTdHlsZSA6IFwiXCI7XG4gICAgICBlbGVtZW50LlN0eWxlX19jLnNob3dMYWJlbCA9IGVsZW1lbnQuU3R5bGVfX2M/LnNob3dMYWJlbCA/IGVsZW1lbnQuU3R5bGVfX2M/LnNob3dMYWJlbCA6IHRydWU7XG4gICAgICBlbGVtZW50LlN0eWxlX19jLnF1ZXN0aW9uU3R5bGUgPSBlbGVtZW50LlN0eWxlX19jPy5xdWVzdGlvblN0eWxlID8gZWxlbWVudC5TdHlsZV9fYz8ucXVlc3Rpb25TdHlsZSA6IFwiXCI7XG5cbiAgICAgIGVsZW1lbnRbJ2xhbmdEaXJlY3Rpb24nXSA9IGVsZW1lbnQuU3R5bGVfX2M/LmRpcmVjdGlvbiA/IGVsZW1lbnQuU3R5bGVfX2M/LmRpcmVjdGlvbiA6IHRoaXMubGFuZ0RpcmVjdGlvbjtcblxuXG4gICAgICAvL1ZEIDAyQXVnMjQgZGVwZW5kZW50IGZpZWxkIHNob3cvaGlkZSBjaGFuZ2VzXG4gICAgICBpZihlbGVtZW50LlJlZmVyZW5jZV9GaWVsZF9fYyl7XG4gICAgICAgIGVsZW1lbnQuZGVwZW5kZW50UmVmID0gZWxlbWVudC5SZWZlcmVuY2VfRmllbGRfX2M7XG4gICAgICB9XG4gICAgICBpZihlbGVtZW50LlN1Yl9UZXh0X19jKXtcbiAgICAgICAgIGxldCBkZXBlbmRlbmN5T2JqOiBEZXBlbmRlbmN5TWV0YSA9IEpTT04ucGFyc2UoZWxlbWVudC5TdWJfVGV4dF9fYyk7XG4gICAgICAgICBpZihkZXBlbmRlbmN5T2JqLmlzRGVwZW5kZW50RmllbGQpe1xuICAgICAgICAgICAgZWxlbWVudC5Jc19IaWRlX19jID0gdHJ1ZTtcbiAgICAgICAgIH1cbiAgICAgICAgLy8gVkQgMDdBdWcyNCAtIGlzRGVwZW5kZW50RmllbGQgY2hhbmdlXG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmNoYW5nZVNlcnZpY2UuY2hhbmdlQW5ub3VuY2VkJC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoY2hhbmdlVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgIC8vIFZEIDIwQXVnMjQgLSBpc0RlcGVuZGVudEZpZWxkIGNoYW5nZVxuICAgICAgICAgICAgICBpZihjaGFuZ2VWYWx1ZSAhPSB1bmRlZmluZWQgJiYgZGVwZW5kZW5jeU9iai5pc0RlcGVuZGVudEZpZWxkKSB7XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ2luc2lkZSBzdWJzY3JpcHRpb24gZm9yIHRoZSBjaGFuZ2UnKTtcbiAgICAgICAgICAgICAgICBpZihjaGFuZ2VWYWx1ZS52YWx1ZU9iaiAhPSB1bmRlZmluZWQgJiYgY2hhbmdlVmFsdWUuZnJvbVF1ZXN0aW9uSWQgPT0gZGVwZW5kZW5jeU9iai5zb3VyY2VRdWVzdGlvbklkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ291dHNpZGUtLT4nLGVsZW1lbnQuSXNfSGlkZV9fYyk7XG4gICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudC5pc0hpZGRlbkZpZWxkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGlmKGRlcGVuZGVuY3lPYmouZGVwZW5kZW50VmFsdWUgPT0gY2hhbmdlVmFsdWUudmFsdWVPYmope1xuICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5Jc19IaWRlX19jID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmlucHV0ID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnNlbGVjdGVkVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmKGVsZW1lbnQuZGVwZW5kZW50UmVmID09IGNoYW5nZVZhbHVlLnJlZmVyZW5jZUZpZWxkKXtcbiAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LlJlZmVyZW5jZV9GaWVsZF9fYyA9IGNoYW5nZVZhbHVlLnJlZmVyZW5jZUZpZWxkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuSXNfSGlkZV9fYyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuaW5wdXQgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZWxlY3RlZFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVEZXBlbmRlbnRFbGVtZW50cyhlbGVtZW50LklkKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgbm8gZGVwZW5kZW50IHNlbGVjdGlvbiByZW1vdmUgdGhlIHJlZmVyZW5jZVxuICAgICAgICAgICAgICAgICAgICBpZihlbGVtZW50LmRlcGVuZGVudFJlZiA9PSBjaGFuZ2VWYWx1ZS5yZWZlcmVuY2VGaWVsZCl7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LlJlZmVyZW5jZV9GaWVsZF9fYyA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS51cGRhdGUoZWxlbWVudCk7XG4gICAgICB9XG4gICAgICAvLyBzdW5kYXkgY29tbWVudFxuICAgICAgLy8gaWYgKGVsZW1lbnQuVHlwZV9fYyA9PT0gJ0NhbGVuZGFyJykge1xuICAgICAgLy8gICB0aGlzLm9wZW5DYWxlbmRhckNvbXBvbmVudChlbGVtZW50KTtcbiAgICAgIC8vIH1cbiAgICB9KTtcbiAgICB0aGlzLnN1YlF1ZXN0aW9ucyA9IFtdO1xuICAgIHRoaXMuc2V0U3ViUXVlc3Rpb25zKHRoaXMucXVlc3Rpb25zKTtcbiAgICB0aGlzLnByb2Nlc3NUcmFuc2xhdGVkUXVlc3Rpb25zKCk7IFxuICB9XG4vLyBWRCAwN0F1ZzI0IC0gaXNEZXBlbmRlbnRGaWVsZCBjaGFuZ2VcbiAgaGlkZURlcGVuZGVudEVsZW1lbnRzKGVsZW1lbnRJZCkge1xuICAgIGxldCBlbGVtZW50c1RvSGlkZSA9IHRoaXMucXVlc3Rpb25zLmZpbHRlcihlbCA9PiB7XG4gICAgICAgIGlmIChlbC5TdWJfVGV4dF9fYykge1xuICAgICAgICAgICAgbGV0IGRlcE9iaiA9IEpTT04ucGFyc2UoZWwuU3ViX1RleHRfX2MpO1xuICAgICAgICAgICAgcmV0dXJuIGRlcE9iai5zb3VyY2VRdWVzdGlvbklkID09IGVsZW1lbnRJZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG5cbiAgICBlbGVtZW50c1RvSGlkZS5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgZWwuSXNfSGlkZV9fYyA9IHRydWU7XG4gICAgICAgIGVsLmlucHV0ID0gJyc7XG4gICAgICAgIGVsLnNlbGVjdGVkVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UudXBkYXRlKGVsKTtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgaGlkZSBlbGVtZW50cyBkZXBlbmRlbnQgb24gdGhpcyBvbmVcbiAgICAgICAgdGhpcy5oaWRlRGVwZW5kZW50RWxlbWVudHMoZWwuSWQpO1xuICAgIH0pO1xufVxuXG4gIGNsZWFyU1FFcnJvcihxdWVzSWQpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIFF1ZXN0aW9uQm9va0NvbXBvbmVudCBjbGVhclNRRXJyb3InKTtcbiAgICB2YXIgc3FMaXN0ID0gdGhpcy5zdWJRdWVzdGlvbnM/LmZpbHRlcigoaXRlbSkgPT4gaXRlbS5JZCA9PSBxdWVzSWQpO1xuICAgIGZvciAodmFyIHNxIG9mIHNxTGlzdCkge1xuICAgICAgc3EuZXJyb3IgPSBudWxsO1xuICAgIH1cbiAgfVxuIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIHByb2Nlc3NUcmFuc2xhdGVkUXVlc3Rpb25zKCl7XG4gICAgaWYgKHRoaXMudHJhbnNsYXRlZFF1ZXN0aW9ucyAmJiB0aGlzLnRyYW5zbGF0ZWRRdWVzdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5xdWVzdGlvbnMuZm9yRWFjaCgob3JnUXVlc3Rpb246IGFueSk9PiB7XG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVkUXVlc3Rpb25zLmZvckVhY2goKHRyYW5zUXVlc3Rpb246YW55KSA9PiB7XG4gICAgICAgICAgICAgaWYob3JnUXVlc3Rpb24uVW5pcXVlX0lkZW50aWZpZXJfX2MgPT0gdHJhbnNRdWVzdGlvbi5pZGVudGlmaWVyKXtcbiAgICAgICAgICAgICAgIG9yZ1F1ZXN0aW9uLlF1ZXN0aW9uX1RleHRfX2MgPSB0cmFuc1F1ZXN0aW9uLmxhYmVsO1xuICAgICAgICAgICAgICAgb3JnUXVlc3Rpb24uUXVlc3Rpb25fX2MgPSB0cmFuc1F1ZXN0aW9uLnBsYWNlSG9sZGVyO1xuICAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICBjb25zb2xlLmxvZygnb3JpZ2luYWxRdWVzdGlvbicgKyB0aGlzLnF1ZXN0aW9ucyk7XG4gICAgIGNvbnNvbGUubG9nKHRoaXMucXVlc3Rpb25zKTtcbiAgICB9XG4gIH1cblxuICBzZXRTdWJRdWVzdGlvbnMocmVjb3Jkcykge1xuICAgIGNvbnNvbGUubG9nKCdpbnNpZGUgUXVlc3Rpb25ib29rQ29tcG9uZW50IHNldFN1YlF1ZXN0aW9ucycpO1xuICAgIHRoaXMuc3ViUXVlc3Rpb25zLnB1c2gocmVjb3Jkcyk7XG4gIH1cblxuICAvLyBDYXB0dXJlIGFuZCBQcm9jZXNzIENoaWxkIEV2ZW50XG4gIGNoaWxkRXZlbnRDYXB0dXJlKGV2ZW50LCBxdWVzPzphbnkpIHtcbiAgICBsZXQgZHJvcGRvd25EYXRhID0gIHt9O1xuICAgLy8gY29uc29sZS5sb2coJ2luc2lkZSBRdWVzdGlvbmJvb2tDb21wb25lbnQgY2hpbGRFdmVudENhcHR1cmUnKTtcbiAgICBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgdGhpcy5jaGFuZ2VTZXJ2aWNlLmFubm91bmNlQ2hhbmdlKGV2ZW50KTtcbiAgICBpZihxdWVzKXtcbiAgICAgIGlmKHF1ZXMuVHlwZV9fYyA9PSAnRHJvcGRvd24nIHx8cXVlcy5UeXBlX19jID09ICdSYWRpbycgKSB7XG4gICAgICAgIC8vIEhBIDE5SkFOMjQgQ29ycmVjdGlvbiBvZiBkcm9wZG93biB2YWx1ZXNcbiAgICAgICAgcXVlcy5zZWxlY3RlZE9iaiA9IGV2ZW50LnZhbHVlT2JqID8gZXZlbnQudmFsdWVPYmogOiBudWxsO1xuICAgICAgICBxdWVzLmlucHV0ID0gZXZlbnQuc2VsZWN0ZWRPYmogPyBldmVudC5zZWxlY3RlZE9iaiA6IGV2ZW50LnZhbHVlT2JqO1xuICAgICAgICBxdWVzLnNlbGVjdGVkVmFsdWUgPSBldmVudC52YWx1ZU9iaiA/IGV2ZW50LnZhbHVlT2JqIDogbnVsbDtcbiAgICAgICAgLy8gZW1pdCB0aGUgZHJvcGRvd24gZGF0YSB0byBwYXJlbnRcbiAgICAgICAgZHJvcGRvd25EYXRhWydldmVudCddID0gZXZlbnQudmFsdWVPYmo7XG4gICAgICAgIGRyb3Bkb3duRGF0YVsncXVlcyddID0gcXVlcztcbiAgICAgICAgaWYoZHJvcGRvd25EYXRhWydldmVudCddKXtcbiAgICAgICAgICB0aGlzLmhhbmRsZURyb3BEb3duLmVtaXQoZHJvcGRvd25EYXRhKTtcbiAgICAgICAgfSAgLy8gVkQgMjFERUMyMyAtIGRlcGVuZGVudCBmaWVsZCBjaGFuZ2VcbiAgICAgIH0gZWxzZSBpZihxdWVzLlR5cGVfX2MgPT0gJ0xvY2F0aW9uJyl7XG4gICAgICAgIHF1ZXMuaW5wdXQgPSBldmVudC52YWx1ZU9iajtcbiAgICAgICAgcXVlcy5zZWxlY3RlZFZhbHVlID0gZXZlbnQudmFsdWVPYmouYWRkcmVzcztcbiAgICAgIH1lbHNlIGlmKHF1ZXMuVHlwZV9fYyA9PSAnRmlsZScpeyBcbiAgICAgICAgcXVlcy5pbnB1dCA9IHRoaXMuc2VsZWN0ZWRGaWxlRGF0YSA9IGV2ZW50O1xuICAgICAgfWVsc2UgaWYocXVlcy5UeXBlX19jID09ICdEYXRlJyB8fCBxdWVzLlR5cGVfX2MgPT0gJ0RhdGVUaW1lJyl7IC8vIEhBIDI0SkFOMjQgQ29udmVydGluZyBEYXRlIGFuZCBEYXRlVGltZSB0byBVVENcbiAgICAgICAgIGlmKGV2ZW50LnZhbHVlKXtcbiAgICAgICAgICBsZXQgZCA9IG5ldyBEYXRlKGV2ZW50LnZhbHVlKTtcbiAgICAgICAgICBsZXQgdXRjU3RyaW5nID0gZC50b0lTT1N0cmluZygpO1xuICAgICAgICAgIHF1ZXMuaW5wdXQgPSB1dGNTdHJpbmc7XG4gICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgcXVlcy5pbnB1dCA9ICcnO1xuICAgICAgICAgfVxuICAgICAgfWVsc2UgaWYocXVlcy5UeXBlX19jID09ICdMaXN0Jyl7XG4gICAgICAgIC8vIFZEIDIwQXVnMjQgaGFuZGxpbmcgdGhlIGxpc3QgdHlwZSAgaGFuZGxlIG11bHRpcGxlIG9iamVjdCB2YWx1ZXNcbiAgICAgICAgcXVlcy5pbnB1dCA9IHRoaXMuZGF0YVNlcnZpY2UuZ2V0VmFsdWUoZXZlbnQudmFsdWVPYmosZXZlbnQuZmllbGQpO1xuICAgICAgfWVsc2V7XG4gICAgICAgIHF1ZXMuaW5wdXQgPSBldmVudDtcbiAgICAgIH1cbiAgICAgIC8vIHZhbGlkYXRpbmcgICBlcnJvciBtZXNzYWdlXG4gICAgICBjb25zdCBoYXNFcnJvciA9IHF1ZXMuRXJyb3JfTWVzc2FnZV9fYyAmJiAoKHF1ZXMuVHlwZV9fYyA9PT0gJ0ZpbGUnICYmIHF1ZXMuaW5wdXQubGVuZ3RoID09IDApIHx8IChxdWVzLlR5cGVfX2MgIT0gJ0ZpbGUnICYmICFxdWVzLmlucHV0KSk7XG4gICAgICBxdWVzLmVycm9yID0gaGFzRXJyb3IgPyBuZXcgRXJyb3JXcmFwcGVyKCkgOiBudWxsO1xuICAgICAgLy8gT25jZSB0aGUgcmlnaHQgdmFsdWUgaXMgc3RvcmVkIGluIHF1ZXMuaW5wdXQgc3RvcmUgdGhlIHF1ZXMgKHdpdGggaW5wdXQpIGluIHN0b3JhZ2VTZXJ2aWNlXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnVwZGF0ZShxdWVzKTtcbiAgICAgIC8vIFZEIDE5SnVsMDEgLSBnZXQgdXBkYXRlZCBxdWVzdGlvblxuICAgICAgdGhpcy5oYW5kbGVRdWVzdGlvbi5lbWl0KHF1ZXMpO1xuICAgIH1cbiAgfVxuICBkZWxldGVGaWxlKGZpbGVEYXRhOmFueSl7XG4gICAgY29uc29sZS5sb2coJ2ZpbGVEQVRBJyxmaWxlRGF0YSlcbiAgfVxuICBnZXREcm9wRG93bihldmVudDphbnkpe1xuICAgIHRoaXMuaGFkbGVEcm9wRG93bkRlcGVuZGVudC5lbWl0KGV2ZW50KTtcbiAgfVxuLy8gVkQgMDZTZXAyNCBjYWxlbmRhciBjaGFuZ2VzXG4gIGdldEN1cnJlbnRDYWxlbmRhcihldmVudDphbnkpe1xuICAgIHRoaXMuaGFuZGxlQ2FsZW5kYXJEYXRlLmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgZ2V0Q2FsZW5kYXJFdmVudChldmVudDphbnkpe1xuICAgIGlmKGV2ZW50KXtcbiAgICAgIHRoaXMuaGFuZGxlQ2FsZW5kYXJFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB9XG4gIH1cblxuIC8vIFZEIDA2U2VwMjQgcmVtb3ZlIHRoZSBzcGVjaWFsIGNoYXJlY3RlcnMgYW5kIHRhZ3MgXG4gIC8vIGZyb20gdGhlIHF1ZXN0aW9uVGV4dFxuICByZW1vdmVDaGFyYWN0ZXJzKHF1ZXN0aW9uVGV4dDpzdHJpbmcpe1xuICAgICBsZXQgdXBkYXRlZFRleHQgPSBxdWVzdGlvblRleHQ/LnJlcGxhY2UoLzxbXj5dKj4vZywgJycpO1xuICAgICByZXR1cm4gdXBkYXRlZFRleHQ7XG4gIH1cblxuLy8gc3VuZGF5IGNvbW1lbnRcbiAgLy8gb3BlbkNhbGVuZGFyQ29tcG9uZW50KHF1ZXMpIHtcbiAgLy8gICBjb25zdCB2aWV3Q29udGFpbmVyUmVmID0gdGhpcy5keW5hbWljSG9zdC52aWV3Q29udGFpbmVyUmVmO1xuICAvLyAgIGlmKHZpZXdDb250YWluZXJSZWYpe1xuICAvLyAgICAgdmlld0NvbnRhaW5lclJlZi5jbGVhcigpO1xuICAvLyAgICAgY29uc3QgY29tcG9uZW50UmVmID0gdmlld0NvbnRhaW5lclJlZi5jcmVhdGVDb21wb25lbnQoQ3VzdG9tQ2FsZW5kYXJDb21wb25lbnQpO1xuICAvLyAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLnF1ZXN0aW9uID0gcXVlcztcbiAgLy8gICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5kYXRlU2VsZWN0ZWQuc3Vic2NyaWJlKChldmVudDogYW55KSA9PiB0aGlzLmdldEN1cnJlbnRDYWxlbmRhcihldmVudCkpO1xuICAvLyAgICAgY29tcG9uZW50UmVmLmluc3RhbmNlLmV2ZW50U2VsZWN0ZWQuc3Vic2NyaWJlKChldmVudDphbnkpID0+IHRoaXMuZ2V0Q2FsZW5kYXJFdmVudChldmVudCkpXG4gIC8vICAgfVxuICAvLyB9XG5cbiAgaXNDYWxlbmRhck1vZGFsT3BlbiA9IGZhbHNlO1xuICBjYWxlbmRhck1vZGFsVGl0bGU6YW55O1xuICBjYWxlbmRhck1vZGFsU2l6ZTphbnk7XG4gIGNhbGVuZGFyU2F2ZUJ1dHRvblZhbHVlOiBhbnk7XG4gIHJlZmVyZW5jZVF1ZXN0aW9ucyA9IFtdO1xuICBxYlJlZnJlbmNlQm9vazphbnk7XG4gIG1vZGFsQ2FsZW5kYXJNb2RhbEZvb3Rlcjphbnk7XG5cbiAgb3BlbkNhbGVuZGFyTW9kYWwoZXZlbnQpIHtcbiAgICBjb25zb2xlLmxvZygnaW5zaWRlIGNhbGVuZGFyIG9wZW4nKTtcbiAgICB0aGlzLmlzQ2FsZW5kYXJNb2RhbE9wZW4gPSB0cnVlO1xuICAgIHRoaXMucWJSZWZyZW5jZUJvb2sgPSBldmVudC5xYlJlZnJlbmNlQm9vaztcbiAgICB0aGlzLnJlZmVyZW5jZVF1ZXN0aW9ucyA9IGV2ZW50LnJlZmVyZW5jZVF1ZXN0aW9ucztcbiAgICB0aGlzLmNhbGVuZGFyTW9kYWxUaXRsZSA9IGV2ZW50Lm1vZGFsVGl0bGU7XG4gICAgdGhpcy5jYWxlbmRhck1vZGFsU2l6ZSA9IGV2ZW50Lm1vZGFsU2l6ZTtcbiAgICB0aGlzLmNhbGVuZGFyU2F2ZUJ1dHRvblZhbHVlID0gZXZlbnQuc2F2ZUJ1dHRvblZhbHVlO1xuICAgIHRoaXMubW9kYWxDYWxlbmRhck1vZGFsRm9vdGVyID0gZXZlbnQubW9kYWxGb290ZXI7XG4gIH1cblxuXG4gIG9uQ2FsZW5kYXJNb2RhbFNhdmUoKXtcbiAgICB0aGlzLmNoYW5nZVNlcnZpY2UuZGF0YUNoYW5nZXMoJ2NhbGVuZGFyLW1vZGFsLXNhdmUnKTtcbiAgfVxuXG5cbiAgaGFuZGxlUXVlc3Rpb25FdmVudChldmVudCl7XG4gICAgY29uc29sZS5sb2coJ2hhbmRsZSBxdWVzdGlvbiBoZXJlJyk7XG4gIH1cbiBcbiAgY2xvc2VDYWxlbmRhck1vZGFsKGV2ZW50KXtcbiAgICB0aGlzLmlzQ2FsZW5kYXJNb2RhbE9wZW4gPSBmYWxzZTtcbiAgfVxuXG59XG4iLCI8IS0tIEhBIDIwREVDMjMgQm9vayBTdHlsZSBmcm9tIHNhbGVzZm9yY2UgLS0+XG48IS0tIEhBIDI4REVDMjMgIFJlbW92ZWQgSXNTaGVuZ2VsKHJlbW92YWwgb2Ygc2hlbmdlbCB2YWx1ZXMgYXBwbGllcyBmb3IgdGhpcyByZWFzb24pIGFuZCBkaXJlY3Qgc3R5bGluZyBvZiBib29rcyB0byBhdm9pZCBzdHlsaW5nIGlzc3Vlcy0tPlxuPCEtLSBIQSAxOEpBTjI0ICBBZGRlZCBjbGFzcyBmb3Igc3R5bGluZyAtLT5cbjxkaXYgW3N0eWxlXT1cImJvb2tTdHlsZVwiIGNsYXNzPVwiY29udGVudC1ib3ggZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxuICAgICAgICA8IS0tIEhBIDIwREVDMjMgRGlyZWN0aXZlIGFuZCBRdWVzdGlvbiBTdHlsZSBmcm9tIHNhbGVzZm9yY2UgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIFtjbGFzc109XCInY29sLWxnLScgKyBxdWVzLlNpemVfX2MgKyAnIHBhZGRpbmdub25lJ1wiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgcXVlcyBvZiBxdWVzdGlvbnM7bGV0IGkgPSBpbmRleFwiIFtpZF09XCJxdWVzLklkXCIgW2Rpcl09XCJxdWVzLmxhbmdEaXJlY3Rpb25cIiBbc3R5bGVdPVwicXVlcz8uU3R5bGVfX2M/LnF1ZXN0aW9uU3R5bGVcIj5cbiAgICAgICAgICAgIDwhLS0gU3ViIFF1ZXN0aW9uIExhYmVsIC0tPlxuICAgICAgICAgICAgPCEtLSBIQSAyMERFQzIzIExhYmVsIFN0eWxlIGZyb20gc2FsZXNmb3JjZSAtLT5cbiAgICAgICAgICAgIDwhLS0gVkQgMDlNYXkyNCBpcyBoaWRlIGZpZWxkIGNoYW5nZS0tPlxuICAgICAgICAgPGRpdiAqbmdJZj1cIiFxdWVzLklzX0hpZGVfX2NcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdEYXRlVGltZSdcIj5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIFZEIDIwSlVOMjQgLSBoZWxwIHRleHQgY2hhbmdlcy0tPlxuICAgICAgICAgICAgPCEtLSBWRCAwMUF1ZzI0IC0gdmFsaWRhdGlvbiBjaGFuZ2UtLT5cbiAgICAgICAgICAgIDwhLS0gLy8gVkQgMDJBdWcyNCAtIGxhYmVsIHZhbHVlIHN0eWxlLS0+XG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsgZG93bjI6IHFiSXRlbT8uUHJvZ3Jlc3NfQmFyX19jIH1cIiAqbmdJZj1cInF1ZXMuU3R5bGVfX2M/LnNob3dMYWJlbCA/IHF1ZXMuU3R5bGVfX2M/LnNob3dMYWJlbCA6IHRydWVcIiBbc3R5bGVdPVwicXVlcy5TdHlsZV9fYz8ubGFiZWxTdHlsZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzc109XCInZGlzLWZsZXggc2hlbmdlbC1teXQtZm9udDMgbXl0LWZvbnQ3ICdcIiBbc3R5bGVdPVwicXVlcy5TdHlsZV9fYz8ubGFiZWxWYWx1ZVN0eWxlXCI+e3sgcmVtb3ZlQ2hhcmFjdGVycyhxdWVzPy5RdWVzdGlvbl9UZXh0X19jKSB9fSBcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAgKm5nSWY9XCJxdWVzLklzX09wdGlvbmFsX19jXCIgc3R5bGU9XCJjb2xvcjogcmVkO1wiPio8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuUXVlc3Rpb25fVGV4dF9fYyAmJiBxdWVzPy5IZWxwX1RleHRfX2NcIiBjbGFzcz1cImljb25cIiBbbWF0VG9vbHRpcF09XCJxdWVzPy5IZWxwX1RleHRfX2NcIj5pPC9kaXY+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIC8vIFZEIDEySnVuMjQgLSByZWFkb25seSBjaGFuZ2UtLT5cbiAgICAgICAgICAgIDwhLS0gRGF0ZVRpbWUgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnRGF0ZVRpbWUnXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tZGF0ZS1waWNrZXIgW21pbkRhdGVdPVwicXVlcy5taW5EYXRlXCIgW2Vycm9yXT1cInF1ZXMuZXJyb3JcIiBbZXJyb3JNZXNzYWdlXT1cInF1ZXMuRXJyb3JfTWVzc2FnZV9fY1wiIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiIFtkYXRlXT1cInF1ZXMuaW5wdXRcIiAoZGF0ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWRhdGUtcGlja2VyPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICA8IS0tIERhdGUtLT5cbiAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnRGF0ZSdcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1kYXRlICBbZGF0ZV09XCJxdWVzLmlucHV0XCIgW2Vycm9yXT1cInF1ZXMuZXJyb3JcIiBbZXJyb3JNZXNzYWdlXT1cInF1ZXMuRXJyb3JfTWVzc2FnZV9fY1wiIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiIChkYXRlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tZGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgPCEtLSBUaW1lLS0+XG4gICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ1RpbWUnXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tdGltZSAgW3RpbWVdPVwicXVlcy5pbnB1dFwiIFtlcnJvcl09XCJxdWVzLmVycm9yXCIgW2Vycm9yTWVzc2FnZV09XCJxdWVzLkVycm9yX01lc3NhZ2VfX2NcIiBbcmVhZE9ubHldPVwicXVlcy5SZWFkX09ubHlfX2NcIiAodGltZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLXRpbWU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgPCEtLSBjYWxlbmRhciAgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnQ2FsZW5kYXInXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tY2FsZW5kYXIgXG4gICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cInF1ZXNcIiAgXG4gICAgICAgICAgICAgICAgKGV2ZW50U2VsZWN0ZWQpPVwiZ2V0Q2FsZW5kYXJFdmVudCgkZXZlbnQpXCIgXG4gICAgICAgICAgICAgICAgKGRhdGVTZWxlY3RlZCk9XCJnZXRDdXJyZW50Q2FsZW5kYXIoJGV2ZW50KVwiIFxuICAgICAgICAgICAgICAgIChvcGVuTW9kYWwpPVwib3BlbkNhbGVuZGFyTW9kYWwoJGV2ZW50KVwiIFxuICAgICAgICAgICAgICAgIChjbG9zZU1vZGFsKT1cImNsb3NlQ2FsZW5kYXJNb2RhbCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+PC9hcHAtY3VzdG9tLWNhbGVuZGFyPlxuICAgICAgICAgICAgICAgIDwhLS0gbW9kZWwgdXNlZCBpbiBjYWxlbmRhciBjb21wb25lbnQgLS0+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tbW9kZWwgKm5nSWY9XCJpc0NhbGVuZGFyTW9kYWxPcGVuXCJcbiAgICAgICAgICAgICAgICAgICAgW21vZGFsVGl0bGVdPVwiY2FsZW5kYXJNb2RhbFRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzTW9kYWxPcGVuXT1cImlzQ2FsZW5kYXJNb2RhbE9wZW5cIlxuICAgICAgICAgICAgICAgICAgICBbbW9kYWxTaXplXT1cImNhbGVuZGFyTW9kYWxTaXplXCJcbiAgICAgICAgICAgICAgICAgICAgW3NhdmVCdXR0b25WYWx1ZV09XCJjYWxlbmRhclNhdmVCdXR0b25WYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFttb2RhbEZvb3Rlcl09XCJtb2RhbENhbGVuZGFyTW9kYWxGb290ZXJcIlxuICAgICAgICAgICAgICAgICAgICAoc2F2ZUJ1dHRvbkVtaXQpPVwib25DYWxlbmRhck1vZGFsU2F2ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgKGNhbmNlbEJ1dHRvbkVtaXQpPVwiY2xvc2VDYWxlbmRhck1vZGFsKCRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICA8bGliLXF1ZXN0aW9uYm9vayAgW3FiSXRlbV09XCJxYlJlZnJlbmNlQm9va1wiIFtxdWVzdGlvbnNdPVwicmVmZXJlbmNlUXVlc3Rpb25zXCIgKGhhbmRsZVF1ZXN0aW9uKT1cImhhbmRsZVF1ZXN0aW9uRXZlbnQoJGV2ZW50KVwiPjwvbGliLXF1ZXN0aW9uYm9vaz5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tbW9kZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gVGV4dCAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdUZXh0JyB8fCBxdWVzLlR5cGVfX2MgPT09ICdMaW5rJ1wiID5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1pbnB1dCBbdmFsdWVdPVwicXVlcy5pbnB1dFwiIFtuZ0NsYXNzVmFsdWVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpcy1mbGV4IGR0LWxpbmUgZGF0ZS1saW5lIGJvb2tUZXh0IGJveG91dGxpbmUgbXl0LWZvbnQxJzogcWJJdGVtLlByb2dyZXNzX0Jhcl9fYyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRCb3g6ICFxYkl0ZW0uUHJvZ3Jlc3NfQmFyX19jXG4gICAgICAgICAgICAgICAgICAgIH1cIiBbcXVlc3Rpb25dPVwicXVlc1wiIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiIFtpZFZhbHVlXT1cInF1ZXMuVHJhY2tpbmdfSURfX2NcIiBbZm9jdXNFdmVudF09XCJjbGVhclNRRXJyb3IocXVlcy5JZClcIlxuICAgICAgICAgICAgICAgICAgICBbZXJyb3JdPVwicXVlcy5lcnJvclwiIFtwbGFjZWhvbGRlcl09XCJxdWVzLlF1ZXN0aW9uX19jXCIgKGlucHV0VmFsdWUpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS1pbnB1dD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgICA8IS0tIGZvciBwaWNrIGxvY2F0aW9uIC0tPlxuICAgICAgICAgICAgPCEtLSAgIFZEIDIxREVDMjMgLSBkZXBlbmRlbnQgZmllbGQgY2hhbmdlIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0xvY2F0aW9uJ1wiPlxuICAgICAgICAgICAgPCEtLSBIQTEwMDEyMDI0IEFkZGVkIEFwaSBrZXkgYXMgaW5wdXQgLS0+XG4gICAgICAgICAgICAgICAgPGFwcC1waWNrLWxvY2F0aW9uIFthcGlLZXldPVwicWJJdGVtWydBcGlfS2V5X19jJ11cIiBbYWRkcmVzc109XCJxdWVzLnNlbGVjdGVkVmFsdWVcIiBbcXVlc3Rpb25dPVwicXVlc1wiIChsb2NhdGlvblNlbGVjdGVkKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1waWNrLWxvY2F0aW9uPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gZm9yICB0ZXh0IGFyZWEgICAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdUZXh0QXJlYSdcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS10ZXh0LWFyZWEgW3F1ZXN0aW9uXT1cInF1ZXNcIiBbcmVhZE9ubHldPVwicXVlcy5SZWFkX09ubHlfX2NcIiBbdmFsdWVdPVwicXVlcy5pbnB1dFwiIFtyb3dzXT1cIjNcIiBbZXJyb3JdPVwicXVlcy5lcnJvclwiIFtwbGFjZWhvbGRlcl09XCJxdWVzLlF1ZXN0aW9uX19jIFwiXG4gICAgICAgICAgICAgICAgICAgICh0ZXh0YXJlYVZhbHVlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj48L2FwcC1jdXN0b20tdGV4dC1hcmVhPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gRW1haWwgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnRW1haWwnXCI+XG4gICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJlbWFpbFwiIHJlYWRPbmx5PVwicXVlcy5SZWFkX09ubHlfX2NcIiBbKG5nTW9kZWwpXT1cInF1ZXMuaW5wdXRcIiBbaWRdPVwicXVlcy5JZFwiIHJlcXVpcmVkPVwiXCIgKGZvY3VzKT1cImNsZWFyU1FFcnJvcihxdWVzLklkKVwiXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlLmJvcmRlci1jb2xvcj1cInt7IHF1ZXMuZXJyb3IgPyAncmVkJyA6ICcnIH19XCIgcGxhY2Vob2xkZXI9XCJ7eyBxdWVzLlF1ZXN0aW9uX19jIH19XCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIFRhYmxlIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ1RhYmxlJ1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tdGFibGUgW3F1ZXN0aW9uXT1cInF1ZXNcIiBbYXBpTWV0YV09XCJxdWVzLlN1Yl9UZXh0X19jXCIgKHZhbHVlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcyk7IGNsZWFyU1FFcnJvcihxdWVzLklkKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS10YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgIDwhLS0gVGFibGUgQXBwZW5kaXggLS0+XG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdUYWJsZUFwcGVuZGl4J1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC10YWJsZS1hcHBlbmRpeCBbcXVlc3Rpb25dPVwicXVlc1wiICh2YWx1ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpOyBjbGVhclNRRXJyb3IocXVlcy5JZClcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC10YWJsZS1hcHBlbmRpeD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgIDwhLS0gbGlzdCAtLT5cbiAgICAgICAgICAgICA8IS0tIFZEIDIwQXVnMjQgdXNlZCBjb3JyZWN0IGF0dHJpYnV0ZSAtLT5cbiAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnTGlzdCdcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxsaWItc2VhcmNoLWJveCBbcXVlc3Rpb25dPVwicXVlc1wiIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiIFthcGlNZXRhXT1cInF1ZXMuU3ViX1RleHRfX2NcIiBbaWRdPVwicXVlcy5JZFwiIFtwbGFjZUhvbGRlclRleHRdPVwicXVlcy5RdWVzdGlvbl9fY1wiICBbZmlsdGVyTmFtZV09XCJxdWVzLmlucHV0XCIgKHNlYXJjaFZhbHVlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj5cbiAgICAgICAgICAgICAgICA8L2xpYi1zZWFyY2gtYm94PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gRHJvcGRvd24gLS0+XG4gICAgICAgICAgICA8IS0tIEhBIDA5RkVCMjQgQWRkZWQgY29uZGl0aW9uIG9mIHNxT3B0aW9uIHRvIHRoZSBkcm9wZG93biAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdEcm9wZG93bicgJiYgcXVlcz8uUXVlc3Rpb25fT3B0aW9uc19fcj8ucmVjb3Jkc1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBIQSAyMERFQzIzIEZvciBUcmFuc2xhdGlvbiAtLT4gPCEtLSBWRCAxOUpBTjI0IC0gZ2V0dGluZyB0b2tlbiBhcyBpbnB1dCAtLT5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1kcm9wZG93biBbb3B0aW9uc109XCJxdWVzLlF1ZXN0aW9uX09wdGlvbnNfX3IucmVjb3Jkc1wiIFxuICAgICAgICAgICAgICAgICAgICBbdG9rZW5dPVwidG9rZW5cIlxuICAgICAgICAgICAgICAgICAgICBbYXBpTWV0YV09XCJxdWVzLlN1Yl9UZXh0X19jXCIgW2lkXT1cInF1ZXMuSWRcIiBcbiAgICAgICAgICAgICAgICAgICAgW3NlbGVjdGVkVmFsdWVdPVwicXVlcy5zZWxlY3RlZFZhbHVlXCIgXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiLS0te3snc2VsZWN0JyB8IGkxOG46aTE4blNlcnZpY2UuY3VycmVudExhbmd1YWdlfX0tLS1cIlxuICAgICAgICAgICAgICAgICAgICBbZXJyb3JNZXNzYWdlXT1cInF1ZXMuRXJyb3JfTWVzc2FnZV9fY1wiIFtlcnJvcl09XCJxdWVzLmVycm9yXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlZmVyZW5jZUZpZWxkXT1cInF1ZXMuUmVmZXJlbmNlX0ZpZWxkX19jXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInF1ZXMuUmVhZF9Pbmx5X19jXCJcbiAgICAgICAgICAgICAgICAgICAgW3F1ZXN0aW9uXT1cInF1ZXNcIlxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKTsgY2xlYXJTUUVycm9yKHF1ZXMuSWQpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWRyb3Bkb3duPlxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtY2hlY2sgXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgKm5nSWY9XCJxdWVzPy5pbnB1dD8ubGVuZ3RoID4gMFwiPjwvaT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSAvLyBWRCAwMkF1ZzI0IGN1c3RvbS1yYWRpbyBjb21wb25lbnQgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnUmFkaW8nICYmIHF1ZXM/LlF1ZXN0aW9uX09wdGlvbnNfX3I/LnJlY29yZHNcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLXJhZGlvIFtvcHRpb25zXT1cInF1ZXMuUXVlc3Rpb25fT3B0aW9uc19fci5yZWNvcmRzXCIgW3Rva2VuXT1cInRva2VuXCJcbiAgICAgICAgICAgICAgICAgICAgW2FwaU1ldGFdPVwicXVlcy5TdWJfVGV4dF9fY1wiIFtpZF09XCJxdWVzLklkXCIgW3NlbGVjdGVkVmFsdWVdPVwicXVlcy5zZWxlY3RlZFZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yTWVzc2FnZV09XCJxdWVzLkVycm9yX01lc3NhZ2VfX2NcIiBbZXJyb3JdPVwicXVlcy5lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWZlcmVuY2VGaWVsZF09XCJxdWVzLlJlZmVyZW5jZV9GaWVsZF9fY1wiXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiXG4gICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpOyBjbGVhclNRRXJyb3IocXVlcy5JZClcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tcmFkaW8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBBdHRhY2htZW50IC8gRmlsZXMgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnRmlsZSdcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtZmlsZS11cGxvYWQgW2xpbWl0RmlsZVVwbG9hZGluZ109XCI1XCIgW2Vycm9yXT1cInF1ZXMuZXJyb3JcIiBbcXVlc3Rpb25dPVwicXVlc1wiIFthbGxGaWxlc109XCJxdWVzLmlucHV0XCIgW3RhYmxlRmlsZV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgKHNlbGVjdGVkRmlsZURhdGEpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiIChkZWxldGVkRmlsZURhdGEpPVwiZGVsZXRlRmlsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICBbaXNEZWxldGVGaWxlQnV0dG9uVmlzaWJsZV09XCJ0cnVlXCI+PC9hcHAtZmlsZS11cGxvYWQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdQb3BVcE1lc3NhZ2UnXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWRlcGVuZGVudC10YWJsZSBbYWxlcnRNZXNzYWdlXT1cInF1ZXMuRXJyb3JfTWVzc2FnZV9fY1wiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWRlcGVuZGVudC10YWJsZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0xhYmVsJ1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tbGFiZWwgW2xhYmVsU3R5bGVdPVwicXVlcy5UaXRsZV9fY1wiIFtsYWJlbFZhbHVlXT1cInF1ZXMuUXVlc3Rpb25fX2NcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICA8IS0tIC8vIFZEIDAyQXVnMjQgaW1hZ2UgY29tcG9uZW50IC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0ltYWdlJ1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20taW1hZ2UgW3F1ZXN0aW9uXT1cInF1ZXNcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20taW1hZ2U+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gMDhOT1YyMyAtIGJ1dHRvbiB0eXBlIHF1ZXN0aW9uIGFkZGVkIC0tPlxuICAgICAgICAgICAgIDwhLS0gQnV0dG9uIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0J1dHRvbidcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLWJ1dHRvbiBbaGVpZ2h0XT1cIic1MHB4J1wiICBcbiAgICAgICAgICAgICAgICBbd2lkdGhdPVwiJzE1MHB4J1wiIFxuICAgICAgICAgICAgICAgIFtidXR0b25UZXh0XT1cInF1ZXM/LlF1ZXN0aW9uX19jXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwicXVlcz8uUXVlc3Rpb25fX2NcIlxuICAgICAgICAgICAgICAgIChidXR0b25WYWx1ZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSBIQSAyMERFQzIzICBUaGlzIGlzIHRvIGxvYWQgYm9vayB0eXBlIHF1ZXN0aW9ucy0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0Jvb2snXCI+XG4gICAgICAgICAgICAgICAgPCEtLSBIQSAwOUZFQjI0IEFkZGVkIHRlcm5hcnkgb3BlcmF0b3IgLS0+XG4gICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbmJvb2sgW3FiSXRlbV09XCJxdWVzLnFiSXRlbVwiIFtsYWJlbFZhbHVlXT1cImxhYmVsVmFsdWVcIiBbcXVlc3Rpb25zXT1cInF1ZXMucWJJdGVtPy5RdWVzdGlvbnNfX3I/LnJlY29yZHNcIiAgKGhhbmRsZURyb3BEb3duKT1cImdldERyb3BEb3duKCRldmVudClcIj48L2xpYi1xdWVzdGlvbmJvb2s+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8IS0tIDA2LTA5LTI0IGZvciBjYWxlbmRhciB0eXBlLS0+XG48IS0tIDxuZy10ZW1wbGF0ZSBkeW5hbWljQ29tcG9uZW50SG9zdD48L25nLXRlbXBsYXRlPiAtLT4iXX0=
415
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25ib29rLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL254dC1hcHAvc3JjL2xpYi9wYWdlcy9xdWVzdGlvbmJvb2svcXVlc3Rpb25ib29rLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUE2RCxNQUFNLGVBQWUsQ0FBQztBQU9sSixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHeEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQTRCLE1BQU0sTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFakUsa0dBQWtHO0FBQ2xHLHVHQUF1RztBQU92RyxNQUFNLE9BQU8scUJBQXFCO0lBMkJaO0lBQ1Y7SUFDQTtJQUNBO0lBQ0Q7SUFDQztJQUNrQjtJQWhDbkIsTUFBTSxDQUFlO0lBQ3JCLFlBQVksQ0FBVztJQUN2QixtQkFBbUIsR0FBVyxFQUFFLENBQUEsQ0FBRSxtQ0FBbUM7SUFDckUsU0FBUyxDQUFhO0lBQ3RCLFlBQVksQ0FBSztJQUNqQixVQUFVLENBQVE7SUFDbEIsS0FBSyxDQUFRLENBQUMsc0NBQXNDO0lBQ25ELGNBQWMsR0FBcUIsSUFBSSxZQUFZLEVBQU8sQ0FBQztJQUMzRCxjQUFjLEdBQXFCLElBQUksWUFBWSxFQUFPLENBQUMsQ0FBQyxvQ0FBb0M7SUFDakcsWUFBWSxDQUFLO0lBQzFCLDJGQUEyRjtJQUMzRixZQUFZLENBQWE7SUFDekIsZ0JBQWdCLEdBQVUsRUFBRSxDQUFDO0lBQzdCLGNBQWMsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUNyRCx1RUFBdUU7SUFDdkUsS0FBSyxDQUFlO0lBQ3BCLGlEQUFpRDtJQUNqRCxLQUFLLENBQU07SUFDWCxhQUFhLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLFNBQVMsQ0FBTTtJQUNmLFlBQVksQ0FBZTtJQUNqQixzQkFBc0IsR0FBcUIsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUN4RSw4QkFBOEI7SUFDcEIsa0JBQWtCLEdBQXFCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDMUQsbUJBQW1CLEdBQXFCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDOUQsZ0JBQWdCLEdBQVEsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN6QyxZQUFvQixTQUE0QixFQUN0QyxXQUF3QixFQUN4QixhQUE0QixFQUM1QixjQUE4QixFQUMvQixXQUF3QixFQUN2QixHQUFzQixFQUNKLFFBQWtCO1FBTjFCLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQ3RDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUMvQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN2QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUNKLGFBQVEsR0FBUixRQUFRLENBQVU7SUFFOUMsQ0FBQztJQUVELFFBQVE7UUFDTixxQkFBcUI7UUFDckIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLCtEQUErRDtRQUMvRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FDNUQsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUNaLElBQUcsV0FBVyxJQUFJLFVBQVUsRUFBRTtnQkFDNUIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2FBQ3BCO1FBQ0wsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRUEscUJBQXFCO0lBQ3RCLFdBQVc7UUFDVCxPQUFPLENBQUMsR0FBRyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDbkQsc0NBQXNDO1FBQ3RDLCtCQUErQjtRQUMvQiwwREFBMEQ7UUFDMUQsMkJBQTJCO1FBQzNCLElBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUM7WUFDdkIsdUVBQXVFO1lBQ3ZFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUM5SCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMzRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMzRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxSCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMzRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUN4RyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztTQUMzRzthQUNHO1lBQ0YsSUFBRyxJQUFJLENBQUMsTUFBTSxFQUFDO2dCQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxHQUFHO29CQUNyQixZQUFZLEVBQUcsRUFBRTtvQkFDakIsWUFBWSxFQUFHLEVBQUU7b0JBQ2pCLGlCQUFpQixFQUFHLEVBQUU7b0JBQ3RCLFlBQVksRUFBRyxFQUFFO29CQUNqQixZQUFZLEVBQUcsRUFBRTtvQkFDakIsV0FBVyxFQUFHLEVBQUU7b0JBQ2hCLFdBQVcsRUFBRSxJQUFJO29CQUNqQixXQUFXLEVBQUcsS0FBSztvQkFDbkIsZUFBZSxFQUFFLEVBQUU7aUJBQ3BCLENBQUM7YUFDSDtTQUNGO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckgsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNsSSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQztRQUNsRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMvQixJQUFJLFdBQVcsR0FBRyxPQUFPLEVBQUUsZ0JBQWdCLENBQUU7WUFDN0MsSUFBSSxRQUFRLEdBQUcsV0FBVyxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUE7WUFDbkQsT0FBTyxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQztZQUNwQyxxREFBcUQ7WUFDckQsdUVBQXVFO1lBQ3ZFLElBQUcsT0FBTyxDQUFDLE9BQU8sS0FBSyxNQUFNLEVBQUM7Z0JBQzVCLElBQUcsT0FBTyxDQUFDLDJCQUEyQixDQUFDLEVBQUM7b0JBQ3RDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLDJCQUEyQixDQUFDLENBQUMsQ0FBQztvQkFDMUQsSUFBRyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxFQUFDO3dCQUM3QixFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxHQUFHLE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztxQkFDMUo7eUJBQ0c7d0JBQ0YsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztxQkFDcEQ7b0JBRUQsNkJBQTZCO29CQUM3QixFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDaEksRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ2hJLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUM3SSxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDaEksRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ2hJLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUM3SCxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztvQkFDL0gsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQ3pJLEVBQUUsQ0FBQyxlQUFlLENBQUMsR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7b0JBRTFILHFDQUFxQztvQkFDckMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7d0JBQ2pFLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFFBQVEsQ0FBQzt3QkFDaEgsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQzFILGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUMxSCxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxHQUFHLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDekksZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFVBQVUsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQzFILGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUMxSCxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDdkgsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7d0JBQ3pILGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUNuSSxnQkFBZ0IsQ0FBQyxlQUFlLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO29CQUN2SSxDQUFDLENBQUMsQ0FBQztvQkFDSCxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDO2lCQUN4QzthQUNGO1lBQ0QsT0FBTyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLE9BQU8sQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO1lBRTFKLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9GLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9GLE9BQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9GLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzlGLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzVGLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQzlGLE9BQU8sQ0FBQyxRQUFRLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBRXhHLE9BQU8sQ0FBQyxlQUFlLENBQUMsR0FBRyxPQUFP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cUJBQXFCLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBR0QsbUJBQW1CLENBQUMsS0FBSztRQUN2QixPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGtCQUFrQixDQUFDLEtBQUs7UUFDdEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQztJQUNuQyxDQUFDO3dHQWxXVSxxQkFBcUIscU1BaUN0QixRQUFROzRGQWpDUCxxQkFBcUIsdWZDckJsQyxxNFZBb0x5RCw2M0dEL0o1QyxxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0Usa0JBQWtCOzswQkFxQ3pCLE1BQU07MkJBQUMsUUFBUTs0Q0FoQ1QsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDSSxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBQ0UsWUFBWTtzQkFBcEIsS0FBSztnQkFZSSxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBRUcsa0JBQWtCO3NCQUEzQixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgVmlld0NoaWxkLCBDaGFuZ2VEZXRlY3RvclJlZiwgU2ltcGxlQ2hhbmdlcywgQ29tcG9uZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBRdWVzdGlvbiwgUXVlc3Rpb25Cb29rIH0gZnJvbSAnLi4vLi4vd3JhcHBlcic7XG5pbXBvcnQgeyBTYWxlc2ZvcmNlU2VydmljZSB9IGZyb20gXCIuLi8uLi9zZXJ2aWNlcy9zYWxlc2ZvcmNlLnNlcnZpY2VcIjtcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcbmltcG9ydCB7IENoYW5nZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9jaGFuZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgKiBhcyBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IEVycm9yV3JhcHBlciB9IGZyb20gJy4uLy4uL21vZGVsL2Vycm9yV3JhcHBlcic7XG4vLyBIQSAxOURFQzIzIGltcG9ydGVkIHRyYW5zbGF0aW9uIHNlcnZpY2VcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEZXBlbmRlbmN5TWV0YSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZGVwZW5kZW5jeU1ldGEnO1xuLy9pbXBvcnQgeyBDb21wb25lbnRob3N0RGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9jb21wb25lbnRob3N0L2NvbXBvbmVudGhvc3QuZGlyZWN0aXZlJztcbi8vaW1wb3J0IHsgQ3VzdG9tQ2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9jb21wb25lbnRzL2N1c3RvbS1jYWxlbmRhci9jdXN0b20tY2FsZW5kYXIuY29tcG9uZW50JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXF1ZXN0aW9uYm9vaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9xdWVzdGlvbmJvb2suY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9xdWVzdGlvbmJvb2suY29tcG9uZW50LmNzcyddXG59KVxuZXhwb3J0IGNsYXNzIFF1ZXN0aW9uYm9va0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHFiSXRlbTogUXVlc3Rpb25Cb29rO1xuICBASW5wdXQoKSBxdWVzdGlvbkl0ZW06IFF1ZXN0aW9uO1xuICBASW5wdXQoKSB0cmFuc2xhdGVkUXVlc3Rpb25zIDogYW55W10gPSBbXSAgLy8gVkQgMTFKdW4yNCAtIHRyYW5zbGF0aW9uIGNoYW5nZXNcbiAgQElucHV0KCkgcXVlc3Rpb25zOiBRdWVzdGlvbltdO1xuICBASW5wdXQoKSBlcnJvckZpZWxkSWQ6YW55O1xuICBASW5wdXQoKSBsYWJlbFZhbHVlOnN0cmluZzsgXG4gIEBJbnB1dCgpIHRva2VuOnN0cmluZzsgLy8gVkQgMTlKQU4yNCAtIGdldHRpbmcgdG9rZW4gYXMgaW5wdXRcbiAgQE91dHB1dCgpIGhhbmRsZURyb3BEb3duOkV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBoYW5kbGVRdWVzdGlvbjpFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpOyAvLyBWRCAxOUp1bDAxIC0gZ2V0IHVwZGF0ZWQgcXVlc3Rpb25cbiAgQElucHV0KCkgZHJvcERvd25EYXRhOmFueTtcbiAgLy9AVmlld0NoaWxkKENvbXBvbmVudGhvc3REaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pIGR5bmFtaWNIb3N0OiBDb21wb25lbnRob3N0RGlyZWN0aXZlO1xuICBzdWJRdWVzdGlvbnM6IFF1ZXN0aW9uW107XG4gIHNlbGVjdGVkRmlsZURhdGE6IGFueVtdID0gW107XG4gIGxvYWRDb21wb25lbnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIC8vIEhBIDI4REVDMjMgQWRkZWQgc3R5bGluZyBhbmQgbG9naWNzIHRvIGxvYWQgdGhlIGJvb2sgdHlwZSBxdWVzdGlvbnMgXG4gIHFiUmVmOiBRdWVzdGlvbkJvb2s7XG4gIC8vICBIQSAxOURFQzIzIERlY2xhcmF0aW9uIGZvciBTYWxlc2ZvcmNlIFN0eWxpbmdcbiAgc3R5bGU6IGFueTtcbiAgbGFuZ0RpcmVjdGlvbiA9ICdsdHInO1xuICBib29rU3R5bGU6IGFueTtcbiAgc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gIEBPdXRwdXQoKSBoYWRsZURyb3BEb3duRGVwZW5kZW50OkV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAvLyBWRCAwNlNlcDI0IGNhbGVuZGFyIGNoYW5nZXNcbiAgQE91dHB1dCgpIGhhbmRsZUNhbGVuZGFyRGF0ZTpFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGhhbmRsZUNhbGVuZGFyRXZlbnQ6RXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIHB1YmxpYyBib29rUXVlc3Rpb25zTWFwOiBhbnkgPSBuZXcgTWFwKCk7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2ZTZXJ2aWNlOiBTYWxlc2ZvcmNlU2VydmljZSxcbiAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5nZVNlcnZpY2U6IENoYW5nZVNlcnZpY2UsIFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlLFxuICAgIHB1YmxpYyBpMThuU2VydmljZTogSTE4blNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgZG9jdW1lbnQ6IERvY3VtZW50XG4gICAgKSB7IFxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gVkQgMTNTZXAyNCBjaGFuZ2VzXG4gICAgdGhpcy5wcm9jZXNzRGF0YSgpO1xuICAgIC8vIFZEIHNlcDEzMjQgY2hhbmdlcyAtIHByb2Nlc3MgZGF0YSB3aGVuIGRhdGFiaW5kIHZhbHVlIGNoYW5nZVxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jaGFuZ2VTZXJ2aWNlLmN1c3RvbUNoYW5nZSQuc3Vic2NyaWJlKFxuICAgICAgKGNoYW5nZVZhbHVlKSA9PiB7XG4gICAgICAgICAgaWYoY2hhbmdlVmFsdWUgPT0gJ2RhdGFCaW5kJykge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzRGF0YSgpO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgIC8vIFZEIDEzU2VwMjQgY2hhbmdlc1xuICBwcm9jZXNzRGF0YSgpe1xuICAgIGNvbnNvbGUubG9nKCdpbnNpZGUgUXVlc3Rpb25Cb29rQ29tcG9uZW50IE9uSW5pdCcpO1xuICAgIC8vIGNvbnNvbGUubG9nKCdxYkl0ZW0nLCB0aGlzLnFiSXRlbSk7XG4gICAgLy8gY29uc29sZS5sb2codGhpcy5xdWVzdGlvbnMpO1xuICAgIC8vICBIQSAxOURFQzIzIExvZ2ljIGZvciBRdWVzdGlvbiBCb29rIFN0eWxpbmcoU2xhZXNmb3JjZSlcbiAgICAvLyBIQSAwOUZFQjI0IEFkZGVkIHRlcm5hcnlcbiAgICBpZih0aGlzLnFiSXRlbT8uU3R5bGVfX2Mpe1xuICAgICAgLy8gSEEgMjhERUMyMyBBZGRlZCBzdHlsaW5nIGFuZCBsb2dpY3MgdG8gbG9hZCB0aGUgYm9vayB0eXBlIHF1ZXN0aW9ucyBcbiAgICAgIHRoaXMucWJJdGVtLlN0eWxlX19jID0gdHlwZW9mIHRoaXMucWJJdGVtLlN0eWxlX19jID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UoJycrdGhpcy5xYkl0ZW0/LlN0eWxlX19jKSA6IHRoaXMucWJJdGVtLlN0eWxlX19jO1xuICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MubGFiZWxDbGFzcyA9IHRoaXMucWJJdGVtLlN0eWxlX19jPy5sYWJlbENsYXNzID8gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmxhYmVsQ2xhc3MgOiBcIlwiO1xuICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MubGFiZWxTdHlsZSA9IHRoaXMucWJJdGVtLlN0eWxlX19jPy5sYWJlbFN0eWxlID8gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmxhYmVsU3R5bGUgOiBcIlwiO1xuICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MubGFiZWxWYWx1ZVN0eWxlID0gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmxhYmVsVmFsdWVTdHlsZSA/IHRoaXMucWJJdGVtLlN0eWxlX19jPy5sYWJlbFZhbHVlU3R5bGUgOiBcIlwiO1xuICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MuaW5wdXRDbGFzcyA9IHRoaXMucWJJdGVtLlN0eWxlX19jPy5pbnB1dENsYXNzID8gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmlucHV0Q2xhc3MgOiBcIlwiO1xuICAgICAgdGhpcy5xYkl0ZW0uU3R5bGVfX2MuaW5wdXRTdHlsZSA9IHRoaXMucWJJdGVtLlN0eWxlX19jLmlucHV0U3R5bGUgPyB0aGlzLnFiSXRlbS5TdHlsZV9fYz8uaW5wdXRTdHlsZSA6IFwiXCI7XG4gICAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYy5ib29rU3R5bGUgPSB0aGlzLnFiSXRlbS5TdHlsZV9fYz8uYm9va1N0eWxlID8gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LmJvb2tTdHlsZSA6IFwiXCI7XG4gICAgICB0aGlzLnFiSXRlbS5TdHlsZV9fYy5zaG93TGFiZWwgPSB0aGlzLnFiSXRlbS5TdHlsZV9fYz8uc2hvd0xhYmVsID8gdGhpcy5xYkl0ZW0uU3R5bGVfX2M/LnNob3dMYWJlbCA6IHRydWU7XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICBpZih0aGlzLnFiSXRlbSl7XG4gICAgICAgIHRoaXMucWJJdGVtLlN0eWxlX19jID0ge1xuICAgICAgICAgIFwibGFiZWxDbGFzc1wiIDogXCJcIixcbiAgICAgICAgICBcImxhYmVsU3R5bGVcIiA6IFwiXCIsXG4gICAgICAgICAgXCJsYWJlbFZhbHVlU3R5bGVcIiA6IFwiXCIsXG4gICAgICAgICAgXCJpbnB1dENsYXNzXCIgOiBcIlwiLFxuICAgICAgICAgIFwiaW5wdXRTdHlsZVwiIDogXCJcIixcbiAgICAgICAgICBcImJvb2tTdHlsZVwiIDogXCJcIixcbiAgICAgICAgICBcInNob3dMYWJlbFwiOiB0cnVlLFxuICAgICAgICAgIFwiZGlyZWN0aW9uXCIgOiBcImx0clwiLFxuICAgICAgICAgIFwicXVlc3Rpb25TdHlsZVwiOiBcIlwiXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucWJJdGVtLlN0eWxlX19jLnF1ZXN0aW9uU3R5bGUgPSB0aGlzLnFiSXRlbT8uU3R5bGVfX2M/LnF1ZXN0aW9uU3R5bGUgPyB0aGlzLnFiSXRlbT8uU3R5bGVfX2MucXVlc3Rpb25TdHlsZSA6IFwiXCI7XG4gICAgdGhpcy5sYW5nRGlyZWN0aW9uID0gdGhpcy5xYkl0ZW0uU3R5bGVfX2MuZGlyZWN0aW9uID0gdGhpcy5xYkl0ZW0/LlN0eWxlX19jPy5kaXJlY3Rpb24gPyB0aGlzLnFiSXRlbT8uU3R5bGVfX2M/LmRpcmVjdGlvbiA6ICdsdHInO1xuICAgIHRoaXMuYm9va1N0eWxlID0gdGhpcy5xYkl0ZW0/LlN0eWxlX19jPy5ib29rU3R5bGU7XG4gICAgdGhpcy5xdWVzdGlvbnMuZm9yRWFjaChlbGVtZW50ID0+IHtcbiAgICAgIHZhciBodG1sRWxlbWVudCA9IGVsZW1lbnQ/LlF1ZXN0aW9uX1RleHRfX2MgO1xuICAgICAgdmFyIHRleHRPbmx5ID0gaHRtbEVsZW1lbnQ/LnJlcGxhY2UoLzxbXj5dKj4vZywgJycpXG4gICAgICBlbGVtZW50LlF1ZXN0aW9uX1RleHRfX2MgPSB0ZXh0T25seTtcbiAgICAgIC8vICBIQSAxOURFQzIzIExvZ2ljIGZvciBRdWVzdGlvbiBTdHlsaW5nKFNsYWVzZm9yY2UpXG4gICAgICAvLyBIQSAyOERFQzIzIEFkZGVkIHN0eWxpbmcgYW5kIGxvZ2ljcyB0byBsb2FkIHRoZSBib29rIHR5cGUgcXVlc3Rpb25zIFxuICAgICAgaWYoZWxlbWVudC5UeXBlX19jID09PSAnQm9vaycpe1xuICAgICAgICBpZihlbGVtZW50WydRQl9SZWZlcmVuY2VfUXVlc3Rpb25zX19jJ10pe1xuICAgICAgICAgIHZhciBxYiA9IEpTT04ucGFyc2UoZWxlbWVudFsnUUJfUmVmZXJlbmNlX1F1ZXN0aW9uc19fYyddKTtcbiAgICAgICAgICBpZihxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2Mpe1xuICAgICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jID0gdHlwZW9mIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYyA9PT0gJ3N0cmluZycgPyBKU09OLnBhcnNlKCcnK3FiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYykgOiBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2V7XG4gICAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MgPSB0aGlzLnFiSXRlbS5TdHlsZV9fYztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBCb29rIHR5cGUgcXVlc3Rpb24gc3R5bGluZ1xuICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5sYWJlbENsYXNzID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jPy5sYWJlbENsYXNzID8gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jPy5sYWJlbENsYXNzIDogXCJcIjtcbiAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MubGFiZWxTdHlsZSA9IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8ubGFiZWxTdHlsZSA/IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8ubGFiZWxTdHlsZSA6IFwiXCI7XG4gICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmxhYmVsVmFsdWVTdHlsZSA9IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fPy5sYWJlbFZhbHVlU3R5bGUgPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MubGFiZWxWYWx1ZVN0eWxlIDogXCJcIjtcbiAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MuaW5wdXRDbGFzcyA9IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8uaW5wdXRDbGFzcyA/IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8uaW5wdXRDbGFzcyA6IFwiXCI7XG4gICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLmlucHV0U3R5bGUgPSBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LmlucHV0U3R5bGUgPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LmlucHV0U3R5bGUgOiBcIlwiO1xuICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYy5ib29rU3R5bGUgPSBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LmJvb2tTdHlsZSA/IHFiWydxdWVzdGlvbmJvb2snXS5TdHlsZV9fYz8uYm9va1N0eWxlIDogXCJcIjtcbiAgICAgICAgICBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2Muc2hvd0xhYmVsID0gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jPy5zaG93TGFiZWwgPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LnNob3dMYWJlbCA6IHRydWU7XG4gICAgICAgICAgcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jLnF1ZXN0aW9uU3R5bGUgPSBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LnF1ZXN0aW9uU3R5bGUgPyBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2M/LnF1ZXN0aW9uU3R5bGUgOiBcIlwiO1xuICAgICAgICAgIHFiWydsYW5nRGlyZWN0aW9uJ10gPSBxYlsncXVlc3Rpb25ib29rJ10uU3R5bGVfX2MuZGlyZWN0aW9uID8gcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jPy5kaXJlY3Rpb24gOiB0aGlzLmxhbmdEaXJlY3Rpb247XG4gICAgICAgICAgXG4gICAgICAgICAgLy8gTG9vcCBmb3IgZWFjaCBxdWVzdGlvbiBpbiB0aGUgYm9va1xuICAgICAgICAgIHFiWydxdWVzdGlvbmJvb2snXS5RdWVzdGlvbnNfX3IucmVjb3Jkcy5mb3JFYWNoKHF1ZXN0aW9uRnJvbUJvb2sgPT4ge1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYyA9IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2MgPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jIDogcWJbJ3F1ZXN0aW9uYm9vayddLlN0eWxlX19jO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5sYWJlbENsYXNzID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8ubGFiZWxDbGFzcyA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LmxhYmVsQ2xhc3MgOiBcIlwiO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5sYWJlbFN0eWxlID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8ubGFiZWxTdHlsZSA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LmxhYmVsU3R5bGUgOiBcIlwiO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5sYWJlbFZhbHVlU3R5bGUgPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5sYWJlbFZhbHVlU3R5bGUgPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5sYWJlbFZhbHVlU3R5bGUgOiBcIlwiO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5pbnB1dENsYXNzID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8uaW5wdXRDbGFzcyA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LmlucHV0Q2xhc3MgOiBcIlwiO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5pbnB1dFN0eWxlID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8uaW5wdXRTdHlsZSA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LmlucHV0U3R5bGUgOiBcIlwiO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5ib29rU3R5bGUgPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5ib29rU3R5bGUgPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5ib29rU3R5bGUgOiBcIlwiO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5zaG93TGFiZWwgPSBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5zaG93TGFiZWwgPyBxdWVzdGlvbkZyb21Cb29rLlN0eWxlX19jPy5zaG93TGFiZWwgOiB0cnVlO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYy5xdWVzdGlvblN0eWxlID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8ucXVlc3Rpb25TdHlsZSA/IHF1ZXN0aW9uRnJvbUJvb2suU3R5bGVfX2M/LnF1ZXN0aW9uU3R5bGUgOiBcIlwiO1xuICAgICAgICAgICAgcXVlc3Rpb25Gcm9tQm9va1snbGFuZ0RpcmVjdGlvbiddID0gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8uZGlyZWN0aW9uID8gcXVlc3Rpb25Gcm9tQm9vay5TdHlsZV9fYz8uZGlyZWN0aW9uIDogdGhpcy5sYW5nRGlyZWN0aW9uO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGVsZW1lbnRbJ3FiSXRlbSddID0gcWJbJ3F1ZXN0aW9uYm9vayddO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBlbGVtZW50LlN0eWxlX19jID0gZWxlbWVudC5TdHlsZV9fYyA/IHR5cGVvZiBlbGVtZW50LlN0eWxlX19jID09PSAnc3RyaW5nJyA/IEpTT04ucGFyc2UoJycrZWxlbWVudD8uU3R5bGVfX2MpIDogZWxlbWVudD8uU3R5bGVfX2MgOiB0aGlzLnFiSXRlbT8uU3R5bGVfX2M7XG5cbiAgICAgIGVsZW1lbnQuU3R5bGVfX2MubGFiZWxDbGFzcyA9IGVsZW1lbnQuU3R5bGVfX2M/LmxhYmVsQ2xhc3MgPyBlbGVtZW50LlN0eWxlX19jPy5sYWJlbENsYXNzIDogXCJcIjtcbiAgICAgIGVsZW1lbnQuU3R5bGVfX2MubGFiZWxTdHlsZSA9IGVsZW1lbnQuU3R5bGVfX2M/LmxhYmVsU3R5bGUgPyBlbGVtZW50LlN0eWxlX19jPy5sYWJlbFN0eWxlIDogXCJcIjtcbiAgICAgIGVsZW1lbnQuU3R5bGVfX2MubGFiZWxWYWx1ZVN0eWxlID0gZWxlbWVudC5TdHlsZV9fYz8ubGFiZWxWYWx1ZVN0eWxlID8gZWxlbWVudC5TdHlsZV9fYy5sYWJlbFZhbHVlU3R5bGUgOiBcIlwiO1xuICAgICAgZWxlbWVudC5TdHlsZV9fYy5pbnB1dENsYXNzID0gZWxlbWVudC5TdHlsZV9fYz8uaW5wdXRDbGFzcyA/IGVsZW1lbnQuU3R5bGVfX2M/LmlucHV0Q2xhc3MgOiBcIlwiO1xuICAgICAgZWxlbWVudC5TdHlsZV9fYy5pbnB1dFN0eWxlID0gZWxlbWVudC5TdHlsZV9fYy5pbnB1dFN0eWxlID8gZWxlbWVudC5TdHlsZV9fYz8uaW5wdXRTdHlsZSA6IFwiXCI7XG4gICAgICBlbGVtZW50LlN0eWxlX19jLmJvb2tTdHlsZSA9IGVsZW1lbnQuU3R5bGVfX2M/LmJvb2tTdHlsZSA/IGVsZW1lbnQuU3R5bGVfX2M/LmJvb2tTdHlsZSA6IFwiXCI7XG4gICAgICBlbGVtZW50LlN0eWxlX19jLnNob3dMYWJlbCA9IGVsZW1lbnQuU3R5bGVfX2M/LnNob3dMYWJlbCA/IGVsZW1lbnQuU3R5bGVfX2M/LnNob3dMYWJlbCA6IHRydWU7XG4gICAgICBlbGVtZW50LlN0eWxlX19jLnF1ZXN0aW9uU3R5bGUgPSBlbGVtZW50LlN0eWxlX19jPy5xdWVzdGlvblN0eWxlID8gZWxlbWVudC5TdHlsZV9fYz8ucXVlc3Rpb25TdHlsZSA6IFwiXCI7XG5cbiAgICAgIGVsZW1lbnRbJ2xhbmdEaXJlY3Rpb24nXSA9IGVsZW1lbnQuU3R5bGVfX2M/LmRpcmVjdGlvbiA/IGVsZW1lbnQuU3R5bGVfX2M/LmRpcmVjdGlvbiA6IHRoaXMubGFuZ0RpcmVjdGlvbjtcblxuXG4gICAgICAvL1ZEIDAyQXVnMjQgZGVwZW5kZW50IGZpZWxkIHNob3cvaGlkZSBjaGFuZ2VzXG4gICAgICBpZihlbGVtZW50LlJlZmVyZW5jZV9GaWVsZF9fYyl7XG4gICAgICAgIGVsZW1lbnQuZGVwZW5kZW50UmVmID0gZWxlbWVudC5SZWZlcmVuY2VfRmllbGRfX2M7XG4gICAgICB9XG4gICAgICBpZihlbGVtZW50LlN1Yl9UZXh0X19jKXtcbiAgICAgICAgIGxldCBkZXBlbmRlbmN5T2JqOiBEZXBlbmRlbmN5TWV0YSA9IEpTT04ucGFyc2UoZWxlbWVudC5TdWJfVGV4dF9fYyk7XG4gICAgICAgICBpZihkZXBlbmRlbmN5T2JqLmlzRGVwZW5kZW50RmllbGQpe1xuICAgICAgICAgICAgZWxlbWVudC5Jc19IaWRlX19jID0gdHJ1ZTtcbiAgICAgICAgIH1cbiAgICAgICAgLy8gVkQgMDdBdWcyNCAtIGlzRGVwZW5kZW50RmllbGQgY2hhbmdlXG4gICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmNoYW5nZVNlcnZpY2UuY2hhbmdlQW5ub3VuY2VkJC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoY2hhbmdlVmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgIC8vIFZEIDIwQXVnMjQgLSBpc0RlcGVuZGVudEZpZWxkIGNoYW5nZVxuICAgICAgICAgICAgICBpZihjaGFuZ2VWYWx1ZSAhPSB1bmRlZmluZWQgJiYgZGVwZW5kZW5jeU9iai5pc0RlcGVuZGVudEZpZWxkKSB7XG4gICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ2luc2lkZSBzdWJzY3JpcHRpb24gZm9yIHRoZSBjaGFuZ2UnKTtcbiAgICAgICAgICAgICAgICBpZihjaGFuZ2VWYWx1ZS52YWx1ZU9iaiAhPSB1bmRlZmluZWQgJiYgY2hhbmdlVmFsdWUuZnJvbVF1ZXN0aW9uSWQgPT0gZGVwZW5kZW5jeU9iai5zb3VyY2VRdWVzdGlvbklkKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ291dHNpZGUtLT4nLGVsZW1lbnQuSXNfSGlkZV9fYyk7XG4gICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudC5pc0hpZGRlbkZpZWxkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIGlmKGRlcGVuZGVuY3lPYmouZGVwZW5kZW50VmFsdWUgPT0gY2hhbmdlVmFsdWUudmFsdWVPYmope1xuICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5Jc19IaWRlX19jID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICBlbGVtZW50LmlucHV0ID0gJyc7XG4gICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnNlbGVjdGVkVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgIGlmKGVsZW1lbnQuZGVwZW5kZW50UmVmID09IGNoYW5nZVZhbHVlLnJlZmVyZW5jZUZpZWxkKXtcbiAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LlJlZmVyZW5jZV9GaWVsZF9fYyA9IGNoYW5nZVZhbHVlLnJlZmVyZW5jZUZpZWxkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuSXNfSGlkZV9fYyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuaW5wdXQgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5zZWxlY3RlZFZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhpZGVEZXBlbmRlbnRFbGVtZW50cyhlbGVtZW50LklkKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgbm8gZGVwZW5kZW50IHNlbGVjdGlvbiByZW1vdmUgdGhlIHJlZmVyZW5jZVxuICAgICAgICAgICAgICAgICAgICBpZihlbGVtZW50LmRlcGVuZGVudFJlZiA9PSBjaGFuZ2VWYWx1ZS5yZWZlcmVuY2VGaWVsZCl7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50LlJlZmVyZW5jZV9GaWVsZF9fYyA9ICcnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS51cGRhdGUoZWxlbWVudCk7XG4gICAgICB9XG4gICAgICAvLyBzdW5kYXkgY29tbWVudFxuICAgICAgLy8gaWYgKGVsZW1lbnQuVHlwZV9fYyA9PT0gJ0NhbGVuZGFyJykge1xuICAgICAgLy8gICB0aGlzLm9wZW5DYWxlbmRhckNvbXBvbmVudChlbGVtZW50KTtcbiAgICAgIC8vIH1cbiAgICB9KTtcbiAgICB0aGlzLnN1YlF1ZXN0aW9ucyA9IFtdO1xuICAgIHRoaXMuc2V0U3ViUXVlc3Rpb25zKHRoaXMucXVlc3Rpb25zKTtcbiAgICB0aGlzLnByb2Nlc3NUcmFuc2xhdGVkUXVlc3Rpb25zKCk7IFxuICB9XG4vLyBWRCAwN0F1ZzI0IC0gaXNEZXBlbmRlbnRGaWVsZCBjaGFuZ2VcbiAgaGlkZURlcGVuZGVudEVsZW1lbnRzKGVsZW1lbnRJZCkge1xuICAgIGxldCBlbGVtZW50c1RvSGlkZSA9IHRoaXMucXVlc3Rpb25zLmZpbHRlcihlbCA9PiB7XG4gICAgICAgIGlmIChlbC5TdWJfVGV4dF9fYykge1xuICAgICAgICAgICAgbGV0IGRlcE9iaiA9IEpTT04ucGFyc2UoZWwuU3ViX1RleHRfX2MpO1xuICAgICAgICAgICAgcmV0dXJuIGRlcE9iai5zb3VyY2VRdWVzdGlvbklkID09IGVsZW1lbnRJZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG5cbiAgICBlbGVtZW50c1RvSGlkZS5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgZWwuSXNfSGlkZV9fYyA9IHRydWU7XG4gICAgICAgIGVsLmlucHV0ID0gJyc7XG4gICAgICAgIGVsLnNlbGVjdGVkVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UudXBkYXRlKGVsKTtcbiAgICAgICAgLy8gUmVjdXJzaXZlbHkgaGlkZSBlbGVtZW50cyBkZXBlbmRlbnQgb24gdGhpcyBvbmVcbiAgICAgICAgdGhpcy5oaWRlRGVwZW5kZW50RWxlbWVudHMoZWwuSWQpO1xuICAgIH0pO1xufVxuXG4gIGNsZWFyU1FFcnJvcihxdWVzSWQpIHtcbiAgICAvLyBjb25zb2xlLmxvZygnaW5zaWRlIFF1ZXN0aW9uQm9va0NvbXBvbmVudCBjbGVhclNRRXJyb3InKTtcbiAgICB2YXIgc3FMaXN0ID0gdGhpcy5zdWJRdWVzdGlvbnM/LmZpbHRlcigoaXRlbSkgPT4gaXRlbS5JZCA9PSBxdWVzSWQpO1xuICAgIGZvciAodmFyIHNxIG9mIHNxTGlzdCkge1xuICAgICAgc3EuZXJyb3IgPSBudWxsO1xuICAgIH1cbiAgfVxuIC8vIFZEIDExSnVuMjQgLSB0cmFuc2xhdGlvbiBjaGFuZ2VzXG4gIHByb2Nlc3NUcmFuc2xhdGVkUXVlc3Rpb25zKCl7XG4gICAgaWYgKHRoaXMudHJhbnNsYXRlZFF1ZXN0aW9ucyAmJiB0aGlzLnRyYW5zbGF0ZWRRdWVzdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5xdWVzdGlvbnMuZm9yRWFjaCgob3JnUXVlc3Rpb246IGFueSk9PiB7XG4gICAgICAgICAgdGhpcy50cmFuc2xhdGVkUXVlc3Rpb25zLmZvckVhY2goKHRyYW5zUXVlc3Rpb246YW55KSA9PiB7XG4gICAgICAgICAgICAgaWYob3JnUXVlc3Rpb24uVW5pcXVlX0lkZW50aWZpZXJfX2MgPT0gdHJhbnNRdWVzdGlvbi5pZGVudGlmaWVyKXtcbiAgICAgICAgICAgICAgIG9yZ1F1ZXN0aW9uLlF1ZXN0aW9uX1RleHRfX2MgPSB0cmFuc1F1ZXN0aW9uLmxhYmVsO1xuICAgICAgICAgICAgICAgb3JnUXVlc3Rpb24uUXVlc3Rpb25fX2MgPSB0cmFuc1F1ZXN0aW9uLnBsYWNlSG9sZGVyO1xuICAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICBjb25zb2xlLmxvZygnb3JpZ2luYWxRdWVzdGlvbicgKyB0aGlzLnF1ZXN0aW9ucyk7XG4gICAgIGNvbnNvbGUubG9nKHRoaXMucXVlc3Rpb25zKTtcbiAgICB9XG4gIH1cblxuICBzZXRTdWJRdWVzdGlvbnMocmVjb3Jkcykge1xuICAgIGNvbnNvbGUubG9nKCdpbnNpZGUgUXVlc3Rpb25ib29rQ29tcG9uZW50IHNldFN1YlF1ZXN0aW9ucycpO1xuICAgIHRoaXMuc3ViUXVlc3Rpb25zLnB1c2gocmVjb3Jkcyk7XG4gIH1cblxuICAvLyBDYXB0dXJlIGFuZCBQcm9jZXNzIENoaWxkIEV2ZW50XG4gIGNoaWxkRXZlbnRDYXB0dXJlKGV2ZW50LCBxdWVzPzphbnkpIHtcbiAgICBsZXQgZHJvcGRvd25EYXRhID0gIHt9O1xuICAgLy8gY29uc29sZS5sb2coJ2luc2lkZSBRdWVzdGlvbmJvb2tDb21wb25lbnQgY2hpbGRFdmVudENhcHR1cmUnKTtcbiAgICBjb25zb2xlLmxvZyhldmVudCk7XG4gICAgdGhpcy5jaGFuZ2VTZXJ2aWNlLmFubm91bmNlQ2hhbmdlKGV2ZW50KTtcbiAgICBpZihxdWVzKXtcbiAgICAgIGlmKHF1ZXMuVHlwZV9fYyA9PSAnRHJvcGRvd24nIHx8cXVlcy5UeXBlX19jID09ICdSYWRpbycgKSB7XG4gICAgICAgIC8vIEhBIDE5SkFOMjQgQ29ycmVjdGlvbiBvZiBkcm9wZG93biB2YWx1ZXNcbiAgICAgICAgcXVlcy5zZWxlY3RlZE9iaiA9IGV2ZW50LnZhbHVlT2JqID8gZXZlbnQudmFsdWVPYmogOiBudWxsO1xuICAgICAgICBxdWVzLmlucHV0ID0gZXZlbnQuc2VsZWN0ZWRPYmogPyBldmVudC5zZWxlY3RlZE9iaiA6IGV2ZW50LnZhbHVlT2JqO1xuICAgICAgICBxdWVzLnNlbGVjdGVkVmFsdWUgPSBldmVudC52YWx1ZU9iaiA/IGV2ZW50LnZhbHVlT2JqIDogbnVsbDtcbiAgICAgICAgLy8gZW1pdCB0aGUgZHJvcGRvd24gZGF0YSB0byBwYXJlbnRcbiAgICAgICAgZHJvcGRvd25EYXRhWydldmVudCddID0gZXZlbnQudmFsdWVPYmo7XG4gICAgICAgIGRyb3Bkb3duRGF0YVsncXVlcyddID0gcXVlcztcbiAgICAgICAgaWYoZHJvcGRvd25EYXRhWydldmVudCddKXtcbiAgICAgICAgICB0aGlzLmhhbmRsZURyb3BEb3duLmVtaXQoZHJvcGRvd25EYXRhKTtcbiAgICAgICAgfSAgLy8gVkQgMjFERUMyMyAtIGRlcGVuZGVudCBmaWVsZCBjaGFuZ2VcbiAgICAgIH0gZWxzZSBpZihxdWVzLlR5cGVfX2MgPT0gJ0xvY2F0aW9uJyl7XG4gICAgICAgIHF1ZXMuaW5wdXQgPSBldmVudC52YWx1ZU9iajtcbiAgICAgICAgcXVlcy5zZWxlY3RlZFZhbHVlID0gZXZlbnQudmFsdWVPYmouYWRkcmVzcztcbiAgICAgIH1lbHNlIGlmKHF1ZXMuVHlwZV9fYyA9PSAnRmlsZScpeyBcbiAgICAgICAgcXVlcy5pbnB1dCA9IHRoaXMuc2VsZWN0ZWRGaWxlRGF0YSA9IGV2ZW50O1xuICAgICAgfWVsc2UgaWYocXVlcy5UeXBlX19jID09ICdEYXRlJyB8fCBxdWVzLlR5cGVfX2MgPT0gJ0RhdGVUaW1lJyl7IC8vIEhBIDI0SkFOMjQgQ29udmVydGluZyBEYXRlIGFuZCBEYXRlVGltZSB0byBVVENcbiAgICAgICAgIGlmKGV2ZW50LnZhbHVlKXtcbiAgICAgICAgICBsZXQgZCA9IG5ldyBEYXRlKGV2ZW50LnZhbHVlKTtcbiAgICAgICAgICBsZXQgdXRjU3RyaW5nID0gZD8udG9JU09TdHJpbmcoKTtcbiAgICAgICAgICBxdWVzLmlucHV0ID0gdXRjU3RyaW5nO1xuICAgICAgICAgfWVsc2Uge1xuICAgICAgICAgIHF1ZXMuaW5wdXQgPSAnJztcbiAgICAgICAgIH1cbiAgICAgIH1lbHNlIGlmKHF1ZXMuVHlwZV9fYyA9PSAnTGlzdCcpe1xuICAgICAgICAvLyBWRCAyMEF1ZzI0IGhhbmRsaW5nIHRoZSBsaXN0IHR5cGUgIGhhbmRsZSBtdWx0aXBsZSBvYmplY3QgdmFsdWVzXG4gICAgICAgIHF1ZXMuaW5wdXQgPSB0aGlzLmRhdGFTZXJ2aWNlLmdldFZhbHVlKGV2ZW50LnZhbHVlT2JqLGV2ZW50LmZpZWxkKTtcbiAgICAgIH1lbHNle1xuICAgICAgICBxdWVzLmlucHV0ID0gZXZlbnQ7XG4gICAgICB9XG4gICAgICAvLyB2YWxpZGF0aW5nICAgZXJyb3IgbWVzc2FnZVxuICAgICAgY29uc3QgaGFzRXJyb3IgPSBxdWVzLkVycm9yX01lc3NhZ2VfX2MgJiYgKChxdWVzLlR5cGVfX2MgPT09ICdGaWxlJyAmJiBxdWVzLmlucHV0Lmxlbmd0aCA9PSAwKSB8fCAocXVlcy5UeXBlX19jICE9ICdGaWxlJyAmJiAhcXVlcy5pbnB1dCkpO1xuICAgICAgcXVlcy5lcnJvciA9IGhhc0Vycm9yID8gbmV3IEVycm9yV3JhcHBlcigpIDogbnVsbDtcbiAgICAgIC8vIE9uY2UgdGhlIHJpZ2h0IHZhbHVlIGlzIHN0b3JlZCBpbiBxdWVzLmlucHV0IHN0b3JlIHRoZSBxdWVzICh3aXRoIGlucHV0KSBpbiBzdG9yYWdlU2VydmljZVxuICAgICAgdGhpcy5zdG9yYWdlU2VydmljZS51cGRhdGUocXVlcyk7XG4gICAgICAvLyBWRCAxOUp1bDAxIC0gZ2V0IHVwZGF0ZWQgcXVlc3Rpb25cbiAgICAgIHRoaXMuaGFuZGxlUXVlc3Rpb24uZW1pdChxdWVzKTtcbiAgICB9XG4gIH1cbiAgZGVsZXRlRmlsZShmaWxlRGF0YTphbnkpe1xuICAgIGNvbnNvbGUubG9nKCdmaWxlREFUQScsZmlsZURhdGEpXG4gIH1cbiAgZ2V0RHJvcERvd24oZXZlbnQ6YW55KXtcbiAgICB0aGlzLmhhZGxlRHJvcERvd25EZXBlbmRlbnQuZW1pdChldmVudCk7XG4gIH1cbi8vIFZEIDA2U2VwMjQgY2FsZW5kYXIgY2hhbmdlc1xuICBnZXRDdXJyZW50Q2FsZW5kYXIoZXZlbnQ6YW55KXtcbiAgICB0aGlzLmhhbmRsZUNhbGVuZGFyRGF0ZS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIGdldENhbGVuZGFyRXZlbnQoZXZlbnQ6YW55KXtcbiAgICBpZihldmVudCl7XG4gICAgICB0aGlzLmhhbmRsZUNhbGVuZGFyRXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuICB9XG5cbiAvLyBWRCAwNlNlcDI0IHJlbW92ZSB0aGUgc3BlY2lhbCBjaGFyZWN0ZXJzIGFuZCB0YWdzIFxuICAvLyBmcm9tIHRoZSBxdWVzdGlvblRleHRcbiAgcmVtb3ZlQ2hhcmFjdGVycyhxdWVzdGlvblRleHQ6c3RyaW5nKXtcbiAgICAgbGV0IHVwZGF0ZWRUZXh0ID0gcXVlc3Rpb25UZXh0Py5yZXBsYWNlKC88W14+XSo+L2csICcnKTtcbiAgICAgcmV0dXJuIHVwZGF0ZWRUZXh0O1xuICB9XG5cbi8vIHN1bmRheSBjb21tZW50XG4gIC8vIG9wZW5DYWxlbmRhckNvbXBvbmVudChxdWVzKSB7XG4gIC8vICAgY29uc3Qgdmlld0NvbnRhaW5lclJlZiA9IHRoaXMuZHluYW1pY0hvc3Qudmlld0NvbnRhaW5lclJlZjtcbiAgLy8gICBpZih2aWV3Q29udGFpbmVyUmVmKXtcbiAgLy8gICAgIHZpZXdDb250YWluZXJSZWYuY2xlYXIoKTtcbiAgLy8gICAgIGNvbnN0IGNvbXBvbmVudFJlZiA9IHZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KEN1c3RvbUNhbGVuZGFyQ29tcG9uZW50KTtcbiAgLy8gICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5xdWVzdGlvbiA9IHF1ZXM7XG4gIC8vICAgICBjb21wb25lbnRSZWYuaW5zdGFuY2UuZGF0ZVNlbGVjdGVkLnN1YnNjcmliZSgoZXZlbnQ6IGFueSkgPT4gdGhpcy5nZXRDdXJyZW50Q2FsZW5kYXIoZXZlbnQpKTtcbiAgLy8gICAgIGNvbXBvbmVudFJlZi5pbnN0YW5jZS5ldmVudFNlbGVjdGVkLnN1YnNjcmliZSgoZXZlbnQ6YW55KSA9PiB0aGlzLmdldENhbGVuZGFyRXZlbnQoZXZlbnQpKVxuICAvLyAgIH1cbiAgLy8gfVxuXG4gIGlzQ2FsZW5kYXJNb2RhbE9wZW4gPSBmYWxzZTtcbiAgY2FsZW5kYXJNb2RhbFRpdGxlOmFueTtcbiAgY2FsZW5kYXJNb2RhbFNpemU6YW55O1xuICBjYWxlbmRhclNhdmVCdXR0b25WYWx1ZTogYW55O1xuICByZWZlcmVuY2VRdWVzdGlvbnMgPSBbXTtcbiAgcWJSZWZyZW5jZUJvb2s6YW55O1xuICBtb2RhbENhbGVuZGFyTW9kYWxGb290ZXI6YW55O1xuXG4gIG9wZW5DYWxlbmRhck1vZGFsKGV2ZW50KSB7XG4gICAgY29uc29sZS5sb2coJ2luc2lkZSBjYWxlbmRhciBvcGVuJyk7XG4gICAgdGhpcy5pc0NhbGVuZGFyTW9kYWxPcGVuID0gdHJ1ZTtcbiAgICB0aGlzLnFiUmVmcmVuY2VCb29rID0gZXZlbnQucWJSZWZyZW5jZUJvb2s7XG4gICAgdGhpcy5yZWZlcmVuY2VRdWVzdGlvbnMgPSBldmVudC5yZWZlcmVuY2VRdWVzdGlvbnM7XG4gICAgdGhpcy5jYWxlbmRhck1vZGFsVGl0bGUgPSBldmVudC5tb2RhbFRpdGxlO1xuICAgIHRoaXMuY2FsZW5kYXJNb2RhbFNpemUgPSBldmVudC5tb2RhbFNpemU7XG4gICAgdGhpcy5jYWxlbmRhclNhdmVCdXR0b25WYWx1ZSA9IGV2ZW50LnNhdmVCdXR0b25WYWx1ZTtcbiAgICB0aGlzLm1vZGFsQ2FsZW5kYXJNb2RhbEZvb3RlciA9IGV2ZW50Lm1vZGFsRm9vdGVyO1xuICB9XG5cblxuICBvbkNhbGVuZGFyTW9kYWxTYXZlKCl7XG4gICAgdGhpcy5jaGFuZ2VTZXJ2aWNlLmRhdGFDaGFuZ2VzKCdjYWxlbmRhci1tb2RhbC1zYXZlJyk7XG4gIH1cblxuXG4gIGhhbmRsZVF1ZXN0aW9uRXZlbnQoZXZlbnQpe1xuICAgIGNvbnNvbGUubG9nKCdoYW5kbGUgcXVlc3Rpb24gaGVyZScpO1xuICB9XG4gXG4gIGNsb3NlQ2FsZW5kYXJNb2RhbChldmVudCl7XG4gICAgdGhpcy5pc0NhbGVuZGFyTW9kYWxPcGVuID0gZmFsc2U7XG4gIH1cblxufVxuIiwiPCEtLSBIQSAyMERFQzIzIEJvb2sgU3R5bGUgZnJvbSBzYWxlc2ZvcmNlIC0tPlxuPCEtLSBIQSAyOERFQzIzICBSZW1vdmVkIElzU2hlbmdlbChyZW1vdmFsIG9mIHNoZW5nZWwgdmFsdWVzIGFwcGxpZXMgZm9yIHRoaXMgcmVhc29uKSBhbmQgZGlyZWN0IHN0eWxpbmcgb2YgYm9va3MgdG8gYXZvaWQgc3R5bGluZyBpc3N1ZXMtLT5cbjwhLS0gSEEgMThKQU4yNCAgQWRkZWQgY2xhc3MgZm9yIHN0eWxpbmcgLS0+XG48ZGl2IFtzdHlsZV09XCJib29rU3R5bGVcIiBjbGFzcz1cImNvbnRlbnQtYm94IGZvcm0tZ3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cbiAgICAgICAgPCEtLSBIQSAyMERFQzIzIERpcmVjdGl2ZSBhbmQgUXVlc3Rpb24gU3R5bGUgZnJvbSBzYWxlc2ZvcmNlIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBbY2xhc3NdPVwiJ2NvbC1sZy0nICsgcXVlcy5TaXplX19jICsgJyBwYWRkaW5nbm9uZSdcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IHF1ZXMgb2YgcXVlc3Rpb25zO2xldCBpID0gaW5kZXhcIiBbaWRdPVwicXVlcy5JZFwiIFtkaXJdPVwicXVlcy5sYW5nRGlyZWN0aW9uXCIgW3N0eWxlXT1cInF1ZXM/LlN0eWxlX19jPy5xdWVzdGlvblN0eWxlXCI+XG4gICAgICAgICAgICA8IS0tIFN1YiBRdWVzdGlvbiBMYWJlbCAtLT5cbiAgICAgICAgICAgIDwhLS0gSEEgMjBERUMyMyBMYWJlbCBTdHlsZSBmcm9tIHNhbGVzZm9yY2UgLS0+XG4gICAgICAgICAgICA8IS0tIFZEIDA5TWF5MjQgaXMgaGlkZSBmaWVsZCBjaGFuZ2UtLT5cbiAgICAgICAgIDxkaXYgKm5nSWY9XCIhcXVlcy5Jc19IaWRlX19jXCI+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnRGF0ZVRpbWUnXCI+XG5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSBWRCAyMEpVTjI0IC0gaGVscCB0ZXh0IGNoYW5nZXMtLT5cbiAgICAgICAgICAgIDwhLS0gVkQgMDFBdWcyNCAtIHZhbGlkYXRpb24gY2hhbmdlLS0+XG4gICAgICAgICAgICA8IS0tIC8vIFZEIDAyQXVnMjQgLSBsYWJlbCB2YWx1ZSBzdHlsZS0tPlxuICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7IGRvd24yOiBxYkl0ZW0/LlByb2dyZXNzX0Jhcl9fYyB9XCIgKm5nSWY9XCJxdWVzLlN0eWxlX19jPy5zaG93TGFiZWwgPyBxdWVzLlN0eWxlX19jPy5zaG93TGFiZWwgOiB0cnVlXCIgW3N0eWxlXT1cInF1ZXMuU3R5bGVfX2M/LmxhYmVsU3R5bGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3NdPVwiJ2Rpcy1mbGV4IHNoZW5nZWwtbXl0LWZvbnQzIG15dC1mb250NyAnXCIgW3N0eWxlXT1cInF1ZXMuU3R5bGVfX2M/LmxhYmVsVmFsdWVTdHlsZVwiPnt7IHJlbW92ZUNoYXJhY3RlcnMocXVlcz8uUXVlc3Rpb25fVGV4dF9fYykgfX0gXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgICpuZ0lmPVwicXVlcy5Jc19PcHRpb25hbF9fY1wiIHN0eWxlPVwiY29sb3I6IHJlZDtcIj4qPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlF1ZXN0aW9uX1RleHRfX2MgJiYgcXVlcz8uSGVscF9UZXh0X19jXCIgY2xhc3M9XCJpY29uXCIgW21hdFRvb2x0aXBdPVwicXVlcz8uSGVscF9UZXh0X19jXCI+aTwvZGl2Pjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLSAvLyBWRCAxMkp1bjI0IC0gcmVhZG9ubHkgY2hhbmdlLS0+XG4gICAgICAgICAgICA8IS0tIERhdGVUaW1lIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0RhdGVUaW1lJ1wiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLWRhdGUtcGlja2VyIFttaW5EYXRlXT1cInF1ZXMubWluRGF0ZVwiIFtlcnJvcl09XCJxdWVzLmVycm9yXCIgW2Vycm9yTWVzc2FnZV09XCJxdWVzLkVycm9yX01lc3NhZ2VfX2NcIiBbcmVhZE9ubHldPVwicXVlcy5SZWFkX09ubHlfX2NcIiBbZGF0ZV09XCJxdWVzLmlucHV0XCIgKGRhdGVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgPCEtLSBEYXRlLS0+XG4gICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0RhdGUnXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tZGF0ZSAgW2RhdGVdPVwicXVlcy5pbnB1dFwiIFtlcnJvcl09XCJxdWVzLmVycm9yXCIgW2Vycm9yTWVzc2FnZV09XCJxdWVzLkVycm9yX01lc3NhZ2VfX2NcIiBbcmVhZE9ubHldPVwicXVlcy5SZWFkX09ubHlfX2NcIiAoZGF0ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWRhdGU+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgIDwhLS0gVGltZS0tPlxuICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdUaW1lJ1wiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLXRpbWUgIFt0aW1lXT1cInF1ZXMuaW5wdXRcIiBbZXJyb3JdPVwicXVlcy5lcnJvclwiIFtlcnJvck1lc3NhZ2VdPVwicXVlcy5FcnJvcl9NZXNzYWdlX19jXCIgW3JlYWRPbmx5XT1cInF1ZXMuUmVhZF9Pbmx5X19jXCIgKHRpbWVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS10aW1lPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgIDwhLS0gY2FsZW5kYXIgIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0NhbGVuZGFyJ1wiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLWNhbGVuZGFyIFxuICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJxdWVzXCIgIFxuICAgICAgICAgICAgICAgIChldmVudFNlbGVjdGVkKT1cImdldENhbGVuZGFyRXZlbnQoJGV2ZW50KVwiIFxuICAgICAgICAgICAgICAgIChkYXRlU2VsZWN0ZWQpPVwiZ2V0Q3VycmVudENhbGVuZGFyKCRldmVudClcIiBcbiAgICAgICAgICAgICAgICAob3Blbk1vZGFsKT1cIm9wZW5DYWxlbmRhck1vZGFsKCRldmVudClcIiBcbiAgICAgICAgICAgICAgICAoY2xvc2VNb2RhbCk9XCJjbG9zZUNhbGVuZGFyTW9kYWwoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgPjwvYXBwLWN1c3RvbS1jYWxlbmRhcj5cbiAgICAgICAgICAgICAgICA8IS0tIG1vZGVsIHVzZWQgaW4gY2FsZW5kYXIgY29tcG9uZW50IC0tPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLW1vZGVsICpuZ0lmPVwiaXNDYWxlbmRhck1vZGFsT3BlblwiXG4gICAgICAgICAgICAgICAgICAgIFttb2RhbFRpdGxlXT1cImNhbGVuZGFyTW9kYWxUaXRsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpc01vZGFsT3Blbl09XCJpc0NhbGVuZGFyTW9kYWxPcGVuXCJcbiAgICAgICAgICAgICAgICAgICAgW21vZGFsU2l6ZV09XCJjYWxlbmRhck1vZGFsU2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtzYXZlQnV0dG9uVmFsdWVdPVwiY2FsZW5kYXJTYXZlQnV0dG9uVmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbbW9kYWxGb290ZXJdPVwibW9kYWxDYWxlbmRhck1vZGFsRm9vdGVyXCJcbiAgICAgICAgICAgICAgICAgICAgKHNhdmVCdXR0b25FbWl0KT1cIm9uQ2FsZW5kYXJNb2RhbFNhdmUoKVwiXG4gICAgICAgICAgICAgICAgICAgIChjYW5jZWxCdXR0b25FbWl0KT1cImNsb3NlQ2FsZW5kYXJNb2RhbCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgPGxpYi1xdWVzdGlvbmJvb2sgIFtxYkl0ZW1dPVwicWJSZWZyZW5jZUJvb2tcIiBbcXVlc3Rpb25zXT1cInJlZmVyZW5jZVF1ZXN0aW9uc1wiIChoYW5kbGVRdWVzdGlvbik9XCJoYW5kbGVRdWVzdGlvbkV2ZW50KCRldmVudClcIj48L2xpYi1xdWVzdGlvbmJvb2s+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLW1vZGVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIFRleHQgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnVGV4dCcgfHwgcXVlcy5UeXBlX19jID09PSAnTGluaydcIiA+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20taW5wdXQgW3ZhbHVlXT1cInF1ZXMuaW5wdXRcIiBbbmdDbGFzc1ZhbHVlXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICdkaXMtZmxleCBkdC1saW5lIGRhdGUtbGluZSBib29rVGV4dCBib3hvdXRsaW5lIG15dC1mb250MSc6IHFiSXRlbS5Qcm9ncmVzc19CYXJfX2MsXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0Qm94OiAhcWJJdGVtLlByb2dyZXNzX0Jhcl9fY1xuICAgICAgICAgICAgICAgICAgICB9XCIgW3F1ZXN0aW9uXT1cInF1ZXNcIiBbcmVhZE9ubHldPVwicXVlcy5SZWFkX09ubHlfX2NcIiBbaWRWYWx1ZV09XCJxdWVzLlRyYWNraW5nX0lEX19jXCIgW2ZvY3VzRXZlbnRdPVwiY2xlYXJTUUVycm9yKHF1ZXMuSWQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yXT1cInF1ZXMuZXJyb3JcIiBbcGxhY2Vob2xkZXJdPVwicXVlcy5RdWVzdGlvbl9fY1wiIChpbnB1dFZhbHVlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20taW5wdXQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIFxuICAgICAgICAgICAgPCEtLSBmb3IgcGljayBsb2NhdGlvbiAtLT5cbiAgICAgICAgICAgIDwhLS0gICBWRCAyMURFQzIzIC0gZGVwZW5kZW50IGZpZWxkIGNoYW5nZSAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdMb2NhdGlvbidcIj5cbiAgICAgICAgICAgIDwhLS0gSEExMDAxMjAyNCBBZGRlZCBBcGkga2V5IGFzIGlucHV0IC0tPlxuICAgICAgICAgICAgICAgIDxhcHAtcGljay1sb2NhdGlvbiBbYXBpS2V5XT1cInFiSXRlbVsnQXBpX0tleV9fYyddXCIgW2FkZHJlc3NdPVwicXVlcy5zZWxlY3RlZFZhbHVlXCIgW3F1ZXN0aW9uXT1cInF1ZXNcIiAobG9jYXRpb25TZWxlY3RlZCk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtcGljay1sb2NhdGlvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIGZvciAgdGV4dCBhcmVhICAgLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnVGV4dEFyZWEnXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tdGV4dC1hcmVhIFtxdWVzdGlvbl09XCJxdWVzXCIgW3JlYWRPbmx5XT1cInF1ZXMuUmVhZF9Pbmx5X19jXCIgW3ZhbHVlXT1cInF1ZXMuaW5wdXRcIiBbcm93c109XCIzXCIgW2Vycm9yXT1cInF1ZXMuZXJyb3JcIiBbcGxhY2Vob2xkZXJdPVwicXVlcy5RdWVzdGlvbl9fYyBcIlxuICAgICAgICAgICAgICAgICAgICAodGV4dGFyZWFWYWx1ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+PC9hcHAtY3VzdG9tLXRleHQtYXJlYT5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIEVtYWlsIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0VtYWlsJ1wiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZW1haWxcIiByZWFkT25seT1cInF1ZXMuUmVhZF9Pbmx5X19jXCIgWyhuZ01vZGVsKV09XCJxdWVzLmlucHV0XCIgW2lkXT1cInF1ZXMuSWRcIiByZXF1aXJlZD1cIlwiIChmb2N1cyk9XCJjbGVhclNRRXJyb3IocXVlcy5JZClcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZS5ib3JkZXItY29sb3I9XCJ7eyBxdWVzLmVycm9yID8gJ3JlZCcgOiAnJyB9fVwiIHBsYWNlaG9sZGVyPVwie3sgcXVlcy5RdWVzdGlvbl9fYyB9fVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPCEtLSBUYWJsZSAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdUYWJsZSdcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLXRhYmxlIFtxdWVzdGlvbl09XCJxdWVzXCIgW2FwaU1ldGFdPVwicXVlcy5TdWJfVGV4dF9fY1wiICh2YWx1ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpOyBjbGVhclNRRXJyb3IocXVlcy5JZClcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1jdXN0b20tdGFibGU+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICA8IS0tIFRhYmxlIEFwcGVuZGl4IC0tPlxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnVGFibGVBcHBlbmRpeCdcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtdGFibGUtYXBwZW5kaXggW3F1ZXN0aW9uXT1cInF1ZXNcIiAodmFsdWVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKTsgY2xlYXJTUUVycm9yKHF1ZXMuSWQpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtdGFibGUtYXBwZW5kaXg+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICA8IS0tIGxpc3QgLS0+XG4gICAgICAgICAgICAgPCEtLSBWRCAyMEF1ZzI0IHVzZWQgY29ycmVjdCBhdHRyaWJ1dGUgLS0+XG4gICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0xpc3QnXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8bGliLXNlYXJjaC1ib3ggW3F1ZXN0aW9uXT1cInF1ZXNcIiBbcmVhZE9ubHldPVwicXVlcy5SZWFkX09ubHlfX2NcIiBbYXBpTWV0YV09XCJxdWVzLlN1Yl9UZXh0X19jXCIgW2lkXT1cInF1ZXMuSWRcIiBbcGxhY2VIb2xkZXJUZXh0XT1cInF1ZXMuUXVlc3Rpb25fX2NcIiAgW2ZpbHRlck5hbWVdPVwicXVlcy5pbnB1dFwiIChzZWFyY2hWYWx1ZUNoYW5nZSk9XCJjaGlsZEV2ZW50Q2FwdHVyZSgkZXZlbnQsIHF1ZXMpXCI+XG4gICAgICAgICAgICAgICAgPC9saWItc2VhcmNoLWJveD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8IS0tIERyb3Bkb3duIC0tPlxuICAgICAgICAgICAgPCEtLSBIQSAwOUZFQjI0IEFkZGVkIGNvbmRpdGlvbiBvZiBzcU9wdGlvbiB0byB0aGUgZHJvcGRvd24gLS0+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnRHJvcGRvd24nICYmIHF1ZXM/LlF1ZXN0aW9uX09wdGlvbnNfX3I/LnJlY29yZHNcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDwhLS0gSEEgMjBERUMyMyBGb3IgVHJhbnNsYXRpb24gLS0+IDwhLS0gVkQgMTlKQU4yNCAtIGdldHRpbmcgdG9rZW4gYXMgaW5wdXQgLS0+XG4gICAgICAgICAgICAgICAgPGFwcC1jdXN0b20tZHJvcGRvd24gW29wdGlvbnNdPVwicXVlcy5RdWVzdGlvbl9PcHRpb25zX19yLnJlY29yZHNcIiBcbiAgICAgICAgICAgICAgICAgICAgW3Rva2VuXT1cInRva2VuXCJcbiAgICAgICAgICAgICAgICAgICAgW2FwaU1ldGFdPVwicXVlcy5TdWJfVGV4dF9fY1wiIFtpZF09XCJxdWVzLklkXCIgXG4gICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZFZhbHVlXT1cInF1ZXMuc2VsZWN0ZWRWYWx1ZVwiIFxuICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIi0tLXt7J3NlbGVjdCcgfCBpMThuOmkxOG5TZXJ2aWNlLmN1cnJlbnRMYW5ndWFnZX19LS0tXCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yTWVzc2FnZV09XCJxdWVzLkVycm9yX01lc3NhZ2VfX2NcIiBbZXJyb3JdPVwicXVlcy5lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgIFtyZWZlcmVuY2VGaWVsZF09XCJxdWVzLlJlZmVyZW5jZV9GaWVsZF9fY1wiXG4gICAgICAgICAgICAgICAgICAgIFtyZWFkT25seV09XCJxdWVzLlJlYWRfT25seV9fY1wiXG4gICAgICAgICAgICAgICAgICAgIFtxdWVzdGlvbl09XCJxdWVzXCJcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcyk7IGNsZWFyU1FFcnJvcihxdWVzLklkKVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS1kcm9wZG93bj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWNoZWNrIFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiICpuZ0lmPVwicXVlcz8uaW5wdXQ/Lmxlbmd0aCA+IDBcIj48L2k+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gLy8gVkQgMDJBdWcyNCBjdXN0b20tcmFkaW8gY29tcG9uZW50IC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ1JhZGlvJyAmJiBxdWVzPy5RdWVzdGlvbl9PcHRpb25zX19yPy5yZWNvcmRzXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1yYWRpbyBbb3B0aW9uc109XCJxdWVzLlF1ZXN0aW9uX09wdGlvbnNfX3IucmVjb3Jkc1wiIFt0b2tlbl09XCJ0b2tlblwiXG4gICAgICAgICAgICAgICAgICAgIFthcGlNZXRhXT1cInF1ZXMuU3ViX1RleHRfX2NcIiBbaWRdPVwicXVlcy5JZFwiIFtzZWxlY3RlZFZhbHVlXT1cInF1ZXMuc2VsZWN0ZWRWYWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtlcnJvck1lc3NhZ2VdPVwicXVlcy5FcnJvcl9NZXNzYWdlX19jXCIgW2Vycm9yXT1cInF1ZXMuZXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICBbcmVmZXJlbmNlRmllbGRdPVwicXVlcy5SZWZlcmVuY2VfRmllbGRfX2NcIlxuICAgICAgICAgICAgICAgICAgICBbcmVhZE9ubHldPVwicXVlcy5SZWFkX09ubHlfX2NcIlxuICAgICAgICAgICAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKTsgY2xlYXJTUUVycm9yKHF1ZXMuSWQpXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLXJhZGlvPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDwhLS0gQXR0YWNobWVudCAvIEZpbGVzIC0tPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInF1ZXMuVHlwZV9fYyA9PT0gJ0ZpbGUnXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWZpbGUtdXBsb2FkIFtsaW1pdEZpbGVVcGxvYWRpbmddPVwiNVwiIFtlcnJvcl09XCJxdWVzLmVycm9yXCIgW3F1ZXN0aW9uXT1cInF1ZXNcIiBbYWxsRmlsZXNdPVwicXVlcy5pbnB1dFwiIFt0YWJsZUZpbGVdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgIChzZWxlY3RlZEZpbGVEYXRhKT1cImNoaWxkRXZlbnRDYXB0dXJlKCRldmVudCwgcXVlcylcIiAoZGVsZXRlZEZpbGVEYXRhKT1cImRlbGV0ZUZpbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgW2lzRGVsZXRlRmlsZUJ1dHRvblZpc2libGVdPVwidHJ1ZVwiPjwvYXBwLWZpbGUtdXBsb2FkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicXVlcy5UeXBlX19jID09PSAnUG9wVXBNZXNzYWdlJ1wiIGNsYXNzPVwiXCI+XG4gICAgICAgICAgICAgICAgPGFwcC1kZXBlbmRlbnQtdGFibGUgW2FsZXJ0TWVzc2FnZV09XCJxdWVzLkVycm9yX01lc3NhZ2VfX2NcIj5cbiAgICAgICAgICAgICAgICA8L2FwcC1kZXBlbmRlbnQtdGFibGU+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdMYWJlbCdcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLWxhYmVsIFtsYWJlbFN0eWxlXT1cInF1ZXMuVGl0bGVfX2NcIiBbbGFiZWxWYWx1ZV09XCJxdWVzLlF1ZXN0aW9uX19jXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWxhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgPCEtLSAvLyBWRCAwMkF1ZzI0IGltYWdlIGNvbXBvbmVudCAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdJbWFnZSdcIiBjbGFzcz1cIlwiPlxuICAgICAgICAgICAgICAgIDxhcHAtY3VzdG9tLWltYWdlIFtxdWVzdGlvbl09XCJxdWVzXCI+XG4gICAgICAgICAgICAgICAgPC9hcHAtY3VzdG9tLWltYWdlPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8IS0tIDA4Tk9WMjMgLSBidXR0b24gdHlwZSBxdWVzdGlvbiBhZGRlZCAtLT5cbiAgICAgICAgICAgICA8IS0tIEJ1dHRvbiAtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdCdXR0b24nXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgICAgICA8YXBwLWN1c3RvbS1idXR0b24gW2hlaWdodF09XCInNTBweCdcIiAgXG4gICAgICAgICAgICAgICAgW3dpZHRoXT1cIicxNTBweCdcIiBcbiAgICAgICAgICAgICAgICBbYnV0dG9uVGV4dF09XCJxdWVzPy5RdWVzdGlvbl9fY1wiXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInF1ZXM/LlF1ZXN0aW9uX19jXCJcbiAgICAgICAgICAgICAgICAoYnV0dG9uVmFsdWUpPVwiY2hpbGRFdmVudENhcHR1cmUoJGV2ZW50LCBxdWVzKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvYXBwLWN1c3RvbS1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS0gSEEgMjBERUMyMyAgVGhpcyBpcyB0byBsb2FkIGJvb2sgdHlwZSBxdWVzdGlvbnMtLT5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJxdWVzLlR5cGVfX2MgPT09ICdCb29rJ1wiPlxuICAgICAgICAgICAgICAgIDwhLS0gSEEgMDlGRUIyNCBBZGRlZCB0ZXJuYXJ5IG9wZXJhdG9yIC0tPlxuICAgICAgICAgICAgICAgIDxsaWItcXVlc3Rpb25ib29rIFtxYkl0ZW1dPVwicXVlcy5xYkl0ZW1cIiBbbGFiZWxWYWx1ZV09XCJsYWJlbFZhbHVlXCIgW3F1ZXN0aW9uc109XCJxdWVzLnFiSXRlbT8uUXVlc3Rpb25zX19yPy5yZWNvcmRzXCIgIChoYW5kbGVEcm9wRG93bik9XCJnZXREcm9wRG93bigkZXZlbnQpXCI+PC9saWItcXVlc3Rpb25ib29rPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgPCEtLSAwNi0wOS0yNCBmb3IgY2FsZW5kYXIgdHlwZS0tPlxuPCEtLSA8bmctdGVtcGxhdGUgZHluYW1pY0NvbXBvbmVudEhvc3Q+PC9uZy10ZW1wbGF0ZT4gLS0+Il19