@myrmidon/cadmus-part-codicology-decorations 2.0.18 → 2.0.19

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.
@@ -68,7 +68,7 @@ export class CodDecorationComponent {
68
68
  this.editorClose = new EventEmitter();
69
69
  // flags
70
70
  this._flagAdapter = new FlagsPickerAdapter();
71
- this.decFlags$ = this._flagAdapter.selectFlags('decoration');
71
+ this.decFlags$ = this._flagAdapter.selectFlags('flags');
72
72
  // form
73
73
  this.eid = formBuilder.control(null, Validators.maxLength(100));
74
74
  this.name = formBuilder.control(null, [
@@ -111,13 +111,9 @@ export class CodDecorationComponent {
111
111
  return;
112
112
  }
113
113
  this._decFlagEntries = value || [];
114
- this._flagAdapter.setSlotFlags('decoration', this._decFlagEntries.map(entryToFlag));
115
- }
116
- ngOnInit() {
117
- if (this._decoration) {
118
- this.updateForm(this._decoration);
119
- }
114
+ this._flagAdapter.setSlotFlags('flags', this._decFlagEntries.map(entryToFlag));
120
115
  }
116
+ ngOnInit() { }
121
117
  updateForm(decoration) {
122
118
  if (!decoration) {
123
119
  this.form.reset();
@@ -125,7 +121,7 @@ export class CodDecorationComponent {
125
121
  }
126
122
  this.chronotopes.setValue(decoration.chronotopes || []);
127
123
  this.references.setValue(decoration.references || []);
128
- this._flagAdapter.setSlotChecks('decoration', decoration.flags || []);
124
+ this.flags.setValue(this._flagAdapter.setSlotChecks('flags', decoration.flags || []));
129
125
  this.eid.setValue(decoration.eid || null);
130
126
  this.name.setValue(decoration.name);
131
127
  this.note.setValue(decoration.note || null);
@@ -378,4 +374,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
378
374
  }], editorClose: [{
379
375
  type: Output
380
376
  }] } });
381
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLWRlY29yYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXBhcnQtY29kaWNvbG9neS1kZWNvcmF0aW9ucy9zcmMvbGliL2NvZC1kZWNvcmF0aW9uL2NvZC1kZWNvcmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2NhZG11cy1wYXJ0LWNvZGljb2xvZ3ktZGVjb3JhdGlvbnMvc3JjL2xpYi9jb2QtZGVjb3JhdGlvbi9jb2QtZGVjb3JhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFJTCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBS3hDLE9BQU8sRUFBUSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTNUUsU0FBUyxXQUFXLENBQUMsS0FBcUI7SUFDeEMsT0FBTztRQUNMLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRTtRQUNaLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztLQUNuQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBTUgsTUFBTSxPQUFPLHNCQUFzQjtJQTBIakMsWUFBWSxXQUF3QixFQUFVLGNBQTZCO1FBQTdCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBWHBFLGtCQUFhLEdBQUc7WUFDckIsS0FBSyxFQUFFLFVBQVU7WUFDakIsUUFBUSxFQUFFLFVBQVU7WUFDcEIsUUFBUSxFQUFFLElBQUk7WUFDZCwwREFBMEQ7WUFDMUQsZUFB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QUFtQjtzQkFEekIsS0FBSztnQkFJQyxjQUFjO3NCQURwQixLQUFLO2dCQUlDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBR0EsV0FBVztzQkFEakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IFRoZXNhdXJ1c0VudHJ5IH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1jb3JlJztcclxuaW1wb3J0IHsgQXNzZXJ0ZWRDaHJvbm90b3BlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1yZWZzLWFzc2VydGVkLWNocm9ub3RvcGUnO1xyXG5pbXBvcnQgeyBEb2NSZWZlcmVuY2UgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLXJlZnMtZG9jLXJlZmVyZW5jZXMnO1xyXG5pbXBvcnQgeyBGbGFnLCBGbGFnc1BpY2tlckFkYXB0ZXIgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLXVpLWZsYWdzLXBpY2tlcic7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAbXlybWlkb24vbmctbWF0LXRvb2xzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQ29kRGVjb3JhdGlvbixcclxuICBDb2REZWNvcmF0aW9uQXJ0aXN0LFxyXG4gIENvZERlY29yYXRpb25FbGVtZW50LFxyXG59IGZyb20gJy4uL2NvZC1kZWNvcmF0aW9ucy1wYXJ0JztcclxuXHJcbmZ1bmN0aW9uIGVudHJ5VG9GbGFnKGVudHJ5OiBUaGVzYXVydXNFbnRyeSk6IEZsYWcge1xyXG4gIHJldHVybiB7XHJcbiAgICBpZDogZW50cnkuaWQsXHJcbiAgICBsYWJlbDogZW50cnkudmFsdWUsXHJcbiAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIE1hbnVzY3JpcHQncyBkZWNvcmF0aW9uIGVkaXRvci5cclxuICogVGhpcyBjb21wb25lbnQgcmVxdWlyZXMgdGhlIGNvZC1kZWNvcmF0aW9uLWVsZW1lbnQtdHlwZXMgdGhlc2F1cnVzLlxyXG4gKiBBY2NvcmRpbmcgdG8gdGhlIHR5cGUgc2VsZWN0ZWQsIGl0IGNoYW5nZXMgaXRzIFVJIGJ5OlxyXG4gKiAtIGZpbHRlcmluZyB0aGUgY29udGVudCBvZiBhbGwgdGhlIG90aGVyIHRoZXNhdXJpIChleGNlcHRcclxuICogY29kLWRlY29yYXRpb24tdHlwZS1oaWRkZW4sIHdoaWNoIGhhcyBhIHNwZWNpYWwgbWVhbmluZyksXHJcbiAqIHdoZW4gdGhleSBoYXZlIGEgaGllcmFyY2h5IChpLmUuIHRoZWlyIElEcyBjb250YWluIGEgZG90KS5cclxuICogU3VjaCB0eXBlLWRlcGVuZGVudCB0aGVzYXVyaSBoYXZlIHRoZWlyIGVudHJpZXMgSURzIHByZWZpeGVkXHJcbiAqIHdpdGggdGhlIHR5cGUgSUQgZm9sbG93ZWQgYnkgZG90LiBGb3IgaW5zdGFuY2UsIHR5cGUgXCJpbGxcIlxyXG4gKiBoYXMgc29tZSBjb3JyZXNwb25kaW5nIGVudHJpZXMgaW4gYSB0eXBlLWRlcGVuZGVudCB0aGVzYXVydXNcclxuICogbGlrZSBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LXR5cGVzLCBsaWtlIFwiaWxsLm1pbmlhdHVyZVwiLFxyXG4gKiBcImlsbC5kcmF3aW5nXCIsIGV0Yy5cclxuICogQWxzbywgaWYgdGhlIGZpbHRlcmVkIGNvbnRlbnQgb2YgYSB0aGVzYXVydXMgaGFwcGVucyB0byBoYXZlXHJcbiAqIGFuIGVudHJ5IElEIGVxdWFsIHRvIFwiLVwiIG9uY2UgdGhlIHR5cGUgcHJlZml4IGhhcyBiZWVuIHN0cmlwcGVkXHJcbiAqIG91dCwgdGhpcyBtZWFucyB0aGF0IGluIHRoaXMgY2FzZSB0aGUgY29ycmVzcG9uZGluZyBjb250cm9sXHJcbiAqIHNob3VsZCBiZSBhIGZyZWUgdGV4dCBib3ggcmF0aGVyIHRoYW4gYSBzZWxlY3Rvci5cclxuICogVGhpcyBhbnl3YXkgZG9lcyBub3QgYXBwbHkgdG8gdGhvc2UgY29udHJvbHMgYWxsb3dpbmcgbXVsdGlwbGVcclxuICogc2VsZWN0aW9ucywgbGlrZSBmbGFncyBvciBjb2xvcnMuXHJcbiAqIC0gaGlkaW5nIHNvbWUgY29udHJvbHMuIFdoZW4gYSB0eXBlIGlzIHNlbGVjdGVkLCB0aGUgdGhlc2F1cnVzXHJcbiAqIGNvZC1kZWNvcmF0aW9uLXR5cGUtaGlkZGVuIGlzIGxvb2tlZCB1cCB0byBmaW5kIGFuIGVudHJ5XHJcbiAqIHdpdGggSUQgZXF1YWwgdG8gdGhlIHNlbGVjdGVkIHR5cGUgSUQuIElmIGZvdW5kLCBpdCBpcyBhc3N1bWVkXHJcbiAqIHRoYXQgaXRzIHZhbHVlIGlzIGEgc3BhY2UtZGVsaW1pdGVkIGxpc3Qgb2YgbmFtZXMgb2YgdGhvc2VcclxuICogY29udHJvbHMgd2hpY2ggc2hvdWxkIGJlIGhpZGRlbi5cclxuICogVGhpcyBsb2dpYyBpcyBlZmZlY3RpdmVseSBpbXBsZW1lbnRlZCBieVxyXG4gKiBDb2REZWNvcmF0aW9uRWxlbWVudENvbXBvbmVudC5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLWNvZC1kZWNvcmF0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29kLWRlY29yYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvZC1kZWNvcmF0aW9uLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvZERlY29yYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZsYWdBZGFwdGVyOiBGbGFnc1BpY2tlckFkYXB0ZXI7XHJcbiAgcHJpdmF0ZSBfZGVjb3JhdGlvbjogQ29kRGVjb3JhdGlvbiB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIF9kZWNGbGFnRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IGRlY29yYXRpb24oKTogQ29kRGVjb3JhdGlvbiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVjb3JhdGlvbjtcclxuICB9XHJcbiAgcHVibGljIHNldCBkZWNvcmF0aW9uKHZhbHVlOiBDb2REZWNvcmF0aW9uIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy5fZGVjb3JhdGlvbiA9PT0gdmFsdWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGVjb3JhdGlvbiA9IHZhbHVlO1xyXG4gICAgdGhpcy51cGRhdGVGb3JtKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLWVsZW1lbnQtZmxhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWNFbGVtRmxhZ0VudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLWZsYWdzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IGRlY0ZsYWdFbnRyaWVzKCk6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlY0ZsYWdFbnRyaWVzO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGRlY0ZsYWdFbnRyaWVzKHZhbHVlOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy5fZGVjRmxhZ0VudHJpZXMgPT09IHZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2RlY0ZsYWdFbnRyaWVzID0gdmFsdWUgfHwgW107XHJcbiAgICB0aGlzLl9mbGFnQWRhcHRlci5zZXRTbG90RmxhZ3MoXHJcbiAgICAgICdkZWNvcmF0aW9uJyxcclxuICAgICAgdGhpcy5fZGVjRmxhZ0VudHJpZXMubWFwKGVudHJ5VG9GbGFnKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLWVsZW1lbnQtdHlwZXMgKHJlcXVpcmVkKVxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRlY0VsZW1UeXBlRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICAvLyBjb2QtZGVjb3JhdGlvbi10eXBlLWhpZGRlblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRlY1R5cGVIaWRkZW5FbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLWVsZW1lbnQtY29sb3JzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVjRWxlbUNvbG9yRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICAvLyBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LWdpbGRpbmdzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVjRWxlbUdpbGRpbmdFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLWVsZW1lbnQtdGVjaG5pcXVlc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRlY0VsZW1UZWNoRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICAvLyBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LXBvc2l0aW9uc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRlY0VsZW1Qb3NFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLWVsZW1lbnQtdG9vbHNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWNFbGVtVG9vbEVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcbiAgLy8gY29kLWRlY29yYXRpb24tZWxlbWVudC10eXBvbG9naWVzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVjRWxlbVR5cG9sRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICAvLyBjb2QtaW1hZ2UtdHlwZXNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpbWdUeXBlRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICAvLyBjb2QtZGVjb3JhdGlvbi1hcnRpc3QtdHlwZXNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhcnRUeXBlRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICAvLyBjb2QtZGVjb3JhdGlvbi1hcnRpc3Qtc3R5bGUtbmFtZXNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBhcnRTdHlsZUVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcbiAgLy8gY2hyb25vdG9wZS10YWdzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgY3RUYWdFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIC8vIGFzc2VydGlvbi10YWdzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYXNzVGFnRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICAvLyBkb2MtcmVmZXJlbmNlLXR5cGVzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmVmVHlwZUVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcbiAgLy8gZG9jLXJlZmVyZW5jZS10YWdzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgcmVmVGFnRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICAvLyBleHRlcm5hbC1pZC10YWdzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaWRUYWdFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIC8vIGV4dGVybmFsLWlkLXNjb3Blc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGlkU2NvcGVFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZGVjb3JhdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPENvZERlY29yYXRpb24+O1xyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBlZGl0b3JDbG9zZTogRXZlbnRFbWl0dGVyPGFueT47XHJcblxyXG4gIHB1YmxpYyBlaWQ6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIHB1YmxpYyBuYW1lOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcclxuICBwdWJsaWMgZmxhZ3M6IEZvcm1Db250cm9sPEZsYWdbXT47XHJcbiAgcHVibGljIGNocm9ub3RvcGVzOiBGb3JtQ29udHJvbDxBc3NlcnRlZENocm9ub3RvcGVbXT47XHJcbiAgcHVibGljIGFydGlzdHM6IEZvcm1Db250cm9sPENvZERlY29yYXRpb25BcnRpc3RbXT47XHJcbiAgcHVibGljIG5vdGU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIHB1YmxpYyByZWZlcmVuY2VzOiBGb3JtQ29udHJvbDxEb2NSZWZlcmVuY2VbXT47XHJcbiAgcHVibGljIGVsZW1lbnRzOiBGb3JtQ29udHJvbDxDb2REZWNvcmF0aW9uRWxlbWVudFtdPjtcclxuICBwdWJsaWMgZm9ybTogRm9ybUdyb3VwO1xyXG5cclxuICBwdWJsaWMgZWRpdGVkRWxlbWVudEluZGV4OiBudW1iZXI7XHJcbiAgcHVibGljIGVkaXRlZEVsZW1lbnQ6IENvZERlY29yYXRpb25FbGVtZW50IHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBwYXJlbnRLZXlzOiBzdHJpbmdbXTtcclxuXHJcbiAgcHVibGljIGVkaXRlZEFydGlzdEluZGV4OiBudW1iZXI7XHJcbiAgcHVibGljIGVkaXRlZEFydGlzdD86IENvZERlY29yYXRpb25BcnRpc3Q7XHJcblxyXG4gIHB1YmxpYyBlZGl0b3JPcHRpb25zID0ge1xyXG4gICAgdGhlbWU6ICd2cy1saWdodCcsXHJcbiAgICBsYW5ndWFnZTogJ21hcmtkb3duJyxcclxuICAgIHdvcmRXcmFwOiAnb24nLFxyXG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2F0dWxhcmVuL25neC1tb25hY28tZWRpdG9yL2lzc3Vlcy8xOVxyXG4gICAgYXV0b21hdGljTGF5b3V0OiB0cnVlLFxyXG4gIH07XHJcblxyXG4gIC8vIGZsYWdzXHJcbiAgcHVibGljIGRlY0ZsYWdzJDogT2JzZXJ2YWJsZTxGbGFnW10+O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihmb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgX2RpYWxvZ1NlcnZpY2U6IERpYWxvZ1NlcnZpY2UpIHtcclxuICAgIHRoaXMuZWRpdGVkRWxlbWVudEluZGV4ID0gLTE7XHJcbiAgICB0aGlzLnBhcmVudEtleXMgPSBbXTtcclxuICAgIHRoaXMuZWRpdGVkQXJ0aXN0SW5kZXggPSAtMTtcclxuICAgIHRoaXMuZGVjb3JhdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q29kRGVjb3JhdGlvbj4oKTtcclxuICAgIHRoaXMuZWRpdG9yQ2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICAgIC8vIGZsYWdzXHJcbiAgICB0aGlzLl9mbGFnQWRhcHRlciA9IG5ldyBGbGFnc1BpY2tlckFkYXB0ZXIoKTtcclxuICAgIHRoaXMuZGVjRmxhZ3MkID0gdGhpcy5fZmxhZ0FkYXB0ZXIuc2VsZWN0RmxhZ3MoJ2RlY29yYXRpb24nKTtcclxuICAgIC8vIGZvcm1cclxuICAgIHRoaXMuZWlkID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDApKTtcclxuICAgIHRoaXMubmFtZSA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgW1xyXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCksXHJcbiAgICBdKTtcclxuICAgIHRoaXMuZmxhZ3MgPSBmb3JtQnVpbGRlci5jb250cm9sKFtdLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG4gICAgdGhpcy5jaHJvbm90b3BlcyA9IGZvcm1CdWlsZGVyLmNvbnRyb2woW10sIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XHJcbiAgICB0aGlzLmFydGlzdHMgPSBmb3JtQnVpbGRlci5jb250cm9sKFtdLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG4gICAgdGhpcy5ub3RlID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDAwKSk7XHJcbiAgICB0aGlzLnJlZmVyZW5jZXMgPSBmb3JtQnVpbGRlci5jb250cm9sKFtdLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG4gICAgdGhpcy5lbGVtZW50cyA9IGZvcm1CdWlsZGVyLmNvbnRyb2woW10sIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XHJcbiAgICB0aGlzLmZvcm0gPSBmb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIGVpZDogdGhpcy5laWQsXHJcbiAgICAgIG5hbWU6IHRoaXMubmFtZSxcclxuICAgICAgZmxhZ3M6IHRoaXMuZmxhZ3MsXHJcbiAgICAgIGNocm9ub3RvcGVzOiB0aGlzLmNocm9ub3RvcGVzLFxyXG4gICAgICBhcnRpc3RzOiB0aGlzLmFydGlzdHMsXHJcbiAgICAgIG5vdGU6IHRoaXMubm90ZSxcclxuICAgICAgcmVmZXJlbmNlczogdGhpcy5yZWZlcmVuY2VzLFxyXG4gICAgICBlbGVtZW50czogdGhpcy5lbGVtZW50cyxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5fZGVjb3JhdGlvbikge1xyXG4gICAgICB0aGlzLnVwZGF0ZUZvcm0odGhpcy5fZGVjb3JhdGlvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZUZvcm0oZGVjb3JhdGlvbjogQ29kRGVjb3JhdGlvbiB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgaWYgKCFkZWNvcmF0aW9uKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jaHJvbm90b3Blcy5zZXRWYWx1ZShkZWNvcmF0aW9uLmNocm9ub3RvcGVzIHx8IFtdKTtcclxuICAgIHRoaXMucmVmZXJlbmNlcy5zZXRWYWx1ZShkZWNvcmF0aW9uLnJlZmVyZW5jZXMgfHwgW10pO1xyXG4gICAgdGhpcy5fZmxhZ0FkYXB0ZXIuc2V0U2xvdENoZWNrcygnZGVjb3JhdGlvbicsIGRlY29yYXRpb24uZmxhZ3MgfHwgW10pO1xyXG4gICAgdGhpcy5laWQuc2V0VmFsdWUoZGVjb3JhdGlvbi5laWQgfHwgbnVsbCk7XHJcbiAgICB0aGlzLm5hbWUuc2V0VmFsdWUoZGVjb3JhdGlvbi5uYW1lKTtcclxuICAgIHRoaXMubm90ZS5zZXRWYWx1ZShkZWNvcmF0aW9uLm5vdGUgfHwgbnVsbCk7XHJcbiAgICB0aGlzLmFydGlzdHMuc2V0VmFsdWUoZGVjb3JhdGlvbi5hcnRpc3RzIHx8IFtdKTtcclxuICAgIHRoaXMuZWxlbWVudHMuc2V0VmFsdWUoZGVjb3JhdGlvbi5lbGVtZW50cyB8fCBbXSk7XHJcbiAgICB0aGlzLnVwZGF0ZVBhcmVudEtleXMoKTtcclxuXHJcbiAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNocm9ub3RvcGVzQ2hhbmdlKGNocm9ub3RvcGVzOiBBc3NlcnRlZENocm9ub3RvcGVbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5jaHJvbm90b3Blcy5zZXRWYWx1ZShjaHJvbm90b3Blcyk7XHJcbiAgICB0aGlzLmNocm9ub3RvcGVzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuY2hyb25vdG9wZXMubWFya0FzRGlydHkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblJlZmVyZW5jZXNDaGFuZ2UocmVmZXJlbmNlczogRG9jUmVmZXJlbmNlW10pOiB2b2lkIHtcclxuICAgIHRoaXMucmVmZXJlbmNlcy5zZXRWYWx1ZShyZWZlcmVuY2VzKTtcclxuICAgIHRoaXMucmVmZXJlbmNlcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLnJlZmVyZW5jZXMubWFya0FzRGlydHkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkZsYWdzQ2hhbmdlKGZsYWdzOiBGbGFnW10pOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RGbGFncygnZmxhZ3MnLCBmbGFncywgdHJ1ZSk7XHJcbiAgICB0aGlzLmZsYWdzLnNldFZhbHVlKGZsYWdzKTtcclxuICAgIHRoaXMuZmxhZ3MudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5mbGFncy5tYXJrQXNEaXJ0eSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREZWNvcmF0aW9uKCk6IENvZERlY29yYXRpb24ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZWlkOiB0aGlzLmVpZC52YWx1ZT8udHJpbSgpLFxyXG4gICAgICBuYW1lOiB0aGlzLm5hbWUudmFsdWU/LnRyaW0oKSB8fCAnJyxcclxuICAgICAgZmxhZ3M6IHRoaXMuX2ZsYWdBZGFwdGVyLmdldE9wdGlvbmFsQ2hlY2tlZEZsYWdJZHMoJ2ZsYWdzJyksXHJcbiAgICAgIGNocm9ub3RvcGVzOiB0aGlzLmNocm9ub3RvcGVzLnZhbHVlPy5sZW5ndGhcclxuICAgICAgICA/IHRoaXMuY2hyb25vdG9wZXMudmFsdWVcclxuICAgICAgICA6IHVuZGVmaW5lZCxcclxuICAgICAgcmVmZXJlbmNlczogdGhpcy5yZWZlcmVuY2VzLnZhbHVlPy5sZW5ndGhcclxuICAgICAgICA/IHRoaXMucmVmZXJlbmNlcy52YWx1ZVxyXG4gICAgICAgIDogdW5kZWZpbmVkLFxyXG4gICAgICBhcnRpc3RzOiB0aGlzLmFydGlzdHMudmFsdWU/Lmxlbmd0aCA/IHRoaXMuYXJ0aXN0cy52YWx1ZSA6IHVuZGVmaW5lZCxcclxuICAgICAgbm90ZTogdGhpcy5ub3RlLnZhbHVlPy50cmltKCksXHJcbiAgICAgIGVsZW1lbnRzOiB0aGlzLmVsZW1lbnRzLnZhbHVlPy5sZW5ndGggPyB0aGlzLmVsZW1lbnRzLnZhbHVlIDogdW5kZWZpbmVkLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBlbGVtZW50c1xyXG4gIHB1YmxpYyBhZGRFbGVtZW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0RWxlbWVudCh7XHJcbiAgICAgIHR5cGU6IHRoaXMuZGVjRWxlbVR5cGVFbnRyaWVzPy5sZW5ndGhcclxuICAgICAgICA/IHRoaXMuZGVjRWxlbVR5cGVFbnRyaWVzWzBdLmlkXHJcbiAgICAgICAgOiAnJyxcclxuICAgICAgZmxhZ3M6IFtdLFxyXG4gICAgICByYW5nZXM6IFtdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZWRpdEVsZW1lbnQoZWxlbWVudDogQ29kRGVjb3JhdGlvbkVsZW1lbnQgfCBudWxsLCBpbmRleCA9IC0xKTogdm9pZCB7XHJcbiAgICBpZiAoIWVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5lZGl0ZWRFbGVtZW50SW5kZXggPSAtMTtcclxuICAgICAgdGhpcy5lZGl0ZWRFbGVtZW50ID0gdW5kZWZpbmVkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lZGl0ZWRFbGVtZW50SW5kZXggPSBpbmRleDtcclxuICAgICAgdGhpcy5lZGl0ZWRFbGVtZW50ID0gZWxlbWVudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlUGFyZW50S2V5cygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5lbGVtZW50cy52YWx1ZT8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucGFyZW50S2V5cyA9IFtdO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQga2V5czogc3RyaW5nW10gPSB0aGlzLmVsZW1lbnRzLnZhbHVlLm1hcChcclxuICAgICAgKGU6IENvZERlY29yYXRpb25FbGVtZW50KSA9PiBlLmtleSFcclxuICAgICk7XHJcbiAgICB0aGlzLnBhcmVudEtleXMgPSBbLi4ubmV3IFNldChrZXlzKV0uc29ydCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRWxlbWVudFNhdmUoZWxlbWVudDogQ29kRGVjb3JhdGlvbkVsZW1lbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLnRoaXMuZWxlbWVudHMudmFsdWVdO1xyXG5cclxuICAgIGlmICh0aGlzLmVkaXRlZEVsZW1lbnRJbmRleCA+IC0xKSB7XHJcbiAgICAgIGVsZW1lbnRzLnNwbGljZSh0aGlzLmVkaXRlZEVsZW1lbnRJbmRleCwgMSwgZWxlbWVudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBlbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZWxlbWVudHMuc2V0VmFsdWUoZWxlbWVudHMpO1xyXG4gICAgdGhpcy5lbGVtZW50cy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLmVsZW1lbnRzLm1hcmtBc0RpcnR5KCk7XHJcbiAgICB0aGlzLmVkaXRFbGVtZW50KG51bGwpO1xyXG4gICAgdGhpcy51cGRhdGVQYXJlbnRLZXlzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlRWxlbWVudChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlXHJcbiAgICAgIC5jb25maXJtKCdDb25maXJtYXRpb24nLCAnRGVsZXRlIGVsZW1lbnQ/JylcclxuICAgICAgLnBpcGUodGFrZSgxKSlcclxuICAgICAgLnN1YnNjcmliZSgoeWVzOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHllcykge1xyXG4gICAgICAgICAgY29uc3QgaXRlbXMgPSBbLi4udGhpcy5lbGVtZW50cy52YWx1ZV07XHJcbiAgICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgdGhpcy5lbGVtZW50cy5zZXRWYWx1ZShpdGVtcyk7XHJcbiAgICAgICAgICB0aGlzLmVsZW1lbnRzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgIHRoaXMuZWxlbWVudHMubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgIHRoaXMudXBkYXRlUGFyZW50S2V5cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbW92ZUVsZW1lbnRVcChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoaW5kZXggPCAxKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmVsZW1lbnRzLnZhbHVlW2luZGV4XTtcclxuICAgIGNvbnN0IGl0ZW1zID0gWy4uLnRoaXMuZWxlbWVudHMudmFsdWVdO1xyXG4gICAgaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIGl0ZW1zLnNwbGljZShpbmRleCAtIDEsIDAsIGl0ZW0pO1xyXG4gICAgdGhpcy5lbGVtZW50cy5zZXRWYWx1ZShpdGVtcyk7XHJcbiAgICB0aGlzLmVsZW1lbnRzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuZWxlbWVudHMubWFya0FzRGlydHkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBtb3ZlRWxlbWVudERvd24oaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGluZGV4ICsgMSA+PSB0aGlzLmVsZW1lbnRzLnZhbHVlLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5lbGVtZW50cy52YWx1ZVtpbmRleF07XHJcbiAgICBjb25zdCBpdGVtcyA9IFsuLi50aGlzLmVsZW1lbnRzLnZhbHVlXTtcclxuICAgIGl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICBpdGVtcy5zcGxpY2UoaW5kZXggKyAxLCAwLCBpdGVtKTtcclxuICAgIHRoaXMuZWxlbWVudHMuc2V0VmFsdWUoaXRlbXMpO1xyXG4gICAgdGhpcy5lbGVtZW50cy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLmVsZW1lbnRzLm1hcmtBc0RpcnR5KCk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gYXJ0aXN0c1xyXG4gIHB1YmxpYyBhZGRBcnRpc3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRBcnRpc3Qoe1xyXG4gICAgICB0eXBlOiB0aGlzLmFydFR5cGVFbnRyaWVzPy5sZW5ndGggPyB0aGlzLmFydFR5cGVFbnRyaWVzWzBdLmlkIDogJycsXHJcbiAgICAgIG5hbWU6ICcnLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZWRpdEFydGlzdChhcnRpc3Q6IENvZERlY29yYXRpb25BcnRpc3QgfCBudWxsLCBpbmRleCA9IC0xKTogdm9pZCB7XHJcbiAgICBpZiAoIWFydGlzdCkge1xyXG4gICAgICB0aGlzLmVkaXRlZEFydGlzdEluZGV4ID0gLTE7XHJcbiAgICAgIHRoaXMuZWRpdGVkQXJ0aXN0ID0gdW5kZWZpbmVkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lZGl0ZWRBcnRpc3RJbmRleCA9IGluZGV4O1xyXG4gICAgICB0aGlzLmVkaXRlZEFydGlzdCA9IGFydGlzdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkFydGlzdFNhdmUoYXJ0aXN0OiBDb2REZWNvcmF0aW9uQXJ0aXN0KTogdm9pZCB7XHJcbiAgICBjb25zdCBhcnRpc3RzID0gWy4uLnRoaXMuYXJ0aXN0cy52YWx1ZV07XHJcblxyXG4gICAgaWYgKHRoaXMuZWRpdGVkQXJ0aXN0SW5kZXggPiAtMSkge1xyXG4gICAgICBhcnRpc3RzLnNwbGljZSh0aGlzLmVkaXRlZEFydGlzdEluZGV4LCAxLCBhcnRpc3QpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXJ0aXN0cy5wdXNoKGFydGlzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hcnRpc3RzLnNldFZhbHVlKGFydGlzdHMpO1xyXG4gICAgdGhpcy5hcnRpc3RzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuYXJ0aXN0cy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy5lZGl0QXJ0aXN0KG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZUFydGlzdChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlXHJcbiAgICAgIC5jb25maXJtKCdDb25maXJtYXRpb24nLCAnRGVsZXRlIGFydGlzdD8nKVxyXG4gICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh5ZXMpID0+IHtcclxuICAgICAgICBpZiAoeWVzKSB7XHJcbiAgICAgICAgICBjb25zdCBpdGVtcyA9IFsuLi50aGlzLmFydGlzdHMudmFsdWVdO1xyXG4gICAgICAgICAgaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgIHRoaXMuYXJ0aXN0cy5zZXRWYWx1ZShpdGVtcyk7XHJcbiAgICAgICAgICB0aGlzLmFydGlzdHMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgdGhpcy5hcnRpc3RzLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBtb3ZlQXJ0aXN0VXAoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGluZGV4IDwgMSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5hcnRpc3RzLnZhbHVlW2luZGV4XTtcclxuICAgIGNvbnN0IGl0ZW1zID0gWy4uLnRoaXMuYXJ0aXN0cy52YWx1ZV07XHJcbiAgICBpdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgaXRlbXMuc3BsaWNlKGluZGV4IC0gMSwgMCwgaXRlbSk7XHJcbiAgICB0aGlzLmFydGlzdHMuc2V0VmFsdWUoaXRlbXMpO1xyXG4gICAgdGhpcy5hcnRpc3RzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuYXJ0aXN0cy5tYXJrQXNEaXJ0eSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1vdmVBcnRpc3REb3duKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChpbmRleCArIDEgPj0gdGhpcy5hcnRpc3RzLnZhbHVlLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5hcnRpc3RzLnZhbHVlW2luZGV4XTtcclxuICAgIGNvbnN0IGl0ZW1zID0gWy4uLnRoaXMuYXJ0aXN0cy52YWx1ZV07XHJcbiAgICBpdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgaXRlbXMuc3BsaWNlKGluZGV4ICsgMSwgMCwgaXRlbSk7XHJcbiAgICB0aGlzLmFydGlzdHMuc2V0VmFsdWUoaXRlbXMpO1xyXG4gICAgdGhpcy5hcnRpc3RzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuYXJ0aXN0cy5tYXJrQXNEaXJ0eSgpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdG9yQ2xvc2UuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGVjb3JhdGlvbiA9IHRoaXMuZ2V0RGVjb3JhdGlvbigpO1xyXG4gICAgdGhpcy5kZWNvcmF0aW9uQ2hhbmdlLmVtaXQodGhpcy5fZGVjb3JhdGlvbik7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChzdWJtaXQpPVwic2F2ZSgpXCI+XHJcbiAgPGRpdj5cclxuICAgIDwhLS0gaWQgLS0+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtbGFiZWw+SUQ8L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJlaWRcIiAvPlxyXG4gICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgKm5nSWY9XCIkYW55KGVpZCkuZXJyb3JzPy5yZXF1aXJlZCAmJiAoZWlkLmRpcnR5IHx8IGVpZC50b3VjaGVkKVwiXHJcbiAgICAgICAgPkVJRCByZXF1aXJlZDwvbWF0LWVycm9yXHJcbiAgICAgID5cclxuICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICpuZ0lmPVwiJGFueShlaWQpLmVycm9ycz8ubWF4TGVuZ3RoICYmIChlaWQuZGlydHkgfHwgZWlkLnRvdWNoZWQpXCJcclxuICAgICAgICA+RUlEIHRvbyBsb25nPC9tYXQtZXJyb3JcclxuICAgICAgPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICZuYnNwO1xyXG4gICAgPCEtLSBuYW1lIC0tPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWxhYmVsPm5hbWU8L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJuYW1lXCIgLz5cclxuICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICpuZ0lmPVwiJGFueShuYW1lKS5lcnJvcnM/LnJlcXVpcmVkICYmIChuYW1lLmRpcnR5IHx8IG5hbWUudG91Y2hlZClcIlxyXG4gICAgICAgID5uYW1lIHJlcXVpcmVkPC9tYXQtZXJyb3JcclxuICAgICAgPlxyXG4gICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgKm5nSWY9XCIkYW55KG5hbWUpLmVycm9ycz8ubWF4TGVuZ3RoICYmIChuYW1lLmRpcnR5IHx8IG5hbWUudG91Y2hlZClcIlxyXG4gICAgICAgID5uYW1lIHRvbyBsb25nPC9tYXQtZXJyb3JcclxuICAgICAgPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBmbGFncyAtLT5cclxuICA8ZmllbGRzZXQ+XHJcbiAgICA8bGVnZW5kPmZlYXR1cmVzPC9sZWdlbmQ+XHJcbiAgICA8Y2FkbXVzLXVpLWZsYWdzLXBpY2tlclxyXG4gICAgICBbZmxhZ3NdPVwiZGVjRmxhZ3MkIHwgYXN5bmNcIlxyXG4gICAgICAoZmxhZ3NDaGFuZ2UpPVwib25GbGFnc0NoYW5nZSgkZXZlbnQpXCJcclxuICAgID48L2NhZG11cy11aS1mbGFncy1waWNrZXI+XHJcbiAgPC9maWVsZHNldD5cclxuXHJcbiAgPCEtLSBub3RlIC0tPlxyXG4gIDxiciAvPlxyXG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImxvbmctdGV4dFwiPlxyXG4gICAgPG1hdC1sYWJlbD5ub3RlPC9tYXQtbGFiZWw+XHJcbiAgICA8dGV4dGFyZWEgcm93cz1cIjNcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwibm90ZVwiPjwvdGV4dGFyZWE+XHJcbiAgICA8bWF0LWVycm9yXHJcbiAgICAgICpuZ0lmPVwiJGFueShub3RlKS5lcnJvcnM/Lm1heExlbmd0aCAmJiAobm90ZS5kaXJ0eSB8fCBub3RlLnRvdWNoZWQpXCJcclxuICAgICAgPm5vdGUgdG9vIGxvbmc8L21hdC1lcnJvclxyXG4gICAgPlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gIDwhLS0gY2hyb25vdG9wZXMgLS0+XHJcbiAgPG1hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgIDxtYXQtcGFuZWwtdGl0bGVcclxuICAgICAgICA+PG1hdC1pY29uIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA4cHg7IGNvbG9yOiAjMjRhNTI0XCJcclxuICAgICAgICAgID5ob3VyZ2xhc3NfZW1wdHk8L21hdC1pY29uXHJcbiAgICAgICAgPlxyXG4gICAgICAgIGNocm9ub3RvcGVzPC9tYXQtcGFuZWwtdGl0bGVcclxuICAgICAgPlxyXG4gICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgIDxjYWRtdXMtYXNzZXJ0ZWQtY2hyb25vdG9wZS1zZXRcclxuICAgICAgW3RhZ0VudHJpZXNdPVwiY3RUYWdFbnRyaWVzXCJcclxuICAgICAgW2Fzc1RhZ0VudHJpZXNdPVwiYXNzVGFnRW50cmllc1wiXHJcbiAgICAgIFtyZWZUYWdFbnRyaWVzXT1cInJlZlRhZ0VudHJpZXNcIlxyXG4gICAgICBbcmVmVHlwZUVudHJpZXNdPVwicmVmVHlwZUVudHJpZXNcIlxyXG4gICAgICBbY2hyb25vdG9wZXNdPVwiY2hyb25vdG9wZXMudmFsdWVcIlxyXG4gICAgICAoY2hyb25vdG9wZXNDaGFuZ2UpPVwib25DaHJvbm90b3Blc0NoYW5nZSgkZXZlbnQpXCJcclxuICAgID48L2NhZG11cy1hc3NlcnRlZC1jaHJvbm90b3BlLXNldD5cclxuICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblxyXG4gIDwhLS0gcmVmZXJlbmNlcyAtLT5cclxuICA8bWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgPG1hdC1wYW5lbC10aXRsZVxyXG4gICAgICAgID48bWF0LWljb24gc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDhweDsgY29sb3I6ICNiYjNkNmNcIlxyXG4gICAgICAgICAgPmxpYnJhcnlfYm9va3M8L21hdC1pY29uXHJcbiAgICAgICAgPlxyXG4gICAgICAgIHJlZmVyZW5jZXM8L21hdC1wYW5lbC10aXRsZVxyXG4gICAgICA+XHJcbiAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgPGNhZG11cy1yZWZzLWRvYy1yZWZlcmVuY2VzXHJcbiAgICAgIFt0YWdFbnRyaWVzXT1cInJlZlRhZ0VudHJpZXNcIlxyXG4gICAgICBbdHlwZUVudHJpZXNdPVwicmVmVHlwZUVudHJpZXNcIlxyXG4gICAgICBbcmVmZXJlbmNlc109XCJyZWZlcmVuY2VzLnZhbHVlXCJcclxuICAgICAgKHJlZmVyZW5jZXNDaGFuZ2UpPVwib25SZWZlcmVuY2VzQ2hhbmdlKCRldmVudClcIlxyXG4gICAgPjwvY2FkbXVzLXJlZnMtZG9jLXJlZmVyZW5jZXM+XHJcbiAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG5cclxuICA8IS0tIGFydGlzdHMgLS0+XHJcbiAgPG1hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgIDxtYXQtcGFuZWwtdGl0bGVcclxuICAgICAgICA+PG1hdC1pY29uIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA4cHg7IGNvbG9yOiAjZGRjZDQxXCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgYXJ0aXN0czwvbWF0LXBhbmVsLXRpdGxlXHJcbiAgICAgID5cclxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgbWF0LWZsYXQtYnV0dG9uXHJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAoY2xpY2spPVwiYWRkQXJ0aXN0KClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1pY29uPmFkZF9jaXJjbGU8L21hdC1pY29uPiBhcnRpc3RcclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDx0YWJsZSAqbmdJZj1cImFydGlzdHM/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgPHRoZWFkPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgICAgPHRoPnR5cGU8L3RoPlxyXG4gICAgICAgICAgPHRoPm5hbWU8L3RoPlxyXG4gICAgICAgICAgPHRoPkVJRDwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90aGVhZD5cclxuICAgICAgPHRib2R5PlxyXG4gICAgICAgIDx0clxyXG4gICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgIGxldCBhcnRpc3Qgb2YgYXJ0aXN0cz8udmFsdWU7XHJcbiAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgIGxldCBmaXJzdCA9IGZpcnN0O1xyXG4gICAgICAgICAgICBsZXQgbGFzdCA9IGxhc3RcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRWRpdCB0aGlzIGFydGlzdFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRBcnRpc3QoYXJ0aXN0LCBpKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+ZWRpdDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk1vdmUgdGhpcyBhcnRpc3QgdXBcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaXJzdFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVBcnRpc3RVcChpKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfdXB3YXJkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiTW92ZSB0aGlzIGFydGlzdCBkb3duXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibGFzdFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVBcnRpc3REb3duKGkpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19kb3dud2FyZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRGVsZXRlIHRoaXMgYXJ0aXN0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQXJ0aXN0KGkpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5yZW1vdmVfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICB7eyBhcnRpc3QudHlwZSB8IGZsYXRMb29rdXAgOiBhcnRUeXBlRW50cmllcyA6IFwiaWRcIiA6IFwidmFsdWVcIiB9fVxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDx0ZD57eyBhcnRpc3QubmFtZSB9fTwvdGQ+XHJcbiAgICAgICAgICA8dGQ+e3sgYXJ0aXN0LmVpZCB9fTwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90Ym9keT5cclxuICAgIDwvdGFibGU+XHJcbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbZXhwYW5kZWRdPVwiZWRpdGVkQXJ0aXN0XCIgW2Rpc2FibGVkXT1cIiFlZGl0ZWRBcnRpc3RcIj5cclxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+YXJ0aXN0IHt7IGVkaXRlZEFydGlzdD8ubmFtZSB9fTwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICA8Y2FkbXVzLWNvZC1kZWNvcmF0aW9uLWFydGlzdFxyXG4gICAgICAgIFtjdFRhZ0VudHJpZXNdPVwiY3RUYWdFbnRyaWVzXCJcclxuICAgICAgICBbYXNzVGFnRW50cmllc109XCJhc3NUYWdFbnRyaWVzXCJcclxuICAgICAgICBbcmVmVGFnRW50cmllc109XCJyZWZUYWdFbnRyaWVzXCJcclxuICAgICAgICBbYXJ0VHlwZUVudHJpZXNdPVwiYXJ0VHlwZUVudHJpZXNcIlxyXG4gICAgICAgIFtyZWZUeXBlRW50cmllc109XCJyZWZUeXBlRW50cmllc1wiXHJcbiAgICAgICAgW2FydFN0eWxlRW50cmllc109XCJhcnRTdHlsZUVudHJpZXNcIlxyXG4gICAgICAgIFtpZFRhZ0VudHJpZXNdPVwiaWRUYWdFbnRyaWVzXCJcclxuICAgICAgICBbaWRTY29wZUVudHJpZXNdPVwiaWRTY29wZUVudHJpZXNcIlxyXG4gICAgICAgIFthcnRpc3RdPVwiZWRpdGVkQXJ0aXN0XCJcclxuICAgICAgICAoYXJ0aXN0Q2hhbmdlKT1cIm9uQXJ0aXN0U2F2ZSgkZXZlbnQpXCJcclxuICAgICAgICAoZWRpdG9yQ2xvc2UpPVwiZWRpdEFydGlzdChudWxsKVwiXHJcbiAgICAgID48L2NhZG11cy1jb2QtZGVjb3JhdGlvbi1hcnRpc3Q+XHJcbiAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG5cclxuICA8IS0tIGVsZW1lbnRzIC0tPlxyXG4gIDxoMz5lbGVtZW50czwvaDM+XHJcbiAgPGRpdj5cclxuICAgIDxidXR0b25cclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIG1hdC1mbGF0LWJ1dHRvblxyXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAoY2xpY2spPVwiYWRkRWxlbWVudCgpXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uPmFkZF9jaXJjbGU8L21hdC1pY29uPiBlbGVtZW50XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8dGFibGUgKm5nSWY9XCJlbGVtZW50cz8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgPHRoZWFkPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRoPjwvdGg+XHJcbiAgICAgICAgPHRoPmtleTwvdGg+XHJcbiAgICAgICAgPHRoPnBhcmVudDwvdGg+XHJcbiAgICAgICAgPHRoPnR5cGU8L3RoPlxyXG4gICAgICAgIDx0aD5zdWJqZWN0PC90aD5cclxuICAgICAgICA8dGg+ZXh0ZW50PC90aD5cclxuICAgICAgPC90cj5cclxuICAgIDwvdGhlYWQ+XHJcbiAgICA8dGJvZHk+XHJcbiAgICAgIDx0clxyXG4gICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgbGV0IGVsZW1lbnQgb2YgZWxlbWVudHM/LnZhbHVlO1xyXG4gICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgIGxldCBmaXJzdCA9IGZpcnN0O1xyXG4gICAgICAgICAgbGV0IGxhc3QgPSBsYXN0XHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDx0ZD5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiRWRpdCB0aGlzIGVsZW1lbnRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZWRpdEVsZW1lbnQoZWxlbWVudCwgaSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+ZWRpdDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiTW92ZSB0aGlzIGVsZW1lbnQgdXBcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmlyc3RcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwibW92ZUVsZW1lbnRVcChpKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd191cHdhcmQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk1vdmUgdGhpcyBlbGVtZW50IGRvd25cIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibGFzdFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJtb3ZlRWxlbWVudERvd24oaSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfZG93bndhcmQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcclxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkRlbGV0ZSB0aGlzIGVsZW1lbnRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRWxlbWVudChpKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5yZW1vdmVfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkPnt7IGVsZW1lbnQua2V5IH19PC90ZD5cclxuICAgICAgICA8dGQ+e3sgZWxlbWVudC5wYXJlbnRLZXkgfX08L3RkPlxyXG4gICAgICAgIDx0ZD5cclxuICAgICAgICAgIHt7IGVsZW1lbnQudHlwZSB8IGZsYXRMb29rdXAgOiBkZWNFbGVtVHlwZUVudHJpZXMgOiBcImlkXCIgOiBcInZhbHVlXCIgfX1cclxuICAgICAgICA8L3RkPlxyXG4gICAgICAgIDx0ZD57eyBlbGVtZW50LnN1YmplY3QgfX08L3RkPlxyXG4gICAgICAgIDx0ZD57eyBlbGVtZW50LnJhbmdlcyB8IGNvZExvY2F0aW9uUmFuZ2UgfX08L3RkPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC90Ym9keT5cclxuICA8L3RhYmxlPlxyXG5cclxuICA8IS0tIEVMRU1FTlQgLS0+XHJcbiAgPG1hdC1leHBhbnNpb24tcGFuZWwgW2Rpc2FibGVkXT1cIiFlZGl0ZWRFbGVtZW50XCIgW2V4cGFuZGVkXT1cImVkaXRlZEVsZW1lbnRcIj5cclxuICAgIDxjYWRtdXMtY29kLWRlY29yYXRpb24tZWxlbWVudFxyXG4gICAgICBbaW1nVHlwZUVudHJpZXNdPVwiaW1nVHlwZUVudHJpZXNcIlxyXG4gICAgICBbZGVjRWxlbVBvc0VudHJpZXNdPVwiZGVjRWxlbVBvc0VudHJpZXNcIlxyXG4gICAgICBbZGVjRWxlbUZsYWdFbnRyaWVzXT1cImRlY0VsZW1GbGFnRW50cmllc1wiXHJcbiAgICAgIFtkZWNFbGVtVGVjaEVudHJpZXNdPVwiZGVjRWxlbVRlY2hFbnRyaWVzXCJcclxuICAgICAgW2RlY0VsZW1Ub29sRW50cmllc109XCJkZWNFbGVtVG9vbEVudHJpZXNcIlxyXG4gICAgICBbZGVjRWxlbVR5cGVFbnRyaWVzXT1cImRlY0VsZW1UeXBlRW50cmllc1wiXHJcbiAgICAgIFtkZWNFbGVtQ29sb3JFbnRyaWVzXT1cImRlY0VsZW1Db2xvckVudHJpZXNcIlxyXG4gICAgICBbZGVjRWxlbVR5cG9sRW50cmllc109XCJkZWNFbGVtVHlwb2xFbnRyaWVzXCJcclxuICAgICAgW2RlY1R5cGVIaWRkZW5FbnRyaWVzXT1cImRlY1R5cGVIaWRkZW5FbnRyaWVzXCJcclxuICAgICAgW2RlY0VsZW1HaWxkaW5nRW50cmllc109XCJkZWNFbGVtR2lsZGluZ0VudHJpZXNcIlxyXG4gICAgICBbZWxlbWVudF09XCJlZGl0ZWRFbGVtZW50XCJcclxuICAgICAgW3BhcmVudEtleXNdPVwicGFyZW50S2V5c1wiXHJcbiAgICAgIChlbGVtZW50Q2hhbmdlKT1cIm9uRWxlbWVudFNhdmUoJGV2ZW50KVwiXHJcbiAgICAgIChlZGl0b3JDbG9zZSk9XCJlZGl0RWxlbWVudChudWxsKVwiXHJcbiAgICA+PC9jYWRtdXMtY29kLWRlY29yYXRpb24tZWxlbWVudD5cclxuICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblxyXG4gIDwhLS0gYnV0dG9ucyAtLT5cclxuICA8aHIgLz5cclxuICA8ZGl2IGNsYXNzPVwidG9vbGJhci1yb3dcIj5cclxuICAgIDxidXR0b25cclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGNvbG9yPVwid2FyblwiXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICBtYXRUb29sdGlwPVwiRGlzY2FyZCBkZWNvcmF0aW9uIGNoYW5nZXNcIlxyXG4gICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICBtYXQtZmxhdC1idXR0b25cclxuICAgICAgbWF0VG9vbHRpcD1cIkFjY2VwdCBkZWNvcmF0aW9uIGNoYW5nZXNcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8IGZvcm0ucHJpc3RpbmVcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj4gZGVjb3JhdGlvblxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZm9ybT5cclxuIl19
377
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLWRlY29yYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vY2FkbXVzLXBhcnQtY29kaWNvbG9neS1kZWNvcmF0aW9ucy9zcmMvbGliL2NvZC1kZWNvcmF0aW9uL2NvZC1kZWNvcmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2NhZG11cy1wYXJ0LWNvZGljb2xvZ3ktZGVjb3JhdGlvbnMvc3JjL2xpYi9jb2QtZGVjb3JhdGlvbi9jb2QtZGVjb3JhdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFJTCxVQUFVLEdBQ1gsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQWMsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBS3hDLE9BQU8sRUFBUSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTNUUsU0FBUyxXQUFXLENBQUMsS0FBcUI7SUFDeEMsT0FBTztRQUNMLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRTtRQUNaLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztLQUNuQixDQUFDO0FBQ0osQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBTUgsTUFBTSxPQUFPLHNCQUFzQjtJQTBIakMsWUFBWSxXQUF3QixFQUFVLGNBQTZCO1FBQTdCLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBWHBFLGtCQUFhLEdBQUc7WUFDckIsS0FBSyxFQUFFLFVBQVU7WUFDakIsUUFBUSxFQUFFLFVBQVU7WUFDcEIsUUFBUSxFQUFFLElBQUk7WUFDZCwwREFBMEQ7WUFDMUQsZUFB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c0JBRHBCLEtBQUs7Z0JBSUMsZUFBZTtzQkFEckIsS0FBSztnQkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxhQUFhO3NCQURuQixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsY0FBYztzQkFEcEIsS0FBSztnQkFJQyxnQkFBZ0I7c0JBRHRCLE1BQU07Z0JBR0EsV0FBVztzQkFEakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIHRha2UgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IFRoZXNhdXJ1c0VudHJ5IH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1jb3JlJztcclxuaW1wb3J0IHsgQXNzZXJ0ZWRDaHJvbm90b3BlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1yZWZzLWFzc2VydGVkLWNocm9ub3RvcGUnO1xyXG5pbXBvcnQgeyBEb2NSZWZlcmVuY2UgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLXJlZnMtZG9jLXJlZmVyZW5jZXMnO1xyXG5pbXBvcnQgeyBGbGFnLCBGbGFnc1BpY2tlckFkYXB0ZXIgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLXVpLWZsYWdzLXBpY2tlcic7XHJcbmltcG9ydCB7IERpYWxvZ1NlcnZpY2UgfSBmcm9tICdAbXlybWlkb24vbmctbWF0LXRvb2xzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQ29kRGVjb3JhdGlvbixcclxuICBDb2REZWNvcmF0aW9uQXJ0aXN0LFxyXG4gIENvZERlY29yYXRpb25FbGVtZW50LFxyXG59IGZyb20gJy4uL2NvZC1kZWNvcmF0aW9ucy1wYXJ0JztcclxuXHJcbmZ1bmN0aW9uIGVudHJ5VG9GbGFnKGVudHJ5OiBUaGVzYXVydXNFbnRyeSk6IEZsYWcge1xyXG4gIHJldHVybiB7XHJcbiAgICBpZDogZW50cnkuaWQsXHJcbiAgICBsYWJlbDogZW50cnkudmFsdWUsXHJcbiAgfTtcclxufVxyXG5cclxuLyoqXHJcbiAqIE1hbnVzY3JpcHQncyBkZWNvcmF0aW9uIGVkaXRvci5cclxuICogVGhpcyBjb21wb25lbnQgcmVxdWlyZXMgdGhlIGNvZC1kZWNvcmF0aW9uLWVsZW1lbnQtdHlwZXMgdGhlc2F1cnVzLlxyXG4gKiBBY2NvcmRpbmcgdG8gdGhlIHR5cGUgc2VsZWN0ZWQsIGl0IGNoYW5nZXMgaXRzIFVJIGJ5OlxyXG4gKiAtIGZpbHRlcmluZyB0aGUgY29udGVudCBvZiBhbGwgdGhlIG90aGVyIHRoZXNhdXJpIChleGNlcHRcclxuICogY29kLWRlY29yYXRpb24tdHlwZS1oaWRkZW4sIHdoaWNoIGhhcyBhIHNwZWNpYWwgbWVhbmluZyksXHJcbiAqIHdoZW4gdGhleSBoYXZlIGEgaGllcmFyY2h5IChpLmUuIHRoZWlyIElEcyBjb250YWluIGEgZG90KS5cclxuICogU3VjaCB0eXBlLWRlcGVuZGVudCB0aGVzYXVyaSBoYXZlIHRoZWlyIGVudHJpZXMgSURzIHByZWZpeGVkXHJcbiAqIHdpdGggdGhlIHR5cGUgSUQgZm9sbG93ZWQgYnkgZG90LiBGb3IgaW5zdGFuY2UsIHR5cGUgXCJpbGxcIlxyXG4gKiBoYXMgc29tZSBjb3JyZXNwb25kaW5nIGVudHJpZXMgaW4gYSB0eXBlLWRlcGVuZGVudCB0aGVzYXVydXNcclxuICogbGlrZSBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LXR5cGVzLCBsaWtlIFwiaWxsLm1pbmlhdHVyZVwiLFxyXG4gKiBcImlsbC5kcmF3aW5nXCIsIGV0Yy5cclxuICogQWxzbywgaWYgdGhlIGZpbHRlcmVkIGNvbnRlbnQgb2YgYSB0aGVzYXVydXMgaGFwcGVucyB0byBoYXZlXHJcbiAqIGFuIGVudHJ5IElEIGVxdWFsIHRvIFwiLVwiIG9uY2UgdGhlIHR5cGUgcHJlZml4IGhhcyBiZWVuIHN0cmlwcGVkXHJcbiAqIG91dCwgdGhpcyBtZWFucyB0aGF0IGluIHRoaXMgY2FzZSB0aGUgY29ycmVzcG9uZGluZyBjb250cm9sXHJcbiAqIHNob3VsZCBiZSBhIGZyZWUgdGV4dCBib3ggcmF0aGVyIHRoYW4gYSBzZWxlY3Rvci5cclxuICogVGhpcyBhbnl3YXkgZG9lcyBub3QgYXBwbHkgdG8gdGhvc2UgY29udHJvbHMgYWxsb3dpbmcgbXVsdGlwbGVcclxuICogc2VsZWN0aW9ucywgbGlrZSBmbGFncyBvciBjb2xvcnMuXHJcbiAqIC0gaGlkaW5nIHNvbWUgY29udHJvbHMuIFdoZW4gYSB0eXBlIGlzIHNlbGVjdGVkLCB0aGUgdGhlc2F1cnVzXHJcbiAqIGNvZC1kZWNvcmF0aW9uLXR5cGUtaGlkZGVuIGlzIGxvb2tlZCB1cCB0byBmaW5kIGFuIGVudHJ5XHJcbiAqIHdpdGggSUQgZXF1YWwgdG8gdGhlIHNlbGVjdGVkIHR5cGUgSUQuIElmIGZvdW5kLCBpdCBpcyBhc3N1bWVkXHJcbiAqIHRoYXQgaXRzIHZhbHVlIGlzIGEgc3BhY2UtZGVsaW1pdGVkIGxpc3Qgb2YgbmFtZXMgb2YgdGhvc2VcclxuICogY29udHJvbHMgd2hpY2ggc2hvdWxkIGJlIGhpZGRlbi5cclxuICogVGhpcyBsb2dpYyBpcyBlZmZlY3RpdmVseSBpbXBsZW1lbnRlZCBieVxyXG4gKiBDb2REZWNvcmF0aW9uRWxlbWVudENvbXBvbmVudC5cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLWNvZC1kZWNvcmF0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29kLWRlY29yYXRpb24uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvZC1kZWNvcmF0aW9uLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvZERlY29yYXRpb25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZsYWdBZGFwdGVyOiBGbGFnc1BpY2tlckFkYXB0ZXI7XHJcbiAgcHJpdmF0ZSBfZGVjb3JhdGlvbjogQ29kRGVjb3JhdGlvbiB8IHVuZGVmaW5lZDtcclxuICBwcml2YXRlIF9kZWNGbGFnRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IGRlY29yYXRpb24oKTogQ29kRGVjb3JhdGlvbiB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGVjb3JhdGlvbjtcclxuICB9XHJcbiAgcHVibGljIHNldCBkZWNvcmF0aW9uKHZhbHVlOiBDb2REZWNvcmF0aW9uIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy5fZGVjb3JhdGlvbiA9PT0gdmFsdWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGVjb3JhdGlvbiA9IHZhbHVlO1xyXG4gICAgdGhpcy51cGRhdGVGb3JtKHZhbHVlKTtcclxuICB9XHJcblxyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLWVsZW1lbnQtZmxhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWNFbGVtRmxhZ0VudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLWZsYWdzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IGRlY0ZsYWdFbnRyaWVzKCk6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2RlY0ZsYWdFbnRyaWVzO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGRlY0ZsYWdFbnRyaWVzKHZhbHVlOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy5fZGVjRmxhZ0VudHJpZXMgPT09IHZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2RlY0ZsYWdFbnRyaWVzID0gdmFsdWUgfHwgW107XHJcbiAgICB0aGlzLl9mbGFnQWRhcHRlci5zZXRTbG90RmxhZ3MoXHJcbiAgICAgICdmbGFncycsXHJcbiAgICAgIHRoaXMuX2RlY0ZsYWdFbnRyaWVzLm1hcChlbnRyeVRvRmxhZylcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvLyBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LXR5cGVzIChyZXF1aXJlZClcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWNFbGVtVHlwZUVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcbiAgLy8gY29kLWRlY29yYXRpb24tdHlwZS1oaWRkZW5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWNUeXBlSGlkZGVuRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICAvLyBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LWNvbG9yc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRlY0VsZW1Db2xvckVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcbiAgLy8gY29kLWRlY29yYXRpb24tZWxlbWVudC1naWxkaW5nc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRlY0VsZW1HaWxkaW5nRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICAvLyBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LXRlY2huaXF1ZXNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWNFbGVtVGVjaEVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcbiAgLy8gY29kLWRlY29yYXRpb24tZWxlbWVudC1wb3NpdGlvbnNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkZWNFbGVtUG9zRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICAvLyBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LXRvb2xzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVjRWxlbVRvb2xFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLWVsZW1lbnQtdHlwb2xvZ2llc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGRlY0VsZW1UeXBvbEVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcbiAgLy8gY29kLWltYWdlLXR5cGVzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgaW1nVHlwZUVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcbiAgLy8gY29kLWRlY29yYXRpb24tYXJ0aXN0LXR5cGVzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYXJ0VHlwZUVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcbiAgLy8gY29kLWRlY29yYXRpb24tYXJ0aXN0LXN0eWxlLW5hbWVzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgYXJ0U3R5bGVFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIC8vIGNocm9ub3RvcGUtdGFnc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGN0VGFnRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICAvLyBhc3NlcnRpb24tdGFnc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGFzc1RhZ0VudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcbiAgLy8gZG9jLXJlZmVyZW5jZS10eXBlc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlZlR5cGVFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIC8vIGRvYy1yZWZlcmVuY2UtdGFnc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlZlRhZ0VudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcbiAgLy8gZXh0ZXJuYWwtaWQtdGFnc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGlkVGFnRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICAvLyBleHRlcm5hbC1pZC1zY29wZXNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpZFNjb3BlRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGRlY29yYXRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDb2REZWNvcmF0aW9uPjtcclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZWRpdG9yQ2xvc2U6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG5cclxuICBwdWJsaWMgZWlkOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcclxuICBwdWJsaWMgbmFtZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XHJcbiAgcHVibGljIGZsYWdzOiBGb3JtQ29udHJvbDxGbGFnW10+O1xyXG4gIHB1YmxpYyBjaHJvbm90b3BlczogRm9ybUNvbnRyb2w8QXNzZXJ0ZWRDaHJvbm90b3BlW10+O1xyXG4gIHB1YmxpYyBhcnRpc3RzOiBGb3JtQ29udHJvbDxDb2REZWNvcmF0aW9uQXJ0aXN0W10+O1xyXG4gIHB1YmxpYyBub3RlOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcclxuICBwdWJsaWMgcmVmZXJlbmNlczogRm9ybUNvbnRyb2w8RG9jUmVmZXJlbmNlW10+O1xyXG4gIHB1YmxpYyBlbGVtZW50czogRm9ybUNvbnRyb2w8Q29kRGVjb3JhdGlvbkVsZW1lbnRbXT47XHJcbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgcHVibGljIGVkaXRlZEVsZW1lbnRJbmRleDogbnVtYmVyO1xyXG4gIHB1YmxpYyBlZGl0ZWRFbGVtZW50OiBDb2REZWNvcmF0aW9uRWxlbWVudCB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgcGFyZW50S2V5czogc3RyaW5nW107XHJcblxyXG4gIHB1YmxpYyBlZGl0ZWRBcnRpc3RJbmRleDogbnVtYmVyO1xyXG4gIHB1YmxpYyBlZGl0ZWRBcnRpc3Q/OiBDb2REZWNvcmF0aW9uQXJ0aXN0O1xyXG5cclxuICBwdWJsaWMgZWRpdG9yT3B0aW9ucyA9IHtcclxuICAgIHRoZW1lOiAndnMtbGlnaHQnLFxyXG4gICAgbGFuZ3VhZ2U6ICdtYXJrZG93bicsXHJcbiAgICB3b3JkV3JhcDogJ29uJyxcclxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hdHVsYXJlbi9uZ3gtbW9uYWNvLWVkaXRvci9pc3N1ZXMvMTlcclxuICAgIGF1dG9tYXRpY0xheW91dDogdHJ1ZSxcclxuICB9O1xyXG5cclxuICAvLyBmbGFnc1xyXG4gIHB1YmxpYyBkZWNGbGFncyQ6IE9ic2VydmFibGU8RmxhZ1tdPjtcclxuXHJcbiAgY29uc3RydWN0b3IoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLmVkaXRlZEVsZW1lbnRJbmRleCA9IC0xO1xyXG4gICAgdGhpcy5wYXJlbnRLZXlzID0gW107XHJcbiAgICB0aGlzLmVkaXRlZEFydGlzdEluZGV4ID0gLTE7XHJcbiAgICB0aGlzLmRlY29yYXRpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENvZERlY29yYXRpb24+KCk7XHJcbiAgICB0aGlzLmVkaXRvckNsb3NlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICAvLyBmbGFnc1xyXG4gICAgdGhpcy5fZmxhZ0FkYXB0ZXIgPSBuZXcgRmxhZ3NQaWNrZXJBZGFwdGVyKCk7XHJcbiAgICB0aGlzLmRlY0ZsYWdzJCA9IHRoaXMuX2ZsYWdBZGFwdGVyLnNlbGVjdEZsYWdzKCdmbGFncycpO1xyXG4gICAgLy8gZm9ybVxyXG4gICAgdGhpcy5laWQgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCkpO1xyXG4gICAgdGhpcy5uYW1lID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBbXHJcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSxcclxuICAgIF0pO1xyXG4gICAgdGhpcy5mbGFncyA9IGZvcm1CdWlsZGVyLmNvbnRyb2woW10sIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XHJcbiAgICB0aGlzLmNocm9ub3RvcGVzID0gZm9ybUJ1aWxkZXIuY29udHJvbChbXSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcclxuICAgIHRoaXMuYXJ0aXN0cyA9IGZvcm1CdWlsZGVyLmNvbnRyb2woW10sIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XHJcbiAgICB0aGlzLm5vdGUgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMDApKTtcclxuICAgIHRoaXMucmVmZXJlbmNlcyA9IGZvcm1CdWlsZGVyLmNvbnRyb2woW10sIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XHJcbiAgICB0aGlzLmVsZW1lbnRzID0gZm9ybUJ1aWxkZXIuY29udHJvbChbXSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcclxuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgZWlkOiB0aGlzLmVpZCxcclxuICAgICAgbmFtZTogdGhpcy5uYW1lLFxyXG4gICAgICBmbGFnczogdGhpcy5mbGFncyxcclxuICAgICAgY2hyb25vdG9wZXM6IHRoaXMuY2hyb25vdG9wZXMsXHJcbiAgICAgIGFydGlzdHM6IHRoaXMuYXJ0aXN0cyxcclxuICAgICAgbm90ZTogdGhpcy5ub3RlLFxyXG4gICAgICByZWZlcmVuY2VzOiB0aGlzLnJlZmVyZW5jZXMsXHJcbiAgICAgIGVsZW1lbnRzOiB0aGlzLmVsZW1lbnRzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlRm9ybShkZWNvcmF0aW9uOiBDb2REZWNvcmF0aW9uIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICBpZiAoIWRlY29yYXRpb24pIHtcclxuICAgICAgdGhpcy5mb3JtLnJlc2V0KCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNocm9ub3RvcGVzLnNldFZhbHVlKGRlY29yYXRpb24uY2hyb25vdG9wZXMgfHwgW10pO1xyXG4gICAgdGhpcy5yZWZlcmVuY2VzLnNldFZhbHVlKGRlY29yYXRpb24ucmVmZXJlbmNlcyB8fCBbXSk7XHJcbiAgICB0aGlzLmZsYWdzLnNldFZhbHVlKFxyXG4gICAgICB0aGlzLl9mbGFnQWRhcHRlci5zZXRTbG90Q2hlY2tzKCdmbGFncycsIGRlY29yYXRpb24uZmxhZ3MgfHwgW10pXHJcbiAgICApO1xyXG4gICAgdGhpcy5laWQuc2V0VmFsdWUoZGVjb3JhdGlvbi5laWQgfHwgbnVsbCk7XHJcbiAgICB0aGlzLm5hbWUuc2V0VmFsdWUoZGVjb3JhdGlvbi5uYW1lKTtcclxuICAgIHRoaXMubm90ZS5zZXRWYWx1ZShkZWNvcmF0aW9uLm5vdGUgfHwgbnVsbCk7XHJcbiAgICB0aGlzLmFydGlzdHMuc2V0VmFsdWUoZGVjb3JhdGlvbi5hcnRpc3RzIHx8IFtdKTtcclxuICAgIHRoaXMuZWxlbWVudHMuc2V0VmFsdWUoZGVjb3JhdGlvbi5lbGVtZW50cyB8fCBbXSk7XHJcbiAgICB0aGlzLnVwZGF0ZVBhcmVudEtleXMoKTtcclxuXHJcbiAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNocm9ub3RvcGVzQ2hhbmdlKGNocm9ub3RvcGVzOiBBc3NlcnRlZENocm9ub3RvcGVbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5jaHJvbm90b3Blcy5zZXRWYWx1ZShjaHJvbm90b3Blcyk7XHJcbiAgICB0aGlzLmNocm9ub3RvcGVzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuY2hyb25vdG9wZXMubWFya0FzRGlydHkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblJlZmVyZW5jZXNDaGFuZ2UocmVmZXJlbmNlczogRG9jUmVmZXJlbmNlW10pOiB2b2lkIHtcclxuICAgIHRoaXMucmVmZXJlbmNlcy5zZXRWYWx1ZShyZWZlcmVuY2VzKTtcclxuICAgIHRoaXMucmVmZXJlbmNlcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLnJlZmVyZW5jZXMubWFya0FzRGlydHkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkZsYWdzQ2hhbmdlKGZsYWdzOiBGbGFnW10pOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RGbGFncygnZmxhZ3MnLCBmbGFncywgdHJ1ZSk7XHJcbiAgICB0aGlzLmZsYWdzLnNldFZhbHVlKGZsYWdzKTtcclxuICAgIHRoaXMuZmxhZ3MudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5mbGFncy5tYXJrQXNEaXJ0eSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREZWNvcmF0aW9uKCk6IENvZERlY29yYXRpb24ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgZWlkOiB0aGlzLmVpZC52YWx1ZT8udHJpbSgpLFxyXG4gICAgICBuYW1lOiB0aGlzLm5hbWUudmFsdWU/LnRyaW0oKSB8fCAnJyxcclxuICAgICAgZmxhZ3M6IHRoaXMuX2ZsYWdBZGFwdGVyLmdldE9wdGlvbmFsQ2hlY2tlZEZsYWdJZHMoJ2ZsYWdzJyksXHJcbiAgICAgIGNocm9ub3RvcGVzOiB0aGlzLmNocm9ub3RvcGVzLnZhbHVlPy5sZW5ndGhcclxuICAgICAgICA/IHRoaXMuY2hyb25vdG9wZXMudmFsdWVcclxuICAgICAgICA6IHVuZGVmaW5lZCxcclxuICAgICAgcmVmZXJlbmNlczogdGhpcy5yZWZlcmVuY2VzLnZhbHVlPy5sZW5ndGhcclxuICAgICAgICA/IHRoaXMucmVmZXJlbmNlcy52YWx1ZVxyXG4gICAgICAgIDogdW5kZWZpbmVkLFxyXG4gICAgICBhcnRpc3RzOiB0aGlzLmFydGlzdHMudmFsdWU/Lmxlbmd0aCA/IHRoaXMuYXJ0aXN0cy52YWx1ZSA6IHVuZGVmaW5lZCxcclxuICAgICAgbm90ZTogdGhpcy5ub3RlLnZhbHVlPy50cmltKCksXHJcbiAgICAgIGVsZW1lbnRzOiB0aGlzLmVsZW1lbnRzLnZhbHVlPy5sZW5ndGggPyB0aGlzLmVsZW1lbnRzLnZhbHVlIDogdW5kZWZpbmVkLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBlbGVtZW50c1xyXG4gIHB1YmxpYyBhZGRFbGVtZW50KCk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0RWxlbWVudCh7XHJcbiAgICAgIHR5cGU6IHRoaXMuZGVjRWxlbVR5cGVFbnRyaWVzPy5sZW5ndGhcclxuICAgICAgICA/IHRoaXMuZGVjRWxlbVR5cGVFbnRyaWVzWzBdLmlkXHJcbiAgICAgICAgOiAnJyxcclxuICAgICAgZmxhZ3M6IFtdLFxyXG4gICAgICByYW5nZXM6IFtdLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZWRpdEVsZW1lbnQoZWxlbWVudDogQ29kRGVjb3JhdGlvbkVsZW1lbnQgfCBudWxsLCBpbmRleCA9IC0xKTogdm9pZCB7XHJcbiAgICBpZiAoIWVsZW1lbnQpIHtcclxuICAgICAgdGhpcy5lZGl0ZWRFbGVtZW50SW5kZXggPSAtMTtcclxuICAgICAgdGhpcy5lZGl0ZWRFbGVtZW50ID0gdW5kZWZpbmVkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lZGl0ZWRFbGVtZW50SW5kZXggPSBpbmRleDtcclxuICAgICAgdGhpcy5lZGl0ZWRFbGVtZW50ID0gZWxlbWVudDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdXBkYXRlUGFyZW50S2V5cygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5lbGVtZW50cy52YWx1ZT8ubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMucGFyZW50S2V5cyA9IFtdO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBsZXQga2V5czogc3RyaW5nW10gPSB0aGlzLmVsZW1lbnRzLnZhbHVlLm1hcChcclxuICAgICAgKGU6IENvZERlY29yYXRpb25FbGVtZW50KSA9PiBlLmtleSFcclxuICAgICk7XHJcbiAgICB0aGlzLnBhcmVudEtleXMgPSBbLi4ubmV3IFNldChrZXlzKV0uc29ydCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRWxlbWVudFNhdmUoZWxlbWVudDogQ29kRGVjb3JhdGlvbkVsZW1lbnQpOiB2b2lkIHtcclxuICAgIGNvbnN0IGVsZW1lbnRzID0gWy4uLnRoaXMuZWxlbWVudHMudmFsdWVdO1xyXG5cclxuICAgIGlmICh0aGlzLmVkaXRlZEVsZW1lbnRJbmRleCA+IC0xKSB7XHJcbiAgICAgIGVsZW1lbnRzLnNwbGljZSh0aGlzLmVkaXRlZEVsZW1lbnRJbmRleCwgMSwgZWxlbWVudCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBlbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZWxlbWVudHMuc2V0VmFsdWUoZWxlbWVudHMpO1xyXG4gICAgdGhpcy5lbGVtZW50cy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLmVsZW1lbnRzLm1hcmtBc0RpcnR5KCk7XHJcbiAgICB0aGlzLmVkaXRFbGVtZW50KG51bGwpO1xyXG4gICAgdGhpcy51cGRhdGVQYXJlbnRLZXlzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVtb3ZlRWxlbWVudChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlXHJcbiAgICAgIC5jb25maXJtKCdDb25maXJtYXRpb24nLCAnRGVsZXRlIGVsZW1lbnQ/JylcclxuICAgICAgLnBpcGUodGFrZSgxKSlcclxuICAgICAgLnN1YnNjcmliZSgoeWVzOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgaWYgKHllcykge1xyXG4gICAgICAgICAgY29uc3QgaXRlbXMgPSBbLi4udGhpcy5lbGVtZW50cy52YWx1ZV07XHJcbiAgICAgICAgICBpdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgdGhpcy5lbGVtZW50cy5zZXRWYWx1ZShpdGVtcyk7XHJcbiAgICAgICAgICB0aGlzLmVsZW1lbnRzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgIHRoaXMuZWxlbWVudHMubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgIHRoaXMudXBkYXRlUGFyZW50S2V5cygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbW92ZUVsZW1lbnRVcChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoaW5kZXggPCAxKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmVsZW1lbnRzLnZhbHVlW2luZGV4XTtcclxuICAgIGNvbnN0IGl0ZW1zID0gWy4uLnRoaXMuZWxlbWVudHMudmFsdWVdO1xyXG4gICAgaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIGl0ZW1zLnNwbGljZShpbmRleCAtIDEsIDAsIGl0ZW0pO1xyXG4gICAgdGhpcy5lbGVtZW50cy5zZXRWYWx1ZShpdGVtcyk7XHJcbiAgICB0aGlzLmVsZW1lbnRzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuZWxlbWVudHMubWFya0FzRGlydHkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBtb3ZlRWxlbWVudERvd24oaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGluZGV4ICsgMSA+PSB0aGlzLmVsZW1lbnRzLnZhbHVlLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5lbGVtZW50cy52YWx1ZVtpbmRleF07XHJcbiAgICBjb25zdCBpdGVtcyA9IFsuLi50aGlzLmVsZW1lbnRzLnZhbHVlXTtcclxuICAgIGl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICBpdGVtcy5zcGxpY2UoaW5kZXggKyAxLCAwLCBpdGVtKTtcclxuICAgIHRoaXMuZWxlbWVudHMuc2V0VmFsdWUoaXRlbXMpO1xyXG4gICAgdGhpcy5lbGVtZW50cy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLmVsZW1lbnRzLm1hcmtBc0RpcnR5KCk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gYXJ0aXN0c1xyXG4gIHB1YmxpYyBhZGRBcnRpc3QoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRBcnRpc3Qoe1xyXG4gICAgICB0eXBlOiB0aGlzLmFydFR5cGVFbnRyaWVzPy5sZW5ndGggPyB0aGlzLmFydFR5cGVFbnRyaWVzWzBdLmlkIDogJycsXHJcbiAgICAgIG5hbWU6ICcnLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZWRpdEFydGlzdChhcnRpc3Q6IENvZERlY29yYXRpb25BcnRpc3QgfCBudWxsLCBpbmRleCA9IC0xKTogdm9pZCB7XHJcbiAgICBpZiAoIWFydGlzdCkge1xyXG4gICAgICB0aGlzLmVkaXRlZEFydGlzdEluZGV4ID0gLTE7XHJcbiAgICAgIHRoaXMuZWRpdGVkQXJ0aXN0ID0gdW5kZWZpbmVkO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5lZGl0ZWRBcnRpc3RJbmRleCA9IGluZGV4O1xyXG4gICAgICB0aGlzLmVkaXRlZEFydGlzdCA9IGFydGlzdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkFydGlzdFNhdmUoYXJ0aXN0OiBDb2REZWNvcmF0aW9uQXJ0aXN0KTogdm9pZCB7XHJcbiAgICBjb25zdCBhcnRpc3RzID0gWy4uLnRoaXMuYXJ0aXN0cy52YWx1ZV07XHJcblxyXG4gICAgaWYgKHRoaXMuZWRpdGVkQXJ0aXN0SW5kZXggPiAtMSkge1xyXG4gICAgICBhcnRpc3RzLnNwbGljZSh0aGlzLmVkaXRlZEFydGlzdEluZGV4LCAxLCBhcnRpc3QpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgYXJ0aXN0cy5wdXNoKGFydGlzdCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5hcnRpc3RzLnNldFZhbHVlKGFydGlzdHMpO1xyXG4gICAgdGhpcy5hcnRpc3RzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuYXJ0aXN0cy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgdGhpcy5lZGl0QXJ0aXN0KG51bGwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZUFydGlzdChpbmRleDogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLl9kaWFsb2dTZXJ2aWNlXHJcbiAgICAgIC5jb25maXJtKCdDb25maXJtYXRpb24nLCAnRGVsZXRlIGFydGlzdD8nKVxyXG4gICAgICAucGlwZSh0YWtlKDEpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh5ZXMpID0+IHtcclxuICAgICAgICBpZiAoeWVzKSB7XHJcbiAgICAgICAgICBjb25zdCBpdGVtcyA9IFsuLi50aGlzLmFydGlzdHMudmFsdWVdO1xyXG4gICAgICAgICAgaXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgIHRoaXMuYXJ0aXN0cy5zZXRWYWx1ZShpdGVtcyk7XHJcbiAgICAgICAgICB0aGlzLmFydGlzdHMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgdGhpcy5hcnRpc3RzLm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBtb3ZlQXJ0aXN0VXAoaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKGluZGV4IDwgMSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5hcnRpc3RzLnZhbHVlW2luZGV4XTtcclxuICAgIGNvbnN0IGl0ZW1zID0gWy4uLnRoaXMuYXJ0aXN0cy52YWx1ZV07XHJcbiAgICBpdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgaXRlbXMuc3BsaWNlKGluZGV4IC0gMSwgMCwgaXRlbSk7XHJcbiAgICB0aGlzLmFydGlzdHMuc2V0VmFsdWUoaXRlbXMpO1xyXG4gICAgdGhpcy5hcnRpc3RzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuYXJ0aXN0cy5tYXJrQXNEaXJ0eSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG1vdmVBcnRpc3REb3duKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChpbmRleCArIDEgPj0gdGhpcy5hcnRpc3RzLnZhbHVlLmxlbmd0aCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5hcnRpc3RzLnZhbHVlW2luZGV4XTtcclxuICAgIGNvbnN0IGl0ZW1zID0gWy4uLnRoaXMuYXJ0aXN0cy52YWx1ZV07XHJcbiAgICBpdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgaXRlbXMuc3BsaWNlKGluZGV4ICsgMSwgMCwgaXRlbSk7XHJcbiAgICB0aGlzLmFydGlzdHMuc2V0VmFsdWUoaXRlbXMpO1xyXG4gICAgdGhpcy5hcnRpc3RzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuYXJ0aXN0cy5tYXJrQXNEaXJ0eSgpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgcHVibGljIGNhbmNlbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZWRpdG9yQ2xvc2UuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNhdmUoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtLmludmFsaWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZGVjb3JhdGlvbiA9IHRoaXMuZ2V0RGVjb3JhdGlvbigpO1xyXG4gICAgdGhpcy5kZWNvcmF0aW9uQ2hhbmdlLmVtaXQodGhpcy5fZGVjb3JhdGlvbik7XHJcbiAgfVxyXG59XHJcbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybVwiIChzdWJtaXQpPVwic2F2ZSgpXCI+XHJcbiAgPGRpdj5cclxuICAgIDwhLS0gaWQgLS0+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtbGFiZWw+SUQ8L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJlaWRcIiAvPlxyXG4gICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgKm5nSWY9XCIkYW55KGVpZCkuZXJyb3JzPy5yZXF1aXJlZCAmJiAoZWlkLmRpcnR5IHx8IGVpZC50b3VjaGVkKVwiXHJcbiAgICAgICAgPkVJRCByZXF1aXJlZDwvbWF0LWVycm9yXHJcbiAgICAgID5cclxuICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICpuZ0lmPVwiJGFueShlaWQpLmVycm9ycz8ubWF4TGVuZ3RoICYmIChlaWQuZGlydHkgfHwgZWlkLnRvdWNoZWQpXCJcclxuICAgICAgICA+RUlEIHRvbyBsb25nPC9tYXQtZXJyb3JcclxuICAgICAgPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICZuYnNwO1xyXG4gICAgPCEtLSBuYW1lIC0tPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWxhYmVsPm5hbWU8L21hdC1sYWJlbD5cclxuICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJuYW1lXCIgLz5cclxuICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICpuZ0lmPVwiJGFueShuYW1lKS5lcnJvcnM/LnJlcXVpcmVkICYmIChuYW1lLmRpcnR5IHx8IG5hbWUudG91Y2hlZClcIlxyXG4gICAgICAgID5uYW1lIHJlcXVpcmVkPC9tYXQtZXJyb3JcclxuICAgICAgPlxyXG4gICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgKm5nSWY9XCIkYW55KG5hbWUpLmVycm9ycz8ubWF4TGVuZ3RoICYmIChuYW1lLmRpcnR5IHx8IG5hbWUudG91Y2hlZClcIlxyXG4gICAgICAgID5uYW1lIHRvbyBsb25nPC9tYXQtZXJyb3JcclxuICAgICAgPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLSBmbGFncyAtLT5cclxuICA8ZmllbGRzZXQ+XHJcbiAgICA8bGVnZW5kPmZlYXR1cmVzPC9sZWdlbmQ+XHJcbiAgICA8Y2FkbXVzLXVpLWZsYWdzLXBpY2tlclxyXG4gICAgICBbZmxhZ3NdPVwiZGVjRmxhZ3MkIHwgYXN5bmNcIlxyXG4gICAgICAoZmxhZ3NDaGFuZ2UpPVwib25GbGFnc0NoYW5nZSgkZXZlbnQpXCJcclxuICAgID48L2NhZG11cy11aS1mbGFncy1waWNrZXI+XHJcbiAgPC9maWVsZHNldD5cclxuXHJcbiAgPCEtLSBub3RlIC0tPlxyXG4gIDxiciAvPlxyXG4gIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImxvbmctdGV4dFwiPlxyXG4gICAgPG1hdC1sYWJlbD5ub3RlPC9tYXQtbGFiZWw+XHJcbiAgICA8dGV4dGFyZWEgcm93cz1cIjNcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwibm90ZVwiPjwvdGV4dGFyZWE+XHJcbiAgICA8bWF0LWVycm9yXHJcbiAgICAgICpuZ0lmPVwiJGFueShub3RlKS5lcnJvcnM/Lm1heExlbmd0aCAmJiAobm90ZS5kaXJ0eSB8fCBub3RlLnRvdWNoZWQpXCJcclxuICAgICAgPm5vdGUgdG9vIGxvbmc8L21hdC1lcnJvclxyXG4gICAgPlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gIDwhLS0gY2hyb25vdG9wZXMgLS0+XHJcbiAgPG1hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgIDxtYXQtcGFuZWwtdGl0bGVcclxuICAgICAgICA+PG1hdC1pY29uIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA4cHg7IGNvbG9yOiAjMjRhNTI0XCJcclxuICAgICAgICAgID5ob3VyZ2xhc3NfZW1wdHk8L21hdC1pY29uXHJcbiAgICAgICAgPlxyXG4gICAgICAgIGNocm9ub3RvcGVzPC9tYXQtcGFuZWwtdGl0bGVcclxuICAgICAgPlxyXG4gICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgIDxjYWRtdXMtYXNzZXJ0ZWQtY2hyb25vdG9wZS1zZXRcclxuICAgICAgW3RhZ0VudHJpZXNdPVwiY3RUYWdFbnRyaWVzXCJcclxuICAgICAgW2Fzc1RhZ0VudHJpZXNdPVwiYXNzVGFnRW50cmllc1wiXHJcbiAgICAgIFtyZWZUYWdFbnRyaWVzXT1cInJlZlRhZ0VudHJpZXNcIlxyXG4gICAgICBbcmVmVHlwZUVudHJpZXNdPVwicmVmVHlwZUVudHJpZXNcIlxyXG4gICAgICBbY2hyb25vdG9wZXNdPVwiY2hyb25vdG9wZXMudmFsdWVcIlxyXG4gICAgICAoY2hyb25vdG9wZXNDaGFuZ2UpPVwib25DaHJvbm90b3Blc0NoYW5nZSgkZXZlbnQpXCJcclxuICAgID48L2NhZG11cy1hc3NlcnRlZC1jaHJvbm90b3BlLXNldD5cclxuICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblxyXG4gIDwhLS0gcmVmZXJlbmNlcyAtLT5cclxuICA8bWF0LWV4cGFuc2lvbi1wYW5lbD5cclxuICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgPG1hdC1wYW5lbC10aXRsZVxyXG4gICAgICAgID48bWF0LWljb24gc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDhweDsgY29sb3I6ICNiYjNkNmNcIlxyXG4gICAgICAgICAgPmxpYnJhcnlfYm9va3M8L21hdC1pY29uXHJcbiAgICAgICAgPlxyXG4gICAgICAgIHJlZmVyZW5jZXM8L21hdC1wYW5lbC10aXRsZVxyXG4gICAgICA+XHJcbiAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgPGNhZG11cy1yZWZzLWRvYy1yZWZlcmVuY2VzXHJcbiAgICAgIFt0YWdFbnRyaWVzXT1cInJlZlRhZ0VudHJpZXNcIlxyXG4gICAgICBbdHlwZUVudHJpZXNdPVwicmVmVHlwZUVudHJpZXNcIlxyXG4gICAgICBbcmVmZXJlbmNlc109XCJyZWZlcmVuY2VzLnZhbHVlXCJcclxuICAgICAgKHJlZmVyZW5jZXNDaGFuZ2UpPVwib25SZWZlcmVuY2VzQ2hhbmdlKCRldmVudClcIlxyXG4gICAgPjwvY2FkbXVzLXJlZnMtZG9jLXJlZmVyZW5jZXM+XHJcbiAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG5cclxuICA8IS0tIGFydGlzdHMgLS0+XHJcbiAgPG1hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgIDxtYXQtcGFuZWwtdGl0bGVcclxuICAgICAgICA+PG1hdC1pY29uIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA4cHg7IGNvbG9yOiAjZGRjZDQxXCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgYXJ0aXN0czwvbWF0LXBhbmVsLXRpdGxlXHJcbiAgICAgID5cclxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgbWF0LWZsYXQtYnV0dG9uXHJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAoY2xpY2spPVwiYWRkQXJ0aXN0KClcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPG1hdC1pY29uPmFkZF9jaXJjbGU8L21hdC1pY29uPiBhcnRpc3RcclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICAgIDx0YWJsZSAqbmdJZj1cImFydGlzdHM/LnZhbHVlPy5sZW5ndGhcIj5cclxuICAgICAgPHRoZWFkPlxyXG4gICAgICAgIDx0cj5cclxuICAgICAgICAgIDx0aD48L3RoPlxyXG4gICAgICAgICAgPHRoPnR5cGU8L3RoPlxyXG4gICAgICAgICAgPHRoPm5hbWU8L3RoPlxyXG4gICAgICAgICAgPHRoPkVJRDwvdGg+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90aGVhZD5cclxuICAgICAgPHRib2R5PlxyXG4gICAgICAgIDx0clxyXG4gICAgICAgICAgKm5nRm9yPVwiXHJcbiAgICAgICAgICAgIGxldCBhcnRpc3Qgb2YgYXJ0aXN0cz8udmFsdWU7XHJcbiAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XHJcbiAgICAgICAgICAgIGxldCBmaXJzdCA9IGZpcnN0O1xyXG4gICAgICAgICAgICBsZXQgbGFzdCA9IGxhc3RcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRWRpdCB0aGlzIGFydGlzdFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImVkaXRBcnRpc3QoYXJ0aXN0LCBpKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+ZWRpdDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk1vdmUgdGhpcyBhcnRpc3QgdXBcIlxyXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaXJzdFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVBcnRpc3RVcChpKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfdXB3YXJkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiTW92ZSB0aGlzIGFydGlzdCBkb3duXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibGFzdFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm1vdmVBcnRpc3REb3duKGkpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd19kb3dud2FyZDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcclxuICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiRGVsZXRlIHRoaXMgYXJ0aXN0XCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlQXJ0aXN0KGkpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIDxtYXQtaWNvbj5yZW1vdmVfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICB7eyBhcnRpc3QudHlwZSB8IGZsYXRMb29rdXAgOiBhcnRUeXBlRW50cmllcyA6IFwiaWRcIiA6IFwidmFsdWVcIiB9fVxyXG4gICAgICAgICAgPC90ZD5cclxuICAgICAgICAgIDx0ZD57eyBhcnRpc3QubmFtZSB9fTwvdGQ+XHJcbiAgICAgICAgICA8dGQ+e3sgYXJ0aXN0LmVpZCB9fTwvdGQ+XHJcbiAgICAgICAgPC90cj5cclxuICAgICAgPC90Ym9keT5cclxuICAgIDwvdGFibGU+XHJcbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbZXhwYW5kZWRdPVwiZWRpdGVkQXJ0aXN0XCIgW2Rpc2FibGVkXT1cIiFlZGl0ZWRBcnRpc3RcIj5cclxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+YXJ0aXN0IHt7IGVkaXRlZEFydGlzdD8ubmFtZSB9fTwvbWF0LXBhbmVsLXRpdGxlPlxyXG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG4gICAgICA8Y2FkbXVzLWNvZC1kZWNvcmF0aW9uLWFydGlzdFxyXG4gICAgICAgIFtjdFRhZ0VudHJpZXNdPVwiY3RUYWdFbnRyaWVzXCJcclxuICAgICAgICBbYXNzVGFnRW50cmllc109XCJhc3NUYWdFbnRyaWVzXCJcclxuICAgICAgICBbcmVmVGFnRW50cmllc109XCJyZWZUYWdFbnRyaWVzXCJcclxuICAgICAgICBbYXJ0VHlwZUVudHJpZXNdPVwiYXJ0VHlwZUVudHJpZXNcIlxyXG4gICAgICAgIFtyZWZUeXBlRW50cmllc109XCJyZWZUeXBlRW50cmllc1wiXHJcbiAgICAgICAgW2FydFN0eWxlRW50cmllc109XCJhcnRTdHlsZUVudHJpZXNcIlxyXG4gICAgICAgIFtpZFRhZ0VudHJpZXNdPVwiaWRUYWdFbnRyaWVzXCJcclxuICAgICAgICBbaWRTY29wZUVudHJpZXNdPVwiaWRTY29wZUVudHJpZXNcIlxyXG4gICAgICAgIFthcnRpc3RdPVwiZWRpdGVkQXJ0aXN0XCJcclxuICAgICAgICAoYXJ0aXN0Q2hhbmdlKT1cIm9uQXJ0aXN0U2F2ZSgkZXZlbnQpXCJcclxuICAgICAgICAoZWRpdG9yQ2xvc2UpPVwiZWRpdEFydGlzdChudWxsKVwiXHJcbiAgICAgID48L2NhZG11cy1jb2QtZGVjb3JhdGlvbi1hcnRpc3Q+XHJcbiAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG5cclxuICA8IS0tIGVsZW1lbnRzIC0tPlxyXG4gIDxoMz5lbGVtZW50czwvaDM+XHJcbiAgPGRpdj5cclxuICAgIDxidXR0b25cclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIG1hdC1mbGF0LWJ1dHRvblxyXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAoY2xpY2spPVwiYWRkRWxlbWVudCgpXCJcclxuICAgID5cclxuICAgICAgPG1hdC1pY29uPmFkZF9jaXJjbGU8L21hdC1pY29uPiBlbGVtZW50XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8dGFibGUgKm5nSWY9XCJlbGVtZW50cz8udmFsdWU/Lmxlbmd0aFwiPlxyXG4gICAgPHRoZWFkPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRoPjwvdGg+XHJcbiAgICAgICAgPHRoPmtleTwvdGg+XHJcbiAgICAgICAgPHRoPnBhcmVudDwvdGg+XHJcbiAgICAgICAgPHRoPnR5cGU8L3RoPlxyXG4gICAgICAgIDx0aD5zdWJqZWN0PC90aD5cclxuICAgICAgICA8dGg+ZXh0ZW50PC90aD5cclxuICAgICAgPC90cj5cclxuICAgIDwvdGhlYWQ+XHJcbiAgICA8dGJvZHk+XHJcbiAgICAgIDx0clxyXG4gICAgICAgICpuZ0Zvcj1cIlxyXG4gICAgICAgICAgbGV0IGVsZW1lbnQgb2YgZWxlbWVudHM/LnZhbHVlO1xyXG4gICAgICAgICAgbGV0IGkgPSBpbmRleDtcclxuICAgICAgICAgIGxldCBmaXJzdCA9IGZpcnN0O1xyXG4gICAgICAgICAgbGV0IGxhc3QgPSBsYXN0XHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIDx0ZD5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiRWRpdCB0aGlzIGVsZW1lbnRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZWRpdEVsZW1lbnQoZWxlbWVudCwgaSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+ZWRpdDwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiTW92ZSB0aGlzIGVsZW1lbnQgdXBcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmlyc3RcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwibW92ZUVsZW1lbnRVcChpKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5hcnJvd191cHdhcmQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIk1vdmUgdGhpcyBlbGVtZW50IGRvd25cIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwibGFzdFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJtb3ZlRWxlbWVudERvd24oaSlcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+YXJyb3dfZG93bndhcmQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgY29sb3I9XCJ3YXJuXCJcclxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cIkRlbGV0ZSB0aGlzIGVsZW1lbnRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRWxlbWVudChpKVwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5yZW1vdmVfY2lyY2xlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgPHRkPnt7IGVsZW1lbnQua2V5IH19PC90ZD5cclxuICAgICAgICA8dGQ+e3sgZWxlbWVudC5wYXJlbnRLZXkgfX08L3RkPlxyXG4gICAgICAgIDx0ZD5cclxuICAgICAgICAgIHt7IGVsZW1lbnQudHlwZSB8IGZsYXRMb29rdXAgOiBkZWNFbGVtVHlwZUVudHJpZXMgOiBcImlkXCIgOiBcInZhbHVlXCIgfX1cclxuICAgICAgICA8L3RkPlxyXG4gICAgICAgIDx0ZD57eyBlbGVtZW50LnN1YmplY3QgfX08L3RkPlxyXG4gICAgICAgIDx0ZD57eyBlbGVtZW50LnJhbmdlcyB8IGNvZExvY2F0aW9uUmFuZ2UgfX08L3RkPlxyXG4gICAgICA8L3RyPlxyXG4gICAgPC90Ym9keT5cclxuICA8L3RhYmxlPlxyXG5cclxuICA8IS0tIEVMRU1FTlQgLS0+XHJcbiAgPG1hdC1leHBhbnNpb24tcGFuZWwgW2Rpc2FibGVkXT1cIiFlZGl0ZWRFbGVtZW50XCIgW2V4cGFuZGVkXT1cImVkaXRlZEVsZW1lbnRcIj5cclxuICAgIDxjYWRtdXMtY29kLWRlY29yYXRpb24tZWxlbWVudFxyXG4gICAgICBbaW1nVHlwZUVudHJpZXNdPVwiaW1nVHlwZUVudHJpZXNcIlxyXG4gICAgICBbZGVjRWxlbVBvc0VudHJpZXNdPVwiZGVjRWxlbVBvc0VudHJpZXNcIlxyXG4gICAgICBbZGVjRWxlbUZsYWdFbnRyaWVzXT1cImRlY0VsZW1GbGFnRW50cmllc1wiXHJcbiAgICAgIFtkZWNFbGVtVGVjaEVudHJpZXNdPVwiZGVjRWxlbVRlY2hFbnRyaWVzXCJcclxuICAgICAgW2RlY0VsZW1Ub29sRW50cmllc109XCJkZWNFbGVtVG9vbEVudHJpZXNcIlxyXG4gICAgICBbZGVjRWxlbVR5cGVFbnRyaWVzXT1cImRlY0VsZW1UeXBlRW50cmllc1wiXHJcbiAgICAgIFtkZWNFbGVtQ29sb3JFbnRyaWVzXT1cImRlY0VsZW1Db2xvckVudHJpZXNcIlxyXG4gICAgICBbZGVjRWxlbVR5cG9sRW50cmllc109XCJkZWNFbGVtVHlwb2xFbnRyaWVzXCJcclxuICAgICAgW2RlY1R5cGVIaWRkZW5FbnRyaWVzXT1cImRlY1R5cGVIaWRkZW5FbnRyaWVzXCJcclxuICAgICAgW2RlY0VsZW1HaWxkaW5nRW50cmllc109XCJkZWNFbGVtR2lsZGluZ0VudHJpZXNcIlxyXG4gICAgICBbZWxlbWVudF09XCJlZGl0ZWRFbGVtZW50XCJcclxuICAgICAgW3BhcmVudEtleXNdPVwicGFyZW50S2V5c1wiXHJcbiAgICAgIChlbGVtZW50Q2hhbmdlKT1cIm9uRWxlbWVudFNhdmUoJGV2ZW50KVwiXHJcbiAgICAgIChlZGl0b3JDbG9zZSk9XCJlZGl0RWxlbWVudChudWxsKVwiXHJcbiAgICA+PC9jYWRtdXMtY29kLWRlY29yYXRpb24tZWxlbWVudD5cclxuICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcblxyXG4gIDwhLS0gYnV0dG9ucyAtLT5cclxuICA8aHIgLz5cclxuICA8ZGl2IGNsYXNzPVwidG9vbGJhci1yb3dcIj5cclxuICAgIDxidXR0b25cclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGNvbG9yPVwid2FyblwiXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICBtYXRUb29sdGlwPVwiRGlzY2FyZCBkZWNvcmF0aW9uIGNoYW5nZXNcIlxyXG4gICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICBtYXQtZmxhdC1idXR0b25cclxuICAgICAgbWF0VG9vbHRpcD1cIkFjY2VwdCBkZWNvcmF0aW9uIGNoYW5nZXNcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8IGZvcm0ucHJpc3RpbmVcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj4gZGVjb3JhdGlvblxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZm9ybT5cclxuIl19
@@ -242,22 +242,22 @@ export class CodDecorationElementComponent {
242
242
  this.lineHeight.reset();
243
243
  this.textRelation.reset();
244
244
  // filter entries for multiple-selections
245
- this._flagAdapter.setSlotFlags('flags', this.getFilteredEntries(this._elemFlagEntries, this.type.value)?.map(entryToFlag) || []);
246
- this._flagAdapter.setSlotFlags('colors', this.getFilteredEntries(this._elemColorEntries, this.type.value)?.map(entryToFlag) || []);
245
+ this.flags.setValue(this._flagAdapter.setSlotFlags('flags', this.getFilteredEntries(this._elemFlagEntries, this.type.value)?.map(entryToFlag) || []));
246
+ this.colors.setValue(this._flagAdapter.setSlotFlags('colors', this.getFilteredEntries(this._elemColorEntries, this.type.value)?.map(entryToFlag) || []));
247
247
  // filter entries and set free for single-entry groups with "any.-"
248
248
  let entries = this.getFilteredEntries(this._elemGildingEntries, this.type.value);
249
249
  this.elemGildingFree = this.isFreeSet(entries);
250
- this._flagAdapter.setSlotFlags('gildings', this.elemGildingFree ? [] : entries?.map(entryToFlag) || []);
250
+ this.gildings.setValue(this._flagAdapter.setSlotFlags('gildings', this.elemGildingFree ? [] : entries?.map(entryToFlag) || []));
251
251
  entries = this.getFilteredEntries(this._elemTechEntries, this.type.value);
252
252
  this.elemTechniqueFree = this.isFreeSet(entries);
253
- this._flagAdapter.setSlotFlags('techniques', this.elemTechniqueFree ? [] : entries?.map(entryToFlag) || []);
253
+ this.techniques.setValue(this._flagAdapter.setSlotFlags('techniques', this.elemTechniqueFree ? [] : entries?.map(entryToFlag) || []));
254
254
  entries = this.getFilteredEntries(this._elemPosEntries, this.type.value);
255
255
  this.elemPositionFree = this.isFreeSet(entries);
256
- this._flagAdapter.setSlotFlags('positions', this.elemPositionFree ? [] : entries?.map(entryToFlag) || []);
256
+ this.positions.setValue(this._flagAdapter.setSlotFlags('positions', this.elemPositionFree ? [] : entries?.map(entryToFlag) || []));
257
257
  entries = this.getFilteredEntries(this._elemToolEntries, this.type.value);
258
258
  this.elemToolFree = this.isFreeSet(entries);
259
- this._flagAdapter.setSlotFlags('tools', this.elemToolFree ? [] : entries?.map(entryToFlag) || []);
260
- this._flagAdapter.setSlotFlags('typologies', this.getFilteredEntries(this._elemTypolEntries, this.type.value)?.map(entryToFlag) || []);
259
+ this.tools.setValue(this._flagAdapter.setSlotFlags('tools', this.elemToolFree ? [] : entries?.map(entryToFlag) || []));
260
+ this.typologies.setValue(this._flagAdapter.setSlotFlags('typologies', this.getFilteredEntries(this._elemTypolEntries, this.type.value)?.map(entryToFlag) || []));
261
261
  // visibility
262
262
  this.updateVisibility();
263
263
  this._adjustingUI = false;
@@ -316,7 +316,7 @@ export class CodDecorationElementComponent {
316
316
  key: this.key.value?.trim(),
317
317
  parentKey: this.parentKey.value?.trim(),
318
318
  type: this.type.value?.trim() || '',
319
- flags: this.flags.value.filter((f) => f.checked).map((f) => f.id) || [],
319
+ flags: this._flagAdapter.getCheckedFlagIds('flags'),
320
320
  ranges: this.ranges.value || [],
321
321
  instanceCount: this.instanceCount.value || 0,
322
322
  typologies: this._flagAdapter.getOptionalCheckedFlagIds('typologies'),
@@ -454,4 +454,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
454
454
  }], imgTypeEntries: [{
455
455
  type: Input
456
456
  }] } });
457
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLWRlY29yYXRpb24tZWxlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtcGFydC1jb2RpY29sb2d5LWRlY29yYXRpb25zL3NyYy9saWIvY29kLWRlY29yYXRpb24tZWxlbWVudC9jb2QtZGVjb3JhdGlvbi1lbGVtZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2NhZG11cy1wYXJ0LWNvZGljb2xvZ3ktZGVjb3JhdGlvbnMvc3JjL2xpYi9jb2QtZGVjb3JhdGlvbi1lbGVtZW50L2NvZC1kZWNvcmF0aW9uLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUlMLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBSXhCLE9BQU8sRUFBUSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQWMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUJ0RSxTQUFTLFdBQVcsQ0FBQyxLQUFxQjtJQUN4QyxPQUFPO1FBQ0wsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFO1FBQ1osS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO0tBQ25CLENBQUM7QUFDSixDQUFDO0FBT0QsTUFBTSxPQUFPLDZCQUE2QjtJQStMeEMsWUFBWSxXQUF3QjtRQWpMN0Isa0JBQWEsR0FBRztZQUNyQixLQUFLLEVBQUUsVUFBVTtZQUNqQixRQUFRLEVBQUUsVUFBVTtZQUNwQixRQUFRLEVBQUUsSUFBSTtZQUNkLDBEQUEwRDtZQUMxRCxlQUFlLEVBQUUsSUFBSTtTQUN0QixDQUFDO1FBNEtBLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQXdCLENBQUM7UUFDOUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzNDLFFBQVE7UUFDUixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDNUIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksa0JBQWtCLEVBQUUsQ0FBQztRQUM3QyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pFLE9BQU87UUFDUCxJQUFJLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO1lBQ25DLFVBQVUsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUM7WUFDdEMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7U0FDekIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTtZQUN6QyxVQUFVLENBQUMsT0FBTyxDQUFDLGtCQUFrQixDQUFDO1lBQ3RDLFVBQVUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1NBQ3pCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUU7WUFDcEMsVUFBVSxDQUFDLFFBQVE7WUFDbkIsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7U0FDekIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLEtBQUssR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsYUFBYSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLElBQUksQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM3RCxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDL0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsU0FBUyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRTtZQUN2QyxVQUFVLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDN0IsV0FBVyxFQUFFLElBQUk7U0FDbEIsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQztZQUM1QixHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNqQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQS9PRCxJQUNXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFXLE9BQU8sQ0FBQyxLQUF1QztRQUN4RCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxFQUFFO1lBQzNCLE9BQU87U0FDUjtRQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFtREQsK0JBQStCO0lBQy9CLElBQ1csa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFXLGtCQUFrQixDQUFDLEtBQW1DO1FBQy9ELElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLEtBQUssRUFBRTtZQUNuQyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsZ0NBQWdDO0lBQ2hDLElBQ1csbUJBQW1CO1FBQzVCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7SUFDRCxJQUFXLG1CQUFtQixDQUFDLEtBQW1DO1FBQ2hFLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLEtBQUssRUFBRTtZQUNwQyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsa0NBQWtDO0lBQ2xDLElBQ1cscUJBQXFCO1FBQzlCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ2xDLENBQUM7SUFDRCxJQUFXLHFCQUFxQixDQUFDLEtBQW1DO1FBQ2xFLElBQUksSUFBSSxDQUFDLG1CQUFtQixLQUFLLEtBQUssRUFBRTtZQUN0QyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLElBQ1csa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFXLGtCQUFrQixDQUFDLEtBQW1DO1FBQy9ELElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLEtBQUssRUFBRTtZQUNuQyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsbUNBQW1DO0lBQ25DLElBQ1csaUJBQWlCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QixDQUFDO0lBQ0QsSUFBVyxpQkFBaUIsQ0FBQyxLQUFtQztRQUM5RCxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssS0FBSyxFQUFFO1lBQ2xDLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsK0JBQStCO0lBQy9CLElBQ1csa0JBQWtCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFDRCxJQUFXLGtCQUFrQixDQUFDLEtBQW1DO1FBQy9ELElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLEtBQUssRUFBRTtZQUNuQyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLElBQ1csbUJBQW1CO1FBQzVCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7SUFDRCxJQUFXLG1CQUFtQixDQUFDLEtBQW1DO1FBQ2hFLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLEtBQUssRUFBRTtZQUNwQyxPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBaUdEOzs7Ozs7O09BT0c7SUFDSyxTQUFTLENBQUMsT0FBcUM7UUFDckQsSUFBSSxPQUFPLEVBQUUsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUN6QixPQUFPLEtBQUssQ0FBQztTQUNkO1FBQ0QsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDeEMsT0FBTyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxDQUFDO0lBQ2xELENBQUM7SUFFTyxrQkFBa0IsQ0FDeEIsT0FBNEMsRUFDNUMsTUFBcUI7UUFFckIsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDNUQsT0FBTyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQzNDO1FBQ0QsTUFBTSxDQUFDLEdBQUcsTUFBTSxHQUFHLEdBQUcsQ0FBQztRQUN2QixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLGdCQUFnQjtRQUN0QixNQUFNLE1BQU0sR0FBUSxFQUFFLENBQUM7UUFDdkIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FDM0MsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQ2hDLENBQUM7UUFDRixJQUFJLEtBQUssRUFBRTtZQUNULE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNsQixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ25CLENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixPQUFPLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxRQUFRO1FBQ04sbUJBQW1CO1FBRW5CLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWTthQUNuQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDL0MsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUM3QyxPQUFPLENBQUMsR0FBRyxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQyxDQUFDO2dCQUM1QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDakI7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFTyxRQUFRO1FBQ2QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3JCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUM5Qiw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRTFCLHlDQUF5QztRQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FDNUIsT0FBTyxFQUNQLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxHQUFHLENBQ2xFLFdBQVcsQ0FDWixJQUFJLEVBQUUsQ0FDUixDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQzVCLFFBQVEsRUFDUixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUNuRSxXQUFXLENBQ1osSUFBSSxFQUFFLENBQ1IsQ0FBQztRQUVGLG1FQUFtRTtRQUNuRSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQ25DLElBQUksQ0FBQyxtQkFBbUIsRUFDeEIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQ2hCLENBQUM7UUFDRixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQzVCLFVBQVUsRUFDVixJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUM1RCxDQUFDO1FBRUYsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FDNUIsWUFBWSxFQUNaLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FDOUQsQ0FBQztRQUVGLE9BQU8sR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUM1QixXQUFXLEVBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUM3RCxDQUFDO1FBRUYsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxRSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQzVCLE9BQU8sRUFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUN6RCxDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQzVCLFlBQVksRUFDWixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUNuRSxXQUFXLENBQ1osSUFBSSxFQUFFLENBQ1IsQ0FBQztRQUVGLGFBQWE7UUFDYixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxPQUE2QjtRQUMxRCxPQUFPLENBQUMsR0FBRyxDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFeEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXJDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFeEQsYUFBYTtRQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLENBQUM7UUFFL0MsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsVUFBVSxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM5RSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDMUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzlFLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwRSxJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFNUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ3pELGNBQWM7UUFDZCxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztRQUV6QyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRU8sVUFBVSxDQUFDLE9BQXlDO1FBQzFELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQztZQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDL0IsT0FBTztTQUNSO1FBQ0QsVUFBVTtRQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUN2RCxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2Qsa0VBQWtFO1lBQ2xFLE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsOEJBQThCO1lBQzlCLFVBQVUsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxxQkFBcUI7UUFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE9BQU87WUFDTCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFO1lBQzNCLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDdkMsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDbkMsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUU7WUFDdkUsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDL0IsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLENBQUM7WUFDNUMsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMseUJBQXlCLENBQUMsWUFBWSxDQUFDO1lBQ3JFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDbkMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDO1lBQzdELFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLFVBQVUsQ0FBQztZQUNqRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQyxZQUFZLENBQUM7WUFDckUsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMseUJBQXlCLENBQUMsT0FBTyxDQUFDO1lBQzNELFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLHlCQUF5QixDQUFDLFdBQVcsQ0FBQztZQUNuRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLO1lBQ2pDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUU7WUFDN0MsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRTtZQUMzQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUztZQUNqRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFO1NBQzlCLENBQUM7SUFDSixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsTUFBaUM7UUFDdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxjQUFjLENBQUMsTUFBOEI7UUFDbEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNyQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBYTtRQUNoQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0scUJBQXFCLENBQUMsS0FBYTtRQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0sa0JBQWtCLENBQUMsS0FBYTtRQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRU0sb0JBQW9CLENBQUMsS0FBYTtRQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU0sc0JBQXNCLENBQUMsS0FBYTtRQUN6QyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRU0saUJBQWlCLENBQUMsS0FBYTtRQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsS0FBSyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU0scUJBQXFCLENBQUMsS0FBYTtRQUN4QyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3pELElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRU0sTUFBTTtRQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLElBQUk7UUFDVCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3JCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6QyxDQUFDOzswSEFuakJVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLHd0QkN2RDFDLHEwUkFvUUE7MkZEN01hLDZCQUE2QjtrQkFMekMsU0FBUzsrQkFDRSwrQkFBK0I7a0dBaUJFLFNBQVM7c0JBQW5ELFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFVOUIsT0FBTztzQkFEakIsS0FBSztnQkFjQyxVQUFVO3NCQURoQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLE1BQU07Z0JBR0EsV0FBVztzQkFEakIsTUFBTTtnQkF1Q0Esa0JBQWtCO3NCQUR4QixLQUFLO2dCQUlDLG9CQUFvQjtzQkFEMUIsS0FBSztnQkFLSyxrQkFBa0I7c0JBRDVCLEtBQUs7Z0JBYUssbUJBQW1CO3NCQUQ3QixLQUFLO2dCQWFLLHFCQUFxQjtzQkFEL0IsS0FBSztnQkFhSyxrQkFBa0I7c0JBRDVCLEtBQUs7Z0JBYUssaUJBQWlCO3NCQUQzQixLQUFLO2dCQWFLLGtCQUFrQjtzQkFENUIsS0FBSztnQkFhSyxtQkFBbUI7c0JBRDdCLEtBQUs7Z0JBYUMsY0FBYztzQkFEcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvZExvY2F0aW9uUmFuZ2UgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLWNvZC1sb2NhdGlvbic7XHJcbmltcG9ydCB7IENvZEltYWdlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1jb2RpY29sb2d5LXVpJztcclxuaW1wb3J0IHsgVGhlc2F1cnVzRW50cnkgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLWNvcmUnO1xyXG5pbXBvcnQgeyBGbGFnLCBGbGFnc1BpY2tlckFkYXB0ZXIgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLXVpLWZsYWdzLXBpY2tlcic7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IENvZERlY29yYXRpb25FbGVtZW50IH0gZnJvbSAnLi4vY29kLWRlY29yYXRpb25zLXBhcnQnO1xyXG5cclxuLyoqXHJcbiAqIExpc3Qgb2YgaGlkZGVuIGZpZWxkcyBpbiBkZWNvcmF0aW9uIGVsZW1lbnQgY29tcG9uZW50LlxyXG4gKiBUaGlzIGlzIHNldCBieSBleGFtaW5pbmcgdGhlIHZhbHVlcyBvZiB0aGUgdGhlc2F1cnVzXHJcbiAqIG5hbWVkIFwiY29kLWRlY29yYXRpb24tdHlwZS1oaWRkZW5cIiBoYXZpbmcgYXMga2V5IHRoZVxyXG4gKiBlbGVtZW50IHR5cGUgSUQgKGUuZy4gXCJwYWctaW5jXCIpLCBhbmQgYXMgdmFsdWUgYSBzcGFjZVxyXG4gKiBkZWxpbWl0ZWQgbGlzdCBvZiBmaWVsZCBuYW1lcy4gRWFjaCBvZiB0aGVzZSBmaWVsZCBuYW1lc1xyXG4gKiBjb3JyZXNwb25kcyB0byBhIHByb3BlcnR5IG9mIHRoaXMgb2JqZWN0LlxyXG4gKi9cclxuaW50ZXJmYWNlIEhpZGRlbkRlY0VsZW1GaWVsZHMge1xyXG4gIGZsYWdzPzogYm9vbGVhbjtcclxuICB0eXBvbG9naWVzPzogYm9vbGVhbjtcclxuICBzdWJqZWN0PzogYm9vbGVhbjtcclxuICBjb2xvcnM/OiBib29sZWFuO1xyXG4gIGdpbGRpbmdzPzogYm9vbGVhbjtcclxuICB0ZWNobmlxdWVzPzogYm9vbGVhbjtcclxuICB0b29scz86IGJvb2xlYW47XHJcbiAgcG9zaXRpb25zPzogYm9vbGVhbjtcclxuICBsaW5lSGVpZ2h0PzogYm9vbGVhbjtcclxuICB0ZXh0UmVsYXRpb24/OiBib29sZWFuO1xyXG59XHJcblxyXG5mdW5jdGlvbiBlbnRyeVRvRmxhZyhlbnRyeTogVGhlc2F1cnVzRW50cnkpOiBGbGFnIHtcclxuICByZXR1cm4ge1xyXG4gICAgaWQ6IGVudHJ5LmlkLFxyXG4gICAgbGFiZWw6IGVudHJ5LnZhbHVlLFxyXG4gIH07XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLWNvZC1kZWNvcmF0aW9uLWVsZW1lbnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2QtZGVjb3JhdGlvbi1lbGVtZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb2QtZGVjb3JhdGlvbi1lbGVtZW50LmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvZERlY29yYXRpb25FbGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9mbGFnQWRhcHRlcjogRmxhZ3NQaWNrZXJBZGFwdGVyO1xyXG4gIHByaXZhdGUgX2VsZW1lbnQ6IENvZERlY29yYXRpb25FbGVtZW50IHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgX2VsZW1GbGFnRW50cmllczogVGhlc2F1cnVzRW50cnlbXTtcclxuICBwcml2YXRlIF9lbGVtQ29sb3JFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdO1xyXG4gIHByaXZhdGUgX2VsZW1HaWxkaW5nRW50cmllczogVGhlc2F1cnVzRW50cnlbXTtcclxuICBwcml2YXRlIF9lbGVtVGVjaEVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W107XHJcbiAgcHJpdmF0ZSBfZWxlbVBvc0VudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W107XHJcbiAgcHJpdmF0ZSBfZWxlbVRvb2xFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdO1xyXG4gIHByaXZhdGUgX2VsZW1UeXBvbEVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W107XHJcbiAgcHJpdmF0ZSBfdXBkYXRpbmdGb3JtPzogYm9vbGVhbjtcclxuICBwcml2YXRlIF9hZGp1c3RpbmdVST86IGJvb2xlYW47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2RzY2VkaXRvcicsIHsgc3RhdGljOiBmYWxzZSB9KSBkc2NFZGl0b3I6IGFueTtcclxuICBwdWJsaWMgZWRpdG9yT3B0aW9ucyA9IHtcclxuICAgIHRoZW1lOiAndnMtbGlnaHQnLFxyXG4gICAgbGFuZ3VhZ2U6ICdtYXJrZG93bicsXHJcbiAgICB3b3JkV3JhcDogJ29uJyxcclxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hdHVsYXJlbi9uZ3gtbW9uYWNvLWVkaXRvci9pc3N1ZXMvMTlcclxuICAgIGF1dG9tYXRpY0xheW91dDogdHJ1ZSxcclxuICB9O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgZWxlbWVudCgpOiBDb2REZWNvcmF0aW9uRWxlbWVudCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudDtcclxuICB9XHJcbiAgcHVibGljIHNldCBlbGVtZW50KHZhbHVlOiBDb2REZWNvcmF0aW9uRWxlbWVudCB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuX2VsZW1lbnQgPT09IHZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCdzZXR0aW5nIGVsZW1lbnQnKTtcclxuICAgIHRoaXMuX2VsZW1lbnQgPSB2YWx1ZTtcclxuICAgIHRoaXMudXBkYXRlRm9ybSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwYXJlbnRLZXlzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGVsZW1lbnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDb2REZWNvcmF0aW9uRWxlbWVudD47XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGVkaXRvckNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PjtcclxuXHJcbiAgLy8gZ2VuZXJhbFxyXG4gIHB1YmxpYyBrZXk6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIHB1YmxpYyBwYXJlbnRLZXk6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIHB1YmxpYyB0eXBlOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcclxuICBwdWJsaWMgZmxhZ3M6IEZvcm1Db250cm9sPEZsYWdbXT47XHJcbiAgcHVibGljIHJhbmdlczogRm9ybUNvbnRyb2w8Q29kTG9jYXRpb25SYW5nZVtdPjtcclxuICBwdWJsaWMgaW5zdGFuY2VDb3VudDogRm9ybUNvbnRyb2w8bnVtYmVyPjtcclxuICAvLyB0eXBvbG9naWVzXHJcbiAgcHVibGljIHR5cG9sb2dpZXM6IEZvcm1Db250cm9sPEZsYWdbXT47XHJcbiAgcHVibGljIHN1YmplY3Q6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIHB1YmxpYyBjb2xvcnM6IEZvcm1Db250cm9sPEZsYWdbXT47XHJcbiAgcHVibGljIGdpbGRpbmdzOiBGb3JtQ29udHJvbDxGbGFnW10+O1xyXG4gIHB1YmxpYyB0ZWNobmlxdWVzOiBGb3JtQ29udHJvbDxGbGFnW10+O1xyXG4gIHB1YmxpYyB0b29sczogRm9ybUNvbnRyb2w8RmxhZ1tdPjtcclxuICBwdWJsaWMgcG9zaXRpb25zOiBGb3JtQ29udHJvbDxGbGFnW10+O1xyXG4gIHB1YmxpYyBsaW5lSGVpZ2h0OiBGb3JtQ29udHJvbDxudW1iZXI+O1xyXG4gIHB1YmxpYyB0ZXh0UmVsYXRpb246IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIC8vIGRlc2NyaXB0aW9uXHJcbiAgcHVibGljIGRlc2NyaXB0aW9uOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcclxuICBwdWJsaWMgaW1hZ2VzOiBGb3JtQ29udHJvbDxDb2RJbWFnZVtdPjtcclxuICBwdWJsaWMgbm90ZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XHJcbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgLy8gZmxhZ3NcclxuICBwdWJsaWMgZmxhZ3MkOiBPYnNlcnZhYmxlPEZsYWdbXT47XHJcbiAgcHVibGljIHR5cG9sb2d5RmxhZ3MkOiBPYnNlcnZhYmxlPEZsYWdbXT47XHJcbiAgcHVibGljIGNvbG9yRmxhZ3MkOiBPYnNlcnZhYmxlPEZsYWdbXT47XHJcbiAgcHVibGljIGdpbGRpbmdGbGFncyQ6IE9ic2VydmFibGU8RmxhZ1tdPjtcclxuICBwdWJsaWMgdGVjaG5pcXVlRmxhZ3MkOiBPYnNlcnZhYmxlPEZsYWdbXT47XHJcbiAgcHVibGljIHRvb2xGbGFncyQ6IE9ic2VydmFibGU8RmxhZ1tdPjtcclxuICBwdWJsaWMgcG9zaXRpb25GbGFncyQ6IE9ic2VydmFibGU8RmxhZ1tdPjtcclxuXHJcbiAgLy8gY29kLWRlY29yYXRpb24tZWxlbWVudC10eXBlcyAocmVxdWlyZWQpLiBBbGwgdGhlIG90aGVyIHRoZXNhdXJpXHJcbiAgLy8gKGV4Y2VwdCBkZWNUeXBlSGlkZGVuRW50cmllcykgaGF2ZSB0aGVpciBlbnRyaWVzIGZpbHRlcmVkXHJcbiAgLy8gYnkgdGhlIHZhbHVlIHNlbGVjdGVkIGZyb20gdGhpcyB0aGVzYXVydXMuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVjRWxlbVR5cGVFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLXR5cGUtaGlkZGVuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVjVHlwZUhpZGRlbkVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLWVsZW1lbnQtZmxhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgZGVjRWxlbUZsYWdFbnRyaWVzKCk6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VsZW1GbGFnRW50cmllcztcclxuICB9XHJcbiAgcHVibGljIHNldCBkZWNFbGVtRmxhZ0VudHJpZXModmFsdWU6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aGlzLl9lbGVtRmxhZ0VudHJpZXMgPT09IHZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2VsZW1GbGFnRW50cmllcyA9IHZhbHVlIHx8IFtdO1xyXG4gIH1cclxuXHJcbiAgLy8gY29kLWRlY29yYXRpb24tZWxlbWVudC1jb2xvcnNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgZGVjRWxlbUNvbG9yRW50cmllcygpOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9lbGVtQ29sb3JFbnRyaWVzO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGRlY0VsZW1Db2xvckVudHJpZXModmFsdWU6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aGlzLl9lbGVtQ29sb3JFbnRyaWVzID09PSB2YWx1ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbGVtQ29sb3JFbnRyaWVzID0gdmFsdWUgfHwgW107XHJcbiAgfVxyXG5cclxuICAvLyBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LWdpbGRpbmdzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IGRlY0VsZW1HaWxkaW5nRW50cmllcygpOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9lbGVtR2lsZGluZ0VudHJpZXM7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgZGVjRWxlbUdpbGRpbmdFbnRyaWVzKHZhbHVlOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy5fZWxlbUdpbGRpbmdFbnRyaWVzID09PSB2YWx1ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbGVtR2lsZGluZ0VudHJpZXMgPSB2YWx1ZSB8fCBbXTtcclxuICB9XHJcblxyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLWVsZW1lbnQtdGVjaG5pcXVlc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBkZWNFbGVtVGVjaEVudHJpZXMoKTogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZWxlbVRlY2hFbnRyaWVzO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGRlY0VsZW1UZWNoRW50cmllcyh2YWx1ZTogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuX2VsZW1UZWNoRW50cmllcyA9PT0gdmFsdWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxlbVRlY2hFbnRyaWVzID0gdmFsdWUgfHwgW107XHJcbiAgfVxyXG5cclxuICAvLyBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LXBvc2l0aW9uc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBkZWNFbGVtUG9zRW50cmllcygpOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9lbGVtUG9zRW50cmllcztcclxuICB9XHJcbiAgcHVibGljIHNldCBkZWNFbGVtUG9zRW50cmllcyh2YWx1ZTogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuX2VsZW1Qb3NFbnRyaWVzID09PSB2YWx1ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbGVtUG9zRW50cmllcyA9IHZhbHVlIHx8IFtdO1xyXG4gIH1cclxuXHJcbiAgLy8gY29kLWRlY29yYXRpb24tZWxlbWVudC10b29sc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBkZWNFbGVtVG9vbEVudHJpZXMoKTogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZWxlbVRvb2xFbnRyaWVzO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGRlY0VsZW1Ub29sRW50cmllcyh2YWx1ZTogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuX2VsZW1Ub29sRW50cmllcyA9PT0gdmFsdWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxlbVRvb2xFbnRyaWVzID0gdmFsdWUgfHwgW107XHJcbiAgfVxyXG5cclxuICAvLyBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LXR5cG9sb2dpZXNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgZGVjRWxlbVR5cG9sRW50cmllcygpOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9lbGVtVHlwb2xFbnRyaWVzO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGRlY0VsZW1UeXBvbEVudHJpZXModmFsdWU6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aGlzLl9lbGVtVHlwb2xFbnRyaWVzID09PSB2YWx1ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbGVtVHlwb2xFbnRyaWVzID0gdmFsdWUgfHwgW107XHJcbiAgfVxyXG5cclxuICAvLyBjb2QtaW1hZ2UtdHlwZXNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpbWdUeXBlRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLy8gdGhlIGZpbHRlcmVkIGVudHJpZXM6XHJcbiAgcHVibGljIGVsZW1GbGFnRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgZWxlbUNvbG9yRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgZWxlbUdpbGRpbmdFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBlbGVtVGVjaG5pcXVlRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgZWxlbVBvc2l0aW9uRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgZWxlbVRvb2xFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBlbGVtVHlwb2xFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuICBwdWJsaWMgZWxlbUdpbGRpbmdGcmVlPzogYm9vbGVhbjtcclxuICBwdWJsaWMgZWxlbVRlY2huaXF1ZUZyZWU/OiBib29sZWFuO1xyXG4gIHB1YmxpYyBlbGVtUG9zaXRpb25GcmVlPzogYm9vbGVhbjtcclxuICBwdWJsaWMgZWxlbVRvb2xGcmVlPzogYm9vbGVhbjtcclxuXHJcbiAgLy8gdGhpcyBvYmplY3QgaGFzIGEgcHJvcGVydHkgZm9yIGVhY2ggY29udHJvbFxyXG4gIC8vIHRvIGJlIGhpZGRlbiwgaGF2aW5nIHRoZSBzYW1lIG5hbWUgb2YgdGhlIGNvbnRyb2xcclxuICAvLyBhbmQgdmFsdWU9dHJ1ZS5cclxuICBwdWJsaWMgaGlkZGVuPzogSGlkZGVuRGVjRWxlbUZpZWxkcztcclxuXHJcbiAgY29uc3RydWN0b3IoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICB0aGlzLmVsZW1lbnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENvZERlY29yYXRpb25FbGVtZW50PigpO1xyXG4gICAgdGhpcy5lZGl0b3JDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgLy8gZmxhZ3NcclxuICAgIHRoaXMuX2VsZW1GbGFnRW50cmllcyA9IFtdO1xyXG4gICAgdGhpcy5fZWxlbUNvbG9yRW50cmllcyA9IFtdO1xyXG4gICAgdGhpcy5fZWxlbUdpbGRpbmdFbnRyaWVzID0gW107XHJcbiAgICB0aGlzLl9lbGVtVGVjaEVudHJpZXMgPSBbXTtcclxuICAgIHRoaXMuX2VsZW1Qb3NFbnRyaWVzID0gW107XHJcbiAgICB0aGlzLl9lbGVtVG9vbEVudHJpZXMgPSBbXTtcclxuICAgIHRoaXMuX2VsZW1UeXBvbEVudHJpZXMgPSBbXTtcclxuICAgIHRoaXMuX2ZsYWdBZGFwdGVyID0gbmV3IEZsYWdzUGlja2VyQWRhcHRlcigpO1xyXG4gICAgdGhpcy5mbGFncyQgPSB0aGlzLl9mbGFnQWRhcHRlci5zZWxlY3RGbGFncygnZmxhZ3MnKTtcclxuICAgIHRoaXMudHlwb2xvZ3lGbGFncyQgPSB0aGlzLl9mbGFnQWRhcHRlci5zZWxlY3RGbGFncygndHlwb2xvZ2llcycpO1xyXG4gICAgdGhpcy5jb2xvckZsYWdzJCA9IHRoaXMuX2ZsYWdBZGFwdGVyLnNlbGVjdEZsYWdzKCdjb2xvcnMnKTtcclxuICAgIHRoaXMuZ2lsZGluZ0ZsYWdzJCA9IHRoaXMuX2ZsYWdBZGFwdGVyLnNlbGVjdEZsYWdzKCdnaWxkaW5ncycpO1xyXG4gICAgdGhpcy50ZWNobmlxdWVGbGFncyQgPSB0aGlzLl9mbGFnQWRhcHRlci5zZWxlY3RGbGFncygndGVjaG5pcXVlcycpO1xyXG4gICAgdGhpcy50b29sRmxhZ3MkID0gdGhpcy5fZmxhZ0FkYXB0ZXIuc2VsZWN0RmxhZ3MoJ3Rvb2xzJyk7XHJcbiAgICB0aGlzLnBvc2l0aW9uRmxhZ3MkID0gdGhpcy5fZmxhZ0FkYXB0ZXIuc2VsZWN0RmxhZ3MoJ3Bvc2l0aW9ucycpO1xyXG4gICAgLy8gZm9ybVxyXG4gICAgdGhpcy5rZXkgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFtcclxuICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeWy1hLXpBLVowLTlfXSskJyksXHJcbiAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSxcclxuICAgIF0pO1xyXG4gICAgdGhpcy5wYXJlbnRLZXkgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFtcclxuICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeWy1hLXpBLVowLTlfXSskJyksXHJcbiAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSxcclxuICAgIF0pO1xyXG4gICAgdGhpcy50eXBlID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBbXHJcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSxcclxuICAgIF0pO1xyXG4gICAgdGhpcy5mbGFncyA9IGZvcm1CdWlsZGVyLmNvbnRyb2woW10sIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XHJcbiAgICB0aGlzLnJhbmdlcyA9IGZvcm1CdWlsZGVyLmNvbnRyb2woW10sIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XHJcbiAgICB0aGlzLmluc3RhbmNlQ291bnQgPSBmb3JtQnVpbGRlci5jb250cm9sKDAsIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XHJcbiAgICB0aGlzLnR5cG9sb2dpZXMgPSBmb3JtQnVpbGRlci5jb250cm9sKFtdLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG4gICAgdGhpcy5zdWJqZWN0ID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDApKTtcclxuICAgIHRoaXMuY29sb3JzID0gZm9ybUJ1aWxkZXIuY29udHJvbChbXSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcclxuICAgIHRoaXMuZ2lsZGluZ3MgPSBmb3JtQnVpbGRlci5jb250cm9sKFtdLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG4gICAgdGhpcy50ZWNobmlxdWVzID0gZm9ybUJ1aWxkZXIuY29udHJvbChbXSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcclxuICAgIHRoaXMudG9vbHMgPSBmb3JtQnVpbGRlci5jb250cm9sKFtdLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG4gICAgdGhpcy5wb3NpdGlvbnMgPSBmb3JtQnVpbGRlci5jb250cm9sKFtdLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG4gICAgdGhpcy5saW5lSGVpZ2h0ID0gZm9ybUJ1aWxkZXIuY29udHJvbCgwLCB7XHJcbiAgICAgIHZhbGlkYXRvcnM6IFZhbGlkYXRvcnMubWluKDApLFxyXG4gICAgICBub25OdWxsYWJsZTogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy50ZXh0UmVsYXRpb24gPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCkpO1xyXG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwMCkpO1xyXG4gICAgdGhpcy5pbWFnZXMgPSBmb3JtQnVpbGRlci5jb250cm9sKFtdLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG4gICAgdGhpcy5ub3RlID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MDApKTtcclxuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAga2V5OiB0aGlzLmtleSxcclxuICAgICAgcGFyZW50S2V5OiB0aGlzLnBhcmVudEtleSxcclxuICAgICAgdHlwZTogdGhpcy50eXBlLFxyXG4gICAgICBmbGFnczogdGhpcy5mbGFncyxcclxuICAgICAgaW5zdGFuY2VDb3VudDogdGhpcy5pbnN0YW5jZUNvdW50LFxyXG4gICAgICByYW5nZXM6IHRoaXMucmFuZ2VzLFxyXG4gICAgICB0eXBvbG9naWVzOiB0aGlzLnR5cG9sb2dpZXMsXHJcbiAgICAgIHN1YmplY3Q6IHRoaXMuc3ViamVjdCxcclxuICAgICAgY29sb3JzOiB0aGlzLmNvbG9ycyxcclxuICAgICAgZ2lsZGluZ3M6IHRoaXMuZ2lsZGluZ3MsXHJcbiAgICAgIHRlY2huaXF1ZXM6IHRoaXMudGVjaG5pcXVlcyxcclxuICAgICAgdG9vbHM6IHRoaXMudG9vbHMsXHJcbiAgICAgIHBvc2l0aW9uczogdGhpcy5wb3NpdGlvbnMsXHJcbiAgICAgIGxpbmVIZWlnaHQ6IHRoaXMubGluZUhlaWdodCxcclxuICAgICAgdGV4dFJlbGF0aW9uOiB0aGlzLnRleHRSZWxhdGlvbixcclxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXHJcbiAgICAgIGltYWdlczogdGhpcy5pbWFnZXMsXHJcbiAgICAgIG5vdGU6IHRoaXMubm90ZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGV0ZXJtaW5lIGlmIHRoZSBzcGVjaWZpZWQgdGhlc2F1cnVzIGVudHJpZXMgcmVwcmVzZW50IGEgZnJlZSBzZXQuXHJcbiAgICogVGhpcyBoYXBwZW5zIHdoZW4gd2UganVzdCBoYXZlIGEgc2luZ2xlIGVudHJ5IHdpdGggYSBzaW5nbGUgZG90XHJcbiAgICogZm9sbG93ZWQgYnkgXCItXCIuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZW50cmllcyBUaGUgdGhlc2F1cnVzIGVudHJpZXMgdG8gdGVzdC5cclxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBlbnRyaWVzIHJlcHJlc2VudCBhIGZyZWUgc2V0LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgaXNGcmVlU2V0KGVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQpOiBib29sZWFuIHtcclxuICAgIGlmIChlbnRyaWVzPy5sZW5ndGggIT09IDEpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdG9rZW5zID0gZW50cmllc1swXS5pZC5zcGxpdCgnLicpO1xyXG4gICAgcmV0dXJuIHRva2Vucy5sZW5ndGggPT09IDIgJiYgdG9rZW5zWzFdID09PSAnLSc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpbHRlcmVkRW50cmllcyhcclxuICAgIGVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQgfCBudWxsLFxyXG4gICAgcHJlZml4OiBzdHJpbmcgfCBudWxsXHJcbiAgKTogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIXByZWZpeCB8fCAhZW50cmllcz8uc29tZSgoZSkgPT4gZS5pZC5pbmRleE9mKCcuJykgPiAtMSkpIHtcclxuICAgICAgcmV0dXJuIGVudHJpZXMgPyBbLi4uZW50cmllc10gOiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwID0gcHJlZml4ICsgJy4nO1xyXG4gICAgcmV0dXJuIGVudHJpZXMuZmlsdGVyKChlKSA9PiBlLmlkLnN0YXJ0c1dpdGgocCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVWaXNpYmlsaXR5KCk6IHZvaWQge1xyXG4gICAgY29uc3QgaGlkZGVuOiBhbnkgPSB7fTtcclxuICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5kZWNUeXBlSGlkZGVuRW50cmllcz8uZmluZChcclxuICAgICAgKGUpID0+IGUuaWQgPT09IHRoaXMudHlwZS52YWx1ZVxyXG4gICAgKTtcclxuICAgIGlmIChlbnRyeSkge1xyXG4gICAgICBjb25zdCBuYW1lcyA9IGVudHJ5LnZhbHVlLnNwbGl0KCcgJykuZmlsdGVyKChzKSA9PiBzKTtcclxuICAgICAgbmFtZXMuZm9yRWFjaCgobikgPT4ge1xyXG4gICAgICAgIGhpZGRlbltuXSA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5oaWRkZW4gPSBoaWRkZW47XHJcbiAgICBjb25zb2xlLmxvZygnaGlkZGVuOiAnICsgSlNPTi5zdHJpbmdpZnkodGhpcy5oaWRkZW4pKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5hZGp1c3RVSSgpO1xyXG5cclxuICAgIHRoaXMudHlwZS52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgZGVib3VuY2VUaW1lKDMwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9hZGp1c3RpbmdVSSAmJiAhdGhpcy5fdXBkYXRpbmdGb3JtKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygndHlwZSB2YWx1ZSBjaGFuZ2VkOiAnICsgdmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5hZGp1c3RVSSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkanVzdFVJKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2FkanVzdGluZ1VJKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2FkanVzdGluZ1VJID0gdHJ1ZTtcclxuICAgIGNvbnNvbGUubG9nKCdhZGp1c3RVSSBlbnRlcicpO1xyXG4gICAgLy8gcmVzZXQgdHlwZS1kZXBlbmRlbnQgdmFsdWVzXHJcbiAgICB0aGlzLmZsYWdzLnJlc2V0KCk7XHJcbiAgICB0aGlzLnR5cG9sb2dpZXMucmVzZXQoKTtcclxuICAgIHRoaXMuc3ViamVjdC5yZXNldCgpO1xyXG4gICAgdGhpcy5saW5lSGVpZ2h0LnJlc2V0KCk7XHJcbiAgICB0aGlzLnRleHRSZWxhdGlvbi5yZXNldCgpO1xyXG5cclxuICAgIC8vIGZpbHRlciBlbnRyaWVzIGZvciBtdWx0aXBsZS1zZWxlY3Rpb25zXHJcbiAgICB0aGlzLl9mbGFnQWRhcHRlci5zZXRTbG90RmxhZ3MoXHJcbiAgICAgICdmbGFncycsXHJcbiAgICAgIHRoaXMuZ2V0RmlsdGVyZWRFbnRyaWVzKHRoaXMuX2VsZW1GbGFnRW50cmllcywgdGhpcy50eXBlLnZhbHVlKT8ubWFwKFxyXG4gICAgICAgIGVudHJ5VG9GbGFnXHJcbiAgICAgICkgfHwgW11cclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5fZmxhZ0FkYXB0ZXIuc2V0U2xvdEZsYWdzKFxyXG4gICAgICAnY29sb3JzJyxcclxuICAgICAgdGhpcy5nZXRGaWx0ZXJlZEVudHJpZXModGhpcy5fZWxlbUNvbG9yRW50cmllcywgdGhpcy50eXBlLnZhbHVlKT8ubWFwKFxyXG4gICAgICAgIGVudHJ5VG9GbGFnXHJcbiAgICAgICkgfHwgW11cclxuICAgICk7XHJcblxyXG4gICAgLy8gZmlsdGVyIGVudHJpZXMgYW5kIHNldCBmcmVlIGZvciBzaW5nbGUtZW50cnkgZ3JvdXBzIHdpdGggXCJhbnkuLVwiXHJcbiAgICBsZXQgZW50cmllcyA9IHRoaXMuZ2V0RmlsdGVyZWRFbnRyaWVzKFxyXG4gICAgICB0aGlzLl9lbGVtR2lsZGluZ0VudHJpZXMsXHJcbiAgICAgIHRoaXMudHlwZS52YWx1ZVxyXG4gICAgKTtcclxuICAgIHRoaXMuZWxlbUdpbGRpbmdGcmVlID0gdGhpcy5pc0ZyZWVTZXQoZW50cmllcyk7XHJcbiAgICB0aGlzLl9mbGFnQWRhcHRlci5zZXRTbG90RmxhZ3MoXHJcbiAgICAgICdnaWxkaW5ncycsXHJcbiAgICAgIHRoaXMuZWxlbUdpbGRpbmdGcmVlID8gW10gOiBlbnRyaWVzPy5tYXAoZW50cnlUb0ZsYWcpIHx8IFtdXHJcbiAgICApO1xyXG5cclxuICAgIGVudHJpZXMgPSB0aGlzLmdldEZpbHRlcmVkRW50cmllcyh0aGlzLl9lbGVtVGVjaEVudHJpZXMsIHRoaXMudHlwZS52YWx1ZSk7XHJcbiAgICB0aGlzLmVsZW1UZWNobmlxdWVGcmVlID0gdGhpcy5pc0ZyZWVTZXQoZW50cmllcyk7XHJcbiAgICB0aGlzLl9mbGFnQWRhcHRlci5zZXRTbG90RmxhZ3MoXHJcbiAgICAgICd0ZWNobmlxdWVzJyxcclxuICAgICAgdGhpcy5lbGVtVGVjaG5pcXVlRnJlZSA/IFtdIDogZW50cmllcz8ubWFwKGVudHJ5VG9GbGFnKSB8fCBbXVxyXG4gICAgKTtcclxuXHJcbiAgICBlbnRyaWVzID0gdGhpcy5nZXRGaWx0ZXJlZEVudHJpZXModGhpcy5fZWxlbVBvc0VudHJpZXMsIHRoaXMudHlwZS52YWx1ZSk7XHJcbiAgICB0aGlzLmVsZW1Qb3NpdGlvbkZyZWUgPSB0aGlzLmlzRnJlZVNldChlbnRyaWVzKTtcclxuICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RGbGFncyhcclxuICAgICAgJ3Bvc2l0aW9ucycsXHJcbiAgICAgIHRoaXMuZWxlbVBvc2l0aW9uRnJlZSA/IFtdIDogZW50cmllcz8ubWFwKGVudHJ5VG9GbGFnKSB8fCBbXVxyXG4gICAgKTtcclxuXHJcbiAgICBlbnRyaWVzID0gdGhpcy5nZXRGaWx0ZXJlZEVudHJpZXModGhpcy5fZWxlbVRvb2xFbnRyaWVzLCB0aGlzLnR5cGUudmFsdWUpO1xyXG4gICAgdGhpcy5lbGVtVG9vbEZyZWUgPSB0aGlzLmlzRnJlZVNldChlbnRyaWVzKTtcclxuICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RGbGFncyhcclxuICAgICAgJ3Rvb2xzJyxcclxuICAgICAgdGhpcy5lbGVtVG9vbEZyZWUgPyBbXSA6IGVudHJpZXM/Lm1hcChlbnRyeVRvRmxhZykgfHwgW11cclxuICAgICk7XHJcblxyXG4gICAgdGhpcy5fZmxhZ0FkYXB0ZXIuc2V0U2xvdEZsYWdzKFxyXG4gICAgICAndHlwb2xvZ2llcycsXHJcbiAgICAgIHRoaXMuZ2V0RmlsdGVyZWRFbnRyaWVzKHRoaXMuX2VsZW1UeXBvbEVudHJpZXMsIHRoaXMudHlwZS52YWx1ZSk/Lm1hcChcclxuICAgICAgICBlbnRyeVRvRmxhZ1xyXG4gICAgICApIHx8IFtdXHJcbiAgICApO1xyXG5cclxuICAgIC8vIHZpc2liaWxpdHlcclxuICAgIHRoaXMudXBkYXRlVmlzaWJpbGl0eSgpO1xyXG4gICAgdGhpcy5fYWRqdXN0aW5nVUkgPSBmYWxzZTtcclxuICAgIGNvbnNvbGUubG9nKCdhZGp1c3RVSSBleGl0Jyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVR5cGVEZXBlbmRlbmNpZXMoZWxlbWVudDogQ29kRGVjb3JhdGlvbkVsZW1lbnQpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKCd1cGRhdGVUeXBlRGVwZW5kZW5jaWVzIGVudGVyJyk7XHJcbiAgICB0aGlzLmtleS5zZXRWYWx1ZShlbGVtZW50LmtleSB8fCBudWxsKTtcclxuICAgIHRoaXMucGFyZW50S2V5LnNldFZhbHVlKGVsZW1lbnQucGFyZW50S2V5IHx8IG51bGwpO1xyXG4gICAgdGhpcy5pbnN0YW5jZUNvdW50LnNldFZhbHVlKGVsZW1lbnQuaW5zdGFuY2VDb3VudCB8fCAwKTtcclxuXHJcbiAgICB0aGlzLnJhbmdlcy5zZXRWYWx1ZShlbGVtZW50LnJhbmdlcyk7XHJcblxyXG4gICAgdGhpcy5fZmxhZ0FkYXB0ZXIuc2V0U2xvdENoZWNrcygnZmxhZ3MnLCBlbGVtZW50LmZsYWdzKTtcclxuXHJcbiAgICAvLyB0eXBvbG9naWVzXHJcbiAgICB0aGlzLnN1YmplY3Quc2V0VmFsdWUoZWxlbWVudC5zdWJqZWN0IHx8IG51bGwpO1xyXG5cclxuICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RDaGVja3MoJ2NvbG9ycycsIGVsZW1lbnQuY29sb3JzIHx8IFtdLCB0cnVlKTtcclxuICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RDaGVja3MoJ3R5cG9sb2dpZXMnLCBlbGVtZW50LnR5cG9sb2dpZXMgfHwgW10sIHRydWUpO1xyXG4gICAgdGhpcy5fZmxhZ0FkYXB0ZXIuc2V0U2xvdENoZWNrcygnZ2lsZGluZ3MnLCBlbGVtZW50LmdpbGRpbmdzIHx8IFtdLCB0cnVlKTtcclxuICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RDaGVja3MoJ3RlY2huaXF1ZXMnLCBlbGVtZW50LnRlY2huaXF1ZXMgfHwgW10sIHRydWUpO1xyXG4gICAgdGhpcy5fZmxhZ0FkYXB0ZXIuc2V0U2xvdENoZWNrcygndG9vbHMnLCBlbGVtZW50LnRvb2xzIHx8IFtdLCB0cnVlKTtcclxuICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RDaGVja3MoJ3Bvc2l0aW9ucycsIGVsZW1lbnQucG9zaXRpb25zIHx8IFtdLCB0cnVlKTtcclxuXHJcbiAgICB0aGlzLmxpbmVIZWlnaHQuc2V0VmFsdWUoZWxlbWVudC5saW5lSGVpZ2h0IHx8IDApO1xyXG4gICAgdGhpcy50ZXh0UmVsYXRpb24uc2V0VmFsdWUoZWxlbWVudC50ZXh0UmVsYXRpb24gfHwgbnVsbCk7XHJcbiAgICAvLyBkZXNjcmlwdGlvblxyXG4gICAgdGhpcy5kZXNjcmlwdGlvbi5zZXRWYWx1ZShlbGVtZW50LmRlc2NyaXB0aW9uIHx8IG51bGwpO1xyXG4gICAgdGhpcy5pbWFnZXMuc2V0VmFsdWUoZWxlbWVudC5pbWFnZXMgfHwgW10pO1xyXG4gICAgdGhpcy5ub3RlLnNldFZhbHVlKGVsZW1lbnQubm90ZSB8fCBudWxsKTtcclxuXHJcbiAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgIHRoaXMuX3VwZGF0aW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgY29uc29sZS5sb2coJ3VwZGF0ZVR5cGVEZXBlbmRlbmNpZXMgZXhpdCcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVGb3JtKGVsZW1lbnQ6IENvZERlY29yYXRpb25FbGVtZW50IHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICB0aGlzLl91cGRhdGluZ0Zvcm0gPSB0cnVlO1xyXG4gICAgY29uc29sZS5sb2coJ3VwZGF0ZUZvcm0gZW50ZXInKTtcclxuICAgIGlmICghZWxlbWVudCkge1xyXG4gICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcclxuICAgICAgdGhpcy5fdXBkYXRpbmdGb3JtID0gZmFsc2U7XHJcbiAgICAgIGNvbnNvbGUubG9nKCd1cGRhdGVGb3JtIGV4aXQnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gZ2VuZXJhbFxyXG4gICAgdGhpcy50eXBlLnNldFZhbHVlKGVsZW1lbnQudHlwZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIC8vIGxldCB0aGUgVUkgYWRqdXN0IGl0c2VsZiBiZWZvcmUgc2V0dGluZyB0eXBlLWRlcGVuZGVudCBjb250cm9sc1xyXG4gICAgICBjb25zb2xlLmxvZygnYWRqdXN0IFVJIGZyb20gdXBkYXRlRm9ybScpO1xyXG4gICAgICB0aGlzLmFkanVzdFVJKCk7XHJcbiAgICAgIC8vIHNldCB0eXBlLWRlcGVuZGVudCBjb250cm9sc1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVR5cGVEZXBlbmRlbmNpZXMoZWxlbWVudCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gc2V0IG90aGVyIGNvbnRyb2xzXHJcbiAgICBjb25zb2xlLmxvZygndXBkYXRlRm9ybSBleGl0Jyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEVsZW1lbnQoKTogQ29kRGVjb3JhdGlvbkVsZW1lbnQge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAga2V5OiB0aGlzLmtleS52YWx1ZT8udHJpbSgpLFxyXG4gICAgICBwYXJlbnRLZXk6IHRoaXMucGFyZW50S2V5LnZhbHVlPy50cmltKCksXHJcbiAgICAgIHR5cGU6IHRoaXMudHlwZS52YWx1ZT8udHJpbSgpIHx8ICcnLFxyXG4gICAgICBmbGFnczogdGhpcy5mbGFncy52YWx1ZS5maWx0ZXIoKGYpID0+IGYuY2hlY2tlZCkubWFwKChmKSA9PiBmLmlkKSB8fCBbXSxcclxuICAgICAgcmFuZ2VzOiB0aGlzLnJhbmdlcy52YWx1ZSB8fCBbXSxcclxuICAgICAgaW5zdGFuY2VDb3VudDogdGhpcy5pbnN0YW5jZUNvdW50LnZhbHVlIHx8IDAsXHJcbiAgICAgIHR5cG9sb2dpZXM6IHRoaXMuX2ZsYWdBZGFwdGVyLmdldE9wdGlvbmFsQ2hlY2tlZEZsYWdJZHMoJ3R5cG9sb2dpZXMnKSxcclxuICAgICAgc3ViamVjdDogdGhpcy5zdWJqZWN0LnZhbHVlPy50cmltKCksXHJcbiAgICAgIGNvbG9yczogdGhpcy5fZmxhZ0FkYXB0ZXIuZ2V0T3B0aW9uYWxDaGVja2VkRmxhZ0lkcygnY29sb3JzJyksXHJcbiAgICAgIGdpbGRpbmdzOiB0aGlzLl9mbGFnQWRhcHRlci5nZXRPcHRpb25hbENoZWNrZWRGbGFnSWRzKCdnaWxkaW5ncycpLFxyXG4gICAgICB0ZWNobmlxdWVzOiB0aGlzLl9mbGFnQWRhcHRlci5nZXRPcHRpb25hbENoZWNrZWRGbGFnSWRzKCd0ZWNobmlxdWVzJyksXHJcbiAgICAgIHRvb2xzOiB0aGlzLl9mbGFnQWRhcHRlci5nZXRPcHRpb25hbENoZWNrZWRGbGFnSWRzKCd0b29scycpLFxyXG4gICAgICBwb3NpdGlvbnM6IHRoaXMuX2ZsYWdBZGFwdGVyLmdldE9wdGlvbmFsQ2hlY2tlZEZsYWdJZHMoJ3Bvc2l0aW9ucycpLFxyXG4gICAgICBsaW5lSGVpZ2h0OiB0aGlzLmxpbmVIZWlnaHQudmFsdWUsXHJcbiAgICAgIHRleHRSZWxhdGlvbjogdGhpcy50ZXh0UmVsYXRpb24udmFsdWU/LnRyaW0oKSxcclxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24udmFsdWU/LnRyaW0oKSxcclxuICAgICAgaW1hZ2VzOiB0aGlzLmltYWdlcy52YWx1ZT8ubGVuZ3RoID8gdGhpcy5pbWFnZXMudmFsdWUgOiB1bmRlZmluZWQsXHJcbiAgICAgIG5vdGU6IHRoaXMubm90ZS52YWx1ZT8udHJpbSgpLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkxvY2F0aW9uQ2hhbmdlKHJhbmdlczogQ29kTG9jYXRpb25SYW5nZVtdIHwgbnVsbCk6IHZvaWQge1xyXG4gICAgdGhpcy5yYW5nZXMuc2V0VmFsdWUocmFuZ2VzIHx8IFtdKTtcclxuICAgIHRoaXMucmFuZ2VzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMucmFuZ2VzLm1hcmtBc0RpcnR5KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25JbWFnZXNDaGFuZ2UoaW1hZ2VzOiBDb2RJbWFnZVtdIHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICB0aGlzLmltYWdlcy5zZXRWYWx1ZShpbWFnZXMgfHwgW10pO1xyXG4gICAgdGhpcy5pbWFnZXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5pbWFnZXMubWFya0FzRGlydHkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkZsYWdzQ2hhbmdlKGZsYWdzOiBGbGFnW10pOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RGbGFncygnZmxhZ3MnLCBmbGFncywgdHJ1ZSk7XHJcbiAgICBpZiAodGhpcy5fdXBkYXRpbmdGb3JtKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZmxhZ3Muc2V0VmFsdWUoZmxhZ3MpO1xyXG4gICAgdGhpcy5mbGFncy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLmZsYWdzLm1hcmtBc0RpcnR5KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25UeXBvbG9neUZsYWdzQ2hhbmdlKGZsYWdzOiBGbGFnW10pOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RGbGFncygndHlwb2xvZ2llcycsIGZsYWdzLCB0cnVlKTtcclxuICAgIGlmICh0aGlzLl91cGRhdGluZ0Zvcm0pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50eXBvbG9naWVzLnNldFZhbHVlKGZsYWdzKTtcclxuICAgIHRoaXMudHlwb2xvZ2llcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLnR5cG9sb2dpZXMubWFya0FzRGlydHkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNvbG9yRmxhZ3NDaGFuZ2UoZmxhZ3M6IEZsYWdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZmxhZ0FkYXB0ZXIuc2V0U2xvdEZsYWdzKCdjb2xvcnMnLCBmbGFncywgdHJ1ZSk7XHJcbiAgICBpZiAodGhpcy5fdXBkYXRpbmdGb3JtKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuY29sb3JzLnNldFZhbHVlKGZsYWdzKTtcclxuICAgIHRoaXMuY29sb3JzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuY29sb3JzLm1hcmtBc0RpcnR5KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25HaWxkaW5nRmxhZ3NDaGFuZ2UoZmxhZ3M6IEZsYWdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZmxhZ0FkYXB0ZXIuc2V0U2xvdEZsYWdzKCdnaWxkaW5ncycsIGZsYWdzLCB0cnVlKTtcclxuICAgIGlmICh0aGlzLl91cGRhdGluZ0Zvcm0pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5naWxkaW5ncy5zZXRWYWx1ZShmbGFncyk7XHJcbiAgICB0aGlzLmdpbGRpbmdzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuZ2lsZGluZ3MubWFya0FzRGlydHkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblRlY2huaXF1ZUZsYWdzQ2hhbmdlKGZsYWdzOiBGbGFnW10pOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RGbGFncygndGVjaG5pcXVlcycsIGZsYWdzLCB0cnVlKTtcclxuICAgIGlmICh0aGlzLl91cGRhdGluZ0Zvcm0pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50ZWNobmlxdWVzLnNldFZhbHVlKGZsYWdzKTtcclxuICAgIHRoaXMudGVjaG5pcXVlcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLnRlY2huaXF1ZXMubWFya0FzRGlydHkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblRvb2xGbGFnc0NoYW5nZShmbGFnczogRmxhZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLl9mbGFnQWRhcHRlci5zZXRTbG90RmxhZ3MoJ3Rvb2xzJywgZmxhZ3MsIHRydWUpO1xyXG4gICAgaWYgKHRoaXMuX3VwZGF0aW5nRm9ybSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnRvb2xzLnNldFZhbHVlKGZsYWdzKTtcclxuICAgIHRoaXMudG9vbHMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy50b29scy5tYXJrQXNEaXJ0eSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uUG9zaXRpb25GbGFnc0NoYW5nZShmbGFnczogRmxhZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLl9mbGFnQWRhcHRlci5zZXRTbG90RmxhZ3MoJ3Bvc2l0aW9ucycsIGZsYWdzLCB0cnVlKTtcclxuICAgIGlmICh0aGlzLl91cGRhdGluZ0Zvcm0pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5wb3NpdGlvbnMuc2V0VmFsdWUoZmxhZ3MpO1xyXG4gICAgdGhpcy5wb3NpdGlvbnMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5wb3NpdGlvbnMubWFya0FzRGlydHkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmVkaXRvckNsb3NlLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzYXZlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5pbnZhbGlkKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2VsZW1lbnQgPSB0aGlzLmdldEVsZW1lbnQoKTtcclxuICAgIHRoaXMuZWxlbWVudENoYW5nZS5lbWl0KHRoaXMuX2VsZW1lbnQpO1xyXG4gIH1cclxufVxyXG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImZvcm1cIiAoc3VibWl0KT1cInNhdmUoKVwiPlxyXG4gIDxkaXYgY2xhc3M9XCJ0eXBlLWhlYWRcIj5cclxuICAgIHt7IHR5cGUudmFsdWUgfCBmbGF0TG9va3VwIDogZGVjRWxlbVR5cGVFbnRyaWVzIDogXCJpZFwiIDogXCJ2YWx1ZVwiIH19XHJcbiAgPC9kaXY+XHJcbiAgPG1hdC10YWItZ3JvdXA+XHJcbiAgICA8IS0tIEdFTkVSQUwgLS0+XHJcbiAgICA8bWF0LXRhYiBsYWJlbD1cImdlbmVyYWxcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCIgc3R5bGU9XCJtYXJnaW4tdG9wOiA4cHhcIj5cclxuICAgICAgICA8IS0tIHR5cGUgKGJvdW5kKSAtLT5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGRcclxuICAgICAgICAgICpuZ0lmPVwiZGVjRWxlbVR5cGVFbnRyaWVzPy5sZW5ndGhcIlxyXG4gICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTRlbVwiXHJcbiAgICAgICAgICBhcHBlYXJhbmNlPVwib3V0bGluZVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD50eXBlPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xdPVwidHlwZVwiPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZSBvZiBkZWNFbGVtVHlwZUVudHJpZXNcIiBbdmFsdWVdPVwiZS5pZFwiPnt7XHJcbiAgICAgICAgICAgICAgZS52YWx1ZVxyXG4gICAgICAgICAgICB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgKm5nSWY9XCIkYW55KHR5cGUpLmVycm9ycz8ucmVxdWlyZWQgJiYgKHR5cGUuZGlydHkgfHwgdHlwZS50b3VjaGVkKVwiXHJcbiAgICAgICAgICAgID50eXBlIHJlcXVpcmVkPC9tYXQtZXJyb3JcclxuICAgICAgICAgID5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICZuYnNwO1xyXG4gICAgICAgIDwhLS0gaW5zdGFuY2VDb3VudCAtLT5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgc3R5bGU9XCJ3aWR0aDogNmVtXCI+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPmNvdW50PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImluc3RhbmNlQ291bnRcIiB0eXBlPVwibnVtYmVyXCIgbWluPVwiMFwiIC8+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuXHJcbiAgICAgICAgPCEtLSByYW5nZXMgLS0+XHJcbiAgICAgICAgPGNhZG11cy1jb2QtbG9jYXRpb25cclxuICAgICAgICAgIGxhYmVsPVwicmFuZ2VzXCJcclxuICAgICAgICAgIFtyZXF1aXJlZF09XCJ0cnVlXCJcclxuICAgICAgICAgIFtsb2NhdGlvbl09XCJyYW5nZXMudmFsdWVcIlxyXG4gICAgICAgICAgKGxvY2F0aW9uQ2hhbmdlKT1cIm9uTG9jYXRpb25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvY2FkbXVzLWNvZC1sb2NhdGlvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIGZsYWdzIC0tPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiZmxhZ3MkIHwgYXN5bmMgYXMgZmxhZ3NcIj5cclxuICAgICAgICA8ZmllbGRzZXQgKm5nSWY9XCJmbGFncy5sZW5ndGhcIj5cclxuICAgICAgICAgIDxsZWdlbmQ+ZmVhdHVyZXM8L2xlZ2VuZD5cclxuICAgICAgICAgIDxjYWRtdXMtdWktZmxhZ3MtcGlja2VyXHJcbiAgICAgICAgICAgIFtmbGFnc109XCJmbGFnc1wiXHJcbiAgICAgICAgICAgIChmbGFnc0NoYW5nZSk9XCJvbkZsYWdzQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgPjwvY2FkbXVzLXVpLWZsYWdzLXBpY2tlcj5cclxuICAgICAgICA8L2ZpZWxkc2V0PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxiciAvPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDwhLS0ga2V5IC0tPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+a2V5PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cImtleVwiIC8+XHJcbiAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICpuZ0lmPVwiJGFueShrZXkpLmVycm9ycz8ucGF0dGVybiAmJiAoa2V5LmRpcnR5IHx8IGtleS50b3VjaGVkKVwiXHJcbiAgICAgICAgICAgID5pbnZhbGlkIGtleTwvbWF0LWVycm9yXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICpuZ0lmPVwiJGFueShrZXkpLmVycm9ycz8ubWF4TGVuZ3RoICYmIChrZXkuZGlydHkgfHwga2V5LnRvdWNoZWQpXCJcclxuICAgICAgICAgICAgPmtleSB0b28gbG9uZzwvbWF0LWVycm9yXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAmbmJzcDtcclxuICAgICAgICA8IS0tIHBhcmVudEtleSAtLT5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nSWY9XCJwYXJlbnRLZXlzPy5sZW5ndGhcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+cGFyZW50IGtleTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cInBhcmVudEtleVwiPlxyXG4gICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwibnVsbFwiPihub25lKTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGsgb2YgcGFyZW50S2V5c1wiIFt2YWx1ZV09XCJrXCI+e3tcclxuICAgICAgICAgICAgICBrXHJcbiAgICAgICAgICAgIH19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtdGFiPlxyXG5cclxuICAgIDwhLS0gVFlQT0xPR0lFUyAtLT5cclxuICAgIDxtYXQtdGFiIGxhYmVsPVwidHlwb2xvZ2llc1wiPlxyXG4gICAgICA8ZGl2IHN0eWxlPVwiZGlzcGxheTogZmxleDsgZ2FwOiA4cHhcIj5cclxuICAgICAgICA8IS0tIGxpbmVIZWlnaHQgLS0+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkXHJcbiAgICAgICAgICBzdHlsZT1cImZsZXg6IDAgMCBhdXRvOyB3aWR0aDogNGVtXCJcclxuICAgICAgICAgIFtoaWRkZW5dPVwiaGlkZGVuPy5saW5lSGVpZ2h0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPmxuLmg8L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCB0eXBlPVwibnVtYmVyXCIgbWluPVwiMFwiIFtmb3JtQ29udHJvbF09XCJsaW5lSGVpZ2h0XCIgLz5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwhLS0gdGV4dFJlbGF0aW9uIC0tPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZFxyXG4gICAgICAgICAgW2hpZGRlbl09XCJoaWRkZW4/LnRleHRSZWxhdGlvblwiXHJcbiAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IDEgMCBhdXRvXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPnRleHQgcmVsYXRpb248L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwidGV4dFJlbGF0aW9uXCIgLz5cclxuICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAkYW55KHRleHRSZWxhdGlvbikuZXJyb3JzPy5tYXhMZW5ndGggJiZcclxuICAgICAgICAgICAgICAodGV4dFJlbGF0aW9uLmRpcnR5IHx8IHRleHRSZWxhdGlvbi50b3VjaGVkKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+dGV4dCByZWxhdGlvbiB0b28gbG9uZzwvbWF0LWVycm9yXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gdHlwb2xvZ2llcyAtLT5cclxuICAgICAgPGRpdiAqbmdJZj1cInR5cG9sb2d5RmxhZ3MkIHwgYXN5bmMgYXMgZmxhZ3NcIj5cclxuICAgICAgICA8ZmllbGRzZXQgW2hpZGRlbl09XCIhZmxhZ3MubGVuZ3RoIHx8IGhpZGRlbj8udHlwb2xvZ2llc1wiPlxyXG4gICAgICAgICAgPGxlZ2VuZD50eXBvbG9naWVzPC9sZWdlbmQ+XHJcbiAgICAgICAgICA8Y2FkbXVzLXVpLWZsYWdzLXBpY2tlclxyXG4gICAgICAgICAgICBbZmxhZ3NdPVwiZmxhZ3NcIlxyXG4gICAgICAgICAgICAoZmxhZ3NDaGFuZ2UpPVwib25UeXBvbG9neUZsYWdzQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgPjwvY2FkbXVzLXVpLWZsYWdzLXBpY2tlcj5cclxuICAgICAgICA8L2ZpZWxkc2V0PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gc3ViamVjdCAtLT5cclxuICAgICAgPGRpdiBbaGlkZGVuXT1cImhpZGRlbj8uc3ViamVjdFwiPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+c3ViamVjdDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJzdWJqZWN0XCIgLz5cclxuICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAkYW55KHN1YmplY3QpLmVycm9ycz8ubWF4TGVuZ3RoICYmXHJcbiAgICAgICAgICAgICAgKHN1YmplY3QuZGlydHkgfHwgc3ViamVjdC50b3VjaGVkKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+c3ViamVjdCB0b28gbG9uZzwvbWF0LWVycm9yXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIGNvbG9ycyAtLT5cclxuICAgICAgPGRpdiAqbmdJZj1cImNvbG9yRmxhZ3MkIHwgYXN5bmMgYXMgZmxhZ3NcIj5cclxuICAgICAgICA8ZmllbGRzZXQgW2hpZGRlbl09XCIhZmxhZ3MubGVuZ3RoIHx8IGhpZGRlbj8uY29sb3JzXCI+XHJcbiAgICAgICAgICA8bGVnZW5kPmNvbG9yczwvbGVnZW5kPlxyXG4gICAgICAgICAgPGNhZG11cy11aS1mbGFncy1waWNrZXJcclxuICAgICAgICAgICAgW2ZsYWdzXT1cImZsYWdzXCJcclxuICAgICAgICAgICAgKGZsYWdzQ2hhbmdlKT1cIm9uQ29sb3JGbGFnc0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgID48L2NhZG11cy11aS1mbGFncy1waWNrZXI+XHJcbiAgICAgICAgPC9maWVsZHNldD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIGdpbGRpbmdzIC0tPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiZ2lsZGluZ0ZsYWdzJCB8IGFzeW5jIGFzIGZsYWdzXCI+XHJcbiAgICAgICAgPGZpZWxkc2V0XHJcbiAgICAgICAgICBbaGlkZGVuXT1cIighZmxhZ3MubGVuZ3RoICYmICFlbGVtR2lsZGluZ0ZyZWUpIHx8IGhpZGRlbj8uZ2lsZGluZ3NcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxsZWdlbmQ+Z2lsZGluZ3M8L2xlZ2VuZD5cclxuICAgICAgICAgIDxjYWRtdXMtdWktZmxhZ3MtcGlja2VyXHJcbiAgICAgICAgICAgIFtmbGFnc109XCJmbGFnc1wiXHJcbiAgICAgICAgICAgIFthbGxvd1VzZXJGbGFnc109XCJlbGVtR2lsZGluZ0ZyZWUgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAoZmxhZ3NDaGFuZ2UpPVwib25HaWxkaW5nRmxhZ3NDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9jYWRtdXMtdWktZmxhZ3MtcGlja2VyPlxyXG4gICAgICAgIDwvZmllbGRzZXQ+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSB0ZWNobmlxdWVzIC0tPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwidGVjaG5pcXVlRmxhZ3MkIHwgYXN5bmMgYXMgZmxhZ3NcIj5cclxuICAgICAgICA8ZmllbGRzZXRcclxuICAgICAgICAgIFtoaWRkZW5dPVwiKCFmbGFncy5sZW5ndGggJiYgIWVsZW1UZWNobmlxdWVGcmVlKSB8fCBoaWRkZW4/LnRlY2huaXF1ZXNcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxsZWdlbmQ+dGVjaG5pcXVlczwvbGVnZW5kPlxyXG4gICAgICAgICAgPGNhZG11cy11aS1mbGFncy1waWNrZXJcclxuICAgICAgICAgICAgW2ZsYWdzXT1cImZsYWdzXCJcclxuICAgICAgICAgICAgW2FsbG93VXNlckZsYWdzXT1cImVsZW1UZWNobmlxdWVGcmVlIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgKGZsYWdzQ2hhbmdlKT1cIm9uVGVjaG5pcXVlRmxhZ3NDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9jYWRtdXMtdWktZmxhZ3MtcGlja2VyPlxyXG4gICAgICAgIDwvZmllbGRzZXQ+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSB0b29scyAtLT5cclxuICAgICAgPGRpdiAqbmdJZj1cInRvb2xGbGFncyQgfCBhc3luYyBhcyBmbGFnc1wiPlxyXG4gICAgICAgIDxmaWVsZHNldCBbaGlkZGVuXT1cIighZmxhZ3MubGVuZ3RoICYmICFlbGVtVG9vbEZyZWUpIHx8IGhpZGRlbj8udG9vbHNcIj5cclxuICAgICAgICAgIDxsZWdlbmQ+dG9vbHM8L2xlZ2VuZD5cclxuICAgICAgICAgIDxjYWRtdXMtdWktZmxhZ3MtcGlja2VyXHJcbiAgICAgICAgICAgIFtmbGFnc109XCJmbGFnc1wiXHJcbiAgICAgICAgICAgIFthbGxvd1VzZXJGbGFnc109XCJlbGVtVG9vbEZyZWUgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAoZmxhZ3NDaGFuZ2UpPVwib25Ub29sRmxhZ3NDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9jYWRtdXMtdWktZmxhZ3MtcGlja2VyPlxyXG4gICAgICAgIDwvZmllbGRzZXQ+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBwb3NpdGlvbnMgLS0+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJwb3NpdGlvbkZsYWdzJCB8IGFzeW5jIGFzIGZsYWdzXCI+XHJcbiAgICAgICAgPGZpZWxkc2V0XHJcbiAgICAgICAgICBbaGlkZGVuXT1cIighZmxhZ3MubGVuZ3RoICYmICFlbGVtUG9zaXRpb25GcmVlKSB8fCBoaWRkZW4/LnBvc2l0aW9uc1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPGxlZ2VuZD5wb3NpdGlvbnM8L2xlZ2VuZD5cclxuICAgICAgICAgIDxjYWRtdXMtdWktZmxhZ3MtcGlja2VyXHJcbiAgICAgICAgICAgIFtmbGFnc109XCJmbGFnc1wiXHJcbiAgICAgICAgICAgIFthbGxvd1VzZXJGbGFnc109XCJlbGVtUG9zaXRpb25GcmVlIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgKGZsYWdzQ2hhbmdlKT1cIm9uUG9zaXRpb25GbGFnc0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgID48L2NhZG11cy11aS1mbGFncy1waWNrZXI+XHJcbiAgICAgICAgPC9maWVsZHNldD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC10YWI+XHJcblxyXG4gICAgPCEtLSBERVNDUklQVElPTiAtLT5cclxuICAgIDxtYXQtdGFiIGxhYmVsPVwiZGVzY3JpcHRpb25cIj5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8bmd4LW1vbmFjby1lZGl0b3JcclxuICAgICAgICAgICNkc2NlZGl0b3JcclxuICAgICAgICAgIFtvcHRpb25zXT1cImVkaXRvck9wdGlvbnNcIlxyXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImRlc2NyaXB0aW9uXCJcclxuICAgICAgICA+PC9uZ3gtbW9uYWNvLWVkaXRvcj5cclxuICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAkYW55KGRlc2NyaXB0aW9uKS5lcnJvcnM/Lm1heExlbmd0aCAmJlxyXG4gICAgICAgICAgICAoZGVzY3JpcHRpb24udG91Y2hlZCB8fCBkZXNjcmlwdGlvbi5kaXJ0eSlcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+ZGVzY3JpcHRpb24gdG9vIGxvbmc8L21hdC1lcnJvclxyXG4gICAgICAgID5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPCEtLSBpbWFnZXMgLS0+XHJcbiAgICAgICAgPGNhZG11cy1jb2QtaW1hZ2VzXHJcbiAgICAgICAgICBbdHlwZUVudHJpZXNdPVwiaW1nVHlwZUVudHJpZXNcIlxyXG4gICAgICAgICAgW2ltYWdlc109XCJpbWFnZXMudmFsdWVcIlxyXG4gICAgICAgICAgKGltYWdlc0NoYW5nZSk9XCJvbkltYWdlc0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICA+PC9jYWRtdXMtY29kLWltYWdlcz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPCEtLSBub3RlIC0tPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImxvbmctdGV4dFwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5ub3RlPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8dGV4dGFyZWEgcm93cz1cIjJcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwibm90ZVwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICpuZ0lmPVwiJGFueShub3RlKS5lcnJvcnM/Lm1heExlbmd0aCAmJiAobm90ZS5kaXJ0eSB8fCBub3RlLnRvdWNoZWQpXCJcclxuICAgICAgICAgICAgPm5vdGUgdG9vIGxvbmc8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtdGFiPlxyXG4gIDwvbWF0LXRhYi1ncm91cD5cclxuXHJcbiAgPCEtLSBidXR0b25zIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJ0b29sYmFyLXJvd1wiPlxyXG4gICAgPGJ1dHRvblxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgY29sb3I9XCJ3YXJuXCJcclxuICAgICAgbWF0LWljb24tYnV0dG9uXHJcbiAgICAgIG1hdFRvb2x0aXA9XCJEaXNjYXJkIGVsZW1lbnQgY2hhbmdlc1wiXHJcbiAgICAgIChjbGljayk9XCJjYW5jZWwoKVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvbj5jbGVhcjwvbWF0LWljb24+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgIG1hdC1mbGF0LWJ1dHRvblxyXG4gICAgICBtYXRUb29sdGlwPVwiQWNjZXB0IGVsZW1lbnQgY2hhbmdlc1wiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWQgfHwgZm9ybS5wcmlzdGluZVwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtaWNvbj5jaGVja19jaXJjbGU8L21hdC1pY29uPiBlbGVtZW50XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9mb3JtPlxyXG4iXX0=
457
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29kLWRlY29yYXRpb24tZWxlbWVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9jYWRtdXMtcGFydC1jb2RpY29sb2d5LWRlY29yYXRpb25zL3NyYy9saWIvY29kLWRlY29yYXRpb24tZWxlbWVudC9jb2QtZGVjb3JhdGlvbi1lbGVtZW50LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2NhZG11cy1wYXJ0LWNvZGljb2xvZ3ktZGVjb3JhdGlvbnMvc3JjL2xpYi9jb2QtZGVjb3JhdGlvbi1lbGVtZW50L2NvZC1kZWNvcmF0aW9uLWVsZW1lbnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFDTixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUlMLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBSXhCLE9BQU8sRUFBUSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQWMsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBeUJ0RSxTQUFTLFdBQVcsQ0FBQyxLQUFxQjtJQUN4QyxPQUFPO1FBQ0wsRUFBRSxFQUFFLEtBQUssQ0FBQyxFQUFFO1FBQ1osS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO0tBQ25CLENBQUM7QUFDSixDQUFDO0FBT0QsTUFBTSxPQUFPLDZCQUE2QjtJQStMeEMsWUFBWSxXQUF3QjtRQWpMN0Isa0JBQWEsR0FBRztZQUNyQixLQUFLLEVBQUUsVUFBVTtZQUNqQixRQUFRLEVBQUUsVUFBVTtZQUNwQixRQUFRLEVBQUUsSUFBSTtZQUNkLDBEQUEwRDtZQUMxRCxlQUFlLEVBQUUsSUFB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QUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFVOUIsT0FBTztzQkFEakIsS0FBSztnQkFjQyxVQUFVO3NCQURoQixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLE1BQU07Z0JBR0EsV0FBVztzQkFEakIsTUFBTTtnQkF1Q0Esa0JBQWtCO3NCQUR4QixLQUFLO2dCQUlDLG9CQUFvQjtzQkFEMUIsS0FBSztnQkFLSyxrQkFBa0I7c0JBRDVCLEtBQUs7Z0JBYUssbUJBQW1CO3NCQUQ3QixLQUFLO2dCQWFLLHFCQUFxQjtzQkFEL0IsS0FBSztnQkFhSyxrQkFBa0I7c0JBRDVCLEtBQUs7Z0JBYUssaUJBQWlCO3NCQUQzQixLQUFLO2dCQWFLLGtCQUFrQjtzQkFENUIsS0FBSztnQkFhSyxtQkFBbUI7c0JBRDdCLEtBQUs7Z0JBYUMsY0FBYztzQkFEcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBGb3JtQnVpbGRlcixcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdG9ycyxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENvZExvY2F0aW9uUmFuZ2UgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLWNvZC1sb2NhdGlvbic7XHJcbmltcG9ydCB7IENvZEltYWdlIH0gZnJvbSAnQG15cm1pZG9uL2NhZG11cy1jb2RpY29sb2d5LXVpJztcclxuaW1wb3J0IHsgVGhlc2F1cnVzRW50cnkgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLWNvcmUnO1xyXG5pbXBvcnQgeyBGbGFnLCBGbGFnc1BpY2tlckFkYXB0ZXIgfSBmcm9tICdAbXlybWlkb24vY2FkbXVzLXVpLWZsYWdzLXBpY2tlcic7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IENvZERlY29yYXRpb25FbGVtZW50IH0gZnJvbSAnLi4vY29kLWRlY29yYXRpb25zLXBhcnQnO1xyXG5cclxuLyoqXHJcbiAqIExpc3Qgb2YgaGlkZGVuIGZpZWxkcyBpbiBkZWNvcmF0aW9uIGVsZW1lbnQgY29tcG9uZW50LlxyXG4gKiBUaGlzIGlzIHNldCBieSBleGFtaW5pbmcgdGhlIHZhbHVlcyBvZiB0aGUgdGhlc2F1cnVzXHJcbiAqIG5hbWVkIFwiY29kLWRlY29yYXRpb24tdHlwZS1oaWRkZW5cIiBoYXZpbmcgYXMga2V5IHRoZVxyXG4gKiBlbGVtZW50IHR5cGUgSUQgKGUuZy4gXCJwYWctaW5jXCIpLCBhbmQgYXMgdmFsdWUgYSBzcGFjZVxyXG4gKiBkZWxpbWl0ZWQgbGlzdCBvZiBmaWVsZCBuYW1lcy4gRWFjaCBvZiB0aGVzZSBmaWVsZCBuYW1lc1xyXG4gKiBjb3JyZXNwb25kcyB0byBhIHByb3BlcnR5IG9mIHRoaXMgb2JqZWN0LlxyXG4gKi9cclxuaW50ZXJmYWNlIEhpZGRlbkRlY0VsZW1GaWVsZHMge1xyXG4gIGZsYWdzPzogYm9vbGVhbjtcclxuICB0eXBvbG9naWVzPzogYm9vbGVhbjtcclxuICBzdWJqZWN0PzogYm9vbGVhbjtcclxuICBjb2xvcnM/OiBib29sZWFuO1xyXG4gIGdpbGRpbmdzPzogYm9vbGVhbjtcclxuICB0ZWNobmlxdWVzPzogYm9vbGVhbjtcclxuICB0b29scz86IGJvb2xlYW47XHJcbiAgcG9zaXRpb25zPzogYm9vbGVhbjtcclxuICBsaW5lSGVpZ2h0PzogYm9vbGVhbjtcclxuICB0ZXh0UmVsYXRpb24/OiBib29sZWFuO1xyXG59XHJcblxyXG5mdW5jdGlvbiBlbnRyeVRvRmxhZyhlbnRyeTogVGhlc2F1cnVzRW50cnkpOiBGbGFnIHtcclxuICByZXR1cm4ge1xyXG4gICAgaWQ6IGVudHJ5LmlkLFxyXG4gICAgbGFiZWw6IGVudHJ5LnZhbHVlLFxyXG4gIH07XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY2FkbXVzLWNvZC1kZWNvcmF0aW9uLWVsZW1lbnQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb2QtZGVjb3JhdGlvbi1lbGVtZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb2QtZGVjb3JhdGlvbi1lbGVtZW50LmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENvZERlY29yYXRpb25FbGVtZW50Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBwcml2YXRlIHJlYWRvbmx5IF9mbGFnQWRhcHRlcjogRmxhZ3NQaWNrZXJBZGFwdGVyO1xyXG4gIHByaXZhdGUgX2VsZW1lbnQ6IENvZERlY29yYXRpb25FbGVtZW50IHwgdW5kZWZpbmVkO1xyXG4gIHByaXZhdGUgX2VsZW1GbGFnRW50cmllczogVGhlc2F1cnVzRW50cnlbXTtcclxuICBwcml2YXRlIF9lbGVtQ29sb3JFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdO1xyXG4gIHByaXZhdGUgX2VsZW1HaWxkaW5nRW50cmllczogVGhlc2F1cnVzRW50cnlbXTtcclxuICBwcml2YXRlIF9lbGVtVGVjaEVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W107XHJcbiAgcHJpdmF0ZSBfZWxlbVBvc0VudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W107XHJcbiAgcHJpdmF0ZSBfZWxlbVRvb2xFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdO1xyXG4gIHByaXZhdGUgX2VsZW1UeXBvbEVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W107XHJcbiAgcHJpdmF0ZSBfdXBkYXRpbmdGb3JtPzogYm9vbGVhbjtcclxuICBwcml2YXRlIF9hZGp1c3RpbmdVST86IGJvb2xlYW47XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ2RzY2VkaXRvcicsIHsgc3RhdGljOiBmYWxzZSB9KSBkc2NFZGl0b3I6IGFueTtcclxuICBwdWJsaWMgZWRpdG9yT3B0aW9ucyA9IHtcclxuICAgIHRoZW1lOiAndnMtbGlnaHQnLFxyXG4gICAgbGFuZ3VhZ2U6ICdtYXJrZG93bicsXHJcbiAgICB3b3JkV3JhcDogJ29uJyxcclxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hdHVsYXJlbi9uZ3gtbW9uYWNvLWVkaXRvci9pc3N1ZXMvMTlcclxuICAgIGF1dG9tYXRpY0xheW91dDogdHJ1ZSxcclxuICB9O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgZWxlbWVudCgpOiBDb2REZWNvcmF0aW9uRWxlbWVudCB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudDtcclxuICB9XHJcbiAgcHVibGljIHNldCBlbGVtZW50KHZhbHVlOiBDb2REZWNvcmF0aW9uRWxlbWVudCB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuX2VsZW1lbnQgPT09IHZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnNvbGUubG9nKCdzZXR0aW5nIGVsZW1lbnQnKTtcclxuICAgIHRoaXMuX2VsZW1lbnQgPSB2YWx1ZTtcclxuICAgIHRoaXMudXBkYXRlRm9ybSh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBwYXJlbnRLZXlzOiBzdHJpbmdbXSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGVsZW1lbnRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDb2REZWNvcmF0aW9uRWxlbWVudD47XHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGVkaXRvckNsb3NlOiBFdmVudEVtaXR0ZXI8YW55PjtcclxuXHJcbiAgLy8gZ2VuZXJhbFxyXG4gIHB1YmxpYyBrZXk6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIHB1YmxpYyBwYXJlbnRLZXk6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIHB1YmxpYyB0eXBlOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcclxuICBwdWJsaWMgZmxhZ3M6IEZvcm1Db250cm9sPEZsYWdbXT47XHJcbiAgcHVibGljIHJhbmdlczogRm9ybUNvbnRyb2w8Q29kTG9jYXRpb25SYW5nZVtdPjtcclxuICBwdWJsaWMgaW5zdGFuY2VDb3VudDogRm9ybUNvbnRyb2w8bnVtYmVyPjtcclxuICAvLyB0eXBvbG9naWVzXHJcbiAgcHVibGljIHR5cG9sb2dpZXM6IEZvcm1Db250cm9sPEZsYWdbXT47XHJcbiAgcHVibGljIHN1YmplY3Q6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIHB1YmxpYyBjb2xvcnM6IEZvcm1Db250cm9sPEZsYWdbXT47XHJcbiAgcHVibGljIGdpbGRpbmdzOiBGb3JtQ29udHJvbDxGbGFnW10+O1xyXG4gIHB1YmxpYyB0ZWNobmlxdWVzOiBGb3JtQ29udHJvbDxGbGFnW10+O1xyXG4gIHB1YmxpYyB0b29sczogRm9ybUNvbnRyb2w8RmxhZ1tdPjtcclxuICBwdWJsaWMgcG9zaXRpb25zOiBGb3JtQ29udHJvbDxGbGFnW10+O1xyXG4gIHB1YmxpYyBsaW5lSGVpZ2h0OiBGb3JtQ29udHJvbDxudW1iZXI+O1xyXG4gIHB1YmxpYyB0ZXh0UmVsYXRpb246IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xyXG4gIC8vIGRlc2NyaXB0aW9uXHJcbiAgcHVibGljIGRlc2NyaXB0aW9uOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcclxuICBwdWJsaWMgaW1hZ2VzOiBGb3JtQ29udHJvbDxDb2RJbWFnZVtdPjtcclxuICBwdWJsaWMgbm90ZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XHJcbiAgcHVibGljIGZvcm06IEZvcm1Hcm91cDtcclxuXHJcbiAgLy8gZmxhZ3NcclxuICBwdWJsaWMgZmxhZ3MkOiBPYnNlcnZhYmxlPEZsYWdbXT47XHJcbiAgcHVibGljIHR5cG9sb2d5RmxhZ3MkOiBPYnNlcnZhYmxlPEZsYWdbXT47XHJcbiAgcHVibGljIGNvbG9yRmxhZ3MkOiBPYnNlcnZhYmxlPEZsYWdbXT47XHJcbiAgcHVibGljIGdpbGRpbmdGbGFncyQ6IE9ic2VydmFibGU8RmxhZ1tdPjtcclxuICBwdWJsaWMgdGVjaG5pcXVlRmxhZ3MkOiBPYnNlcnZhYmxlPEZsYWdbXT47XHJcbiAgcHVibGljIHRvb2xGbGFncyQ6IE9ic2VydmFibGU8RmxhZ1tdPjtcclxuICBwdWJsaWMgcG9zaXRpb25GbGFncyQ6IE9ic2VydmFibGU8RmxhZ1tdPjtcclxuXHJcbiAgLy8gY29kLWRlY29yYXRpb24tZWxlbWVudC10eXBlcyAocmVxdWlyZWQpLiBBbGwgdGhlIG90aGVyIHRoZXNhdXJpXHJcbiAgLy8gKGV4Y2VwdCBkZWNUeXBlSGlkZGVuRW50cmllcykgaGF2ZSB0aGVpciBlbnRyaWVzIGZpbHRlcmVkXHJcbiAgLy8gYnkgdGhlIHZhbHVlIHNlbGVjdGVkIGZyb20gdGhpcyB0aGVzYXVydXMuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVjRWxlbVR5cGVFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLXR5cGUtaGlkZGVuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZGVjVHlwZUhpZGRlbkVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQ7XHJcblxyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLWVsZW1lbnQtZmxhZ3NcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgZGVjRWxlbUZsYWdFbnRyaWVzKCk6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2VsZW1GbGFnRW50cmllcztcclxuICB9XHJcbiAgcHVibGljIHNldCBkZWNFbGVtRmxhZ0VudHJpZXModmFsdWU6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aGlzLl9lbGVtRmxhZ0VudHJpZXMgPT09IHZhbHVlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2VsZW1GbGFnRW50cmllcyA9IHZhbHVlIHx8IFtdO1xyXG4gIH1cclxuXHJcbiAgLy8gY29kLWRlY29yYXRpb24tZWxlbWVudC1jb2xvcnNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgZGVjRWxlbUNvbG9yRW50cmllcygpOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9lbGVtQ29sb3JFbnRyaWVzO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGRlY0VsZW1Db2xvckVudHJpZXModmFsdWU6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aGlzLl9lbGVtQ29sb3JFbnRyaWVzID09PSB2YWx1ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbGVtQ29sb3JFbnRyaWVzID0gdmFsdWUgfHwgW107XHJcbiAgfVxyXG5cclxuICAvLyBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LWdpbGRpbmdzXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZ2V0IGRlY0VsZW1HaWxkaW5nRW50cmllcygpOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9lbGVtR2lsZGluZ0VudHJpZXM7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXQgZGVjRWxlbUdpbGRpbmdFbnRyaWVzKHZhbHVlOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodGhpcy5fZWxlbUdpbGRpbmdFbnRyaWVzID09PSB2YWx1ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbGVtR2lsZGluZ0VudHJpZXMgPSB2YWx1ZSB8fCBbXTtcclxuICB9XHJcblxyXG4gIC8vIGNvZC1kZWNvcmF0aW9uLWVsZW1lbnQtdGVjaG5pcXVlc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBkZWNFbGVtVGVjaEVudHJpZXMoKTogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZWxlbVRlY2hFbnRyaWVzO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGRlY0VsZW1UZWNoRW50cmllcyh2YWx1ZTogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuX2VsZW1UZWNoRW50cmllcyA9PT0gdmFsdWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxlbVRlY2hFbnRyaWVzID0gdmFsdWUgfHwgW107XHJcbiAgfVxyXG5cclxuICAvLyBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LXBvc2l0aW9uc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBkZWNFbGVtUG9zRW50cmllcygpOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9lbGVtUG9zRW50cmllcztcclxuICB9XHJcbiAgcHVibGljIHNldCBkZWNFbGVtUG9zRW50cmllcyh2YWx1ZTogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuX2VsZW1Qb3NFbnRyaWVzID09PSB2YWx1ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbGVtUG9zRW50cmllcyA9IHZhbHVlIHx8IFtdO1xyXG4gIH1cclxuXHJcbiAgLy8gY29kLWRlY29yYXRpb24tZWxlbWVudC10b29sc1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGdldCBkZWNFbGVtVG9vbEVudHJpZXMoKTogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fZWxlbVRvb2xFbnRyaWVzO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGRlY0VsZW1Ub29sRW50cmllcyh2YWx1ZTogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZCkge1xyXG4gICAgaWYgKHRoaXMuX2VsZW1Ub29sRW50cmllcyA9PT0gdmFsdWUpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fZWxlbVRvb2xFbnRyaWVzID0gdmFsdWUgfHwgW107XHJcbiAgfVxyXG5cclxuICAvLyBjb2QtZGVjb3JhdGlvbi1lbGVtZW50LXR5cG9sb2dpZXNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBnZXQgZGVjRWxlbVR5cG9sRW50cmllcygpOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9lbGVtVHlwb2xFbnRyaWVzO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IGRlY0VsZW1UeXBvbEVudHJpZXModmFsdWU6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQpIHtcclxuICAgIGlmICh0aGlzLl9lbGVtVHlwb2xFbnRyaWVzID09PSB2YWx1ZSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbGVtVHlwb2xFbnRyaWVzID0gdmFsdWUgfHwgW107XHJcbiAgfVxyXG5cclxuICAvLyBjb2QtaW1hZ2UtdHlwZXNcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpbWdUeXBlRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuXHJcbiAgLy8gdGhlIGZpbHRlcmVkIGVudHJpZXM6XHJcbiAgcHVibGljIGVsZW1GbGFnRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgZWxlbUNvbG9yRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgZWxlbUdpbGRpbmdFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBlbGVtVGVjaG5pcXVlRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgZWxlbVBvc2l0aW9uRW50cmllczogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZDtcclxuICBwdWJsaWMgZWxlbVRvb2xFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG4gIHB1YmxpYyBlbGVtVHlwb2xFbnRyaWVzOiBUaGVzYXVydXNFbnRyeVtdIHwgdW5kZWZpbmVkO1xyXG5cclxuICBwdWJsaWMgZWxlbUdpbGRpbmdGcmVlPzogYm9vbGVhbjtcclxuICBwdWJsaWMgZWxlbVRlY2huaXF1ZUZyZWU/OiBib29sZWFuO1xyXG4gIHB1YmxpYyBlbGVtUG9zaXRpb25GcmVlPzogYm9vbGVhbjtcclxuICBwdWJsaWMgZWxlbVRvb2xGcmVlPzogYm9vbGVhbjtcclxuXHJcbiAgLy8gdGhpcyBvYmplY3QgaGFzIGEgcHJvcGVydHkgZm9yIGVhY2ggY29udHJvbFxyXG4gIC8vIHRvIGJlIGhpZGRlbiwgaGF2aW5nIHRoZSBzYW1lIG5hbWUgb2YgdGhlIGNvbnRyb2xcclxuICAvLyBhbmQgdmFsdWU9dHJ1ZS5cclxuICBwdWJsaWMgaGlkZGVuPzogSGlkZGVuRGVjRWxlbUZpZWxkcztcclxuXHJcbiAgY29uc3RydWN0b3IoZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyKSB7XHJcbiAgICB0aGlzLmVsZW1lbnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPENvZERlY29yYXRpb25FbGVtZW50PigpO1xyXG4gICAgdGhpcy5lZGl0b3JDbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgLy8gZmxhZ3NcclxuICAgIHRoaXMuX2VsZW1GbGFnRW50cmllcyA9IFtdO1xyXG4gICAgdGhpcy5fZWxlbUNvbG9yRW50cmllcyA9IFtdO1xyXG4gICAgdGhpcy5fZWxlbUdpbGRpbmdFbnRyaWVzID0gW107XHJcbiAgICB0aGlzLl9lbGVtVGVjaEVudHJpZXMgPSBbXTtcclxuICAgIHRoaXMuX2VsZW1Qb3NFbnRyaWVzID0gW107XHJcbiAgICB0aGlzLl9lbGVtVG9vbEVudHJpZXMgPSBbXTtcclxuICAgIHRoaXMuX2VsZW1UeXBvbEVudHJpZXMgPSBbXTtcclxuICAgIHRoaXMuX2ZsYWdBZGFwdGVyID0gbmV3IEZsYWdzUGlja2VyQWRhcHRlcigpO1xyXG4gICAgdGhpcy5mbGFncyQgPSB0aGlzLl9mbGFnQWRhcHRlci5zZWxlY3RGbGFncygnZmxhZ3MnKTtcclxuICAgIHRoaXMudHlwb2xvZ3lGbGFncyQgPSB0aGlzLl9mbGFnQWRhcHRlci5zZWxlY3RGbGFncygndHlwb2xvZ2llcycpO1xyXG4gICAgdGhpcy5jb2xvckZsYWdzJCA9IHRoaXMuX2ZsYWdBZGFwdGVyLnNlbGVjdEZsYWdzKCdjb2xvcnMnKTtcclxuICAgIHRoaXMuZ2lsZGluZ0ZsYWdzJCA9IHRoaXMuX2ZsYWdBZGFwdGVyLnNlbGVjdEZsYWdzKCdnaWxkaW5ncycpO1xyXG4gICAgdGhpcy50ZWNobmlxdWVGbGFncyQgPSB0aGlzLl9mbGFnQWRhcHRlci5zZWxlY3RGbGFncygndGVjaG5pcXVlcycpO1xyXG4gICAgdGhpcy50b29sRmxhZ3MkID0gdGhpcy5fZmxhZ0FkYXB0ZXIuc2VsZWN0RmxhZ3MoJ3Rvb2xzJyk7XHJcbiAgICB0aGlzLnBvc2l0aW9uRmxhZ3MkID0gdGhpcy5fZmxhZ0FkYXB0ZXIuc2VsZWN0RmxhZ3MoJ3Bvc2l0aW9ucycpO1xyXG4gICAgLy8gZm9ybVxyXG4gICAgdGhpcy5rZXkgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFtcclxuICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeWy1hLXpBLVowLTlfXSskJyksXHJcbiAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSxcclxuICAgIF0pO1xyXG4gICAgdGhpcy5wYXJlbnRLZXkgPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFtcclxuICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKCdeWy1hLXpBLVowLTlfXSskJyksXHJcbiAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSxcclxuICAgIF0pO1xyXG4gICAgdGhpcy50eXBlID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBbXHJcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDUwKSxcclxuICAgIF0pO1xyXG4gICAgdGhpcy5mbGFncyA9IGZvcm1CdWlsZGVyLmNvbnRyb2woW10sIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XHJcbiAgICB0aGlzLnJhbmdlcyA9IGZvcm1CdWlsZGVyLmNvbnRyb2woW10sIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XHJcbiAgICB0aGlzLmluc3RhbmNlQ291bnQgPSBmb3JtQnVpbGRlci5jb250cm9sKDAsIHsgbm9uTnVsbGFibGU6IHRydWUgfSk7XHJcbiAgICB0aGlzLnR5cG9sb2dpZXMgPSBmb3JtQnVpbGRlci5jb250cm9sKFtdLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG4gICAgdGhpcy5zdWJqZWN0ID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLm1heExlbmd0aCgxMDApKTtcclxuICAgIHRoaXMuY29sb3JzID0gZm9ybUJ1aWxkZXIuY29udHJvbChbXSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcclxuICAgIHRoaXMuZ2lsZGluZ3MgPSBmb3JtQnVpbGRlci5jb250cm9sKFtdLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG4gICAgdGhpcy50ZWNobmlxdWVzID0gZm9ybUJ1aWxkZXIuY29udHJvbChbXSwgeyBub25OdWxsYWJsZTogdHJ1ZSB9KTtcclxuICAgIHRoaXMudG9vbHMgPSBmb3JtQnVpbGRlci5jb250cm9sKFtdLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG4gICAgdGhpcy5wb3NpdGlvbnMgPSBmb3JtQnVpbGRlci5jb250cm9sKFtdLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG4gICAgdGhpcy5saW5lSGVpZ2h0ID0gZm9ybUJ1aWxkZXIuY29udHJvbCgwLCB7XHJcbiAgICAgIHZhbGlkYXRvcnM6IFZhbGlkYXRvcnMubWluKDApLFxyXG4gICAgICBub25OdWxsYWJsZTogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy50ZXh0UmVsYXRpb24gPSBmb3JtQnVpbGRlci5jb250cm9sKG51bGwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDEwMCkpO1xyXG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGZvcm1CdWlsZGVyLmNvbnRyb2wobnVsbCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTAwMCkpO1xyXG4gICAgdGhpcy5pbWFnZXMgPSBmb3JtQnVpbGRlci5jb250cm9sKFtdLCB7IG5vbk51bGxhYmxlOiB0cnVlIH0pO1xyXG4gICAgdGhpcy5ub3RlID0gZm9ybUJ1aWxkZXIuY29udHJvbChudWxsLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MDApKTtcclxuICAgIHRoaXMuZm9ybSA9IGZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAga2V5OiB0aGlzLmtleSxcclxuICAgICAgcGFyZW50S2V5OiB0aGlzLnBhcmVudEtleSxcclxuICAgICAgdHlwZTogdGhpcy50eXBlLFxyXG4gICAgICBmbGFnczogdGhpcy5mbGFncyxcclxuICAgICAgaW5zdGFuY2VDb3VudDogdGhpcy5pbnN0YW5jZUNvdW50LFxyXG4gICAgICByYW5nZXM6IHRoaXMucmFuZ2VzLFxyXG4gICAgICB0eXBvbG9naWVzOiB0aGlzLnR5cG9sb2dpZXMsXHJcbiAgICAgIHN1YmplY3Q6IHRoaXMuc3ViamVjdCxcclxuICAgICAgY29sb3JzOiB0aGlzLmNvbG9ycyxcclxuICAgICAgZ2lsZGluZ3M6IHRoaXMuZ2lsZGluZ3MsXHJcbiAgICAgIHRlY2huaXF1ZXM6IHRoaXMudGVjaG5pcXVlcyxcclxuICAgICAgdG9vbHM6IHRoaXMudG9vbHMsXHJcbiAgICAgIHBvc2l0aW9uczogdGhpcy5wb3NpdGlvbnMsXHJcbiAgICAgIGxpbmVIZWlnaHQ6IHRoaXMubGluZUhlaWdodCxcclxuICAgICAgdGV4dFJlbGF0aW9uOiB0aGlzLnRleHRSZWxhdGlvbixcclxuICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXHJcbiAgICAgIGltYWdlczogdGhpcy5pbWFnZXMsXHJcbiAgICAgIG5vdGU6IHRoaXMubm90ZSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGV0ZXJtaW5lIGlmIHRoZSBzcGVjaWZpZWQgdGhlc2F1cnVzIGVudHJpZXMgcmVwcmVzZW50IGEgZnJlZSBzZXQuXHJcbiAgICogVGhpcyBoYXBwZW5zIHdoZW4gd2UganVzdCBoYXZlIGEgc2luZ2xlIGVudHJ5IHdpdGggYSBzaW5nbGUgZG90XHJcbiAgICogZm9sbG93ZWQgYnkgXCItXCIuXHJcbiAgICpcclxuICAgKiBAcGFyYW0gZW50cmllcyBUaGUgdGhlc2F1cnVzIGVudHJpZXMgdG8gdGVzdC5cclxuICAgKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBlbnRyaWVzIHJlcHJlc2VudCBhIGZyZWUgc2V0LlxyXG4gICAqL1xyXG4gIHByaXZhdGUgaXNGcmVlU2V0KGVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQpOiBib29sZWFuIHtcclxuICAgIGlmIChlbnRyaWVzPy5sZW5ndGggIT09IDEpIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdG9rZW5zID0gZW50cmllc1swXS5pZC5zcGxpdCgnLicpO1xyXG4gICAgcmV0dXJuIHRva2Vucy5sZW5ndGggPT09IDIgJiYgdG9rZW5zWzFdID09PSAnLSc7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEZpbHRlcmVkRW50cmllcyhcclxuICAgIGVudHJpZXM6IFRoZXNhdXJ1c0VudHJ5W10gfCB1bmRlZmluZWQgfCBudWxsLFxyXG4gICAgcHJlZml4OiBzdHJpbmcgfCBudWxsXHJcbiAgKTogVGhlc2F1cnVzRW50cnlbXSB8IHVuZGVmaW5lZCB7XHJcbiAgICBpZiAoIXByZWZpeCB8fCAhZW50cmllcz8uc29tZSgoZSkgPT4gZS5pZC5pbmRleE9mKCcuJykgPiAtMSkpIHtcclxuICAgICAgcmV0dXJuIGVudHJpZXMgPyBbLi4uZW50cmllc10gOiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgICBjb25zdCBwID0gcHJlZml4ICsgJy4nO1xyXG4gICAgcmV0dXJuIGVudHJpZXMuZmlsdGVyKChlKSA9PiBlLmlkLnN0YXJ0c1dpdGgocCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVWaXNpYmlsaXR5KCk6IHZvaWQge1xyXG4gICAgY29uc3QgaGlkZGVuOiBhbnkgPSB7fTtcclxuICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5kZWNUeXBlSGlkZGVuRW50cmllcz8uZmluZChcclxuICAgICAgKGUpID0+IGUuaWQgPT09IHRoaXMudHlwZS52YWx1ZVxyXG4gICAgKTtcclxuICAgIGlmIChlbnRyeSkge1xyXG4gICAgICBjb25zdCBuYW1lcyA9IGVudHJ5LnZhbHVlLnNwbGl0KCcgJykuZmlsdGVyKChzKSA9PiBzKTtcclxuICAgICAgbmFtZXMuZm9yRWFjaCgobikgPT4ge1xyXG4gICAgICAgIGhpZGRlbltuXSA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5oaWRkZW4gPSBoaWRkZW47XHJcbiAgICBjb25zb2xlLmxvZygnaGlkZGVuOiAnICsgSlNPTi5zdHJpbmdpZnkodGhpcy5oaWRkZW4pKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgLy8gdGhpcy5hZGp1c3RVSSgpO1xyXG5cclxuICAgIHRoaXMudHlwZS52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSwgZGVib3VuY2VUaW1lKDMwMCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9hZGp1c3RpbmdVSSAmJiAhdGhpcy5fdXBkYXRpbmdGb3JtKSB7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygndHlwZSB2YWx1ZSBjaGFuZ2VkOiAnICsgdmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5hZGp1c3RVSSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFkanVzdFVJKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuX2FkanVzdGluZ1VJKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuX2FkanVzdGluZ1VJID0gdHJ1ZTtcclxuICAgIGNvbnNvbGUubG9nKCdhZGp1c3RVSSBlbnRlcicpO1xyXG4gICAgLy8gcmVzZXQgdHlwZS1kZXBlbmRlbnQgdmFsdWVzXHJcbiAgICB0aGlzLmZsYWdzLnJlc2V0KCk7XHJcbiAgICB0aGlzLnR5cG9sb2dpZXMucmVzZXQoKTtcclxuICAgIHRoaXMuc3ViamVjdC5yZXNldCgpO1xyXG4gICAgdGhpcy5saW5lSGVpZ2h0LnJlc2V0KCk7XHJcbiAgICB0aGlzLnRleHRSZWxhdGlvbi5yZXNldCgpO1xyXG5cclxuICAgIC8vIGZpbHRlciBlbnRyaWVzIGZvciBtdWx0aXBsZS1zZWxlY3Rpb25zXHJcbiAgICB0aGlzLmZsYWdzLnNldFZhbHVlKFxyXG4gICAgICB0aGlzLl9mbGFnQWRhcHRlci5zZXRTbG90RmxhZ3MoXHJcbiAgICAgICAgJ2ZsYWdzJyxcclxuICAgICAgICB0aGlzLmdldEZpbHRlcmVkRW50cmllcyh0aGlzLl9lbGVtRmxhZ0VudHJpZXMsIHRoaXMudHlwZS52YWx1ZSk/Lm1hcChcclxuICAgICAgICAgIGVudHJ5VG9GbGFnXHJcbiAgICAgICAgKSB8fCBbXVxyXG4gICAgICApXHJcbiAgICApO1xyXG5cclxuICAgIHRoaXMuY29sb3JzLnNldFZhbHVlKFxyXG4gICAgICB0aGlzLl9mbGFnQWRhcHRlci5zZXRTbG90RmxhZ3MoXHJcbiAgICAgICAgJ2NvbG9ycycsXHJcbiAgICAgICAgdGhpcy5nZXRGaWx0ZXJlZEVudHJpZXModGhpcy5fZWxlbUNvbG9yRW50cmllcywgdGhpcy50eXBlLnZhbHVlKT8ubWFwKFxyXG4gICAgICAgICAgZW50cnlUb0ZsYWdcclxuICAgICAgICApIHx8IFtdXHJcbiAgICAgIClcclxuICAgICk7XHJcblxyXG4gICAgLy8gZmlsdGVyIGVudHJpZXMgYW5kIHNldCBmcmVlIGZvciBzaW5nbGUtZW50cnkgZ3JvdXBzIHdpdGggXCJhbnkuLVwiXHJcbiAgICBsZXQgZW50cmllcyA9IHRoaXMuZ2V0RmlsdGVyZWRFbnRyaWVzKFxyXG4gICAgICB0aGlzLl9lbGVtR2lsZGluZ0VudHJpZXMsXHJcbiAgICAgIHRoaXMudHlwZS52YWx1ZVxyXG4gICAgKTtcclxuICAgIHRoaXMuZWxlbUdpbGRpbmdGcmVlID0gdGhpcy5pc0ZyZWVTZXQoZW50cmllcyk7XHJcbiAgICB0aGlzLmdpbGRpbmdzLnNldFZhbHVlKFxyXG4gICAgICB0aGlzLl9mbGFnQWRhcHRlci5zZXRTbG90RmxhZ3MoXHJcbiAgICAgICAgJ2dpbGRpbmdzJyxcclxuICAgICAgICB0aGlzLmVsZW1HaWxkaW5nRnJlZSA/IFtdIDogZW50cmllcz8ubWFwKGVudHJ5VG9GbGFnKSB8fCBbXVxyXG4gICAgICApXHJcbiAgICApO1xyXG5cclxuICAgIGVudHJpZXMgPSB0aGlzLmdldEZpbHRlcmVkRW50cmllcyh0aGlzLl9lbGVtVGVjaEVudHJpZXMsIHRoaXMudHlwZS52YWx1ZSk7XHJcbiAgICB0aGlzLmVsZW1UZWNobmlxdWVGcmVlID0gdGhpcy5pc0ZyZWVTZXQoZW50cmllcyk7XHJcbiAgICB0aGlzLnRlY2huaXF1ZXMuc2V0VmFsdWUoXHJcbiAgICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RGbGFncyhcclxuICAgICAgICAndGVjaG5pcXVlcycsXHJcbiAgICAgICAgdGhpcy5lbGVtVGVjaG5pcXVlRnJlZSA/IFtdIDogZW50cmllcz8ubWFwKGVudHJ5VG9GbGFnKSB8fCBbXVxyXG4gICAgICApXHJcbiAgICApO1xyXG5cclxuICAgIGVudHJpZXMgPSB0aGlzLmdldEZpbHRlcmVkRW50cmllcyh0aGlzLl9lbGVtUG9zRW50cmllcywgdGhpcy50eXBlLnZhbHVlKTtcclxuICAgIHRoaXMuZWxlbVBvc2l0aW9uRnJlZSA9IHRoaXMuaXNGcmVlU2V0KGVudHJpZXMpO1xyXG4gICAgdGhpcy5wb3NpdGlvbnMuc2V0VmFsdWUoXHJcbiAgICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RGbGFncyhcclxuICAgICAgICAncG9zaXRpb25zJyxcclxuICAgICAgICB0aGlzLmVsZW1Qb3NpdGlvbkZyZWUgPyBbXSA6IGVudHJpZXM/Lm1hcChlbnRyeVRvRmxhZykgfHwgW11cclxuICAgICAgKVxyXG4gICAgKTtcclxuXHJcbiAgICBlbnRyaWVzID0gdGhpcy5nZXRGaWx0ZXJlZEVudHJpZXModGhpcy5fZWxlbVRvb2xFbnRyaWVzLCB0aGlzLnR5cGUudmFsdWUpO1xyXG4gICAgdGhpcy5lbGVtVG9vbEZyZWUgPSB0aGlzLmlzRnJlZVNldChlbnRyaWVzKTtcclxuICAgIHRoaXMudG9vbHMuc2V0VmFsdWUoXHJcbiAgICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RGbGFncyhcclxuICAgICAgICAndG9vbHMnLFxyXG4gICAgICAgIHRoaXMuZWxlbVRvb2xGcmVlID8gW10gOiBlbnRyaWVzPy5tYXAoZW50cnlUb0ZsYWcpIHx8IFtdXHJcbiAgICAgIClcclxuICAgICk7XHJcblxyXG4gICAgdGhpcy50eXBvbG9naWVzLnNldFZhbHVlKFxyXG4gICAgICB0aGlzLl9mbGFnQWRhcHRlci5zZXRTbG90RmxhZ3MoXHJcbiAgICAgICAgJ3R5cG9sb2dpZXMnLFxyXG4gICAgICAgIHRoaXMuZ2V0RmlsdGVyZWRFbnRyaWVzKHRoaXMuX2VsZW1UeXBvbEVudHJpZXMsIHRoaXMudHlwZS52YWx1ZSk/Lm1hcChcclxuICAgICAgICAgIGVudHJ5VG9GbGFnXHJcbiAgICAgICAgKSB8fCBbXVxyXG4gICAgICApXHJcbiAgICApO1xyXG5cclxuICAgIC8vIHZpc2liaWxpdHlcclxuICAgIHRoaXMudXBkYXRlVmlzaWJpbGl0eSgpO1xyXG4gICAgdGhpcy5fYWRqdXN0aW5nVUkgPSBmYWxzZTtcclxuICAgIGNvbnNvbGUubG9nKCdhZGp1c3RVSSBleGl0Jyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwZGF0ZVR5cGVEZXBlbmRlbmNpZXMoZWxlbWVudDogQ29kRGVjb3JhdGlvbkVsZW1lbnQpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKCd1cGRhdGVUeXBlRGVwZW5kZW5jaWVzIGVudGVyJyk7XHJcbiAgICB0aGlzLmtleS5zZXRWYWx1ZShlbGVtZW50LmtleSB8fCBudWxsKTtcclxuICAgIHRoaXMucGFyZW50S2V5LnNldFZhbHVlKGVsZW1lbnQucGFyZW50S2V5IHx8IG51bGwpO1xyXG4gICAgdGhpcy5pbnN0YW5jZUNvdW50LnNldFZhbHVlKGVsZW1lbnQuaW5zdGFuY2VDb3VudCB8fCAwKTtcclxuXHJcbiAgICB0aGlzLnJhbmdlcy5zZXRWYWx1ZShlbGVtZW50LnJhbmdlcyk7XHJcblxyXG4gICAgdGhpcy5fZmxhZ0FkYXB0ZXIuc2V0U2xvdENoZWNrcygnZmxhZ3MnLCBlbGVtZW50LmZsYWdzKTtcclxuXHJcbiAgICAvLyB0eXBvbG9naWVzXHJcbiAgICB0aGlzLnN1YmplY3Quc2V0VmFsdWUoZWxlbWVudC5zdWJqZWN0IHx8IG51bGwpO1xyXG5cclxuICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RDaGVja3MoJ2NvbG9ycycsIGVsZW1lbnQuY29sb3JzIHx8IFtdLCB0cnVlKTtcclxuICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RDaGVja3MoXHJcbiAgICAgICd0eXBvbG9naWVzJyxcclxuICAgICAgZWxlbWVudC50eXBvbG9naWVzIHx8IFtdLFxyXG4gICAgICB0cnVlXHJcbiAgICApO1xyXG4gICAgdGhpcy5fZmxhZ0FkYXB0ZXIuc2V0U2xvdENoZWNrcygnZ2lsZGluZ3MnLCBlbGVtZW50LmdpbGRpbmdzIHx8IFtdLCB0cnVlKTtcclxuICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RDaGVja3MoXHJcbiAgICAgICd0ZWNobmlxdWVzJyxcclxuICAgICAgZWxlbWVudC50ZWNobmlxdWVzIHx8IFtdLFxyXG4gICAgICB0cnVlXHJcbiAgICApO1xyXG4gICAgdGhpcy5fZmxhZ0FkYXB0ZXIuc2V0U2xvdENoZWNrcygndG9vbHMnLCBlbGVtZW50LnRvb2xzIHx8IFtdLCB0cnVlKTtcclxuICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RDaGVja3MoJ3Bvc2l0aW9ucycsIGVsZW1lbnQucG9zaXRpb25zIHx8IFtdLCB0cnVlKTtcclxuXHJcbiAgICB0aGlzLmxpbmVIZWlnaHQuc2V0VmFsdWUoZWxlbWVudC5saW5lSGVpZ2h0IHx8IDApO1xyXG4gICAgdGhpcy50ZXh0UmVsYXRpb24uc2V0VmFsdWUoZWxlbWVudC50ZXh0UmVsYXRpb24gfHwgbnVsbCk7XHJcbiAgICAvLyBkZXNjcmlwdGlvblxyXG4gICAgdGhpcy5kZXNjcmlwdGlvbi5zZXRWYWx1ZShlbGVtZW50LmRlc2NyaXB0aW9uIHx8IG51bGwpO1xyXG4gICAgdGhpcy5pbWFnZXMuc2V0VmFsdWUoZWxlbWVudC5pbWFnZXMgfHwgW10pO1xyXG4gICAgdGhpcy5ub3RlLnNldFZhbHVlKGVsZW1lbnQubm90ZSB8fCBudWxsKTtcclxuXHJcbiAgICB0aGlzLmZvcm0ubWFya0FzUHJpc3RpbmUoKTtcclxuICAgIHRoaXMuX3VwZGF0aW5nRm9ybSA9IGZhbHNlO1xyXG4gICAgY29uc29sZS5sb2coJ3VwZGF0ZVR5cGVEZXBlbmRlbmNpZXMgZXhpdCcpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1cGRhdGVGb3JtKGVsZW1lbnQ6IENvZERlY29yYXRpb25FbGVtZW50IHwgdW5kZWZpbmVkKTogdm9pZCB7XHJcbiAgICB0aGlzLl91cGRhdGluZ0Zvcm0gPSB0cnVlO1xyXG4gICAgY29uc29sZS5sb2coJ3VwZGF0ZUZvcm0gZW50ZXInKTtcclxuICAgIGlmICghZWxlbWVudCkge1xyXG4gICAgICB0aGlzLmZvcm0ucmVzZXQoKTtcclxuICAgICAgdGhpcy5fdXBkYXRpbmdGb3JtID0gZmFsc2U7XHJcbiAgICAgIGNvbnNvbGUubG9nKCd1cGRhdGVGb3JtIGV4aXQnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgLy8gZ2VuZXJhbFxyXG4gICAgdGhpcy50eXBlLnNldFZhbHVlKGVsZW1lbnQudHlwZSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIC8vIGxldCB0aGUgVUkgYWRqdXN0IGl0c2VsZiBiZWZvcmUgc2V0dGluZyB0eXBlLWRlcGVuZGVudCBjb250cm9sc1xyXG4gICAgICBjb25zb2xlLmxvZygnYWRqdXN0IFVJIGZyb20gdXBkYXRlRm9ybScpO1xyXG4gICAgICB0aGlzLmFkanVzdFVJKCk7XHJcbiAgICAgIC8vIHNldCB0eXBlLWRlcGVuZGVudCBjb250cm9sc1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLnVwZGF0ZVR5cGVEZXBlbmRlbmNpZXMoZWxlbWVudCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gc2V0IG90aGVyIGNvbnRyb2xzXHJcbiAgICBjb25zb2xlLmxvZygndXBkYXRlRm9ybSBleGl0Jyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldEVsZW1lbnQoKTogQ29kRGVjb3JhdGlvbkVsZW1lbnQge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAga2V5OiB0aGlzLmtleS52YWx1ZT8udHJpbSgpLFxyXG4gICAgICBwYXJlbnRLZXk6IHRoaXMucGFyZW50S2V5LnZhbHVlPy50cmltKCksXHJcbiAgICAgIHR5cGU6IHRoaXMudHlwZS52YWx1ZT8udHJpbSgpIHx8ICcnLFxyXG4gICAgICBmbGFnczogdGhpcy5fZmxhZ0FkYXB0ZXIuZ2V0Q2hlY2tlZEZsYWdJZHMoJ2ZsYWdzJyksXHJcbiAgICAgIHJhbmdlczogdGhpcy5yYW5nZXMudmFsdWUgfHwgW10sXHJcbiAgICAgIGluc3RhbmNlQ291bnQ6IHRoaXMuaW5zdGFuY2VDb3VudC52YWx1ZSB8fCAwLFxyXG4gICAgICB0eXBvbG9naWVzOiB0aGlzLl9mbGFnQWRhcHRlci5nZXRPcHRpb25hbENoZWNrZWRGbGFnSWRzKCd0eXBvbG9naWVzJyksXHJcbiAgICAgIHN1YmplY3Q6IHRoaXMuc3ViamVjdC52YWx1ZT8udHJpbSgpLFxyXG4gICAgICBjb2xvcnM6IHRoaXMuX2ZsYWdBZGFwdGVyLmdldE9wdGlvbmFsQ2hlY2tlZEZsYWdJZHMoJ2NvbG9ycycpLFxyXG4gICAgICBnaWxkaW5nczogdGhpcy5fZmxhZ0FkYXB0ZXIuZ2V0T3B0aW9uYWxDaGVja2VkRmxhZ0lkcygnZ2lsZGluZ3MnKSxcclxuICAgICAgdGVjaG5pcXVlczogdGhpcy5fZmxhZ0FkYXB0ZXIuZ2V0T3B0aW9uYWxDaGVja2VkRmxhZ0lkcygndGVjaG5pcXVlcycpLFxyXG4gICAgICB0b29sczogdGhpcy5fZmxhZ0FkYXB0ZXIuZ2V0T3B0aW9uYWxDaGVja2VkRmxhZ0lkcygndG9vbHMnKSxcclxuICAgICAgcG9zaXRpb25zOiB0aGlzLl9mbGFnQWRhcHRlci5nZXRPcHRpb25hbENoZWNrZWRGbGFnSWRzKCdwb3NpdGlvbnMnKSxcclxuICAgICAgbGluZUhlaWdodDogdGhpcy5saW5lSGVpZ2h0LnZhbHVlLFxyXG4gICAgICB0ZXh0UmVsYXRpb246IHRoaXMudGV4dFJlbGF0aW9uLnZhbHVlPy50cmltKCksXHJcbiAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLmRlc2NyaXB0aW9uLnZhbHVlPy50cmltKCksXHJcbiAgICAgIGltYWdlczogdGhpcy5pbWFnZXMudmFsdWU/Lmxlbmd0aCA/IHRoaXMuaW1hZ2VzLnZhbHVlIDogdW5kZWZpbmVkLFxyXG4gICAgICBub3RlOiB0aGlzLm5vdGUudmFsdWU/LnRyaW0oKSxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Mb2NhdGlvbkNoYW5nZShyYW5nZXM6IENvZExvY2F0aW9uUmFuZ2VbXSB8IG51bGwpOiB2b2lkIHtcclxuICAgIHRoaXMucmFuZ2VzLnNldFZhbHVlKHJhbmdlcyB8fCBbXSk7XHJcbiAgICB0aGlzLnJhbmdlcy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLnJhbmdlcy5tYXJrQXNEaXJ0eSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uSW1hZ2VzQ2hhbmdlKGltYWdlczogQ29kSW1hZ2VbXSB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbWFnZXMuc2V0VmFsdWUoaW1hZ2VzIHx8IFtdKTtcclxuICAgIHRoaXMuaW1hZ2VzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMuaW1hZ2VzLm1hcmtBc0RpcnR5KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25GbGFnc0NoYW5nZShmbGFnczogRmxhZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLl9mbGFnQWRhcHRlci5zZXRTbG90RmxhZ3MoJ2ZsYWdzJywgZmxhZ3MsIHRydWUpO1xyXG4gICAgaWYgKHRoaXMuX3VwZGF0aW5nRm9ybSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmZsYWdzLnNldFZhbHVlKGZsYWdzKTtcclxuICAgIHRoaXMuZmxhZ3MudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy5mbGFncy5tYXJrQXNEaXJ0eSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uVHlwb2xvZ3lGbGFnc0NoYW5nZShmbGFnczogRmxhZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLl9mbGFnQWRhcHRlci5zZXRTbG90RmxhZ3MoJ3R5cG9sb2dpZXMnLCBmbGFncywgdHJ1ZSk7XHJcbiAgICBpZiAodGhpcy5fdXBkYXRpbmdGb3JtKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudHlwb2xvZ2llcy5zZXRWYWx1ZShmbGFncyk7XHJcbiAgICB0aGlzLnR5cG9sb2dpZXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy50eXBvbG9naWVzLm1hcmtBc0RpcnR5KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Db2xvckZsYWdzQ2hhbmdlKGZsYWdzOiBGbGFnW10pOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RGbGFncygnY29sb3JzJywgZmxhZ3MsIHRydWUpO1xyXG4gICAgaWYgKHRoaXMuX3VwZGF0aW5nRm9ybSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbG9ycy5zZXRWYWx1ZShmbGFncyk7XHJcbiAgICB0aGlzLmNvbG9ycy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLmNvbG9ycy5tYXJrQXNEaXJ0eSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uR2lsZGluZ0ZsYWdzQ2hhbmdlKGZsYWdzOiBGbGFnW10pOiB2b2lkIHtcclxuICAgIHRoaXMuX2ZsYWdBZGFwdGVyLnNldFNsb3RGbGFncygnZ2lsZGluZ3MnLCBmbGFncywgdHJ1ZSk7XHJcbiAgICBpZiAodGhpcy5fdXBkYXRpbmdGb3JtKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuZ2lsZGluZ3Muc2V0VmFsdWUoZmxhZ3MpO1xyXG4gICAgdGhpcy5naWxkaW5ncy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICB0aGlzLmdpbGRpbmdzLm1hcmtBc0RpcnR5KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25UZWNobmlxdWVGbGFnc0NoYW5nZShmbGFnczogRmxhZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLl9mbGFnQWRhcHRlci5zZXRTbG90RmxhZ3MoJ3RlY2huaXF1ZXMnLCBmbGFncywgdHJ1ZSk7XHJcbiAgICBpZiAodGhpcy5fdXBkYXRpbmdGb3JtKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudGVjaG5pcXVlcy5zZXRWYWx1ZShmbGFncyk7XHJcbiAgICB0aGlzLnRlY2huaXF1ZXMudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgdGhpcy50ZWNobmlxdWVzLm1hcmtBc0RpcnR5KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Ub29sRmxhZ3NDaGFuZ2UoZmxhZ3M6IEZsYWdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZmxhZ0FkYXB0ZXIuc2V0U2xvdEZsYWdzKCd0b29scycsIGZsYWdzLCB0cnVlKTtcclxuICAgIGlmICh0aGlzLl91cGRhdGluZ0Zvcm0pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50b29scy5zZXRWYWx1ZShmbGFncyk7XHJcbiAgICB0aGlzLnRvb2xzLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMudG9vbHMubWFya0FzRGlydHkoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblBvc2l0aW9uRmxhZ3NDaGFuZ2UoZmxhZ3M6IEZsYWdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5fZmxhZ0FkYXB0ZXIuc2V0U2xvdEZsYWdzKCdwb3NpdGlvbnMnLCBmbGFncywgdHJ1ZSk7XHJcbiAgICBpZiAodGhpcy5fdXBkYXRpbmdGb3JtKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucG9zaXRpb25zLnNldFZhbHVlKGZsYWdzKTtcclxuICAgIHRoaXMucG9zaXRpb25zLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgIHRoaXMucG9zaXRpb25zLm1hcmtBc0RpcnR5KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2FuY2VsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5lZGl0b3JDbG9zZS5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2F2ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZvcm0uaW52YWxpZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLl9lbGVtZW50ID0gdGhpcy5nZXRFbGVtZW50KCk7XHJcbiAgICB0aGlzLmVsZW1lbnRDaGFuZ2UuZW1pdCh0aGlzLl9lbGVtZW50KTtcclxuICB9XHJcbn1cclxuIiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgKHN1Ym1pdCk9XCJzYXZlKClcIj5cclxuICA8ZGl2IGNsYXNzPVwidHlwZS1oZWFkXCI+XHJcbiAgICB7eyB0eXBlLnZhbHVlIHwgZmxhdExvb2t1cCA6IGRlY0VsZW1UeXBlRW50cmllcyA6IFwiaWRcIiA6IFwidmFsdWVcIiB9fVxyXG4gIDwvZGl2PlxyXG4gIDxtYXQtdGFiLWdyb3VwPlxyXG4gICAgPCEtLSBHRU5FUkFMIC0tPlxyXG4gICAgPG1hdC10YWIgbGFiZWw9XCJnZW5lcmFsXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiIHN0eWxlPVwibWFyZ2luLXRvcDogOHB4XCI+XHJcbiAgICAgICAgPCEtLSB0eXBlIChib3VuZCkgLS0+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkXHJcbiAgICAgICAgICAqbmdJZj1cImRlY0VsZW1UeXBlRW50cmllcz8ubGVuZ3RoXCJcclxuICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDE0ZW1cIlxyXG4gICAgICAgICAgYXBwZWFyYW5jZT1cIm91dGxpbmVcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+dHlwZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPG1hdC1zZWxlY3QgW2Zvcm1Db250cm9sXT1cInR5cGVcIj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGUgb2YgZGVjRWxlbVR5cGVFbnRyaWVzXCIgW3ZhbHVlXT1cImUuaWRcIj57e1xyXG4gICAgICAgICAgICAgIGUudmFsdWVcclxuICAgICAgICAgICAgfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICpuZ0lmPVwiJGFueSh0eXBlKS5lcnJvcnM/LnJlcXVpcmVkICYmICh0eXBlLmRpcnR5IHx8IHR5cGUudG91Y2hlZClcIlxyXG4gICAgICAgICAgICA+dHlwZSByZXF1aXJlZDwvbWF0LWVycm9yXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAmbmJzcDtcclxuICAgICAgICA8IS0tIGluc3RhbmNlQ291bnQgLS0+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIHN0eWxlPVwid2lkdGg6IDZlbVwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5jb3VudDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJpbnN0YW5jZUNvdW50XCIgdHlwZT1cIm51bWJlclwiIG1pbj1cIjBcIiAvPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcblxyXG4gICAgICAgIDwhLS0gcmFuZ2VzIC0tPlxyXG4gICAgICAgIDxjYWRtdXMtY29kLWxvY2F0aW9uXHJcbiAgICAgICAgICBsYWJlbD1cInJhbmdlc1wiXHJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICBbbG9jYXRpb25dPVwicmFuZ2VzLnZhbHVlXCJcclxuICAgICAgICAgIChsb2NhdGlvbkNoYW5nZSk9XCJvbkxvY2F0aW9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgID48L2NhZG11cy1jb2QtbG9jYXRpb24+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBmbGFncyAtLT5cclxuICAgICAgPGRpdiAqbmdJZj1cImZsYWdzJCB8IGFzeW5jIGFzIGZsYWdzXCI+XHJcbiAgICAgICAgPGZpZWxkc2V0ICpuZ0lmPVwiZmxhZ3MubGVuZ3RoXCI+XHJcbiAgICAgICAgICA8bGVnZW5kPmZlYXR1cmVzPC9sZWdlbmQ+XHJcbiAgICAgICAgICA8Y2FkbXVzLXVpLWZsYWdzLXBpY2tlclxyXG4gICAgICAgICAgICBbZmxhZ3NdPVwiZmxhZ3NcIlxyXG4gICAgICAgICAgICAoZmxhZ3NDaGFuZ2UpPVwib25GbGFnc0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgID48L2NhZG11cy11aS1mbGFncy1waWNrZXI+XHJcbiAgICAgICAgPC9maWVsZHNldD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8YnIgLz5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8IS0tIGtleSAtLT5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPmtleTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbF09XCJrZXlcIiAvPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAqbmdJZj1cIiRhbnkoa2V5KS5lcnJvcnM/LnBhdHRlcm4gJiYgKGtleS5kaXJ0eSB8fCBrZXkudG91Y2hlZClcIlxyXG4gICAgICAgICAgICA+aW52YWxpZCBrZXk8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAqbmdJZj1cIiRhbnkoa2V5KS5lcnJvcnM/Lm1heExlbmd0aCAmJiAoa2V5LmRpcnR5IHx8IGtleS50b3VjaGVkKVwiXHJcbiAgICAgICAgICAgID5rZXkgdG9vIGxvbmc8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgPCEtLSBwYXJlbnRLZXkgLS0+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwicGFyZW50S2V5cz8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPnBhcmVudCBrZXk8L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbF09XCJwYXJlbnRLZXlcIj5cclxuICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIm51bGxcIj4obm9uZSk8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBrIG9mIHBhcmVudEtleXNcIiBbdmFsdWVdPVwia1wiPnt7XHJcbiAgICAgICAgICAgICAga1xyXG4gICAgICAgICAgICB9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LXRhYj5cclxuXHJcbiAgICA8IS0tIFRZUE9MT0dJRVMgLS0+XHJcbiAgICA8bWF0LXRhYiBsYWJlbD1cInR5cG9sb2dpZXNcIj5cclxuICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGdhcDogOHB4XCI+XHJcbiAgICAgICAgPCEtLSBsaW5lSGVpZ2h0IC0tPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZFxyXG4gICAgICAgICAgc3R5bGU9XCJmbGV4OiAwIDAgYXV0bzsgd2lkdGg6IDRlbVwiXHJcbiAgICAgICAgICBbaGlkZGVuXT1cImhpZGRlbj8ubGluZUhlaWdodFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD5sbi5oPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgdHlwZT1cIm51bWJlclwiIG1pbj1cIjBcIiBbZm9ybUNvbnRyb2xdPVwibGluZUhlaWdodFwiIC8+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8IS0tIHRleHRSZWxhdGlvbiAtLT5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGRcclxuICAgICAgICAgIFtoaWRkZW5dPVwiaGlkZGVuPy50ZXh0UmVsYXRpb25cIlxyXG4gICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiAxIDAgYXV0b1wiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD50ZXh0IHJlbGF0aW9uPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cInRleHRSZWxhdGlvblwiIC8+XHJcbiAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgJGFueSh0ZXh0UmVsYXRpb24pLmVycm9ycz8ubWF4TGVuZ3RoICYmXHJcbiAgICAgICAgICAgICAgKHRleHRSZWxhdGlvbi5kaXJ0eSB8fCB0ZXh0UmVsYXRpb24udG91Y2hlZClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPnRleHQgcmVsYXRpb24gdG9vIGxvbmc8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIHR5cG9sb2dpZXMgLS0+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJ0eXBvbG9neUZsYWdzJCB8IGFzeW5jIGFzIGZsYWdzXCI+XHJcbiAgICAgICAgPGZpZWxkc2V0IFtoaWRkZW5dPVwiIWZsYWdzLmxlbmd0aCB8fCBoaWRkZW4/LnR5cG9sb2dpZXNcIj5cclxuICAgICAgICAgIDxsZWdlbmQ+dHlwb2xvZ2llczwvbGVnZW5kPlxyXG4gICAgICAgICAgPGNhZG11cy11aS1mbGFncy1waWNrZXJcclxuICAgICAgICAgICAgW2ZsYWdzXT1cImZsYWdzXCJcclxuICAgICAgICAgICAgKGZsYWdzQ2hhbmdlKT1cIm9uVHlwb2xvZ3lGbGFnc0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgID48L2NhZG11cy11aS1mbGFncy1waWNrZXI+XHJcbiAgICAgICAgPC9maWVsZHNldD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIHN1YmplY3QgLS0+XHJcbiAgICAgIDxkaXYgW2hpZGRlbl09XCJoaWRkZW4/LnN1YmplY3RcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPnN1YmplY3Q8L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbZm9ybUNvbnRyb2xdPVwic3ViamVjdFwiIC8+XHJcbiAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgJGFueShzdWJqZWN0KS5lcnJvcnM/Lm1heExlbmd0aCAmJlxyXG4gICAgICAgICAgICAgIChzdWJqZWN0LmRpcnR5IHx8IHN1YmplY3QudG91Y2hlZClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPnN1YmplY3QgdG9vIGxvbmc8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBjb2xvcnMgLS0+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJjb2xvckZsYWdzJCB8IGFzeW5jIGFzIGZsYWdzXCI+XHJcbiAgICAgICAgPGZpZWxkc2V0IFtoaWRkZW5dPVwiIWZsYWdzLmxlbmd0aCB8fCBoaWRkZW4/LmNvbG9yc1wiPlxyXG4gICAgICAgICAgPGxlZ2VuZD5jb2xvcnM8L2xlZ2VuZD5cclxuICAgICAgICAgIDxjYWRtdXMtdWktZmxhZ3MtcGlja2VyXHJcbiAgICAgICAgICAgIFtmbGFnc109XCJmbGFnc1wiXHJcbiAgICAgICAgICAgIChmbGFnc0NoYW5nZSk9XCJvbkNvbG9yRmxhZ3NDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9jYWRtdXMtdWktZmxhZ3MtcGlja2VyPlxyXG4gICAgICAgIDwvZmllbGRzZXQ+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBnaWxkaW5ncyAtLT5cclxuICAgICAgPGRpdiAqbmdJZj1cImdpbGRpbmdGbGFncyQgfCBhc3luYyBhcyBmbGFnc1wiPlxyXG4gICAgICAgIDxmaWVsZHNldFxyXG4gICAgICAgICAgW2hpZGRlbl09XCIoIWZsYWdzLmxlbmd0aCAmJiAhZWxlbUdpbGRpbmdGcmVlKSB8fCBoaWRkZW4/LmdpbGRpbmdzXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bGVnZW5kPmdpbGRpbmdzPC9sZWdlbmQ+XHJcbiAgICAgICAgICA8Y2FkbXVzLXVpLWZsYWdzLXBpY2tlclxyXG4gICAgICAgICAgICBbZmxhZ3NdPVwiZmxhZ3NcIlxyXG4gICAgICAgICAgICBbYWxsb3dVc2VyRmxhZ3NdPVwiZWxlbUdpbGRpbmdGcmVlIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgKGZsYWdzQ2hhbmdlKT1cIm9uR2lsZGluZ0ZsYWdzQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgPjwvY2FkbXVzLXVpLWZsYWdzLXBpY2tlcj5cclxuICAgICAgICA8L2ZpZWxkc2V0PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gdGVjaG5pcXVlcyAtLT5cclxuICAgICAgPGRpdiAqbmdJZj1cInRlY2huaXF1ZUZsYWdzJCB8IGFzeW5jIGFzIGZsYWdzXCI+XHJcbiAgICAgICAgPGZpZWxkc2V0XHJcbiAgICAgICAgICBbaGlkZGVuXT1cIighZmxhZ3MubGVuZ3RoICYmICFlbGVtVGVjaG5pcXVlRnJlZSkgfHwgaGlkZGVuPy50ZWNobmlxdWVzXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8bGVnZW5kPnRlY2huaXF1ZXM8L2xlZ2VuZD5cclxuICAgICAgICAgIDxjYWRtdXMtdWktZmxhZ3MtcGlja2VyXHJcbiAgICAgICAgICAgIFtmbGFnc109XCJmbGFnc1wiXHJcbiAgICAgICAgICAgIFthbGxvd1VzZXJGbGFnc109XCJlbGVtVGVjaG5pcXVlRnJlZSB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgIChmbGFnc0NoYW5nZSk9XCJvblRlY2huaXF1ZUZsYWdzQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgPjwvY2FkbXVzLXVpLWZsYWdzLXBpY2tlcj5cclxuICAgICAgICA8L2ZpZWxkc2V0PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gdG9vbHMgLS0+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJ0b29sRmxhZ3MkIHwgYXN5bmMgYXMgZmxhZ3NcIj5cclxuICAgICAgICA8ZmllbGRzZXQgW2hpZGRlbl09XCIoIWZsYWdzLmxlbmd0aCAmJiAhZWxlbVRvb2xGcmVlKSB8fCBoaWRkZW4/LnRvb2xzXCI+XHJcbiAgICAgICAgICA8bGVnZW5kPnRvb2xzPC9sZWdlbmQ+XHJcbiAgICAgICAgICA8Y2FkbXVzLXVpLWZsYWdzLXBpY2tlclxyXG4gICAgICAgICAgICBbZmxhZ3NdPVwiZmxhZ3NcIlxyXG4gICAgICAgICAgICBbYWxsb3dVc2VyRmxhZ3NdPVwiZWxlbVRvb2xGcmVlIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgKGZsYWdzQ2hhbmdlKT1cIm9uVG9vbEZsYWdzQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgPjwvY2FkbXVzLXVpLWZsYWdzLXBpY2tlcj5cclxuICAgICAgICA8L2ZpZWxkc2V0PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gcG9zaXRpb25zIC0tPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwicG9zaXRpb25GbGFncyQgfCBhc3luYyBhcyBmbGFnc1wiPlxyXG4gICAgICAgIDxmaWVsZHNldFxyXG4gICAgICAgICAgW2hpZGRlbl09XCIoIWZsYWdzLmxlbmd0aCAmJiAhZWxlbVBvc2l0aW9uRnJlZSkgfHwgaGlkZGVuPy5wb3NpdGlvbnNcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxsZWdlbmQ+cG9zaXRpb25zPC9sZWdlbmQ+XHJcbiAgICAgICAgICA8Y2FkbXVzLXVpLWZsYWdzLXBpY2tlclxyXG4gICAgICAgICAgICBbZmxhZ3NdPVwiZmxhZ3NcIlxyXG4gICAgICAgICAgICBbYWxsb3dVc2VyRmxhZ3NdPVwiZWxlbVBvc2l0aW9uRnJlZSB8fCBmYWxzZVwiXHJcbiAgICAgICAgICAgIChmbGFnc0NoYW5nZSk9XCJvblBvc2l0aW9uRmxhZ3NDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICA+PC9jYWRtdXMtdWktZmxhZ3MtcGlja2VyPlxyXG4gICAgICAgIDwvZmllbGRzZXQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtdGFiPlxyXG5cclxuICAgIDwhLS0gREVTQ1JJUFRJT04gLS0+XHJcbiAgICA8bWF0LXRhYiBsYWJlbD1cImRlc2NyaXB0aW9uXCI+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPG5neC1tb25hY28tZWRpdG9yXHJcbiAgICAgICAgICAjZHNjZWRpdG9yXHJcbiAgICAgICAgICBbb3B0aW9uc109XCJlZGl0b3JPcHRpb25zXCJcclxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJkZXNjcmlwdGlvblwiXHJcbiAgICAgICAgPjwvbmd4LW1vbmFjby1lZGl0b3I+XHJcbiAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgJGFueShkZXNjcmlwdGlvbikuZXJyb3JzPy5tYXhMZW5ndGggJiZcclxuICAgICAgICAgICAgKGRlc2NyaXB0aW9uLnRvdWNoZWQgfHwgZGVzY3JpcHRpb24uZGlydHkpXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgICAgPmRlc2NyaXB0aW9uIHRvbyBsb25nPC9tYXQtZXJyb3JcclxuICAgICAgICA+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDwhLS0gaW1hZ2VzIC0tPlxyXG4gICAgICAgIDxjYWRtdXMtY29kLWltYWdlc1xyXG4gICAgICAgICAgW3R5cGVFbnRyaWVzXT1cImltZ1R5cGVFbnRyaWVzXCJcclxuICAgICAgICAgIFtpbWFnZXNdPVwiaW1hZ2VzLnZhbHVlXCJcclxuICAgICAgICAgIChpbWFnZXNDaGFuZ2UpPVwib25JbWFnZXNDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgPjwvY2FkbXVzLWNvZC1pbWFnZXM+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDwhLS0gbm90ZSAtLT5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJsb25nLXRleHRcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+bm90ZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPHRleHRhcmVhIHJvd3M9XCIyXCIgbWF0SW5wdXQgW2Zvcm1Db250cm9sXT1cIm5vdGVcIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICAqbmdJZj1cIiRhbnkobm90ZSkuZXJyb3JzPy5tYXhMZW5ndGggJiYgKG5vdGUuZGlydHkgfHwgbm90ZS50b3VjaGVkKVwiXHJcbiAgICAgICAgICAgID5ub3RlIHRvbyBsb25nPC9tYXQtZXJyb3JcclxuICAgICAgICAgID5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LXRhYj5cclxuICA8L21hdC10YWItZ3JvdXA+XHJcblxyXG4gIDwhLS0gYnV0dG9ucyAtLT5cclxuICA8ZGl2IGNsYXNzPVwidG9vbGJhci1yb3dcIj5cclxuICAgIDxidXR0b25cclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGNvbG9yPVwid2FyblwiXHJcbiAgICAgIG1hdC1pY29uLWJ1dHRvblxyXG4gICAgICBtYXRUb29sdGlwPVwiRGlzY2FyZCBlbGVtZW50IGNoYW5nZXNcIlxyXG4gICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24+Y2xlYXI8L21hdC1pY29uPlxyXG4gICAgPC9idXR0b24+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICBtYXQtZmxhdC1idXR0b25cclxuICAgICAgbWF0VG9vbHRpcD1cIkFjY2VwdCBlbGVtZW50IGNoYW5nZXNcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiZm9ybS5pbnZhbGlkIHx8IGZvcm0ucHJpc3RpbmVcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWljb24+Y2hlY2tfY2lyY2xlPC9tYXQtaWNvbj4gZWxlbWVudFxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZm9ybT5cclxuIl19