cps-ui-kit 0.98.0 → 0.100.0

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.
@@ -136,11 +136,14 @@ export class BaseTreeDropdownComponent {
136
136
  registerOnTouched(fn) {
137
137
  this.onTouched = fn;
138
138
  }
139
- writeValue(value) {
139
+ writeValue(value, internal = false) {
140
140
  this.value = value;
141
+ if (!internal && value !== null) {
142
+ this.treeSelection = this._valueToTreeSelection(this.value);
143
+ }
141
144
  }
142
145
  updateValue(value) {
143
- this.writeValue(value);
146
+ this.writeValue(value, true);
144
147
  this.onChange(value);
145
148
  this.valueChanged.emit(value);
146
149
  }
@@ -493,4 +496,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
493
496
  type: ViewChild,
494
497
  args: ['boxEl']
495
498
  }] } });
496
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10cmVlLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nwcy11aS1raXQvc3JjL2xpYi9iYXNlX2NvbXBvbmVudHMvYmFzZS10cmVlLWRyb3Bkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBT3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7OztBQU9wQyxNQUFNLE9BQU8seUJBQXlCO0lBNkJwQyxJQUFhLE9BQU8sQ0FBQyxPQUFjO1FBQ2pDLElBQUksT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQ3hCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFJRCxJQUFJLEtBQUssQ0FBQyxLQUFVO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixD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QWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLHdCQUF3QjtzQkFBaEMsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBRU8sT0FBTztzQkFBbkIsS0FBSztnQkFhVSxNQUFNO3NCQUFyQixLQUFLO3VCQUFDLE9BQU87Z0JBV0osWUFBWTtzQkFBckIsTUFBTTtnQkFHUCxrQkFBa0I7c0JBRGpCLFNBQVM7dUJBQUMsb0JBQW9CO2dCQUkvQixXQUFXO3NCQURWLFNBQVM7dUJBQUMsYUFBYTtnQkFHRCxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBR3JCLEtBQUs7c0JBREosU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBUcmVlTm9kZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcbmltcG9ydCB7XG4gIEljb25UeXBlLFxuICBpY29uU2l6ZVR5cGVcbn0gZnJvbSAnLi4vY29tcG9uZW50cy9jcHMtaWNvbi9jcHMtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjb252ZXJ0U2l6ZSB9IGZyb20gJy4uL3V0aWxzL2ludGVybmFsL3NpemUtdXRpbHMnO1xuaW1wb3J0IHsgVHJlZSB9IGZyb20gJ3ByaW1lbmcvdHJlZSc7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvY3BzLXRvb2x0aXAuZGlyZWN0aXZlJztcbmltcG9ydCB7IENwc01lbnVDb21wb25lbnQgfSBmcm9tICcuLi9jb21wb25lbnRzL2Nwcy1tZW51L2Nwcy1tZW51LmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICB0ZW1wbGF0ZTogJydcbn0pXG5leHBvcnQgY2xhc3MgQmFzZVRyZWVEcm9wZG93bkNvbXBvbmVudFxuICBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICBASW5wdXQoKSBsYWJlbCA9ICcnO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlciA9ICdQbGVhc2UgZW50ZXInO1xuICBASW5wdXQoKSBoaW50ID0gJyc7XG4gIEBJbnB1dCgpIG11bHRpcGxlID0gZmFsc2U7XG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIHdpZHRoOiBudW1iZXIgfCBzdHJpbmcgPSAnMTAwJSc7XG4gIEBJbnB1dCgpIGNoaXBzID0gdHJ1ZTtcbiAgQElucHV0KCkgY2xvc2FibGVDaGlwcyA9IHRydWU7XG4gIEBJbnB1dCgpIGNsZWFyYWJsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBvcGVuT25DbGVhciA9IHRydWU7XG4gIEBJbnB1dCgpIG9wdGlvbkxhYmVsID0gJ2xhYmVsJztcbiAgQElucHV0KCkgb3B0aW9uSW5mbyA9ICdpbmZvJztcbiAgQElucHV0KCkgaGlkZURldGFpbHMgPSBmYWxzZTtcbiAgQElucHV0KCkgcGVyc2lzdGVudENsZWFyID0gZmFsc2U7XG4gIEBJbnB1dCgpIHByZWZpeEljb246IEljb25UeXBlID0gJyc7XG4gIEBJbnB1dCgpIHByZWZpeEljb25TaXplOiBpY29uU2l6ZVR5cGUgPSAnMThweCc7XG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcbiAgQElucHV0KCkgdmlydHVhbFNjcm9sbCA9IGZhbHNlO1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcCA9ICcnO1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcENsYXNzID0gJ2Nwcy10b29sdGlwLWNvbnRlbnQnO1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcE1heFdpZHRoOiBudW1iZXIgfCBzdHJpbmcgPSAnMTAwJSc7XG4gIEBJbnB1dCgpIGluZm9Ub29sdGlwUGVyc2lzdGVudCA9IGZhbHNlO1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcFBvc2l0aW9uOiBUb29sdGlwUG9zaXRpb24gPSAndG9wJztcbiAgQElucHV0KCkgaW5pdGlhbEV4cGFuZERpcmVjdG9yaWVzID0gZmFsc2U7XG4gIEBJbnB1dCgpIGluaXRpYWxFeHBhbmRBbGwgPSBmYWxzZTtcblxuICBASW5wdXQoKSBzZXQgb3B0aW9ucyhvcHRpb25zOiBhbnlbXSkge1xuICAgIGlmIChvcHRpb25zPy5zb21lKChvKSA9PiBvLmlubmVyKSkge1xuICAgICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX3RvSW5uZXJPcHRpb25zKG9wdGlvbnMpO1xuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKTogVHJlZU5vZGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gIH1cblxuICBASW5wdXQoJ3ZhbHVlJykgX3ZhbHVlOiBhbnkgPSB1bmRlZmluZWQ7XG5cbiAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ2NvbXBvbmVudENvbnRhaW5lcicpXG4gIGNvbXBvbmVudENvbnRhaW5lciE6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnb3B0aW9uc01lbnUnKVxuICBvcHRpb25zTWVudSE6IENwc01lbnVDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZCgndHJlZUxpc3QnKSB0cmVlTGlzdCE6IFRyZWU7XG5cbiAgQFZpZXdDaGlsZCgnYm94RWwnKVxuICBib3hFbCE6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBfc3RhdHVzQ2hhbmdlc1N1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIF9vcHRpb25zOiBUcmVlTm9kZVtdID0gW107XG4gIG9wdGlvbnNNYXAgPSBuZXcgTWFwPHN0cmluZywgVHJlZU5vZGU+KCk7XG4gIG9yaWdpbmFsT3B0aW9uc01hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG5cbiAgdmlydHVhbExpc3RIZWlnaHQgPSAyNDA7XG4gIHZpcnR1YWxTY3JvbGxJdGVtU2l6ZSA9IDQwO1xuXG4gIGVycm9yID0gJyc7XG4gIGN2dFdpZHRoID0gJyc7XG4gIGlzT3BlbmVkID0gZmFsc2U7XG4gIG9wdGlvbkZvY3VzZWQgPSBmYWxzZTtcbiAgaXNBdXRvY29tcGxldGUgPSBmYWxzZTtcblxuICB0cmVlQ29udGFpbmVyRWxlbWVudCE6IEhUTUxFbGVtZW50O1xuICB0cmVlU2VsZWN0aW9uOiBhbnk7XG5cbiAgYm94V2lkdGggPSAwO1xuICByZXNpemVPYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBwdWJsaWMgY29udHJvbDogTmdDb250cm9sLFxuICAgIHB1YmxpYyBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgaWYgKHRoaXMuY29udHJvbCkge1xuICAgICAgdGhpcy5jb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICAgIH1cbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKSA9PiB7XG4gICAgICBlbnRyaWVzLmZvckVhY2goKGVudHJ5KSA9PiB7XG4gICAgICAgIGlmIChlbnRyeT8udGFyZ2V0KSB0aGlzLmJveFdpZHRoID0gKGVudHJ5LnRhcmdldCBhcyBhbnkpLm9mZnNldFdpZHRoO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmN2dFdpZHRoID0gY29udmVydFNpemUodGhpcy53aWR0aCk7XG4gICAgaWYgKCF0aGlzLl92YWx1ZSkge1xuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5fdmFsdWUgPSBbXTtcbiAgICAgICAgdGhpcy50cmVlU2VsZWN0aW9uID0gW107XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudHJlZVNlbGVjdGlvbiA9IHRoaXMuX3ZhbHVlVG9UcmVlU2VsZWN0aW9uKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMuX3N0YXR1c0NoYW5nZXNTdWJzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2w/LnN0YXR1c0NoYW5nZXM/LnN1YnNjcmliZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5fY2hlY2tFcnJvcnMoKTtcbiAgICAgIH1cbiAgICApIGFzIFN1YnNjcmlwdGlvbjtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLl9pbml0Q29udGFpbmVyQ2xpY2tMaXN0ZW5lcigpO1xuICAgIHRoaXMucmVjYWxjVmlydHVhbExpc3RIZWlnaHQoKTtcbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyLm9ic2VydmUodGhpcy5ib3hFbC5uYXRpdmVFbGVtZW50KTtcbiAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3N0YXR1c0NoYW5nZXNTdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLnRyZWVDb250YWluZXJFbGVtZW50Py5yZW1vdmVFdmVudExpc3RlbmVyKFxuICAgICAgJ2NsaWNrJyxcbiAgICAgIHRoaXMuX2hhbmRsZU9uQ29udGFpbmVyQ2xpY2suYmluZCh0aGlzKVxuICAgICk7XG5cbiAgICB0aGlzLnJlc2l6ZU9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gIH1cblxuICBwcml2YXRlIF9pbml0Q29udGFpbmVyQ2xpY2tMaXN0ZW5lcigpIHtcbiAgICB0aGlzLnRyZWVDb250YWluZXJFbGVtZW50ID1cbiAgICAgIHRoaXMudHJlZUxpc3Q/LmVsPy5uYXRpdmVFbGVtZW50Py5xdWVyeVNlbGVjdG9yKCcucC10cmVlLWNvbnRhaW5lcicpO1xuICAgIGlmICh0aGlzLnRyZWVDb250YWluZXJFbGVtZW50KSB7XG4gICAgICB0aGlzLnRyZWVDb250YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICdjbGljaycsXG4gICAgICAgIHRoaXMuX2hhbmRsZU9uQ29udGFpbmVyQ2xpY2suYmluZCh0aGlzKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9oYW5kbGVPbkNvbnRhaW5lckNsaWNrKGV2ZW50OiBhbnkpIHtcbiAgICBmdW5jdGlvbiBnZXRQYXJlbnRXaXRoQ2xhc3MoXG4gICAgICBlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwsXG4gICAgICBjbGFzc05hbWU6IHN0cmluZ1xuICAgICkge1xuICAgICAgbGV0IGN1cnJlbnRFbGVtZW50ID0gZWxlbWVudDtcbiAgICAgIHdoaWxlIChjdXJyZW50RWxlbWVudCkge1xuICAgICAgICBpZiAoY3VycmVudEVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpIHtcbiAgICAgICAgICByZXR1cm4gY3VycmVudEVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudEVsZW1lbnQgPSBjdXJyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdGhpcy5vcHRpb25Gb2N1c2VkID0gdHJ1ZTtcblxuICAgIGNvbnN0IGVsZW0gPSBldmVudC50YXJnZXQuY2xhc3NMaXN0LmNvbnRhaW5zKCdwLXRyZWVub2RlLWNvbnRlbnQnKVxuICAgICAgPyBldmVudC50YXJnZXRcbiAgICAgIDogZ2V0UGFyZW50V2l0aENsYXNzKGV2ZW50LnRhcmdldCwgJ3AtdHJlZW5vZGUtY29udGVudCcpO1xuXG4gICAgaWYgKFxuICAgICAgZWxlbT8ucGFyZW50RWxlbWVudD8uY2xhc3NMaXN0Py5jb250YWlucygnY3BzLXRyZWUtbm9kZS1mdWxseS1leHBhbmRhYmxlJylcbiAgICApIHtcbiAgICAgIHRoaXMub25DbGlja0Z1bGx5RXhwYW5kYWJsZShlbGVtKTtcbiAgICB9XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIG9uQ2hhbmdlID0gKGV2ZW50OiBhbnkpID0+IHt9O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgb25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSkge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gIH1cblxuICB1cGRhdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy53cml0ZVZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlZC5lbWl0KHZhbHVlKTtcbiAgfVxuXG4gIG9uU2VsZWN0Tm9kZSgpIHtcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUpIHtcbiAgICAgIHRoaXMudG9nZ2xlT3B0aW9ucyhmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgb25DbGlja0Z1bGx5RXhwYW5kYWJsZShlbGVtOiBIVE1MRWxlbWVudCkge1xuICAgIGNvbnN0IHBhcmVudCA9IGVsZW0ucGFyZW50RWxlbWVudDtcbiAgICBjb25zdCBrZXkgPSB0aGlzLl9nZXRIVE1MRWxlbWVudEtleShwYXJlbnQpO1xuICAgIGlmICgha2V5KSByZXR1cm47XG5cbiAgICBjb25zdCB0cmVlTm9kZSA9IHRoaXMub3B0aW9ucy5maW5kKChvKSA9PiBvLmtleSA9PT0ga2V5KTtcbiAgICBpZiAoIXRyZWVOb2RlKSByZXR1cm47XG5cbiAgICB0cmVlTm9kZS5leHBhbmRlZCA9ICF0cmVlTm9kZS5leHBhbmRlZDtcbiAgICB0aGlzLnVwZGF0ZU9wdGlvbnMoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuX25vZGVUb2dnbGVkKGVsZW0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0SFRNTEVsZW1lbnRLZXkoZWxlbTogYW55KTogc3RyaW5nIHtcbiAgICBpZiAoIWVsZW0/LmNsYXNzTGlzdCkgcmV0dXJuICcnO1xuICAgIGNvbnN0IGNsYXNzTGlzdCA9IFsuLi5lbGVtLmNsYXNzTGlzdF07XG4gICAgY29uc3Qga2V5ID0gY2xhc3NMaXN0LmZpbmQoKGNsYXNzTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gY2xhc3NOYW1lLnN0YXJ0c1dpdGgoJ2tleS0nKTtcbiAgICB9KTtcbiAgICBpZiAoIWtleSkgcmV0dXJuICcnO1xuICAgIHJldHVybiBrZXkucmVwbGFjZSgna2V5LScsICcnKTtcbiAgfVxuXG4gIHRyZWVTZWxlY3Rpb25DaGFuZ2VkKHNlbGVjdGlvbjogYW55KSB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnRyZWVTZWxlY3Rpb25Ub1ZhbHVlKHNlbGVjdGlvbikpO1xuICB9XG5cbiAgcmVjYWxjVmlydHVhbExpc3RIZWlnaHQoKSB7XG4gICAgaWYgKCF0aGlzLnZpcnR1YWxTY3JvbGwpIHJldHVybjtcbiAgICBjb25zdCBjdXJyZW50TGVuID0gdGhpcy50cmVlTGlzdD8uc2VyaWFsaXplZFZhbHVlPy5sZW5ndGggfHwgMDtcbiAgICB0aGlzLnZpcnR1YWxMaXN0SGVpZ2h0ID0gTWF0aC5taW4oXG4gICAgICB0aGlzLnZpcnR1YWxTY3JvbGxJdGVtU2l6ZSAqIGN1cnJlbnRMZW4sXG4gICAgICAyNDBcbiAgICApO1xuICB9XG5cbiAgdG9nZ2xlT3B0aW9ucyhzaG93PzogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh0aGlzLmRpc2FibGVkIHx8IHRoaXMuaXNPcGVuZWQgPT09IHNob3cpIHJldHVybjtcblxuICAgIGlmICh0eXBlb2Ygc2hvdyA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICBpZiAoc2hvdykge1xuICAgICAgICB0aGlzLm9wdGlvbnNNZW51LnNob3coe1xuICAgICAgICAgIHRhcmdldDogdGhpcy5ib3hFbC5uYXRpdmVFbGVtZW50XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5vcHRpb25zTWVudS5oaWRlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3B0aW9uc01lbnUudG9nZ2xlKHtcbiAgICAgICAgdGFyZ2V0OiB0aGlzLmJveEVsLm5hdGl2ZUVsZW1lbnRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuaXNPcGVuZWQgPSB0aGlzLm9wdGlvbnNNZW51LmlzVmlzaWJsZSgpO1xuXG4gICAgdGhpcy5vcHRpb25Gb2N1c2VkID0gZmFsc2U7XG4gICAgaWYgKHRoaXMuaXNPcGVuZWQgJiYgdGhpcy50cmVlU2VsZWN0aW9uKSB7XG4gICAgICB0aGlzLl9leHBhbmRUb05vZGVzKFxuICAgICAgICB0aGlzLm11bHRpcGxlID8gdGhpcy50cmVlU2VsZWN0aW9uIDogW3RoaXMudHJlZVNlbGVjdGlvbl1cbiAgICAgICk7XG4gICAgICB0aGlzLnVwZGF0ZU9wdGlvbnMoKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLnJlY2FsY1ZpcnR1YWxMaXN0SGVpZ2h0KCk7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy50cmVlQ29udGFpbmVyRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICcucC1oaWdobGlnaHQnXG4gICAgICAgICkgYXMgYW55O1xuICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICBzZWxlY3RlZC5zY3JvbGxJbnRvVmlldyh7XG4gICAgICAgICAgICBiZWhhdmlvcjogJ2luc3RhbnQnLFxuICAgICAgICAgICAgYmxvY2s6ICduZWFyZXN0JyxcbiAgICAgICAgICAgIGlubGluZTogJ2NlbnRlcidcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnZpcnR1YWxTY3JvbGwgJiYgdGhpcy50cmVlU2VsZWN0aW9uKSB7XG4gICAgICAgICAgbGV0IGtleSA9ICcnO1xuICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50cmVlU2VsZWN0aW9uLmxlbmd0aCA+IDApIGtleSA9IHRoaXMudHJlZVNlbGVjdGlvblswXS5rZXk7XG4gICAgICAgICAgfSBlbHNlIGtleSA9IHRoaXMudHJlZVNlbGVjdGlvbi5rZXk7XG4gICAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgICAgY29uc3QgaWR4ID1cbiAgICAgICAgICAgICAgdGhpcy50cmVlTGlzdD8uc2VyaWFsaXplZFZhbHVlPy5maW5kSW5kZXgoXG4gICAgICAgICAgICAgICAgKHYpID0+IHYubm9kZS5rZXkgPT09IGtleVxuICAgICAgICAgICAgICApIHx8IC0xO1xuICAgICAgICAgICAgaWYgKGlkeCA+PSAwKSB0aGlzLnRyZWVMaXN0LnNjcm9sbFRvVmlydHVhbEluZGV4KGlkeCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZW1vdmUob3B0aW9uOiBUcmVlTm9kZSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5tdWx0aXBsZSkgcmV0dXJuO1xuXG4gICAgdGhpcy50cmVlU2VsZWN0aW9uID0gdGhpcy50cmVlU2VsZWN0aW9uLmZpbHRlcihcbiAgICAgICh2OiBUcmVlTm9kZSkgPT4gIWlzRXF1YWwodiwgb3B0aW9uKVxuICAgICk7XG4gICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLnRyZWVTZWxlY3Rpb25Ub1ZhbHVlKHRoaXMudHJlZVNlbGVjdGlvbikpO1xuICB9XG5cbiAgaW5pdEFycm93c05hdmlnYXRvbigpIHtcbiAgICBpZiAoIXRoaXMuaXNPcGVuZWQpIHJldHVybjtcblxuICAgIGlmICghdGhpcy5vcHRpb25Gb2N1c2VkKSB7XG4gICAgICBjb25zdCBmaXJzdEVsZW0gPSB0aGlzLnRyZWVDb250YWluZXJFbGVtZW50Py5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAnLnAtdHJlZW5vZGUtY29udGVudCdcbiAgICAgICk7XG4gICAgICBpZiAoZmlyc3RFbGVtKSAoZmlyc3RFbGVtIGFzIEhUTUxFbGVtZW50KS5mb2N1cygpO1xuICAgICAgdGhpcy5vcHRpb25Gb2N1c2VkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9ub2RlVG9nZ2xlZChlbGVtOiBIVE1MRWxlbWVudCkge1xuICAgIHRoaXMucmVjYWxjVmlydHVhbExpc3RIZWlnaHQoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMub3B0aW9uc01lbnUuYWxpZ24oKTtcbiAgICB9KTtcbiAgICBlbGVtPy5mb2N1cygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfbm9kZVRvZ2dsZWRXaXRoQ2hldnJvbihlbGVtOiBIVE1MRWxlbWVudCkge1xuICAgIHRoaXMuX25vZGVUb2dnbGVkKGVsZW0pO1xuICAgIC8vIGZpeCBwcmltZW5nIHRyZWUgZXZlbnQgc3RvcCBwcm9wYWdhdGlvblxuICAgIHRoaXMub3B0aW9uc01lbnUuc2VsZkNsaWNrID0gZmFsc2U7XG4gIH1cblxuICBvbk5vZGVFeHBhbmQoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuX25vZGVUb2dnbGVkV2l0aENoZXZyb24oXG4gICAgICBldmVudD8ub3JpZ2luYWxFdmVudD8uY3VycmVudFRhcmdldD8ucGFyZW50RWxlbWVudFxuICAgICk7XG4gIH1cblxuICBvbk5vZGVDb2xsYXBzZShldmVudDogYW55KSB7XG4gICAgdGhpcy5fbm9kZVRvZ2dsZWRXaXRoQ2hldnJvbihcbiAgICAgIGV2ZW50Py5vcmlnaW5hbEV2ZW50Py5jdXJyZW50VGFyZ2V0Py5wYXJlbnRFbGVtZW50XG4gICAgKTtcbiAgfVxuXG4gIGNsZWFyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGlmIChcbiAgICAgICghdGhpcy5tdWx0aXBsZSAmJiB0aGlzLnRyZWVTZWxlY3Rpb24pIHx8XG4gICAgICAodGhpcy5tdWx0aXBsZSAmJiB0aGlzLnRyZWVTZWxlY3Rpb24/Lmxlbmd0aCA+IDApXG4gICAgKSB7XG4gICAgICBpZiAodGhpcy5vcGVuT25DbGVhcikge1xuICAgICAgICB0aGlzLnRvZ2dsZU9wdGlvbnModHJ1ZSk7XG4gICAgICB9XG4gICAgICBjb25zdCB2YWwgPSB0aGlzLm11bHRpcGxlID8gW10gOiB1bmRlZmluZWQ7XG4gICAgICB0aGlzLnRyZWVTZWxlY3Rpb24gPSB2YWw7XG4gICAgICB0aGlzLnVwZGF0ZVZhbHVlKHZhbCk7XG4gICAgfVxuICAgIHRoaXMub3B0aW9uRm9jdXNlZCA9IGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tFcnJvcnMoKTogdm9pZCB7XG4gICAgY29uc3QgZXJyb3JzID0gdGhpcy5jb250cm9sPy5lcnJvcnM7XG5cbiAgICBpZiAoIXRoaXMuY29udHJvbD8uY29udHJvbD8udG91Y2hlZCB8fCAhZXJyb3JzKSB7XG4gICAgICB0aGlzLmVycm9yID0gJyc7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCdyZXF1aXJlZCcgaW4gZXJyb3JzKSB7XG4gICAgICB0aGlzLmVycm9yID0gJ0ZpZWxkIGlzIHJlcXVpcmVkJztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlcnJBcnIgPSBPYmplY3QudmFsdWVzKGVycm9ycyk7XG4gICAgaWYgKGVyckFyci5sZW5ndGggPCAxKSB7XG4gICAgICB0aGlzLmVycm9yID0gJyc7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnJBcnIuZmluZCgobXNnKSA9PiB0eXBlb2YgbXNnID09PSAnc3RyaW5nJyk7XG5cbiAgICB0aGlzLmVycm9yID0gbWVzc2FnZSB8fCAnVW5rbm93biBlcnJvcic7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pIHt9XG5cbiAgb25CbHVyKCkge1xuICAgIHRoaXMuY29udHJvbD8uY29udHJvbD8ubWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuX2NoZWNrRXJyb3JzKCk7XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICB0aGlzLmNvbXBvbmVudENvbnRhaW5lcj8ubmF0aXZlRWxlbWVudD8uZm9jdXMoKTtcbiAgICB0aGlzLnRvZ2dsZU9wdGlvbnModHJ1ZSk7XG4gIH1cblxuICBwcml2YXRlIF9leHBhbmRUb05vZGVzKG5vZGVzOiBhbnlbXSkge1xuICAgIGZ1bmN0aW9uIGdldFBhcmVudEtleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICBjb25zdCBsYXN0U2VwYXJhdG9ySW5kZXggPSBrZXkubGFzdEluZGV4T2YoJy0nKTtcbiAgICAgIGlmIChsYXN0U2VwYXJhdG9ySW5kZXggIT09IC0xKSB7XG4gICAgICAgIHJldHVybiBrZXkuc3Vic3RyaW5nKDAsIGxhc3RTZXBhcmF0b3JJbmRleCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgY29uc3QgcGFyZW50Tm9kZUtleSA9IGdldFBhcmVudEtleShub2RlLmtleSk7XG4gICAgICBjb25zdCBwYXJlbnROb2RlID0gdGhpcy5vcHRpb25zTWFwLmdldChwYXJlbnROb2RlS2V5KSB8fCBudWxsO1xuXG4gICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICBwYXJlbnROb2RlLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fZXhwYW5kVG9Ob2RlcyhbcGFyZW50Tm9kZV0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdG9Jbm5lck9wdGlvbnMoX29wdGlvbnM6IGFueVtdKTogVHJlZU5vZGVbXSB7XG4gICAgY29uc3QgbWFwT3B0aW9uID0gKFxuICAgICAgbzogYW55LFxuICAgICAgb3B0aW9uTGFiZWw6IHN0cmluZyxcbiAgICAgIG9wdGlvbkluZm86IHN0cmluZyxcbiAgICAgIGtleTogc3RyaW5nLFxuICAgICAgb3JpZ2luYWxPcHRpb25zTWFwOiBhbnlcbiAgICApID0+IHtcbiAgICAgIGNvbnN0IGlubmVyID0ge1xuICAgICAgICBpbm5lcjogdHJ1ZSxcbiAgICAgICAgbGFiZWw6IG9bb3B0aW9uTGFiZWxdLFxuICAgICAgICBpbmZvOiBvW29wdGlvbkluZm9dLFxuICAgICAgICBrZXksXG4gICAgICAgIHN0eWxlQ2xhc3M6ICdrZXktJyArIGtleVxuICAgICAgfSBhcyBUcmVlTm9kZTtcblxuICAgICAgaWYgKHRoaXMuaW5pdGlhbEV4cGFuZEFsbCkge1xuICAgICAgICBpbm5lci5leHBhbmRlZCA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChvLmlzRGlyZWN0b3J5KSB7XG4gICAgICAgIGlubmVyLnR5cGUgPSAnZGlyZWN0b3J5JztcbiAgICAgICAgaW5uZXIuc2VsZWN0YWJsZSA9IGZhbHNlO1xuICAgICAgICBpbm5lci5zdHlsZUNsYXNzICs9ICcgY3BzLXRyZWUtbm9kZS1mdWxseS1leHBhbmRhYmxlJztcbiAgICAgICAgaWYgKHRoaXMuaW5pdGlhbEV4cGFuZERpcmVjdG9yaWVzKSB7XG4gICAgICAgICAgaW5uZXIuZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoby5jaGlsZHJlbikge1xuICAgICAgICBpbm5lci5jaGlsZHJlbiA9IG8uY2hpbGRyZW4ubWFwKChjOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICByZXR1cm4gbWFwT3B0aW9uKFxuICAgICAgICAgICAgYyxcbiAgICAgICAgICAgIG9wdGlvbkxhYmVsLFxuICAgICAgICAgICAgb3B0aW9uSW5mbyxcbiAgICAgICAgICAgIGtleSArICctJyArIGluZGV4LFxuICAgICAgICAgICAgb3JpZ2luYWxPcHRpb25zTWFwXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBvcmlnaW5hbE9wdGlvbnNNYXAuc2V0KGtleSwgbyk7XG4gICAgICByZXR1cm4gaW5uZXI7XG4gICAgfTtcblxuICAgIGNvbnN0IHJlcyA9IF9vcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4ge1xuICAgICAgcmV0dXJuIG1hcE9wdGlvbihcbiAgICAgICAgb3B0aW9uLFxuICAgICAgICB0aGlzLm9wdGlvbkxhYmVsLFxuICAgICAgICB0aGlzLm9wdGlvbkluZm8sXG4gICAgICAgICcnICsgaW5kZXgsXG4gICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zTWFwXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vcHRpb25zTWFwID0gdGhpcy5fYnVpbGRPcHRpb25zTWFwKHJlcyk7XG5cbiAgICByZXR1cm4gcmVzO1xuICB9XG5cbiAgcHJpdmF0ZSBfYnVpbGRPcHRpb25zTWFwKG9wdGlvbnM6IGFueVtdKTogTWFwPHN0cmluZywgYW55PiB7XG4gICAgY29uc3Qgbm9kZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnk+KCk7XG4gICAgZm9yIChjb25zdCBvcHRpb24gb2Ygb3B0aW9ucykge1xuICAgICAgbm9kZU1hcC5zZXQob3B0aW9uLmtleSwgb3B0aW9uKTtcbiAgICAgIGlmIChvcHRpb24uY2hpbGRyZW4pIHtcbiAgICAgICAgY29uc3QgY2hpbGROb2RlTWFwID0gdGhpcy5fYnVpbGRPcHRpb25zTWFwKG9wdGlvbi5jaGlsZHJlbik7XG4gICAgICAgIGNoaWxkTm9kZU1hcC5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiBub2RlTWFwLnNldChrZXksIHZhbHVlKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBub2RlTWFwO1xuICB9XG5cbiAgdHJlZVNlbGVjdGlvblRvVmFsdWUoc2VsZWN0aW9uOiBhbnkpIHtcbiAgICBpZiAoIXNlbGVjdGlvbikgcmV0dXJuIHRoaXMubXVsdGlwbGUgPyBbXSA6IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgcmV0dXJuIHNlbGVjdGlvbi5tYXAoKHM6IGFueSkgPT4gdGhpcy5vcmlnaW5hbE9wdGlvbnNNYXAuZ2V0KHMua2V5KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLm9yaWdpbmFsT3B0aW9uc01hcC5nZXQoc2VsZWN0aW9uLmtleSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdmFsdWVUb1RyZWVTZWxlY3Rpb24odmFsdWU6IGFueSkge1xuICAgIGZ1bmN0aW9uIGdldEtleSh2OiBhbnksIG1hcDogTWFwPHN0cmluZywgYW55Pik6IHN0cmluZyB7XG4gICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbF0gb2YgbWFwLmVudHJpZXMoKSkge1xuICAgICAgICBpZiAoaXNFcXVhbCh2LCB2YWwpKSB7XG4gICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICghdmFsdWUpIHJldHVybiB0aGlzLm11bHRpcGxlID8gW10gOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgY29uc3QgcmVzID0gW10gYXMgVHJlZU5vZGVbXTtcbiAgICAgIHZhbHVlLmZvckVhY2goKHY6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBrZXkgPSBnZXRLZXkodiwgdGhpcy5vcmlnaW5hbE9wdGlvbnNNYXApO1xuICAgICAgICBpZiAoa2V5KSByZXMucHVzaCh0aGlzLm9wdGlvbnNNYXAuZ2V0KGtleSkgYXMgVHJlZU5vZGUpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBrZXkgPSBnZXRLZXkodmFsdWUsIHRoaXMub3JpZ2luYWxPcHRpb25zTWFwKTtcbiAgICAgIHJldHVybiBrZXkgPyB0aGlzLm9wdGlvbnNNYXAuZ2V0KGtleSkgOiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgLy8gdGhpcyBpcyBhIGZpeCBvZiBwcmltZW5nIGNoYW5nZSBkZXRlY3Rpb24gYnVnIHdoZW4gdmlydHVhbCBzY3JvbGxlciBpcyBlbmFibGVkXG4gIHVwZGF0ZU9wdGlvbnMoKSB7XG4gICAgaWYgKCF0aGlzLnZpcnR1YWxTY3JvbGwpIHJldHVybjtcbiAgICB0aGlzLm9wdGlvbnMgPSBbLi4udGhpcy5vcHRpb25zXTtcbiAgfVxufVxuIl19
499
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS10cmVlLWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nwcy11aS1raXQvc3JjL2xpYi9iYXNlX2NvbXBvbmVudHMvYmFzZS10cmVlLWRyb3Bkb3duLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBT3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTNELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxXQUFXLENBQUM7OztBQU9wQyxNQUFNLE9BQU8seUJBQXlCO0lBNkJwQyxJQUFhLE9BQU8sQ0FBQyxPQUFjO1FBQ2pDLElBQUksT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQ3hCLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFJRCxJQUFJLEtBQUssQ0FBQyxLQUFVO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUNyQixD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dCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTZWxmLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVHJlZU5vZGUgfSBmcm9tICdwcmltZW5nL2FwaSc7XG5pbXBvcnQge1xuICBJY29uVHlwZSxcbiAgaWNvblNpemVUeXBlXG59IGZyb20gJy4uL2NvbXBvbmVudHMvY3BzLWljb24vY3BzLWljb24uY29tcG9uZW50JztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgY29udmVydFNpemUgfSBmcm9tICcuLi91dGlscy9pbnRlcm5hbC9zaXplLXV0aWxzJztcbmltcG9ydCB7IFRyZWUgfSBmcm9tICdwcmltZW5nL3RyZWUnO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBUb29sdGlwUG9zaXRpb24gfSBmcm9tICcuLi9kaXJlY3RpdmVzL2Nwcy10b29sdGlwLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBDcHNNZW51Q29tcG9uZW50IH0gZnJvbSAnLi4vY29tcG9uZW50cy9jcHMtbWVudS9jcHMtbWVudS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6ICcnXG59KVxuZXhwb3J0IGNsYXNzIEJhc2VUcmVlRHJvcGRvd25Db21wb25lbnRcbiAgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgQElucHV0KCkgbGFiZWwgPSAnJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSAnUGxlYXNlIGVudGVyJztcbiAgQElucHV0KCkgaGludCA9ICcnO1xuICBASW5wdXQoKSBtdWx0aXBsZSA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICBASW5wdXQoKSB3aWR0aDogbnVtYmVyIHwgc3RyaW5nID0gJzEwMCUnO1xuICBASW5wdXQoKSBjaGlwcyA9IHRydWU7XG4gIEBJbnB1dCgpIGNsb3NhYmxlQ2hpcHMgPSB0cnVlO1xuICBASW5wdXQoKSBjbGVhcmFibGUgPSBmYWxzZTtcbiAgQElucHV0KCkgb3Blbk9uQ2xlYXIgPSB0cnVlO1xuICBASW5wdXQoKSBvcHRpb25MYWJlbCA9ICdsYWJlbCc7XG4gIEBJbnB1dCgpIG9wdGlvbkluZm8gPSAnaW5mbyc7XG4gIEBJbnB1dCgpIGhpZGVEZXRhaWxzID0gZmFsc2U7XG4gIEBJbnB1dCgpIHBlcnNpc3RlbnRDbGVhciA9IGZhbHNlO1xuICBASW5wdXQoKSBwcmVmaXhJY29uOiBJY29uVHlwZSA9ICcnO1xuICBASW5wdXQoKSBwcmVmaXhJY29uU2l6ZTogaWNvblNpemVUeXBlID0gJzE4cHgnO1xuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIHZpcnR1YWxTY3JvbGwgPSBmYWxzZTtcbiAgQElucHV0KCkgaW5mb1Rvb2x0aXAgPSAnJztcbiAgQElucHV0KCkgaW5mb1Rvb2x0aXBDbGFzcyA9ICdjcHMtdG9vbHRpcC1jb250ZW50JztcbiAgQElucHV0KCkgaW5mb1Rvb2x0aXBNYXhXaWR0aDogbnVtYmVyIHwgc3RyaW5nID0gJzEwMCUnO1xuICBASW5wdXQoKSBpbmZvVG9vbHRpcFBlcnNpc3RlbnQgPSBmYWxzZTtcbiAgQElucHV0KCkgaW5mb1Rvb2x0aXBQb3NpdGlvbjogVG9vbHRpcFBvc2l0aW9uID0gJ3RvcCc7XG4gIEBJbnB1dCgpIGluaXRpYWxFeHBhbmREaXJlY3RvcmllcyA9IGZhbHNlO1xuICBASW5wdXQoKSBpbml0aWFsRXhwYW5kQWxsID0gZmFsc2U7XG5cbiAgQElucHV0KCkgc2V0IG9wdGlvbnMob3B0aW9uczogYW55W10pIHtcbiAgICBpZiAob3B0aW9ucz8uc29tZSgobykgPT4gby5pbm5lcikpIHtcbiAgICAgIHRoaXMuX29wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLl90b0lubmVyT3B0aW9ucyhvcHRpb25zKTtcbiAgfVxuXG4gIGdldCBvcHRpb25zKCk6IFRyZWVOb2RlW10ge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgQElucHV0KCd2YWx1ZScpIF92YWx1ZTogYW55ID0gdW5kZWZpbmVkO1xuXG4gIHNldCB2YWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBAVmlld0NoaWxkKCdjb21wb25lbnRDb250YWluZXInKVxuICBjb21wb25lbnRDb250YWluZXIhOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ29wdGlvbnNNZW51JylcbiAgb3B0aW9uc01lbnUhOiBDcHNNZW51Q29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ3RyZWVMaXN0JykgdHJlZUxpc3QhOiBUcmVlO1xuXG4gIEBWaWV3Q2hpbGQoJ2JveEVsJylcbiAgYm94RWwhOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgX3N0YXR1c0NoYW5nZXNTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBfb3B0aW9uczogVHJlZU5vZGVbXSA9IFtdO1xuICBvcHRpb25zTWFwID0gbmV3IE1hcDxzdHJpbmcsIFRyZWVOb2RlPigpO1xuICBvcmlnaW5hbE9wdGlvbnNNYXAgPSBuZXcgTWFwPHN0cmluZywgYW55PigpO1xuXG4gIHZpcnR1YWxMaXN0SGVpZ2h0ID0gMjQwO1xuICB2aXJ0dWFsU2Nyb2xsSXRlbVNpemUgPSA0MDtcblxuICBlcnJvciA9ICcnO1xuICBjdnRXaWR0aCA9ICcnO1xuICBpc09wZW5lZCA9IGZhbHNlO1xuICBvcHRpb25Gb2N1c2VkID0gZmFsc2U7XG4gIGlzQXV0b2NvbXBsZXRlID0gZmFsc2U7XG5cbiAgdHJlZUNvbnRhaW5lckVsZW1lbnQhOiBIVE1MRWxlbWVudDtcbiAgdHJlZVNlbGVjdGlvbjogYW55O1xuXG4gIGJveFdpZHRoID0gMDtcbiAgcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHVibGljIGNvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwdWJsaWMgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIGlmICh0aGlzLmNvbnRyb2wpIHtcbiAgICAgIHRoaXMuY29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoZW50cmllcykgPT4ge1xuICAgICAgZW50cmllcy5mb3JFYWNoKChlbnRyeSkgPT4ge1xuICAgICAgICBpZiAoZW50cnk/LnRhcmdldCkgdGhpcy5ib3hXaWR0aCA9IChlbnRyeS50YXJnZXQgYXMgYW55KS5vZmZzZXRXaWR0aDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5jdnRXaWR0aCA9IGNvbnZlcnRTaXplKHRoaXMud2lkdGgpO1xuICAgIGlmICghdGhpcy5fdmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gW107XG4gICAgICAgIHRoaXMudHJlZVNlbGVjdGlvbiA9IFtdO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyZWVTZWxlY3Rpb24gPSB0aGlzLl92YWx1ZVRvVHJlZVNlbGVjdGlvbih0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0dXNDaGFuZ2VzU3Vic2NyaXB0aW9uID0gdGhpcy5jb250cm9sPy5zdGF0dXNDaGFuZ2VzPy5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuX2NoZWNrRXJyb3JzKCk7XG4gICAgICB9XG4gICAgKSBhcyBTdWJzY3JpcHRpb247XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5faW5pdENvbnRhaW5lckNsaWNrTGlzdGVuZXIoKTtcbiAgICB0aGlzLnJlY2FsY1ZpcnR1YWxMaXN0SGVpZ2h0KCk7XG4gICAgdGhpcy5yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuYm94RWwubmF0aXZlRWxlbWVudCk7XG4gICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9zdGF0dXNDaGFuZ2VzU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuXG4gICAgdGhpcy50cmVlQ29udGFpbmVyRWxlbWVudD8ucmVtb3ZlRXZlbnRMaXN0ZW5lcihcbiAgICAgICdjbGljaycsXG4gICAgICB0aGlzLl9oYW5kbGVPbkNvbnRhaW5lckNsaWNrLmJpbmQodGhpcylcbiAgICApO1xuXG4gICAgdGhpcy5yZXNpemVPYnNlcnZlcj8uZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdENvbnRhaW5lckNsaWNrTGlzdGVuZXIoKSB7XG4gICAgdGhpcy50cmVlQ29udGFpbmVyRWxlbWVudCA9XG4gICAgICB0aGlzLnRyZWVMaXN0Py5lbD8ubmF0aXZlRWxlbWVudD8ucXVlcnlTZWxlY3RvcignLnAtdHJlZS1jb250YWluZXInKTtcbiAgICBpZiAodGhpcy50cmVlQ29udGFpbmVyRWxlbWVudCkge1xuICAgICAgdGhpcy50cmVlQ29udGFpbmVyRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKFxuICAgICAgICAnY2xpY2snLFxuICAgICAgICB0aGlzLl9oYW5kbGVPbkNvbnRhaW5lckNsaWNrLmJpbmQodGhpcylcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaGFuZGxlT25Db250YWluZXJDbGljayhldmVudDogYW55KSB7XG4gICAgZnVuY3Rpb24gZ2V0UGFyZW50V2l0aENsYXNzKFxuICAgICAgZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsLFxuICAgICAgY2xhc3NOYW1lOiBzdHJpbmdcbiAgICApIHtcbiAgICAgIGxldCBjdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgICB3aGlsZSAoY3VycmVudEVsZW1lbnQpIHtcbiAgICAgICAgaWYgKGN1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnRFbGVtZW50O1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnRFbGVtZW50ID0gY3VycmVudEVsZW1lbnQucGFyZW50RWxlbWVudDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHRoaXMub3B0aW9uRm9jdXNlZCA9IHRydWU7XG5cbiAgICBjb25zdCBlbGVtID0gZXZlbnQudGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucygncC10cmVlbm9kZS1jb250ZW50JylcbiAgICAgID8gZXZlbnQudGFyZ2V0XG4gICAgICA6IGdldFBhcmVudFdpdGhDbGFzcyhldmVudC50YXJnZXQsICdwLXRyZWVub2RlLWNvbnRlbnQnKTtcblxuICAgIGlmIChcbiAgICAgIGVsZW0/LnBhcmVudEVsZW1lbnQ/LmNsYXNzTGlzdD8uY29udGFpbnMoJ2Nwcy10cmVlLW5vZGUtZnVsbHktZXhwYW5kYWJsZScpXG4gICAgKSB7XG4gICAgICB0aGlzLm9uQ2xpY2tGdWxseUV4cGFuZGFibGUoZWxlbSk7XG4gICAgfVxuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBvbkNoYW5nZSA9IChldmVudDogYW55KSA9PiB7fTtcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIG9uVG91Y2hlZCA9ICgpID0+IHt9O1xuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSkge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55LCBpbnRlcm5hbCA9IGZhbHNlKSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIGlmICghaW50ZXJuYWwgJiYgdmFsdWUgIT09IG51bGwpIHtcbiAgICAgIHRoaXMudHJlZVNlbGVjdGlvbiA9IHRoaXMuX3ZhbHVlVG9UcmVlU2VsZWN0aW9uKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLndyaXRlVmFsdWUodmFsdWUsIHRydWUpO1xuICAgIHRoaXMub25DaGFuZ2UodmFsdWUpO1xuICAgIHRoaXMudmFsdWVDaGFuZ2VkLmVtaXQodmFsdWUpO1xuICB9XG5cbiAgb25TZWxlY3ROb2RlKCkge1xuICAgIGlmICghdGhpcy5tdWx0aXBsZSkge1xuICAgICAgdGhpcy50b2dnbGVPcHRpb25zKGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBvbkNsaWNrRnVsbHlFeHBhbmRhYmxlKGVsZW06IEhUTUxFbGVtZW50KSB7XG4gICAgY29uc3QgcGFyZW50ID0gZWxlbS5wYXJlbnRFbGVtZW50O1xuICAgIGNvbnN0IGtleSA9IHRoaXMuX2dldEhUTUxFbGVtZW50S2V5KHBhcmVudCk7XG4gICAgaWYgKCFrZXkpIHJldHVybjtcblxuICAgIGNvbnN0IHRyZWVOb2RlID0gdGhpcy5vcHRpb25zLmZpbmQoKG8pID0+IG8ua2V5ID09PSBrZXkpO1xuICAgIGlmICghdHJlZU5vZGUpIHJldHVybjtcblxuICAgIHRyZWVOb2RlLmV4cGFuZGVkID0gIXRyZWVOb2RlLmV4cGFuZGVkO1xuICAgIHRoaXMudXBkYXRlT3B0aW9ucygpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5fbm9kZVRvZ2dsZWQoZWxlbSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRIVE1MRWxlbWVudEtleShlbGVtOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghZWxlbT8uY2xhc3NMaXN0KSByZXR1cm4gJyc7XG4gICAgY29uc3QgY2xhc3NMaXN0ID0gWy4uLmVsZW0uY2xhc3NMaXN0XTtcbiAgICBjb25zdCBrZXkgPSBjbGFzc0xpc3QuZmluZCgoY2xhc3NOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBjbGFzc05hbWUuc3RhcnRzV2l0aCgna2V5LScpO1xuICAgIH0pO1xuICAgIGlmICgha2V5KSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIGtleS5yZXBsYWNlKCdrZXktJywgJycpO1xuICB9XG5cbiAgdHJlZVNlbGVjdGlvbkNoYW5nZWQoc2VsZWN0aW9uOiBhbnkpIHtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMudHJlZVNlbGVjdGlvblRvVmFsdWUoc2VsZWN0aW9uKSk7XG4gIH1cblxuICByZWNhbGNWaXJ0dWFsTGlzdEhlaWdodCgpIHtcbiAgICBpZiAoIXRoaXMudmlydHVhbFNjcm9sbCkgcmV0dXJuO1xuICAgIGNvbnN0IGN1cnJlbnRMZW4gPSB0aGlzLnRyZWVMaXN0Py5zZXJpYWxpemVkVmFsdWU/Lmxlbmd0aCB8fCAwO1xuICAgIHRoaXMudmlydHVhbExpc3RIZWlnaHQgPSBNYXRoLm1pbihcbiAgICAgIHRoaXMudmlydHVhbFNjcm9sbEl0ZW1TaXplICogY3VycmVudExlbixcbiAgICAgIDI0MFxuICAgICk7XG4gIH1cblxuICB0b2dnbGVPcHRpb25zKHNob3c/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQgfHwgdGhpcy5pc09wZW5lZCA9PT0gc2hvdykgcmV0dXJuO1xuXG4gICAgaWYgKHR5cGVvZiBzaG93ID09PSAnYm9vbGVhbicpIHtcbiAgICAgIGlmIChzaG93KSB7XG4gICAgICAgIHRoaXMub3B0aW9uc01lbnUuc2hvdyh7XG4gICAgICAgICAgdGFyZ2V0OiB0aGlzLmJveEVsLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnNNZW51LmhpZGUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcHRpb25zTWVudS50b2dnbGUoe1xuICAgICAgICB0YXJnZXQ6IHRoaXMuYm94RWwubmF0aXZlRWxlbWVudFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5pc09wZW5lZCA9IHRoaXMub3B0aW9uc01lbnUuaXNWaXNpYmxlKCk7XG5cbiAgICB0aGlzLm9wdGlvbkZvY3VzZWQgPSBmYWxzZTtcbiAgICBpZiAodGhpcy5pc09wZW5lZCAmJiB0aGlzLnRyZWVTZWxlY3Rpb24pIHtcbiAgICAgIHRoaXMuX2V4cGFuZFRvTm9kZXMoXG4gICAgICAgIHRoaXMubXVsdGlwbGUgPyB0aGlzLnRyZWVTZWxlY3Rpb24gOiBbdGhpcy50cmVlU2VsZWN0aW9uXVxuICAgICAgKTtcbiAgICAgIHRoaXMudXBkYXRlT3B0aW9ucygpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHRoaXMucmVjYWxjVmlydHVhbExpc3RIZWlnaHQoKTtcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnRyZWVDb250YWluZXJFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgJy5wLWhpZ2hsaWdodCdcbiAgICAgICAgKSBhcyBhbnk7XG4gICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgIHNlbGVjdGVkLnNjcm9sbEludG9WaWV3KHtcbiAgICAgICAgICAgIGJlaGF2aW9yOiAnaW5zdGFudCcsXG4gICAgICAgICAgICBibG9jazogJ25lYXJlc3QnLFxuICAgICAgICAgICAgaW5saW5lOiAnY2VudGVyJ1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudmlydHVhbFNjcm9sbCAmJiB0aGlzLnRyZWVTZWxlY3Rpb24pIHtcbiAgICAgICAgICBsZXQga2V5ID0gJyc7XG4gICAgICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRyZWVTZWxlY3Rpb24ubGVuZ3RoID4gMCkga2V5ID0gdGhpcy50cmVlU2VsZWN0aW9uWzBdLmtleTtcbiAgICAgICAgICB9IGVsc2Uga2V5ID0gdGhpcy50cmVlU2VsZWN0aW9uLmtleTtcbiAgICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgICBjb25zdCBpZHggPVxuICAgICAgICAgICAgICB0aGlzLnRyZWVMaXN0Py5zZXJpYWxpemVkVmFsdWU/LmZpbmRJbmRleChcbiAgICAgICAgICAgICAgICAodikgPT4gdi5ub2RlLmtleSA9PT0ga2V5XG4gICAgICAgICAgICAgICkgfHwgLTE7XG4gICAgICAgICAgICBpZiAoaWR4ID49IDApIHRoaXMudHJlZUxpc3Quc2Nyb2xsVG9WaXJ0dWFsSW5kZXgoaWR4KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZShvcHRpb246IFRyZWVOb2RlKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLm11bHRpcGxlKSByZXR1cm47XG5cbiAgICB0aGlzLnRyZWVTZWxlY3Rpb24gPSB0aGlzLnRyZWVTZWxlY3Rpb24uZmlsdGVyKFxuICAgICAgKHY6IFRyZWVOb2RlKSA9PiAhaXNFcXVhbCh2LCBvcHRpb24pXG4gICAgKTtcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMudHJlZVNlbGVjdGlvblRvVmFsdWUodGhpcy50cmVlU2VsZWN0aW9uKSk7XG4gIH1cblxuICBpbml0QXJyb3dzTmF2aWdhdG9uKCkge1xuICAgIGlmICghdGhpcy5pc09wZW5lZCkgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLm9wdGlvbkZvY3VzZWQpIHtcbiAgICAgIGNvbnN0IGZpcnN0RWxlbSA9IHRoaXMudHJlZUNvbnRhaW5lckVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICcucC10cmVlbm9kZS1jb250ZW50J1xuICAgICAgKTtcbiAgICAgIGlmIChmaXJzdEVsZW0pIChmaXJzdEVsZW0gYXMgSFRNTEVsZW1lbnQpLmZvY3VzKCk7XG4gICAgICB0aGlzLm9wdGlvbkZvY3VzZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX25vZGVUb2dnbGVkKGVsZW06IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5yZWNhbGNWaXJ0dWFsTGlzdEhlaWdodCgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5vcHRpb25zTWVudS5hbGlnbigpO1xuICAgIH0pO1xuICAgIGVsZW0/LmZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIF9ub2RlVG9nZ2xlZFdpdGhDaGV2cm9uKGVsZW06IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5fbm9kZVRvZ2dsZWQoZWxlbSk7XG4gICAgLy8gZml4IHByaW1lbmcgdHJlZSBldmVudCBzdG9wIHByb3BhZ2F0aW9uXG4gICAgdGhpcy5vcHRpb25zTWVudS5zZWxmQ2xpY2sgPSBmYWxzZTtcbiAgfVxuXG4gIG9uTm9kZUV4cGFuZChldmVudDogYW55KSB7XG4gICAgdGhpcy5fbm9kZVRvZ2dsZWRXaXRoQ2hldnJvbihcbiAgICAgIGV2ZW50Py5vcmlnaW5hbEV2ZW50Py5jdXJyZW50VGFyZ2V0Py5wYXJlbnRFbGVtZW50XG4gICAgKTtcbiAgfVxuXG4gIG9uTm9kZUNvbGxhcHNlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLl9ub2RlVG9nZ2xlZFdpdGhDaGV2cm9uKFxuICAgICAgZXZlbnQ/Lm9yaWdpbmFsRXZlbnQ/LmN1cnJlbnRUYXJnZXQ/LnBhcmVudEVsZW1lbnRcbiAgICApO1xuICB9XG5cbiAgY2xlYXIoZXZlbnQ6IGFueSk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgaWYgKFxuICAgICAgKCF0aGlzLm11bHRpcGxlICYmIHRoaXMudHJlZVNlbGVjdGlvbikgfHxcbiAgICAgICh0aGlzLm11bHRpcGxlICYmIHRoaXMudHJlZVNlbGVjdGlvbj8ubGVuZ3RoID4gMClcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLm9wZW5PbkNsZWFyKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlT3B0aW9ucyh0cnVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHZhbCA9IHRoaXMubXVsdGlwbGUgPyBbXSA6IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMudHJlZVNlbGVjdGlvbiA9IHZhbDtcbiAgICAgIHRoaXMudXBkYXRlVmFsdWUodmFsKTtcbiAgICB9XG4gICAgdGhpcy5vcHRpb25Gb2N1c2VkID0gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0Vycm9ycygpOiB2b2lkIHtcbiAgICBjb25zdCBlcnJvcnMgPSB0aGlzLmNvbnRyb2w/LmVycm9ycztcblxuICAgIGlmICghdGhpcy5jb250cm9sPy5jb250cm9sPy50b3VjaGVkIHx8ICFlcnJvcnMpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoJ3JlcXVpcmVkJyBpbiBlcnJvcnMpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSAnRmllbGQgaXMgcmVxdWlyZWQnO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVyckFyciA9IE9iamVjdC52YWx1ZXMoZXJyb3JzKTtcbiAgICBpZiAoZXJyQXJyLmxlbmd0aCA8IDEpIHtcbiAgICAgIHRoaXMuZXJyb3IgPSAnJztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgbWVzc2FnZSA9IGVyckFyci5maW5kKChtc2cpID0+IHR5cGVvZiBtc2cgPT09ICdzdHJpbmcnKTtcblxuICAgIHRoaXMuZXJyb3IgPSBtZXNzYWdlIHx8ICdVbmtub3duIGVycm9yJztcbiAgfVxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgc2V0RGlzYWJsZWRTdGF0ZShkaXNhYmxlZDogYm9vbGVhbikge31cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5jb250cm9sPy5jb250cm9sPy5tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5fY2hlY2tFcnJvcnMoKTtcbiAgfVxuXG4gIGZvY3VzKCkge1xuICAgIHRoaXMuY29tcG9uZW50Q29udGFpbmVyPy5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgIHRoaXMudG9nZ2xlT3B0aW9ucyh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgX2V4cGFuZFRvTm9kZXMobm9kZXM6IGFueVtdKSB7XG4gICAgZnVuY3Rpb24gZ2V0UGFyZW50S2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgIGNvbnN0IGxhc3RTZXBhcmF0b3JJbmRleCA9IGtleS5sYXN0SW5kZXhPZignLScpO1xuICAgICAgaWYgKGxhc3RTZXBhcmF0b3JJbmRleCAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIGtleS5zdWJzdHJpbmcoMCwgbGFzdFNlcGFyYXRvckluZGV4KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICBjb25zdCBwYXJlbnROb2RlS2V5ID0gZ2V0UGFyZW50S2V5KG5vZGUua2V5KTtcbiAgICAgIGNvbnN0IHBhcmVudE5vZGUgPSB0aGlzLm9wdGlvbnNNYXAuZ2V0KHBhcmVudE5vZGVLZXkpIHx8IG51bGw7XG5cbiAgICAgIGlmIChwYXJlbnROb2RlKSB7XG4gICAgICAgIHBhcmVudE5vZGUuZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLl9leHBhbmRUb05vZGVzKFtwYXJlbnROb2RlXSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF90b0lubmVyT3B0aW9ucyhfb3B0aW9uczogYW55W10pOiBUcmVlTm9kZVtdIHtcbiAgICBjb25zdCBtYXBPcHRpb24gPSAoXG4gICAgICBvOiBhbnksXG4gICAgICBvcHRpb25MYWJlbDogc3RyaW5nLFxuICAgICAgb3B0aW9uSW5mbzogc3RyaW5nLFxuICAgICAga2V5OiBzdHJpbmcsXG4gICAgICBvcmlnaW5hbE9wdGlvbnNNYXA6IGFueVxuICAgICkgPT4ge1xuICAgICAgY29uc3QgaW5uZXIgPSB7XG4gICAgICAgIGlubmVyOiB0cnVlLFxuICAgICAgICBsYWJlbDogb1tvcHRpb25MYWJlbF0sXG4gICAgICAgIGluZm86IG9bb3B0aW9uSW5mb10sXG4gICAgICAgIGtleSxcbiAgICAgICAgc3R5bGVDbGFzczogJ2tleS0nICsga2V5XG4gICAgICB9IGFzIFRyZWVOb2RlO1xuXG4gICAgICBpZiAodGhpcy5pbml0aWFsRXhwYW5kQWxsKSB7XG4gICAgICAgIGlubmVyLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG8uaXNEaXJlY3RvcnkpIHtcbiAgICAgICAgaW5uZXIudHlwZSA9ICdkaXJlY3RvcnknO1xuICAgICAgICBpbm5lci5zZWxlY3RhYmxlID0gZmFsc2U7XG4gICAgICAgIGlubmVyLnN0eWxlQ2xhc3MgKz0gJyBjcHMtdHJlZS1ub2RlLWZ1bGx5LWV4cGFuZGFibGUnO1xuICAgICAgICBpZiAodGhpcy5pbml0aWFsRXhwYW5kRGlyZWN0b3JpZXMpIHtcbiAgICAgICAgICBpbm5lci5leHBhbmRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChvLmNoaWxkcmVuKSB7XG4gICAgICAgIGlubmVyLmNoaWxkcmVuID0gby5jaGlsZHJlbi5tYXAoKGM6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgIHJldHVybiBtYXBPcHRpb24oXG4gICAgICAgICAgICBjLFxuICAgICAgICAgICAgb3B0aW9uTGFiZWwsXG4gICAgICAgICAgICBvcHRpb25JbmZvLFxuICAgICAgICAgICAga2V5ICsgJy0nICsgaW5kZXgsXG4gICAgICAgICAgICBvcmlnaW5hbE9wdGlvbnNNYXBcbiAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIG9yaWdpbmFsT3B0aW9uc01hcC5zZXQoa2V5LCBvKTtcbiAgICAgIHJldHVybiBpbm5lcjtcbiAgICB9O1xuXG4gICAgY29uc3QgcmVzID0gX29wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiB7XG4gICAgICByZXR1cm4gbWFwT3B0aW9uKFxuICAgICAgICBvcHRpb24sXG4gICAgICAgIHRoaXMub3B0aW9uTGFiZWwsXG4gICAgICAgIHRoaXMub3B0aW9uSW5mbyxcbiAgICAgICAgJycgKyBpbmRleCxcbiAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnNNYXBcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9wdGlvbnNNYXAgPSB0aGlzLl9idWlsZE9wdGlvbnNNYXAocmVzKTtcblxuICAgIHJldHVybiByZXM7XG4gIH1cblxuICBwcml2YXRlIF9idWlsZE9wdGlvbnNNYXAob3B0aW9uczogYW55W10pOiBNYXA8c3RyaW5nLCBhbnk+IHtcbiAgICBjb25zdCBub2RlTWFwID0gbmV3IE1hcDxzdHJpbmcsIGFueT4oKTtcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgICBub2RlTWFwLnNldChvcHRpb24ua2V5LCBvcHRpb24pO1xuICAgICAgaWYgKG9wdGlvbi5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCBjaGlsZE5vZGVNYXAgPSB0aGlzLl9idWlsZE9wdGlvbnNNYXAob3B0aW9uLmNoaWxkcmVuKTtcbiAgICAgICAgY2hpbGROb2RlTWFwLmZvckVhY2goKHZhbHVlLCBrZXkpID0+IG5vZGVNYXAuc2V0KGtleSwgdmFsdWUpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5vZGVNYXA7XG4gIH1cblxuICB0cmVlU2VsZWN0aW9uVG9WYWx1ZShzZWxlY3Rpb246IGFueSkge1xuICAgIGlmICghc2VsZWN0aW9uKSByZXR1cm4gdGhpcy5tdWx0aXBsZSA/IFtdIDogdW5kZWZpbmVkO1xuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICByZXR1cm4gc2VsZWN0aW9uLm1hcCgoczogYW55KSA9PiB0aGlzLm9yaWdpbmFsT3B0aW9uc01hcC5nZXQocy5rZXkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMub3JpZ2luYWxPcHRpb25zTWFwLmdldChzZWxlY3Rpb24ua2V5KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF92YWx1ZVRvVHJlZVNlbGVjdGlvbih2YWx1ZTogYW55KSB7XG4gICAgZnVuY3Rpb24gZ2V0S2V5KHY6IGFueSwgbWFwOiBNYXA8c3RyaW5nLCBhbnk+KTogc3RyaW5nIHtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsXSBvZiBtYXAuZW50cmllcygpKSB7XG4gICAgICAgIGlmIChpc0VxdWFsKHYsIHZhbCkpIHtcbiAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuIHRoaXMubXVsdGlwbGUgPyBbXSA6IHVuZGVmaW5lZDtcblxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICBjb25zdCByZXMgPSBbXSBhcyBUcmVlTm9kZVtdO1xuICAgICAgdmFsdWUuZm9yRWFjaCgodjogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGdldEtleSh2LCB0aGlzLm9yaWdpbmFsT3B0aW9uc01hcCk7XG4gICAgICAgIGlmIChrZXkpIHJlcy5wdXNoKHRoaXMub3B0aW9uc01hcC5nZXQoa2V5KSBhcyBUcmVlTm9kZSk7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGtleSA9IGdldEtleSh2YWx1ZSwgdGhpcy5vcmlnaW5hbE9wdGlvbnNNYXApO1xuICAgICAgcmV0dXJuIGtleSA/IHRoaXMub3B0aW9uc01hcC5nZXQoa2V5KSA6IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvLyB0aGlzIGlzIGEgZml4IG9mIHByaW1lbmcgY2hhbmdlIGRldGVjdGlvbiBidWcgd2hlbiB2aXJ0dWFsIHNjcm9sbGVyIGlzIGVuYWJsZWRcbiAgdXBkYXRlT3B0aW9ucygpIHtcbiAgICBpZiAoIXRoaXMudmlydHVhbFNjcm9sbCkgcmV0dXJuO1xuICAgIHRoaXMub3B0aW9ucyA9IFsuLi50aGlzLm9wdGlvbnNdO1xuICB9XG59XG4iXX0=