@mediusinc/mng-commons 0.17.5 → 0.17.6

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.
@@ -85,6 +85,9 @@ export class MngActionEditorComponent {
85
85
  this.triggerSubmit();
86
86
  return of(undefined);
87
87
  });
88
+ if (this.action.hasRunConfirmation) {
89
+ action.withRunConfirmationDescriptor(this.action.runConfirmationDialogDescriptor);
90
+ }
88
91
  }
89
92
  else {
90
93
  action.withRunFunction(() => {
@@ -266,4 +269,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
266
269
  type: ViewChild,
267
270
  args: [MngFormEditorComponent]
268
271
  }] } });
269
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYWN0aW9uL2VkaXRvci9hY3Rpb24tZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vZWRpdG9yL2FjdGlvbi1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFFWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFhLGFBQWEsRUFBZ0IsRUFBRSxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUczRCxPQUFPLEVBQTJDLDRCQUE0QixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDNUcsT0FBTyxFQUFDLDBCQUEwQixFQUFFLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUYsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFJekQsT0FBTyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUVsRCxPQUFPLEVBQTZCLGdCQUFnQixFQUFDLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7OztBQU92RSxNQUFNLE9BQU8sd0JBQXdCO0lBeUNqQyxZQUNZLFFBQWtCLEVBQ2xCLFNBQTJCLEVBQzNCLGNBQXdDLEVBQ3hDLGlCQUFvQyxFQUNwQyxpQkFBdUMsRUFDM0IsU0FB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QkFBekIsS0FBSztnQkFDVSxZQUFZO3NCQUEzQixLQUFLO2dCQUN5QixpQkFBaUI7c0JBQS9DLEtBQUs7dUJBQUMsZUFBZTtnQkFFUyxxQkFBcUI7c0JBQW5ELE1BQU07dUJBQUMsY0FBYztnQkFDUyx3QkFBd0I7c0JBQXRELE1BQU07dUJBQUMsY0FBYztnQkFHd0IsU0FBUztzQkFBdEQsZUFBZTt1QkFBQyxvQkFBb0I7Z0JBQ0gsc0JBQXNCO3NCQUF2RCxTQUFTO3VCQUFDLGNBQWM7Z0JBQ2lCLGVBQWU7c0JBQXhELFNBQVM7dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7VHJhbnNsYXRlU2VydmljZX0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge0R5bmFtaWNEaWFsb2dDb25maWcsIER5bmFtaWNEaWFsb2dSZWZ9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQge09ic2VydmFibGUsIFJlcGxheVN1YmplY3QsIFN1YnNjcmlwdGlvbiwgb2YsIHRocm93RXJyb3J9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtjYXRjaEVycm9yLCBmaW5hbGl6ZSwgZmlyc3R9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuaW1wb3J0IHtJRWRpdG9yRGF0YVByb3ZpZGVyfSBmcm9tICcuLi8uLi8uLi9kYXRhLXByb3ZpZGVycyc7XG5pbXBvcnQge0FjdGlvbkRlc2NyaXB0b3IsIEFjdGlvbkVkaXRvckRlc2NyaXB0b3IsIEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3J9IGZyb20gJy4uLy4uLy4uL2Rlc2NyaXB0b3JzJztcbmltcG9ydCB7QWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW0sIEFjdGlvblBvc2l0aW9uRW51bX0gZnJvbSAnLi4vLi4vLi4vZGVzY3JpcHRvcnMvdHlwZXMnO1xuaW1wb3J0IHtNbmdUZW1wbGF0ZURpcmVjdGl2ZX0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQge0lWaWV3Q29udGFpbmVyLCBJVmlld0NvbnRhaW5lckVkaXRvcn0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7TW5nQWN0aW9uRXhlY3V0b3JTZXJ2aWNlLCBNbmdDb21tb25zU2VydmljZSwgTW5nTmF2aWdhdGlvblNlcnZpY2UsIE1uZ1ZpZXdDb250YWluZXJDb21wb25lbnRTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQge0lkVHlwZX0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHtJMThuVXRpbHMsIE5vdGlmaWNhdGlvblV0aWx9IGZyb20gJy4uLy4uLy4uL3V0aWxzJztcbmltcG9ydCB7TW5nRm9ybUVkaXRvckNvbXBvbmVudH0gZnJvbSAnLi4vLi4vZm9ybSc7XG5pbXBvcnQge01uZ0Zvcm1FZGl0b3JTdWJtaXRFdmVudH0gZnJvbSAnLi4vLi4vZm9ybS9tb2RlbHMnO1xuaW1wb3J0IHtBY3Rpb25EYXRhLCBBY3Rpb25JbnN0YW5jZSwgQWN0aW9uUGFyYW1ldGVyc30gZnJvbSAnLi4vbW9kZWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtbmctYWN0aW9uLWVkaXRvcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FjdGlvbi1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE1uZ0FjdGlvbkVkaXRvckNvbXBvbmVudDxULCBTPiBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgICAvLyBtZXRhZGF0YSBhbmQgZWRpdG9yIG1vZGUgaW5wdXRcbiAgICBASW5wdXQoKSBwdWJsaWMgYWN0aW9uITogQWN0aW9uRWRpdG9yRGVzY3JpcHRvcjxUPjtcblxuICAgIC8vIGRhdGEgc291cmNlIGlucHV0c1xuICAgIEBJbnB1dCgpIHB1YmxpYyBpdGVtSWQ/OiBJZFR5cGU7XG4gICAgQElucHV0KCkgcHVibGljIGl0ZW0/OiBUO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb25EYXRhPzogQWN0aW9uRGF0YTtcbiAgICBASW5wdXQoKSBwdWJsaWMgZGF0YVByb3ZpZGVyPzogSUVkaXRvckRhdGFQcm92aWRlcjxULCBTPjtcbiAgICBASW5wdXQoJ3ZpZXdDb250YWluZXInKSBwdWJsaWMgdmlld0NvbnRhaW5lckluaXQ/OiBJVmlld0NvbnRhaW5lcjxULCBTPjtcblxuICAgIEBPdXRwdXQoJ2FjdGlvblN1Ym1pdCcpIHB1YmxpYyBhY3Rpb25SdW5FdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFQgfCBudWxsIHwgdW5kZWZpbmVkPigpO1xuICAgIEBPdXRwdXQoJ2FjdGlvbkNhbmNlbCcpIHB1YmxpYyBhY3Rpb25DYW5jZWxFdmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFQgfCBudWxsIHwgdW5kZWZpbmVkPigpO1xuXG4gICAgLy8gY29udGVudCBhbmQgdmlldyBxdWVyaWVzXG4gICAgQENvbnRlbnRDaGlsZHJlbihNbmdUZW1wbGF0ZURpcmVjdGl2ZSkgcHVibGljIHRlbXBsYXRlcyE6IFF1ZXJ5TGlzdDxNbmdUZW1wbGF0ZURpcmVjdGl2ZT47XG4gICAgQFZpZXdDaGlsZCgnc3VibWl0QnV0dG9uJykgcHVibGljIHN1Ym1pdEJ1dHRvbkVsZW1lbnRSZWYhOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoTW5nRm9ybUVkaXRvckNvbXBvbmVudCkgcHVibGljIGVkaXRvckNvbXBvbmVudCE6IE1uZ0Zvcm1FZGl0b3JDb21wb25lbnQ8VD47XG5cbiAgICBwdWJsaWMgdGl0bGU/OiBzdHJpbmc7XG4gICAgcHVibGljIGlzRGlhbG9nID0gdHJ1ZTtcblxuICAgIC8vIGFjdGlvbnNcbiAgICBwcml2YXRlIGluc3RhbmNlPzogQWN0aW9uSW5zdGFuY2U8VCwgUz47XG4gICAgcHJpdmF0ZSBwcmV2aW91c0FjdGlvbkluc3RhbmNlPzogQWN0aW9uSW5zdGFuY2U8dW5rbm93biwgdW5rbm93bj47XG4gICAgcHVibGljIHRvb2xiYXJMZWZ0QWN0aW9uczogQWN0aW9uRGVzY3JpcHRvcjxUPltdID0gW107XG4gICAgcHVibGljIHRvb2xiYXJSaWdodEFjdGlvbnM6IEFjdGlvbkRlc2NyaXB0b3I8VD5bXSA9IFtdO1xuICAgIHB1YmxpYyBmb290ZXJMZWZ0QWN0aW9uczogQWN0aW9uRGVzY3JpcHRvcjxUPltdID0gW107XG4gICAgcHVibGljIGZvb3RlclJpZ2h0QWN0aW9uczogQWN0aW9uRGVzY3JpcHRvcjxUPltdID0gW107XG5cbiAgICBwcml2YXRlIGxvYWRpbmdTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gICAgcHVibGljIGxvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5sb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwcml2YXRlIHN1Ym1pdExvYWRpbmdTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8Ym9vbGVhbj4oMSk7XG4gICAgcHVibGljIHN1Ym1pdExvYWRpbmckOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5zdWJtaXRMb2FkaW5nU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgICBwcml2YXRlIGlzRmluaXNoZWQgPSBmYWxzZTtcblxuICAgIHB1YmxpYyB2aWV3Q29udGFpbmVyPzogSVZpZXdDb250YWluZXI8VCwgUz47XG4gICAgcHJpdmF0ZSBzb3VyY2VDb21wb25lbnQ6IGFueSA9IHRoaXM7XG5cbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IEFycmF5PFN1YnNjcmlwdGlvbj4gPSBbXTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGluamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgcHJpdmF0ZSB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYWN0aW9uRXhlY3V0b3I6IE1uZ0FjdGlvbkV4ZWN1dG9yU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBtbmdDb21tb25zU2VydmljZTogTW5nQ29tbW9uc1NlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgbmF2aWdhdGlvblNlcnZpY2U6IE1uZ05hdmlnYXRpb25TZXJ2aWNlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGRpYWxvZ1JlZjogRHluYW1pY0RpYWxvZ1JlZiB8IG51bGwsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZGlhbG9nQ29uZmlnOiBEeW5hbWljRGlhbG9nQ29uZmlnIHwgbnVsbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB2aWV3Q29udGFpbmVyU2VydmljZTogTW5nVmlld0NvbnRhaW5lckNvbXBvbmVudFNlcnZpY2U8VCwgUz4gfCBudWxsXG4gICAgKSB7fVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5kaWFsb2dDb25maWc/LmRhdGEpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ0NvbmZpZy5kYXRhLmFjdGlvbkluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pbnN0YW5jZSA9IHRoaXMuZGlhbG9nQ29uZmlnLmRhdGEuYWN0aW9uSW5zdGFuY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5pbnN0YW5jZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uID0gdGhpcy5pbnN0YW5jZS5hY3Rpb24gYXMgQWN0aW9uRWRpdG9yRGVzY3JpcHRvcjxUPjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaXRlbUlkID0gdGhpcy5pbnN0YW5jZT8uYWN0aXZhdGlvblBhcmFtZXRlcnM/Lml0ZW1JZDtcbiAgICAgICAgICAgIHRoaXMuaXRlbSA9IHRoaXMuaW5zdGFuY2U/LmFjdGl2YXRpb25QYXJhbWV0ZXJzPy5pdGVtO1xuICAgICAgICAgICAgdGhpcy5hY3Rpb25EYXRhID0gdGhpcy5pbnN0YW5jZT8uYWN0aXZhdGlvblBhcmFtZXRlcnM/LmFjdGlvbkRhdGE7XG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIgPSB0aGlzLmluc3RhbmNlPy5hY3RpdmF0aW9uUGFyYW1ldGVycz8udmlld0NvbnRhaW5lciBhcyBJVmlld0NvbnRhaW5lcjxULCBTPjtcbiAgICAgICAgICAgIHRoaXMuc291cmNlQ29tcG9uZW50ID0gdGhpcy5pbnN0YW5jZT8uYWN0aXZhdGlvblBhcmFtZXRlcnM/LnNvdXJjZUNvbXBvbmVudDtcbiAgICAgICAgICAgIGlmICghdGhpcy5kYXRhUHJvdmlkZXIgJiYgdGhpcy52aWV3Q29udGFpbmVyKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YVByb3ZpZGVyID0gdGhpcy52aWV3Q29udGFpbmVyLmdldERhdGFQcm92aWRlcigpO1xuICAgICAgICAgICAgICAgIGlmIChkYXRhUHJvdmlkZXIgJiYgdHlwZW9mIGRhdGFQcm92aWRlclsnZmV0Y2gnIGFzIGtleW9mIG9iamVjdF0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhUHJvdmlkZXIgPSBkYXRhUHJvdmlkZXIgYXMgSUVkaXRvckRhdGFQcm92aWRlcjxULCBTPjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5kaWFsb2dDb25maWcuZGF0YS5wcmV2aW91c0FjdGlvbkluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c0FjdGlvbkluc3RhbmNlID0gdGhpcy5kaWFsb2dDb25maWcuZGF0YS5wcmV2aW91c0FjdGlvbkluc3RhbmNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pc0RpYWxvZyA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy52aWV3Q29udGFpbmVyID0gdGhpcy52aWV3Q29udGFpbmVySW5pdCA/PyB0aGlzLnZpZXdDb250YWluZXJTZXJ2aWNlID8/IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0VGl0bGUoKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiB0aGlzLmFjdGlvbi5lZGl0b3JBY3Rpb25zKSB7XG4gICAgICAgICAgICBpZiAoYWN0aW9uIGluc3RhbmNlb2YgQWN0aW9uRWRpdG9yU3VibWl0RGVzY3JpcHRvcikge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYWN0aW9uLmJ1dHRvbi5pY29uID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb24uYnV0dG9uLndpdGhJY29uKGFjdGlvbi5zdWJtaXRUeXBlID09PSBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5TdWJtaXQgPyAncGkgcGktY2hlY2snIDogJ3BpIHBpLXRpbWVzJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgYWN0aW9uLmJ1dHRvbi5sYWJlbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmJ1dHRvbi53aXRoTGFiZWwoYWN0aW9uLnN1Ym1pdFR5cGUgPT09IEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLlN1Ym1pdCA/ICdnZW5lcmFsLnNhdmUnIDogdGhpcy5pc0RpYWxvZyA/ICdnZW5lcmFsLmNsb3NlJyA6ICdnZW5lcmFsLmNhbmNlbCcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIGFzc2lnbiBydW4gb3BlcmF0aW9uc1xuICAgICAgICAgICAgICAgIGFjdGlvbi53aXRoUnVuTm90aWZpY2F0aW9uU3VjY2Vzcyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgZmFsc2UpO1xuICAgICAgICAgICAgICAgIGlmIChhY3Rpb24uc3VibWl0VHlwZSA9PT0gQWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW0uU3VibWl0KSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbi53aXRoUnVuRnVuY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmlnZ2VyU3VibWl0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLndpdGhSdW5GdW5jdGlvbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbmNlbCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucGxhY2VBY3Rpb25zT25Qb3NpdGlvbnMoYWN0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIHRoaXMudmlld0NvbnRhaW5lcj8uZ2V0QWN0aW9ucygpLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZS5wb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM/LmluY2x1ZGVzKHRoaXMuYWN0aW9uLnRhYmxldmlld0NhdGVnb3J5ISkpID8/IFtdKSB7XG4gICAgICAgICAgICB0aGlzLnBsYWNlQWN0aW9uc09uUG9zaXRpb25zKGFjdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRvb2xiYXJSaWdodEFjdGlvbnMgPSB0aGlzLnRvb2xiYXJSaWdodEFjdGlvbnMucmV2ZXJzZSgpO1xuICAgICAgICB0aGlzLmZvb3RlclJpZ2h0QWN0aW9ucyA9IHRoaXMuZm9vdGVyUmlnaHRBY3Rpb25zLnJldmVyc2UoKTtcblxuICAgICAgICB0aGlzLmxvYWRJdGVtV2l0aERhdGFQcm92aWRlcigpO1xuXG4gICAgICAgIGlmICh0eXBlb2YgKHRoaXMudmlld0NvbnRhaW5lciBhcyBJVmlld0NvbnRhaW5lckVkaXRvcjxULCBTPik/LmdldEVkaXRvclJlc2V0JCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uc3Qgdmlld0NvbnRhaW5lckVkaXRvciA9IHRoaXMudmlld0NvbnRhaW5lciBhcyBJVmlld0NvbnRhaW5lckVkaXRvcjxULCBTPjtcbiAgICAgICAgICAgIHZpZXdDb250YWluZXJFZGl0b3IuZ2V0RWRpdG9yUmVzZXQkKCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUuZmV0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZEl0ZW1XaXRoRGF0YVByb3ZpZGVyKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5pdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRvckNvbXBvbmVudD8ucmVzZXRGb3JtTW9kZWwoZS5pdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlLmZpZWxkcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZS5maWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVkaXRvckNvbXBvbmVudD8ucmVzZXRGb3JtRmllbGRWYWx1ZShrZXksIGUuZmllbGRzW2tleV0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TdWJtaXQoZXZlbnQ6IE1uZ0Zvcm1FZGl0b3JTdWJtaXRFdmVudDxUPikge1xuICAgICAgICBpZiAodGhpcy5pc0ZpbmlzaGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LnN1Y2Nlc3MpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY3Rpb24uc3VibWl0RnVuY3Rpb24gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnN1Ym1pdExvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5hY3Rpb25FeGVjdXRvci5ydW5FZGl0b3JTYXZlKFxuICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uLFxuICAgICAgICAgICAgICAgIG5ldyBBY3Rpb25QYXJhbWV0ZXJzKHRoaXMuaXRlbUlkLCBldmVudC5mb3JtSXRlbSkud2l0aEFjdGlvbkRhdGEodGhpcy5hY3Rpb25EYXRhKS53aXRoVmlld0NvbnRhaW5lcih0aGlzLnZpZXdDb250YWluZXIpLndpdGhTb3VyY2VDb21wb25lbnQodGhpcy5zb3VyY2VDb21wb25lbnQpLFxuICAgICAgICAgICAgICAgIHRoaXMuZGF0YVByb3ZpZGVyLFxuICAgICAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UsXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c0FjdGlvbkluc3RhbmNlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZSA9IGNvbnRleHQuaW5zdGFuY2U7XG5cbiAgICAgICAgICAgIGNvbnRleHQuZXhlY3V0aW9uJC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNGaW5pc2hlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3VibWl0TG9hZGluZ1N1YmplY3QubmV4dChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uUnVuRXZlbnRFbWl0dGVyLm5leHQocmVzKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZWFjdGl2YXRlQWN0aW9uKHJlcyk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Ym1pdExvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNhbmNlbCgpIHtcbiAgICAgICAgdGhpcy5hY3Rpb25DYW5jZWxFdmVudEVtaXR0ZXIubmV4dCh1bmRlZmluZWQpO1xuICAgICAgICB0aGlzLmRlYWN0aXZhdGVBY3Rpb24odW5kZWZpbmVkLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdHJpZ2dlclN1Ym1pdCgpIHtcbiAgICAgICAgdGhpcy5lZGl0b3JDb21wb25lbnQuc3VibWl0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkSXRlbVdpdGhEYXRhUHJvdmlkZXIoKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hY3Rpb24uZmV0Y2hGdW5jdGlvbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZGluZ1N1YmplY3QubmV4dCh0cnVlKTtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuYWN0aW9uRXhlY3V0b3IucnVuRWRpdG9yRmV0Y2goXG4gICAgICAgICAgICB0aGlzLmFjdGlvbixcbiAgICAgICAgICAgIG5ldyBBY3Rpb25QYXJhbWV0ZXJzKHRoaXMuaXRlbUlkLCB0aGlzLml0ZW0pLndpdGhBY3Rpb25EYXRhKHRoaXMuYWN0aW9uRGF0YSkud2l0aFZpZXdDb250YWluZXIodGhpcy52aWV3Q29udGFpbmVyKS53aXRoU291cmNlQ29tcG9uZW50KHRoaXMuc291cmNlQ29tcG9uZW50KSxcbiAgICAgICAgICAgIHRoaXMuZGF0YVByb3ZpZGVyLFxuICAgICAgICAgICAgdGhpcy5pbnN0YW5jZSxcbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNBY3Rpb25JbnN0YW5jZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLmluc3RhbmNlID0gY29udGV4dC5pbnN0YW5jZTtcblxuICAgICAgICBjb250ZXh0LmV4ZWN1dGlvbiRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpcnN0KCksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb25FcnJvciA9IHRoaXMuYWN0aW9uRXhlY3V0b3IudG9NbmdBY3Rpb25FcnJvcihlcnIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3Rpb24uaGFzUnVuTm90aWZpY2F0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvblV0aWwuYWN0aW9uTm90aWZpY2F0aW9uRXJyb3IodGhpcy50cmFuc2xhdGUsIHRoaXMuYWN0aW9uLCBhY3Rpb25FcnJvciwgJ2ZldGNoJywgdGhpcy52aWV3Q29udGFpbmVyLCB0aGlzLml0ZW0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCgpID0+IGFjdGlvbkVycm9yKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbSA9IHJlcyA/PyB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aW9uLmhhc0ZldGNoTm90aWZpY2F0aW9uU3VjY2Vzcykge1xuICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25VdGlsLmFjdGlvbk5vdGlmaWNhdGlvblN1Y2Nlc3MoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2ZldGNoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uLmZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc1RpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3Rpb24uZmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzTWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lcixcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLnNldFRpdGxlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFRpdGxlKCkge1xuICAgICAgICBpZiAodGhpcy5hY3Rpb24uZWRpdG9yVGl0bGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMudGl0bGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBpZiAodGhpcy5kaWFsb2dDb25maWcpIHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ0NvbmZpZyEuaGVhZGVyID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IEkxOG5VdGlscy5BY3Rpb24uZ2V0RWRpdG9yVGl0bGVBc3luYyh0aGlzLnRyYW5zbGF0ZSwgdGhpcy5hY3Rpb24sIHRoaXMuaXRlbSkuc3Vic2NyaWJlKHQgPT4ge1xuICAgICAgICAgICAgdGhpcy50aXRsZSA9IHQgPz8gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGlhbG9nQ29uZmlnKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dDb25maWchLmhlYWRlciA9IHQgPz8gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1uZ0NvbW1vbnNTZXJ2aWNlLnNldFBhZ2VUaXRsZSh0ID8/IHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZGVhY3RpdmF0ZUFjdGlvbihpdGVtPzogVCB8IG51bGwsIGNhbmNlbCA9IGZhbHNlKSB7XG4gICAgICAgIGlmICh0aGlzLmlzRGlhbG9nKSB7XG4gICAgICAgICAgICAvLyBpZiBjYW5jZWwsIHRoZW4gZm9yY2UgY2xvc2UgdGhlIGRpYWxvZ1xuICAgICAgICAgICAgaWYgKGNhbmNlbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZShpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aW9uRXhlY3V0b3IuZGVhY3RpdmF0ZUFjdGlvbih0aGlzLmluc3RhbmNlISk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHBsYWNlQWN0aW9uc09uUG9zaXRpb25zKGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxhbnk+KSB7XG4gICAgICAgIHN3aXRjaCAoYWN0aW9uLnBvc2l0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdDpcbiAgICAgICAgICAgICAgICB0aGlzLnRvb2xiYXJMZWZ0QWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyUmlnaHQ6XG4gICAgICAgICAgICAgICAgdGhpcy50b29sYmFyUmlnaHRBY3Rpb25zLnB1c2goYWN0aW9uKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgQWN0aW9uUG9zaXRpb25FbnVtLkZvb3RlckxlZnQ6XG4gICAgICAgICAgICAgICAgdGhpcy5mb290ZXJMZWZ0QWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJSaWdodDpcbiAgICAgICAgICAgICAgICB0aGlzLmZvb3RlclJpZ2h0QWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8aDUgKm5nSWY9XCIhaXNEaWFsb2cgJiYgdGl0bGVcIj57eyB0aXRsZSB9fTwvaDU+XG48ZGl2IGNsYXNzPVwiaC1mdWxsIGZsZXggZmxleC1jb2x1bW5cIj5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93LTEgbW5nLWFjdGlvbi1lZGl0b3ItdG9vbGJhci1jb250YWluZXJcIiAqbmdJZj1cInRvb2xiYXJMZWZ0QWN0aW9ucy5sZW5ndGggPiAwIHx8IHRvb2xiYXJSaWdodEFjdGlvbnMubGVuZ3RoID4gMFwiPlxuICAgICAgICA8cC10b29sYmFyIHN0eWxlQ2xhc3M9XCJtbmctYWN0aW9uLWVkaXRvci10b29sYmFyXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwibGVmdFwiPlxuICAgICAgICAgICAgICAgIDxtbmctYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgdG9vbGJhckxlZnRBY3Rpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgW2FjdGlvbl09XCJhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic3VibWl0TG9hZGluZyRcIlxuICAgICAgICAgICAgICAgICAgICBbdmlld0NvbnRhaW5lcl09XCJ2aWV3Q29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtSWRdPVwiaXRlbUlkXCI+PC9tbmctYWN0aW9uPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgIDxtbmctYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgdG9vbGJhclJpZ2h0QWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIFthY3Rpb25dPVwiYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInN1Ym1pdExvYWRpbmckXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZpZXdDb250YWluZXJdPVwidmlld0NvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbaXRlbUlkXT1cIml0ZW1JZFwiPjwvbW5nLWFjdGlvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvcC10b29sYmFyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIG1uZy1hY3Rpb24tZWRpdG9yLWZvcm0tY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiICpuZ0lmPVwibG9hZGluZyQgfCBhc3luY1wiPlxuICAgICAgICAgICAgPHAtcHJvZ3Jlc3NTcGlubmVyIFtzdHlsZV09XCJ7d2lkdGg6ICczcmVtJywgaGVpZ2h0OiAnM3JlbSd9XCIgc3Ryb2tlV2lkdGg9XCIzXCI+PC9wLXByb2dyZXNzU3Bpbm5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxtbmctZm9ybS1lZGl0b3IgKm5nSWY9XCJhY3Rpb24uZWRpdG9yRGVzY3JpcHRvciAmJiAobG9hZGluZyQgfCBhc3luYykgPT09IGZhbHNlXCIgW2Rlc2NyaXB0b3JdPVwiYWN0aW9uLmVkaXRvckRlc2NyaXB0b3JcIiBbaXRlbV09XCJpdGVtXCIgKGZvcm1TdWJtaXQpPVwib25TdWJtaXQoJGV2ZW50KVwiPlxuICAgICAgICA8L21uZy1mb3JtLWVkaXRvcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1uZy1hY3Rpb24tZWRpdG9yLWZvb3Rlci1jb250YWluZXJcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxtbmctYWN0aW9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBmb290ZXJMZWZ0QWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgW2FjdGlvbl09XCJhY3Rpb25cIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzdWJtaXRMb2FkaW5nJFwiXG4gICAgICAgICAgICAgICAgW3ZpZXdDb250YWluZXJdPVwidmlld0NvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgW2l0ZW1JZF09XCJpdGVtSWRcIj48L21uZy1hY3Rpb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPG1uZy1hY3Rpb25cbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGZvb3RlclJpZ2h0QWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgW2FjdGlvbl09XCJhY3Rpb25cIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzdWJtaXRMb2FkaW5nJFwiXG4gICAgICAgICAgICAgICAgW3ZpZXdDb250YWluZXJdPVwidmlld0NvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXG4gICAgICAgICAgICAgICAgW2l0ZW1JZF09XCJpdGVtSWRcIj48L21uZy1hY3Rpb24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
272
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvYWN0aW9uL2VkaXRvci9hY3Rpb24tZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9hY3Rpb24vZWRpdG9yL2FjdGlvbi1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFFWixLQUFLLEVBR0wsUUFBUSxFQUNSLE1BQU0sRUFFTixTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFJdkIsT0FBTyxFQUFhLGFBQWEsRUFBZ0IsRUFBRSxFQUFFLFVBQVUsRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUczRCxPQUFPLEVBQTJDLDRCQUE0QixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDNUcsT0FBTyxFQUFDLDBCQUEwQixFQUFFLGtCQUFrQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDMUYsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFJekQsT0FBTyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNELE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUVsRCxPQUFPLEVBQTZCLGdCQUFnQixFQUFDLE1BQU0sV0FBVyxDQUFDOzs7Ozs7Ozs7OztBQU92RSxNQUFNLE9BQU8sd0JBQXdCO0lBeUNqQyxZQUNZLFFBQWtCLEVBQ2xCLFNBQTJCLEVBQzNCLGNBQXdDLEVBQ3hDLGlCQUFvQyxFQUNwQyxpQkFBdUMsRUFDM0IsU0FB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aUQxQyxRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFROzRDQS9DRyxNQUFNO3NCQUFyQixLQUFLO2dCQUdVLE1BQU07c0JBQXJCLEtBQUs7Z0JBQ1UsSUFBSTtzQkFBbkIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUNVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBQ3lCLGlCQUFpQjtzQkFBL0MsS0FBSzt1QkFBQyxlQUFlO2dCQUVTLHFCQUFxQjtzQkFBbkQsTUFBTTt1QkFBQyxjQUFjO2dCQUNTLHdCQUF3QjtzQkFBdEQsTUFBTTt1QkFBQyxjQUFjO2dCQUd3QixTQUFTO3NCQUF0RCxlQUFlO3VCQUFDLG9CQUFvQjtnQkFDSCxzQkFBc0I7c0JBQXZELFNBQVM7dUJBQUMsY0FBYztnQkFDaUIsZUFBZTtzQkFBeEQsU0FBUzt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5qZWN0b3IsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9uSW5pdCxcbiAgICBPcHRpb25hbCxcbiAgICBPdXRwdXQsXG4gICAgUXVlcnlMaXN0LFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7RHluYW1pY0RpYWxvZ0NvbmZpZywgRHluYW1pY0RpYWxvZ1JlZn0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcbmltcG9ydCB7T2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCwgU3Vic2NyaXB0aW9uLCBvZiwgdGhyb3dFcnJvcn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge2NhdGNoRXJyb3IsIGZpbmFsaXplLCBmaXJzdH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge0lFZGl0b3JEYXRhUHJvdmlkZXJ9IGZyb20gJy4uLy4uLy4uL2RhdGEtcHJvdmlkZXJzJztcbmltcG9ydCB7QWN0aW9uRGVzY3JpcHRvciwgQWN0aW9uRWRpdG9yRGVzY3JpcHRvciwgQWN0aW9uRWRpdG9yU3VibWl0RGVzY3JpcHRvcn0gZnJvbSAnLi4vLi4vLi4vZGVzY3JpcHRvcnMnO1xuaW1wb3J0IHtBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bSwgQWN0aW9uUG9zaXRpb25FbnVtfSBmcm9tICcuLi8uLi8uLi9kZXNjcmlwdG9ycy90eXBlcyc7XG5pbXBvcnQge01uZ1RlbXBsYXRlRGlyZWN0aXZlfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7SVZpZXdDb250YWluZXIsIElWaWV3Q29udGFpbmVyRWRpdG9yfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMnO1xuaW1wb3J0IHtNbmdBY3Rpb25FeGVjdXRvclNlcnZpY2UsIE1uZ0NvbW1vbnNTZXJ2aWNlLCBNbmdOYXZpZ2F0aW9uU2VydmljZSwgTW5nVmlld0NvbnRhaW5lckNvbXBvbmVudFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzJztcbmltcG9ydCB7SWRUeXBlfSBmcm9tICcuLi8uLi8uLi90eXBlcyc7XG5pbXBvcnQge0kxOG5VdGlscywgTm90aWZpY2F0aW9uVXRpbH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHtNbmdGb3JtRWRpdG9yQ29tcG9uZW50fSBmcm9tICcuLi8uLi9mb3JtJztcbmltcG9ydCB7TW5nRm9ybUVkaXRvclN1Ym1pdEV2ZW50fSBmcm9tICcuLi8uLi9mb3JtL21vZGVscyc7XG5pbXBvcnQge0FjdGlvbkRhdGEsIEFjdGlvbkluc3RhbmNlLCBBY3Rpb25QYXJhbWV0ZXJzfSBmcm9tICcuLi9tb2RlbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ21uZy1hY3Rpb24tZWRpdG9yJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWN0aW9uLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTW5nQWN0aW9uRWRpdG9yQ29tcG9uZW50PFQsIFM+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8vIG1ldGFkYXRhIGFuZCBlZGl0b3IgbW9kZSBpbnB1dFxuICAgIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb24hOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yPFQ+O1xuXG4gICAgLy8gZGF0YSBzb3VyY2UgaW5wdXRzXG4gICAgQElucHV0KCkgcHVibGljIGl0ZW1JZD86IElkVHlwZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgaXRlbT86IFQ7XG4gICAgQElucHV0KCkgcHVibGljIGFjdGlvbkRhdGE/OiBBY3Rpb25EYXRhO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBkYXRhUHJvdmlkZXI/OiBJRWRpdG9yRGF0YVByb3ZpZGVyPFQsIFM+O1xuICAgIEBJbnB1dCgndmlld0NvbnRhaW5lcicpIHB1YmxpYyB2aWV3Q29udGFpbmVySW5pdD86IElWaWV3Q29udGFpbmVyPFQsIFM+O1xuXG4gICAgQE91dHB1dCgnYWN0aW9uU3VibWl0JykgcHVibGljIGFjdGlvblJ1bkV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8VCB8IG51bGwgfCB1bmRlZmluZWQ+KCk7XG4gICAgQE91dHB1dCgnYWN0aW9uQ2FuY2VsJykgcHVibGljIGFjdGlvbkNhbmNlbEV2ZW50RW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8VCB8IG51bGwgfCB1bmRlZmluZWQ+KCk7XG5cbiAgICAvLyBjb250ZW50IGFuZCB2aWV3IHF1ZXJpZXNcbiAgICBAQ29udGVudENoaWxkcmVuKE1uZ1RlbXBsYXRlRGlyZWN0aXZlKSBwdWJsaWMgdGVtcGxhdGVzITogUXVlcnlMaXN0PE1uZ1RlbXBsYXRlRGlyZWN0aXZlPjtcbiAgICBAVmlld0NoaWxkKCdzdWJtaXRCdXR0b24nKSBwdWJsaWMgc3VibWl0QnV0dG9uRWxlbWVudFJlZiE6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZChNbmdGb3JtRWRpdG9yQ29tcG9uZW50KSBwdWJsaWMgZWRpdG9yQ29tcG9uZW50ITogTW5nRm9ybUVkaXRvckNvbXBvbmVudDxUPjtcblxuICAgIHB1YmxpYyB0aXRsZT86IHN0cmluZztcbiAgICBwdWJsaWMgaXNEaWFsb2cgPSB0cnVlO1xuXG4gICAgLy8gYWN0aW9uc1xuICAgIHByaXZhdGUgaW5zdGFuY2U/OiBBY3Rpb25JbnN0YW5jZTxULCBTPjtcbiAgICBwcml2YXRlIHByZXZpb3VzQWN0aW9uSW5zdGFuY2U/OiBBY3Rpb25JbnN0YW5jZTx1bmtub3duLCB1bmtub3duPjtcbiAgICBwdWJsaWMgdG9vbGJhckxlZnRBY3Rpb25zOiBBY3Rpb25EZXNjcmlwdG9yPFQ+W10gPSBbXTtcbiAgICBwdWJsaWMgdG9vbGJhclJpZ2h0QWN0aW9uczogQWN0aW9uRGVzY3JpcHRvcjxUPltdID0gW107XG4gICAgcHVibGljIGZvb3RlckxlZnRBY3Rpb25zOiBBY3Rpb25EZXNjcmlwdG9yPFQ+W10gPSBbXTtcbiAgICBwdWJsaWMgZm9vdGVyUmlnaHRBY3Rpb25zOiBBY3Rpb25EZXNjcmlwdG9yPFQ+W10gPSBbXTtcblxuICAgIHByaXZhdGUgbG9hZGluZ1N1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgICBwdWJsaWMgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLmxvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHByaXZhdGUgc3VibWl0TG9hZGluZ1N1YmplY3QgPSBuZXcgUmVwbGF5U3ViamVjdDxib29sZWFuPigxKTtcbiAgICBwdWJsaWMgc3VibWl0TG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnN1Ym1pdExvYWRpbmdTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICAgIHByaXZhdGUgaXNGaW5pc2hlZCA9IGZhbHNlO1xuXG4gICAgcHVibGljIHZpZXdDb250YWluZXI/OiBJVmlld0NvbnRhaW5lcjxULCBTPjtcbiAgICBwcml2YXRlIHNvdXJjZUNvbXBvbmVudDogYW55ID0gdGhpcztcblxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uczogQXJyYXk8U3Vic2NyaXB0aW9uPiA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhY3Rpb25FeGVjdXRvcjogTW5nQWN0aW9uRXhlY3V0b3JTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIG1uZ0NvbW1vbnNTZXJ2aWNlOiBNbmdDb21tb25zU2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBuYXZpZ2F0aW9uU2VydmljZTogTW5nTmF2aWdhdGlvblNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZGlhbG9nUmVmOiBEeW5hbWljRGlhbG9nUmVmIHwgbnVsbCxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBkaWFsb2dDb25maWc6IER5bmFtaWNEaWFsb2dDb25maWcgfCBudWxsLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHZpZXdDb250YWluZXJTZXJ2aWNlOiBNbmdWaWV3Q29udGFpbmVyQ29tcG9uZW50U2VydmljZTxULCBTPiB8IG51bGxcbiAgICApIHt9XG5cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmRpYWxvZ0NvbmZpZz8uZGF0YSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuZGlhbG9nQ29uZmlnLmRhdGEuYWN0aW9uSW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlID0gdGhpcy5kaWFsb2dDb25maWcuZGF0YS5hY3Rpb25JbnN0YW5jZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmluc3RhbmNlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hY3Rpb24gPSB0aGlzLmluc3RhbmNlLmFjdGlvbiBhcyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yPFQ+O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pdGVtSWQgPSB0aGlzLmluc3RhbmNlPy5hY3RpdmF0aW9uUGFyYW1ldGVycz8uaXRlbUlkO1xuICAgICAgICAgICAgdGhpcy5pdGVtID0gdGhpcy5pbnN0YW5jZT8uYWN0aXZhdGlvblBhcmFtZXRlcnM/Lml0ZW07XG4gICAgICAgICAgICB0aGlzLmFjdGlvbkRhdGEgPSB0aGlzLmluc3RhbmNlPy5hY3RpdmF0aW9uUGFyYW1ldGVycz8uYWN0aW9uRGF0YTtcbiAgICAgICAgICAgIHRoaXMudmlld0NvbnRhaW5lciA9IHRoaXMuaW5zdGFuY2U/LmFjdGl2YXRpb25QYXJhbWV0ZXJzPy52aWV3Q29udGFpbmVyIGFzIElWaWV3Q29udGFpbmVyPFQsIFM+O1xuICAgICAgICAgICAgdGhpcy5zb3VyY2VDb21wb25lbnQgPSB0aGlzLmluc3RhbmNlPy5hY3RpdmF0aW9uUGFyYW1ldGVycz8uc291cmNlQ29tcG9uZW50O1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRhdGFQcm92aWRlciAmJiB0aGlzLnZpZXdDb250YWluZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRhUHJvdmlkZXIgPSB0aGlzLnZpZXdDb250YWluZXIuZ2V0RGF0YVByb3ZpZGVyKCk7XG4gICAgICAgICAgICAgICAgaWYgKGRhdGFQcm92aWRlciAmJiB0eXBlb2YgZGF0YVByb3ZpZGVyWydmZXRjaCcgYXMga2V5b2Ygb2JqZWN0XSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFQcm92aWRlciA9IGRhdGFQcm92aWRlciBhcyBJRWRpdG9yRGF0YVByb3ZpZGVyPFQsIFM+O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ0NvbmZpZy5kYXRhLnByZXZpb3VzQWN0aW9uSW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXZpb3VzQWN0aW9uSW5zdGFuY2UgPSB0aGlzLmRpYWxvZ0NvbmZpZy5kYXRhLnByZXZpb3VzQWN0aW9uSW5zdGFuY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlzRGlhbG9nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIgPSB0aGlzLnZpZXdDb250YWluZXJJbml0ID8/IHRoaXMudmlld0NvbnRhaW5lclNlcnZpY2UgPz8gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRUaXRsZSgpO1xuXG4gICAgICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIHRoaXMuYWN0aW9uLmVkaXRvckFjdGlvbnMpIHtcbiAgICAgICAgICAgIGlmIChhY3Rpb24gaW5zdGFuY2VvZiBBY3Rpb25FZGl0b3JTdWJtaXREZXNjcmlwdG9yKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24uYnV0dG9uLmljb24gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbi5idXR0b24ud2l0aEljb24oYWN0aW9uLnN1Ym1pdFR5cGUgPT09IEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLlN1Ym1pdCA/ICdwaSBwaS1jaGVjaycgOiAncGkgcGktdGltZXMnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24uYnV0dG9uLmxhYmVsID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb24uYnV0dG9uLndpdGhMYWJlbChhY3Rpb24uc3VibWl0VHlwZSA9PT0gQWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW0uU3VibWl0ID8gJ2dlbmVyYWwuc2F2ZScgOiB0aGlzLmlzRGlhbG9nID8gJ2dlbmVyYWwuY2xvc2UnIDogJ2dlbmVyYWwuY2FuY2VsJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gYXNzaWduIHJ1biBvcGVyYXRpb25zXG4gICAgICAgICAgICAgICAgYWN0aW9uLndpdGhSdW5Ob3RpZmljYXRpb25TdWNjZXNzKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGlvbi5zdWJtaXRUeXBlID09PSBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5TdWJtaXQpIHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLndpdGhSdW5GdW5jdGlvbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRyaWdnZXJTdWJtaXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aW9uLmhhc1J1bkNvbmZpcm1hdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLndpdGhSdW5Db25maXJtYXRpb25EZXNjcmlwdG9yKHRoaXMuYWN0aW9uLnJ1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3IhKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbi53aXRoUnVuRnVuY3Rpb24oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW5jZWwoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvZih1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBsYWNlQWN0aW9uc09uUG9zaXRpb25zKGFjdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IGFjdGlvbiBvZiB0aGlzLnZpZXdDb250YWluZXI/LmdldEFjdGlvbnMoKS5maWx0ZXIodmFsdWUgPT4gdmFsdWUucG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzPy5pbmNsdWRlcyh0aGlzLmFjdGlvbi50YWJsZXZpZXdDYXRlZ29yeSEpKSA/PyBbXSkge1xuICAgICAgICAgICAgdGhpcy5wbGFjZUFjdGlvbnNPblBvc2l0aW9ucyhhY3Rpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy50b29sYmFyUmlnaHRBY3Rpb25zID0gdGhpcy50b29sYmFyUmlnaHRBY3Rpb25zLnJldmVyc2UoKTtcbiAgICAgICAgdGhpcy5mb290ZXJSaWdodEFjdGlvbnMgPSB0aGlzLmZvb3RlclJpZ2h0QWN0aW9ucy5yZXZlcnNlKCk7XG5cbiAgICAgICAgdGhpcy5sb2FkSXRlbVdpdGhEYXRhUHJvdmlkZXIoKTtcblxuICAgICAgICBpZiAodHlwZW9mICh0aGlzLnZpZXdDb250YWluZXIgYXMgSVZpZXdDb250YWluZXJFZGl0b3I8VCwgUz4pPy5nZXRFZGl0b3JSZXNldCQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdDb250YWluZXJFZGl0b3IgPSB0aGlzLnZpZXdDb250YWluZXIgYXMgSVZpZXdDb250YWluZXJFZGl0b3I8VCwgUz47XG4gICAgICAgICAgICB2aWV3Q29udGFpbmVyRWRpdG9yLmdldEVkaXRvclJlc2V0JCgpLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLmZldGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRJdGVtV2l0aERhdGFQcm92aWRlcigpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGUuaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0b3JDb21wb25lbnQ/LnJlc2V0Rm9ybU1vZGVsKGUuaXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5maWVsZHMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGUuZmllbGRzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5lZGl0b3JDb21wb25lbnQ/LnJlc2V0Rm9ybUZpZWxkVmFsdWUoa2V5LCBlLmZpZWxkc1trZXldKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU3VibWl0KGV2ZW50OiBNbmdGb3JtRWRpdG9yU3VibWl0RXZlbnQ8VD4pIHtcbiAgICAgICAgaWYgKHRoaXMuaXNGaW5pc2hlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5zdWNjZXNzKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWN0aW9uLnN1Ym1pdEZ1bmN0aW9uICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zdWJtaXRMb2FkaW5nU3ViamVjdC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuYWN0aW9uRXhlY3V0b3IucnVuRWRpdG9yU2F2ZShcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGlvbixcbiAgICAgICAgICAgICAgICBuZXcgQWN0aW9uUGFyYW1ldGVycyh0aGlzLml0ZW1JZCwgZXZlbnQuZm9ybUl0ZW0pLndpdGhBY3Rpb25EYXRhKHRoaXMuYWN0aW9uRGF0YSkud2l0aFZpZXdDb250YWluZXIodGhpcy52aWV3Q29udGFpbmVyKS53aXRoU291cmNlQ29tcG9uZW50KHRoaXMuc291cmNlQ29tcG9uZW50KSxcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGFQcm92aWRlcixcbiAgICAgICAgICAgICAgICB0aGlzLmluc3RhbmNlLFxuICAgICAgICAgICAgICAgIHRoaXMucHJldmlvdXNBY3Rpb25JbnN0YW5jZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UgPSBjb250ZXh0Lmluc3RhbmNlO1xuXG4gICAgICAgICAgICBjb250ZXh0LmV4ZWN1dGlvbiQuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiByZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRmluaXNoZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN1Ym1pdExvYWRpbmdTdWJqZWN0Lm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGlvblJ1bkV2ZW50RW1pdHRlci5uZXh0KHJlcyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGVhY3RpdmF0ZUFjdGlvbihyZXMpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJtaXRMb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjYW5jZWwoKSB7XG4gICAgICAgIHRoaXMuYWN0aW9uQ2FuY2VsRXZlbnRFbWl0dGVyLm5leHQodW5kZWZpbmVkKTtcbiAgICAgICAgdGhpcy5kZWFjdGl2YXRlQWN0aW9uKHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHRyaWdnZXJTdWJtaXQoKSB7XG4gICAgICAgIHRoaXMuZWRpdG9yQ29tcG9uZW50LnN1Ym1pdCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZEl0ZW1XaXRoRGF0YVByb3ZpZGVyKCkge1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWN0aW9uLmZldGNoRnVuY3Rpb24gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmxvYWRpbmdTdWJqZWN0Lm5leHQodHJ1ZSk7XG4gICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmFjdGlvbkV4ZWN1dG9yLnJ1bkVkaXRvckZldGNoKFxuICAgICAgICAgICAgdGhpcy5hY3Rpb24sXG4gICAgICAgICAgICBuZXcgQWN0aW9uUGFyYW1ldGVycyh0aGlzLml0ZW1JZCwgdGhpcy5pdGVtKS53aXRoQWN0aW9uRGF0YSh0aGlzLmFjdGlvbkRhdGEpLndpdGhWaWV3Q29udGFpbmVyKHRoaXMudmlld0NvbnRhaW5lcikud2l0aFNvdXJjZUNvbXBvbmVudCh0aGlzLnNvdXJjZUNvbXBvbmVudCksXG4gICAgICAgICAgICB0aGlzLmRhdGFQcm92aWRlcixcbiAgICAgICAgICAgIHRoaXMuaW5zdGFuY2UsXG4gICAgICAgICAgICB0aGlzLnByZXZpb3VzQWN0aW9uSW5zdGFuY2VcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5pbnN0YW5jZSA9IGNvbnRleHQuaW5zdGFuY2U7XG5cbiAgICAgICAgY29udGV4dC5leGVjdXRpb24kXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaXJzdCgpLFxuICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aW9uRXJyb3IgPSB0aGlzLmFjdGlvbkV4ZWN1dG9yLnRvTW5nQWN0aW9uRXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aW9uLmhhc1J1bk5vdGlmaWNhdGlvbkVycm9yKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25VdGlsLmFjdGlvbk5vdGlmaWNhdGlvbkVycm9yKHRoaXMudHJhbnNsYXRlLCB0aGlzLmFjdGlvbiwgYWN0aW9uRXJyb3IsICdmZXRjaCcsIHRoaXMudmlld0NvbnRhaW5lciwgdGhpcy5pdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBhY3Rpb25FcnJvcik7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5sb2FkaW5nU3ViamVjdC5uZXh0KGZhbHNlKSlcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW0gPSByZXMgPz8gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGlvbi5oYXNGZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uVXRpbC5hY3Rpb25Ob3RpZmljYXRpb25TdWNjZXNzKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICdmZXRjaCcsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFjdGlvbi5mZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3NUaXRsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uLmZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnZpZXdDb250YWluZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1cbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRUaXRsZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUaXRsZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuYWN0aW9uLmVkaXRvclRpdGxlID09PSBudWxsKSB7XG4gICAgICAgICAgICB0aGlzLnRpdGxlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGlhbG9nQ29uZmlnKSB7XG4gICAgICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFsb2dDb25maWchLmhlYWRlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdWJzY3JpcHRpb24gPSBJMThuVXRpbHMuQWN0aW9uLmdldEVkaXRvclRpdGxlQXN5bmModGhpcy50cmFuc2xhdGUsIHRoaXMuYWN0aW9uLCB0aGlzLml0ZW0pLnN1YnNjcmliZSh0ID0+IHtcbiAgICAgICAgICAgIHRoaXMudGl0bGUgPSB0ID8/IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpYWxvZ0NvbmZpZykge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbG9nQ29uZmlnIS5oZWFkZXIgPSB0ID8/IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tbmdDb21tb25zU2VydmljZS5zZXRQYWdlVGl0bGUodCA/PyB1bmRlZmluZWQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGRlYWN0aXZhdGVBY3Rpb24oaXRlbT86IFQgfCBudWxsLCBjYW5jZWwgPSBmYWxzZSkge1xuICAgICAgICBpZiAodGhpcy5pc0RpYWxvZykge1xuICAgICAgICAgICAgLy8gaWYgY2FuY2VsLCB0aGVuIGZvcmNlIGNsb3NlIHRoZSBkaWFsb2dcbiAgICAgICAgICAgIGlmIChjYW5jZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFjdGlvbkV4ZWN1dG9yLmRlYWN0aXZhdGVBY3Rpb24odGhpcy5pbnN0YW5jZSEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwbGFjZUFjdGlvbnNPblBvc2l0aW9ucyhhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8YW55Pikge1xuICAgICAgICBzd2l0Y2ggKGFjdGlvbi5wb3NpdGlvbikge1xuICAgICAgICAgICAgY2FzZSBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQ6XG4gICAgICAgICAgICAgICAgdGhpcy50b29sYmFyTGVmdEFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0OlxuICAgICAgICAgICAgICAgIHRoaXMudG9vbGJhclJpZ2h0QWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJMZWZ0OlxuICAgICAgICAgICAgICAgIHRoaXMuZm9vdGVyTGVmdEFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHQ6XG4gICAgICAgICAgICAgICAgdGhpcy5mb290ZXJSaWdodEFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGg1ICpuZ0lmPVwiIWlzRGlhbG9nICYmIHRpdGxlXCI+e3sgdGl0bGUgfX08L2g1PlxuPGRpdiBjbGFzcz1cImgtZnVsbCBmbGV4IGZsZXgtY29sdW1uXCI+XG4gICAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIG1uZy1hY3Rpb24tZWRpdG9yLXRvb2xiYXItY29udGFpbmVyXCIgKm5nSWY9XCJ0b29sYmFyTGVmdEFjdGlvbnMubGVuZ3RoID4gMCB8fCB0b29sYmFyUmlnaHRBY3Rpb25zLmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPHAtdG9vbGJhciBzdHlsZUNsYXNzPVwibW5nLWFjdGlvbi1lZGl0b3ItdG9vbGJhclwiPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICA8bW5nLWFjdGlvblxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHRvb2xiYXJMZWZ0QWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIFthY3Rpb25dPVwiYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInN1Ym1pdExvYWRpbmckXCJcbiAgICAgICAgICAgICAgICAgICAgW3ZpZXdDb250YWluZXJdPVwidmlld0NvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgICAgICBbaXRlbUlkXT1cIml0ZW1JZFwiPjwvbW5nLWFjdGlvbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwicmlnaHRcIj5cbiAgICAgICAgICAgICAgICA8bW5nLWFjdGlvblxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIHRvb2xiYXJSaWdodEFjdGlvbnNcIlxuICAgICAgICAgICAgICAgICAgICBbYWN0aW9uXT1cImFjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJzdWJtaXRMb2FkaW5nJFwiXG4gICAgICAgICAgICAgICAgICAgIFt2aWV3Q29udGFpbmVyXT1cInZpZXdDb250YWluZXJcIlxuICAgICAgICAgICAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgW2l0ZW1JZF09XCJpdGVtSWRcIj48L21uZy1hY3Rpb24+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3AtdG9vbGJhcj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMSBtbmctYWN0aW9uLWVkaXRvci1mb3JtLWNvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIiAqbmdJZj1cImxvYWRpbmckIHwgYXN5bmNcIj5cbiAgICAgICAgICAgIDxwLXByb2dyZXNzU3Bpbm5lciBbc3R5bGVdPVwie3dpZHRoOiAnM3JlbScsIGhlaWdodDogJzNyZW0nfVwiIHN0cm9rZVdpZHRoPVwiM1wiPjwvcC1wcm9ncmVzc1NwaW5uZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bW5nLWZvcm0tZWRpdG9yICpuZ0lmPVwiYWN0aW9uLmVkaXRvckRlc2NyaXB0b3IgJiYgKGxvYWRpbmckIHwgYXN5bmMpID09PSBmYWxzZVwiIFtkZXNjcmlwdG9yXT1cImFjdGlvbi5lZGl0b3JEZXNjcmlwdG9yXCIgW2l0ZW1dPVwiaXRlbVwiIChmb3JtU3VibWl0KT1cIm9uU3VibWl0KCRldmVudClcIj5cbiAgICAgICAgPC9tbmctZm9ybS1lZGl0b3I+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtbmctYWN0aW9uLWVkaXRvci1mb290ZXItY29udGFpbmVyXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8bW5nLWFjdGlvblxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgZm9vdGVyTGVmdEFjdGlvbnNcIlxuICAgICAgICAgICAgICAgIFthY3Rpb25dPVwiYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic3VibWl0TG9hZGluZyRcIlxuICAgICAgICAgICAgICAgIFt2aWV3Q29udGFpbmVyXT1cInZpZXdDb250YWluZXJcIlxuICAgICAgICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgIFtpdGVtSWRdPVwiaXRlbUlkXCI+PC9tbmctYWN0aW9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxtbmctYWN0aW9uXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGFjdGlvbiBvZiBmb290ZXJSaWdodEFjdGlvbnNcIlxuICAgICAgICAgICAgICAgIFthY3Rpb25dPVwiYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwic3VibWl0TG9hZGluZyRcIlxuICAgICAgICAgICAgICAgIFt2aWV3Q29udGFpbmVyXT1cInZpZXdDb250YWluZXJcIlxuICAgICAgICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxuICAgICAgICAgICAgICAgIFtpdGVtSWRdPVwiaXRlbUlkXCI+PC9tbmctYWN0aW9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -24,6 +24,7 @@ export class MngTableColumnValueComponent {
24
24
  this.columnTypeDate = ColumnTypeEnum.Date;
25
25
  this.columnTypeEnum = ColumnTypeEnum.Enum;
26
26
  this.columnTypeCustom = ColumnTypeEnum.Custom;
27
+ this.columnTypeHtml = ColumnTypeEnum.Html;
27
28
  this.styleMaxWidth = null;
28
29
  this.className = 'nowrap';
29
30
  this.jsonPath = '$';
@@ -55,10 +56,10 @@ export class MngTableColumnValueComponent {
55
56
  }
56
57
  }
57
58
  MngTableColumnValueComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngTableColumnValueComponent, deps: [{ token: i0.ElementRef }, { token: i1.MessageService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
58
- MngTableColumnValueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngTableColumnValueComponent, selector: "mng-table-column-value", inputs: { descriptor: "descriptor", item: "item" }, host: { properties: { "style.max-width.px": "this.styleMaxWidth", "class": "this.className" } }, ngImport: i0, template: "<ng-container [ngSwitch]=\"descriptor.columnType\">\n <ng-container *ngSwitchCase=\"columnTypeString\">\n {{ item | jsonPath: jsonPath | getter: descriptor.getter | template: descriptor.template }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeNumber\">\n {{ item | jsonPath: jsonPath | number: descriptor.displayFormat:descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeCurrency\">\n {{ item | jsonPath: jsonPath | currency: currency:descriptor.currencyDisplay:descriptor.displayFormat:descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeDate\">\n {{ item | jsonPath: jsonPath | date: descriptor.displayFormat }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeBoolean\">\n <ng-container *ngIf=\"descriptor.booleanAsIcon; else booleanText\"></ng-container>\n <i [class]=\"item | jsonPath: jsonPath | boolean: descriptor.booleanYes:descriptor.booleanNo:true\"></i>\n <ng-template #booleanText>\n {{ item | jsonPath: jsonPath | boolean: descriptor.booleanYes:descriptor.booleanNo | translate }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeEnum\">\n {{ item | jsonPath: jsonPath | enum: descriptor.enumType:descriptor.enumTitlePath:descriptor.enumNameAsValue | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeCustom\">\n <ng-container\n [mngComponent]=\"descriptor.customComponentType!\"\n [inputs]=\"{\n value: item | jsonPath: jsonPath,\n item: item,\n descriptor: descriptor\n }\"></ng-container>\n </ng-container>\n</ng-container>\n<div class=\"help-buttons\" *ngIf=\"descriptor.hasCopyToClipboard\">\n <button pButton pRipple type=\"button\" icon=\"pi pi-copy\" class=\"p-button-rounded p-button-info p-button-sm\" (click)=\"copyToClipboard($event)\"></button>\n</div>\n", styles: [":host{display:inline-block;overflow:hidden}:host.nowrap{white-space:nowrap;text-overflow:ellipsis}:host:hover .help-buttons{display:block}.help-buttons{display:none;position:absolute;right:0;top:50%;transform:translateY(-50%)}.help-buttons .p-button{height:1.9rem;width:1.9rem;padding:0}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i5.Ripple, selector: "[pRipple]" }, { kind: "directive", type: i6.MngComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "inputs"], outputs: ["instanceCreated"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }, { kind: "pipe", type: i3.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: i7.JsonPathPipe, name: "jsonPath" }, { kind: "pipe", type: i8.MngEnumPipe, name: "enum" }, { kind: "pipe", type: i9.MngBooleanPipe, name: "boolean" }, { kind: "pipe", type: i10.MngGetterPipe, name: "getter" }, { kind: "pipe", type: i11.MngTemplatePipe, name: "template" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
59
+ MngTableColumnValueComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.0", type: MngTableColumnValueComponent, selector: "mng-table-column-value", inputs: { descriptor: "descriptor", item: "item" }, host: { properties: { "style.max-width.px": "this.styleMaxWidth", "class": "this.className" } }, ngImport: i0, template: "<ng-container [ngSwitch]=\"descriptor.columnType\">\n <ng-container *ngSwitchCase=\"columnTypeString\">\n {{ (descriptor.getter ? (item | getter: descriptor.getter:(item | jsonPath: jsonPath)) : (item | jsonPath: jsonPath)) | template: descriptor.template }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeHtml\">\n <span\n [innerHTML]=\"(descriptor.getter ? (item | getter: descriptor.getter:(item | jsonPath: jsonPath)) : (item | jsonPath: jsonPath)) | template: descriptor.template\"></span>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeNumber\">\n {{ item | jsonPath: jsonPath | number: descriptor.displayFormat:descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeCurrency\">\n {{ item | jsonPath: jsonPath | currency: currency:descriptor.currencyDisplay:descriptor.displayFormat:descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeDate\">\n {{ item | jsonPath: jsonPath | date: descriptor.displayFormat }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeBoolean\">\n <ng-container *ngIf=\"descriptor.booleanAsIcon; else booleanText\"></ng-container>\n <i [class]=\"item | jsonPath: jsonPath | boolean: descriptor.booleanYes:descriptor.booleanNo:true\"></i>\n <ng-template #booleanText>\n {{ item | jsonPath: jsonPath | boolean: descriptor.booleanYes:descriptor.booleanNo | translate }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeEnum\">\n {{ item | jsonPath: jsonPath | enum: descriptor.enumType:descriptor.enumTitlePath:descriptor.enumNameAsValue | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeCustom\">\n <ng-container\n [mngComponent]=\"descriptor.customComponentType!\"\n [inputs]=\"{\n value: item | jsonPath: jsonPath,\n item: item,\n descriptor: descriptor\n }\"></ng-container>\n </ng-container>\n</ng-container>\n<div class=\"help-buttons\" *ngIf=\"descriptor.hasCopyToClipboard\">\n <button pButton pRipple type=\"button\" icon=\"pi pi-copy\" class=\"p-button-rounded p-button-info p-button-sm\" (click)=\"copyToClipboard($event)\"></button>\n</div>\n", styles: [":host{display:inline-block;overflow:hidden}:host.nowrap{white-space:nowrap;text-overflow:ellipsis}.help-buttons{display:none;position:absolute;right:0;top:50%;transform:translateY(-50%)}.help-buttons .p-button{height:1.9rem;width:1.9rem;padding:0}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "label", "icon", "loading"] }, { kind: "directive", type: i5.Ripple, selector: "[pRipple]" }, { kind: "directive", type: i6.MngComponentDirective, selector: "[mngComponent]", inputs: ["mngComponent", "inputs"], outputs: ["instanceCreated"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }, { kind: "pipe", type: i3.CurrencyPipe, name: "currency" }, { kind: "pipe", type: i3.DatePipe, name: "date" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "pipe", type: i7.JsonPathPipe, name: "jsonPath" }, { kind: "pipe", type: i8.MngEnumPipe, name: "enum" }, { kind: "pipe", type: i9.MngBooleanPipe, name: "boolean" }, { kind: "pipe", type: i10.MngGetterPipe, name: "getter" }, { kind: "pipe", type: i11.MngTemplatePipe, name: "template" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
59
60
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImport: i0, type: MngTableColumnValueComponent, decorators: [{
60
61
  type: Component,
61
- args: [{ selector: 'mng-table-column-value', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [ngSwitch]=\"descriptor.columnType\">\n <ng-container *ngSwitchCase=\"columnTypeString\">\n {{ item | jsonPath: jsonPath | getter: descriptor.getter | template: descriptor.template }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeNumber\">\n {{ item | jsonPath: jsonPath | number: descriptor.displayFormat:descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeCurrency\">\n {{ item | jsonPath: jsonPath | currency: currency:descriptor.currencyDisplay:descriptor.displayFormat:descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeDate\">\n {{ item | jsonPath: jsonPath | date: descriptor.displayFormat }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeBoolean\">\n <ng-container *ngIf=\"descriptor.booleanAsIcon; else booleanText\"></ng-container>\n <i [class]=\"item | jsonPath: jsonPath | boolean: descriptor.booleanYes:descriptor.booleanNo:true\"></i>\n <ng-template #booleanText>\n {{ item | jsonPath: jsonPath | boolean: descriptor.booleanYes:descriptor.booleanNo | translate }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeEnum\">\n {{ item | jsonPath: jsonPath | enum: descriptor.enumType:descriptor.enumTitlePath:descriptor.enumNameAsValue | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeCustom\">\n <ng-container\n [mngComponent]=\"descriptor.customComponentType!\"\n [inputs]=\"{\n value: item | jsonPath: jsonPath,\n item: item,\n descriptor: descriptor\n }\"></ng-container>\n </ng-container>\n</ng-container>\n<div class=\"help-buttons\" *ngIf=\"descriptor.hasCopyToClipboard\">\n <button pButton pRipple type=\"button\" icon=\"pi pi-copy\" class=\"p-button-rounded p-button-info p-button-sm\" (click)=\"copyToClipboard($event)\"></button>\n</div>\n", styles: [":host{display:inline-block;overflow:hidden}:host.nowrap{white-space:nowrap;text-overflow:ellipsis}:host:hover .help-buttons{display:block}.help-buttons{display:none;position:absolute;right:0;top:50%;transform:translateY(-50%)}.help-buttons .p-button{height:1.9rem;width:1.9rem;padding:0}\n"] }]
62
+ args: [{ selector: 'mng-table-column-value', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container [ngSwitch]=\"descriptor.columnType\">\n <ng-container *ngSwitchCase=\"columnTypeString\">\n {{ (descriptor.getter ? (item | getter: descriptor.getter:(item | jsonPath: jsonPath)) : (item | jsonPath: jsonPath)) | template: descriptor.template }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeHtml\">\n <span\n [innerHTML]=\"(descriptor.getter ? (item | getter: descriptor.getter:(item | jsonPath: jsonPath)) : (item | jsonPath: jsonPath)) | template: descriptor.template\"></span>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeNumber\">\n {{ item | jsonPath: jsonPath | number: descriptor.displayFormat:descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeCurrency\">\n {{ item | jsonPath: jsonPath | currency: currency:descriptor.currencyDisplay:descriptor.displayFormat:descriptor.locale }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeDate\">\n {{ item | jsonPath: jsonPath | date: descriptor.displayFormat }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeBoolean\">\n <ng-container *ngIf=\"descriptor.booleanAsIcon; else booleanText\"></ng-container>\n <i [class]=\"item | jsonPath: jsonPath | boolean: descriptor.booleanYes:descriptor.booleanNo:true\"></i>\n <ng-template #booleanText>\n {{ item | jsonPath: jsonPath | boolean: descriptor.booleanYes:descriptor.booleanNo | translate }}\n </ng-template>\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeEnum\">\n {{ item | jsonPath: jsonPath | enum: descriptor.enumType:descriptor.enumTitlePath:descriptor.enumNameAsValue | translate }}\n </ng-container>\n <ng-container *ngSwitchCase=\"columnTypeCustom\">\n <ng-container\n [mngComponent]=\"descriptor.customComponentType!\"\n [inputs]=\"{\n value: item | jsonPath: jsonPath,\n item: item,\n descriptor: descriptor\n }\"></ng-container>\n </ng-container>\n</ng-container>\n<div class=\"help-buttons\" *ngIf=\"descriptor.hasCopyToClipboard\">\n <button pButton pRipple type=\"button\" icon=\"pi pi-copy\" class=\"p-button-rounded p-button-info p-button-sm\" (click)=\"copyToClipboard($event)\"></button>\n</div>\n", styles: [":host{display:inline-block;overflow:hidden}:host.nowrap{white-space:nowrap;text-overflow:ellipsis}.help-buttons{display:none;position:absolute;right:0;top:50%;transform:translateY(-50%)}.help-buttons .p-button{height:1.9rem;width:1.9rem;padding:0}\n"] }]
62
63
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.MessageService }, { type: i2.TranslateService }]; }, propDecorators: { descriptor: [{
63
64
  type: Input
64
65
  }], item: [{
@@ -70,4 +71,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.0", ngImpor
70
71
  type: HostBinding,
71
72
  args: ['class']
72
73
  }] } });
73
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXZhbHVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvdGFibGUvY29sdW1uLXZhbHVlL2NvbHVtbi12YWx1ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGFibGV2aWV3L3RhYmxlL2NvbHVtbi12YWx1ZS9jb2x1bW4tdmFsdWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBYyxXQUFXLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBTXpHLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVE3RCxNQUFNLE9BQU8sNEJBQTRCO0lBbUJyQyxZQUFvQixVQUFzQixFQUFVLGNBQThCLEVBQVUsU0FBMkI7UUFBbkcsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBbEJ2RyxxQkFBZ0IsR0FBbUIsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUN6RCxxQkFBZ0IsR0FBbUIsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUN6RCx1QkFBa0IsR0FBbUIsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUM3RCxzQkFBaUIsR0FBbUIsY0FBYyxDQUFDLE9BQU8sQ0FBQztRQUMzRCxtQkFBYyxHQUFtQixjQUFjLENBQUMsSUFBSSxDQUFDO1FBQ3JELG1CQUFjLEdBQW1CLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDckQscUJBQWdCLEdBQW1CLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFLL0Isa0JBQWEsR0FBa0IsSUFBSSxDQUFDO1FBQ2pELGNBQVMsR0FBRyxRQUFRLENBQUM7UUFJM0MsYUFBUSxHQUFHLEdBQUcsQ0FBQztJQUVvRyxDQUFDO0lBRXBILFFBQVE7UUFDWCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxLQUFLLGNBQWMsQ0FBQyxRQUFRLEVBQUU7WUFDeEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLElBQUksS0FBSyxDQUFDO1NBQ2xKO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRTtZQUMxQixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQ2pEO1FBRUQsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRTtZQUMxQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO1NBQzVDO2FBQU07WUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxFQUFFO2dCQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO2FBQzFGO1NBQ0o7SUFDTCxDQUFDO0lBRU0sZUFBZSxDQUFDLEtBQVk7UUFDL0IsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3RCxTQUFTLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3ZFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxFQUFFLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQztRQUNwRixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDOzt5SEEvQ1EsNEJBQTRCOzZHQUE1Qiw0QkFBNEIsbU5DZHpDLHMrREFvQ0E7MkZEdEJhLDRCQUE0QjtrQkFOeEMsU0FBUzsrQkFDSSx3QkFBd0IsbUJBR2pCLHVCQUF1QixDQUFDLE1BQU07NkpBV3RDLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUVvQyxhQUFhO3NCQUF0RCxXQUFXO3VCQUFDLG9CQUFvQjtnQkFDSixTQUFTO3NCQUFyQyxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25Jbml0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtUcmFuc2xhdGVTZXJ2aWNlfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7TWVzc2FnZVNlcnZpY2V9IGZyb20gJ3ByaW1lbmcvYXBpJztcblxuaW1wb3J0IHtDb2x1bW5EZXNjcmlwdG9yfSBmcm9tICcuLi8uLi8uLi8uLi9kZXNjcmlwdG9ycyc7XG5pbXBvcnQge0NvbHVtblR5cGVFbnVtfSBmcm9tICcuLi8uLi8uLi8uLi9kZXNjcmlwdG9ycy90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbW5nLXRhYmxlLWNvbHVtbi12YWx1ZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NvbHVtbi12YWx1ZS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY29sdW1uLXZhbHVlLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgTW5nVGFibGVDb2x1bW5WYWx1ZUNvbXBvbmVudDxULCBUVD4gaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHB1YmxpYyByZWFkb25seSBjb2x1bW5UeXBlU3RyaW5nOiBDb2x1bW5UeXBlRW51bSA9IENvbHVtblR5cGVFbnVtLlN0cmluZztcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sdW1uVHlwZU51bWJlcjogQ29sdW1uVHlwZUVudW0gPSBDb2x1bW5UeXBlRW51bS5OdW1iZXI7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbHVtblR5cGVDdXJyZW5jeTogQ29sdW1uVHlwZUVudW0gPSBDb2x1bW5UeXBlRW51bS5DdXJyZW5jeTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sdW1uVHlwZUJvb2xlYW46IENvbHVtblR5cGVFbnVtID0gQ29sdW1uVHlwZUVudW0uQm9vbGVhbjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sdW1uVHlwZURhdGU6IENvbHVtblR5cGVFbnVtID0gQ29sdW1uVHlwZUVudW0uRGF0ZTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sdW1uVHlwZUVudW06IENvbHVtblR5cGVFbnVtID0gQ29sdW1uVHlwZUVudW0uRW51bTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sdW1uVHlwZUN1c3RvbTogQ29sdW1uVHlwZUVudW0gPSBDb2x1bW5UeXBlRW51bS5DdXN0b207XG5cbiAgICBASW5wdXQoKSBkZXNjcmlwdG9yITogQ29sdW1uRGVzY3JpcHRvcjxULCBUVD47XG4gICAgQElucHV0KCkgaXRlbSE6IGFueTtcblxuICAgIEBIb3N0QmluZGluZygnc3R5bGUubWF4LXdpZHRoLnB4JykgcHVibGljIHN0eWxlTWF4V2lkdGg6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKSBwdWJsaWMgY2xhc3NOYW1lID0gJ25vd3JhcCc7XG5cbiAgICBwdWJsaWMgY3VycmVuY3k/OiBzdHJpbmc7XG5cbiAgICBwdWJsaWMganNvblBhdGggPSAnJCc7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLCBwcml2YXRlIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSkge31cblxuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5jb2x1bW5UeXBlID09PSBDb2x1bW5UeXBlRW51bS5DdXJyZW5jeSkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeSA9IHRoaXMuZGVzY3JpcHRvci5jdXJyZW5jeUZyb21Qcm9wZXJ0eSA/IHRoaXMuaXRlbVt0aGlzLmRlc2NyaXB0b3IuY3VycmVuY3lGcm9tUHJvcGVydHldIDogdGhpcy5kZXNjcmlwdG9yLmN1cnJlbmN5Q29kZSA/PyAnRVVSJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRlc2NyaXB0b3IubWF4V2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMuc3R5bGVNYXhXaWR0aCA9IHRoaXMuZGVzY3JpcHRvci5tYXhXaWR0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmRlc2NyaXB0b3IuanNvblBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMuanNvblBhdGggPSB0aGlzLmRlc2NyaXB0b3IuanNvblBhdGg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmpzb25QYXRoID0gYCQuJHt0aGlzLmRlc2NyaXB0b3IucHJvcGVydHl9YDtcbiAgICAgICAgICAgIGlmICh0aGlzLmRlc2NyaXB0b3Iub2JqZWN0TW9kZWxUeXBlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5qc29uUGF0aCA9IGAkLiR7dGhpcy5kZXNjcmlwdG9yLnByb3BlcnR5fS4ke3RoaXMuZGVzY3JpcHRvci5vYmplY3RUaXRsZVByb3BlcnR5fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgY29weVRvQ2xpcGJvYXJkKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5pbm5lclRleHQudHJpbSgpO1xuICAgICAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh2YWx1ZSk7XG4gICAgICAgIGNvbnN0IHRpdGxlID0gdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnbW5nVGFibGUuY29weU5vdGlmaWNhdGlvblRpdGxlJyk7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdtbmdUYWJsZS5jb3B5Tm90aWZpY2F0aW9uTWVzc2FnZScsIHt2YWx1ZX0pO1xuICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmFkZCh7c2V2ZXJpdHk6ICdpbmZvJywgc3VtbWFyeTogdGl0bGUsIGRldGFpbDogbWVzc2FnZX0pO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImRlc2NyaXB0b3IuY29sdW1uVHlwZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGVTdHJpbmdcIj5cbiAgICAgICAge3sgaXRlbSB8IGpzb25QYXRoOiBqc29uUGF0aCB8IGdldHRlcjogZGVzY3JpcHRvci5nZXR0ZXIgfCB0ZW1wbGF0ZTogZGVzY3JpcHRvci50ZW1wbGF0ZSB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGVOdW1iZXJcIj5cbiAgICAgICAge3sgaXRlbSB8IGpzb25QYXRoOiBqc29uUGF0aCB8IG51bWJlcjogZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0OmRlc2NyaXB0b3IubG9jYWxlIH19XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZUN1cnJlbmN5XCI+XG4gICAgICAgIHt7IGl0ZW0gfCBqc29uUGF0aDoganNvblBhdGggfCBjdXJyZW5jeTogY3VycmVuY3k6ZGVzY3JpcHRvci5jdXJyZW5jeURpc3BsYXk6ZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0OmRlc2NyaXB0b3IubG9jYWxlIH19XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZURhdGVcIj5cbiAgICAgICAge3sgaXRlbSB8IGpzb25QYXRoOiBqc29uUGF0aCB8IGRhdGU6IGRlc2NyaXB0b3IuZGlzcGxheUZvcm1hdCB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGVCb29sZWFuXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXNjcmlwdG9yLmJvb2xlYW5Bc0ljb247IGVsc2UgYm9vbGVhblRleHRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGkgW2NsYXNzXT1cIml0ZW0gfCBqc29uUGF0aDoganNvblBhdGggfCBib29sZWFuOiBkZXNjcmlwdG9yLmJvb2xlYW5ZZXM6ZGVzY3JpcHRvci5ib29sZWFuTm86dHJ1ZVwiPjwvaT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNib29sZWFuVGV4dD5cbiAgICAgICAgICAgIHt7IGl0ZW0gfCBqc29uUGF0aDoganNvblBhdGggfCBib29sZWFuOiBkZXNjcmlwdG9yLmJvb2xlYW5ZZXM6ZGVzY3JpcHRvci5ib29sZWFuTm8gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlRW51bVwiPlxuICAgICAgICB7eyBpdGVtIHwganNvblBhdGg6IGpzb25QYXRoIHwgZW51bTogZGVzY3JpcHRvci5lbnVtVHlwZTpkZXNjcmlwdG9yLmVudW1UaXRsZVBhdGg6ZGVzY3JpcHRvci5lbnVtTmFtZUFzVmFsdWUgfCB0cmFuc2xhdGUgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlQ3VzdG9tXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFttbmdDb21wb25lbnRdPVwiZGVzY3JpcHRvci5jdXN0b21Db21wb25lbnRUeXBlIVwiXG4gICAgICAgICAgICBbaW5wdXRzXT1cIntcbiAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbSB8IGpzb25QYXRoOiBqc29uUGF0aCxcbiAgICAgICAgICAgICAgICBpdGVtOiBpdGVtLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JcbiAgICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuPGRpdiBjbGFzcz1cImhlbHAtYnV0dG9uc1wiICpuZ0lmPVwiZGVzY3JpcHRvci5oYXNDb3B5VG9DbGlwYm9hcmRcIj5cbiAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInBpIHBpLWNvcHlcIiBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24taW5mbyBwLWJ1dHRvbi1zbVwiIChjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQoJGV2ZW50KVwiPjwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLXZhbHVlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy90YWJsZXZpZXcvdGFibGUvY29sdW1uLXZhbHVlL2NvbHVtbi12YWx1ZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdGFibGV2aWV3L3RhYmxlL2NvbHVtbi12YWx1ZS9jb2x1bW4tdmFsdWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBYyxXQUFXLEVBQUUsS0FBSyxFQUFTLE1BQU0sZUFBZSxDQUFDO0FBTXpHLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwrQkFBK0IsQ0FBQzs7Ozs7Ozs7Ozs7OztBQVE3RCxNQUFNLE9BQU8sNEJBQTRCO0lBb0JyQyxZQUFvQixVQUFzQixFQUFVLGNBQThCLEVBQVUsU0FBMkI7UUFBbkcsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFVLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBbkJ2RyxxQkFBZ0IsR0FBbUIsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUN6RCxxQkFBZ0IsR0FBbUIsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUN6RCx1QkFBa0IsR0FBbUIsY0FBYyxDQUFDLFFBQVEsQ0FBQztRQUM3RCxzQkFBaUIsR0FBbUIsY0FBYyxDQUFDLE9BQU8sQ0FBQztRQUMzRCxtQkFBYyxHQUFtQixjQUFjLENBQUMsSUFBSSxDQUFDO1FBQ3JELG1CQUFjLEdBQW1CLGNBQWMsQ0FBQyxJQUFJLENBQUM7UUFDckQscUJBQWdCLEdBQW1CLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDekQsbUJBQWMsR0FBbUIsY0FBYyxDQUFDLElBQUksQ0FBQztRQUszQixrQkFBYSxHQUFrQixJQUFJLENBQUM7UUFDakQsY0FBUyxHQUFHLFFBQVEsQ0FBQztRQUkzQyxhQUFRLEdBQUcsR0FBRyxDQUFDO0lBRW9HLENBQUM7SUFFcEgsUUFBUTtRQUNYLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEtBQUssY0FBYyxDQUFDLFFBQVEsRUFBRTtZQUN4RCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksSUFBSSxLQUFLLENBQUM7U0FDbEo7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDakQ7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQzFCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7U0FDNUM7YUFBTTtZQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUM7YUFDMUY7U0FDSjtJQUNMLENBQUM7SUFFTSxlQUFlLENBQUMsS0FBWTtRQUMvQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdELFNBQVMsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDdkUsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsa0NBQWtDLEVBQUUsRUFBQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO1FBQ3BGLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7O3lIQWhEUSw0QkFBNEI7NkdBQTVCLDRCQUE0QixtTkNkekMsb3pFQXdDQTsyRkQxQmEsNEJBQTRCO2tCQU54QyxTQUFTOytCQUNJLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTTs2SkFZdEMsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBRW9DLGFBQWE7c0JBQXRELFdBQVc7dUJBQUMsb0JBQW9CO2dCQUNKLFNBQVM7c0JBQXJDLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1RyYW5zbGF0ZVNlcnZpY2V9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtNZXNzYWdlU2VydmljZX0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5pbXBvcnQge0NvbHVtbkRlc2NyaXB0b3J9IGZyb20gJy4uLy4uLy4uLy4uL2Rlc2NyaXB0b3JzJztcbmltcG9ydCB7Q29sdW1uVHlwZUVudW19IGZyb20gJy4uLy4uLy4uLy4uL2Rlc2NyaXB0b3JzL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdtbmctdGFibGUtY29sdW1uLXZhbHVlJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY29sdW1uLXZhbHVlLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jb2x1bW4tdmFsdWUuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBNbmdUYWJsZUNvbHVtblZhbHVlQ29tcG9uZW50PFQsIFRUPiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHVibGljIHJlYWRvbmx5IGNvbHVtblR5cGVTdHJpbmc6IENvbHVtblR5cGVFbnVtID0gQ29sdW1uVHlwZUVudW0uU3RyaW5nO1xuICAgIHB1YmxpYyByZWFkb25seSBjb2x1bW5UeXBlTnVtYmVyOiBDb2x1bW5UeXBlRW51bSA9IENvbHVtblR5cGVFbnVtLk51bWJlcjtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sdW1uVHlwZUN1cnJlbmN5OiBDb2x1bW5UeXBlRW51bSA9IENvbHVtblR5cGVFbnVtLkN1cnJlbmN5O1xuICAgIHB1YmxpYyByZWFkb25seSBjb2x1bW5UeXBlQm9vbGVhbjogQ29sdW1uVHlwZUVudW0gPSBDb2x1bW5UeXBlRW51bS5Cb29sZWFuO1xuICAgIHB1YmxpYyByZWFkb25seSBjb2x1bW5UeXBlRGF0ZTogQ29sdW1uVHlwZUVudW0gPSBDb2x1bW5UeXBlRW51bS5EYXRlO1xuICAgIHB1YmxpYyByZWFkb25seSBjb2x1bW5UeXBlRW51bTogQ29sdW1uVHlwZUVudW0gPSBDb2x1bW5UeXBlRW51bS5FbnVtO1xuICAgIHB1YmxpYyByZWFkb25seSBjb2x1bW5UeXBlQ3VzdG9tOiBDb2x1bW5UeXBlRW51bSA9IENvbHVtblR5cGVFbnVtLkN1c3RvbTtcbiAgICBwdWJsaWMgcmVhZG9ubHkgY29sdW1uVHlwZUh0bWw6IENvbHVtblR5cGVFbnVtID0gQ29sdW1uVHlwZUVudW0uSHRtbDtcblxuICAgIEBJbnB1dCgpIGRlc2NyaXB0b3IhOiBDb2x1bW5EZXNjcmlwdG9yPFQsIFRUPjtcbiAgICBASW5wdXQoKSBpdGVtITogYW55O1xuXG4gICAgQEhvc3RCaW5kaW5nKCdzdHlsZS5tYXgtd2lkdGgucHgnKSBwdWJsaWMgc3R5bGVNYXhXaWR0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIHB1YmxpYyBjbGFzc05hbWUgPSAnbm93cmFwJztcblxuICAgIHB1YmxpYyBjdXJyZW5jeT86IHN0cmluZztcblxuICAgIHB1YmxpYyBqc29uUGF0aCA9ICckJztcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2UsIHByaXZhdGUgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlKSB7fVxuXG4gICAgcHVibGljIG5nT25Jbml0KCkge1xuICAgICAgICBpZiAodGhpcy5kZXNjcmlwdG9yLmNvbHVtblR5cGUgPT09IENvbHVtblR5cGVFbnVtLkN1cnJlbmN5KSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbmN5ID0gdGhpcy5kZXNjcmlwdG9yLmN1cnJlbmN5RnJvbVByb3BlcnR5ID8gdGhpcy5pdGVtW3RoaXMuZGVzY3JpcHRvci5jdXJyZW5jeUZyb21Qcm9wZXJ0eV0gOiB0aGlzLmRlc2NyaXB0b3IuY3VycmVuY3lDb2RlID8/ICdFVVInO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5tYXhXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5zdHlsZU1heFdpZHRoID0gdGhpcy5kZXNjcmlwdG9yLm1heFdpZHRoO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5qc29uUGF0aCkge1xuICAgICAgICAgICAgdGhpcy5qc29uUGF0aCA9IHRoaXMuZGVzY3JpcHRvci5qc29uUGF0aDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuanNvblBhdGggPSBgJC4ke3RoaXMuZGVzY3JpcHRvci5wcm9wZXJ0eX1gO1xuICAgICAgICAgICAgaWYgKHRoaXMuZGVzY3JpcHRvci5vYmplY3RNb2RlbFR5cGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmpzb25QYXRoID0gYCQuJHt0aGlzLmRlc2NyaXB0b3IucHJvcGVydHl9LiR7dGhpcy5kZXNjcmlwdG9yLm9iamVjdFRpdGxlUHJvcGVydHl9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5VG9DbGlwYm9hcmQoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmlubmVyVGV4dC50cmltKCk7XG4gICAgICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHZhbHVlKTtcbiAgICAgICAgY29uc3QgdGl0bGUgPSB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdtbmdUYWJsZS5jb3B5Tm90aWZpY2F0aW9uVGl0bGUnKTtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ21uZ1RhYmxlLmNvcHlOb3RpZmljYXRpb25NZXNzYWdlJywge3ZhbHVlfSk7XG4gICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHtzZXZlcml0eTogJ2luZm8nLCBzdW1tYXJ5OiB0aXRsZSwgZGV0YWlsOiBtZXNzYWdlfSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwiZGVzY3JpcHRvci5jb2x1bW5UeXBlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZVN0cmluZ1wiPlxuICAgICAgICB7eyAoZGVzY3JpcHRvci5nZXR0ZXIgPyAoaXRlbSB8IGdldHRlcjogZGVzY3JpcHRvci5nZXR0ZXI6KGl0ZW0gfCBqc29uUGF0aDoganNvblBhdGgpKSA6IChpdGVtIHwganNvblBhdGg6IGpzb25QYXRoKSkgfCB0ZW1wbGF0ZTogZGVzY3JpcHRvci50ZW1wbGF0ZSB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGVIdG1sXCI+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cIihkZXNjcmlwdG9yLmdldHRlciA/IChpdGVtIHwgZ2V0dGVyOiBkZXNjcmlwdG9yLmdldHRlcjooaXRlbSB8IGpzb25QYXRoOiBqc29uUGF0aCkpIDogKGl0ZW0gfCBqc29uUGF0aDoganNvblBhdGgpKSB8IHRlbXBsYXRlOiBkZXNjcmlwdG9yLnRlbXBsYXRlXCI+PC9zcGFuPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGVOdW1iZXJcIj5cbiAgICAgICAge3sgaXRlbSB8IGpzb25QYXRoOiBqc29uUGF0aCB8IG51bWJlcjogZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0OmRlc2NyaXB0b3IubG9jYWxlIH19XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZUN1cnJlbmN5XCI+XG4gICAgICAgIHt7IGl0ZW0gfCBqc29uUGF0aDoganNvblBhdGggfCBjdXJyZW5jeTogY3VycmVuY3k6ZGVzY3JpcHRvci5jdXJyZW5jeURpc3BsYXk6ZGVzY3JpcHRvci5kaXNwbGF5Rm9ybWF0OmRlc2NyaXB0b3IubG9jYWxlIH19XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiY29sdW1uVHlwZURhdGVcIj5cbiAgICAgICAge3sgaXRlbSB8IGpzb25QYXRoOiBqc29uUGF0aCB8IGRhdGU6IGRlc2NyaXB0b3IuZGlzcGxheUZvcm1hdCB9fVxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cImNvbHVtblR5cGVCb29sZWFuXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkZXNjcmlwdG9yLmJvb2xlYW5Bc0ljb247IGVsc2UgYm9vbGVhblRleHRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGkgW2NsYXNzXT1cIml0ZW0gfCBqc29uUGF0aDoganNvblBhdGggfCBib29sZWFuOiBkZXNjcmlwdG9yLmJvb2xlYW5ZZXM6ZGVzY3JpcHRvci5ib29sZWFuTm86dHJ1ZVwiPjwvaT5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNib29sZWFuVGV4dD5cbiAgICAgICAgICAgIHt7IGl0ZW0gfCBqc29uUGF0aDoganNvblBhdGggfCBib29sZWFuOiBkZXNjcmlwdG9yLmJvb2xlYW5ZZXM6ZGVzY3JpcHRvci5ib29sZWFuTm8gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlRW51bVwiPlxuICAgICAgICB7eyBpdGVtIHwganNvblBhdGg6IGpzb25QYXRoIHwgZW51bTogZGVzY3JpcHRvci5lbnVtVHlwZTpkZXNjcmlwdG9yLmVudW1UaXRsZVBhdGg6ZGVzY3JpcHRvci5lbnVtTmFtZUFzVmFsdWUgfCB0cmFuc2xhdGUgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJjb2x1bW5UeXBlQ3VzdG9tXCI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFttbmdDb21wb25lbnRdPVwiZGVzY3JpcHRvci5jdXN0b21Db21wb25lbnRUeXBlIVwiXG4gICAgICAgICAgICBbaW5wdXRzXT1cIntcbiAgICAgICAgICAgICAgICB2YWx1ZTogaXRlbSB8IGpzb25QYXRoOiBqc29uUGF0aCxcbiAgICAgICAgICAgICAgICBpdGVtOiBpdGVtLFxuICAgICAgICAgICAgICAgIGRlc2NyaXB0b3I6IGRlc2NyaXB0b3JcbiAgICAgICAgICAgIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuPGRpdiBjbGFzcz1cImhlbHAtYnV0dG9uc1wiICpuZ0lmPVwiZGVzY3JpcHRvci5oYXNDb3B5VG9DbGlwYm9hcmRcIj5cbiAgICA8YnV0dG9uIHBCdXR0b24gcFJpcHBsZSB0eXBlPVwiYnV0dG9uXCIgaWNvbj1cInBpIHBpLWNvcHlcIiBjbGFzcz1cInAtYnV0dG9uLXJvdW5kZWQgcC1idXR0b24taW5mbyBwLWJ1dHRvbi1zbVwiIChjbGljayk9XCJjb3B5VG9DbGlwYm9hcmQoJGV2ZW50KVwiPjwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
@@ -365,7 +365,7 @@ export class ActionEditorDescriptor extends ActionDescriptor {
365
365
  }
366
366
  export class ActionEditorSubmitDescriptor extends ActionDescriptor {
367
367
  constructor(editorAction, submitType = ActionEditorSubmitTypeEnum.Submit) {
368
- super(editorAction.model, submitType === ActionEditorSubmitTypeEnum.Submit ? 'submit' : 'cancel');
368
+ super(editorAction.model, submitType === ActionEditorSubmitTypeEnum.Submit ? `${editorAction.actionName}.submit` : `${editorAction.actionName}.cancel`);
369
369
  this._editorAction = editorAction;
370
370
  this._submitType = submitType;
371
371
  this._position = ActionPositionEnum.FooterRight;
@@ -545,4 +545,4 @@ export class ActionLinkDescriptor extends ActionDescriptor {
545
545
  return this;
546
546
  }
547
547
  }
548
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL2FjdGlvbi5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUF5QyxnQ0FBZ0MsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3JILE9BQU8sRUFBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQXFDLE1BQU0sbUJBQW1CLENBQUM7QUFFdkcsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzdDLE9BQU8sRUFBQyxjQUFjLEVBQUUsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFL0QsT0FBTyxFQUFDLHNCQUFzQixFQUFFLFFBQVEsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUMxRCxPQUFPLEVBQUMsc0JBQXNCLEVBQW9CLGVBQWUsRUFBQyxNQUFNLElBQUksQ0FBQztBQUM3RSxPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRixPQUFPLEVBQUMsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBRXBILE1BQU0sT0FBTyxnQkFBZ0I7SUE4Q3pCLFlBQVksS0FBZ0MsRUFBRSxVQUFrQixFQUFFLFVBQStCLEVBQUUsY0FBdUI7UUFwQ2hILFVBQUssR0FBbUIsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUM5Qyx1QkFBa0IsR0FBZ0MsMkJBQTJCLENBQUMsT0FBTyxDQUFDO1FBQ3RGLGNBQVMsR0FBdUIsa0JBQWtCLENBQUMsWUFBWSxDQUFDO1FBQ2hFLFdBQU0sR0FBbUIsY0FBYyxDQUFDLE9BQU8sQ0FBQztRQUloRCxjQUFTLEdBQWtCLElBQUksQ0FBQztRQVNoQywrQkFBMEIsR0FBRyxJQUFJLENBQUM7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LENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFFTSxRQUFRLENBQUMsR0FBVztRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQztRQUNoQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sY0FBYyxDQUFDLEdBQUcsWUFBc0I7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUM7UUFDbEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGVBQWUsQ0FBQyxXQUFtQixFQUFFLG1CQUF5QztRQUNqRixJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztRQUNoQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsbUJBQW1CLENBQUM7UUFDaEQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGNBQWMsQ0FBQyxVQUFVLEdBQUcsS0FBSztRQUNwQyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sVUFBVSxDQUFDLFNBQTZCLE9BQU87UUFDbEQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGFBQWEsQ0FBQyxXQUFvQjtRQUNyQyxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztRQUNoQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtQYXJhbXMsIFF1ZXJ5UGFyYW1zSGFuZGxpbmd9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7T2JzZXJ2YWJsZSwgb2Z9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge0FjdGlvbkNvbnRleHQsIEFjdGlvbkNvbnRleHRWYWxpZGF0aW9uLCBUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllc30gZnJvbSAnLi4vY29tcG9uZW50cy9hY3Rpb24vbW9kZWxzJztcbmltcG9ydCB7RGF0YVByb3ZpZGVyLCBFZGl0b3JEYXRhUHJvdmlkZXIsIElEYXRhUHJvdmlkZXIsIElFZGl0b3JEYXRhUHJvdmlkZXJ9IGZyb20gJy4uL2RhdGEtcHJvdmlkZXJzJztcbmltcG9ydCB7QVBlcm1pc3Npb25zfSBmcm9tICcuLi9zZWN1cml0eS9tb2RlbCc7XG5pbXBvcnQge0J1dHRvblN0eWxlQnVpbGRlcn0gZnJvbSAnLi4vc3R5bGVzJztcbmltcG9ydCB7U3R5bGVMZXZlbEVudW0sIFN0eWxlU2l6ZUVudW19IGZyb20gJy4uL3N0eWxlcy9tb2RlbHMnO1xuaW1wb3J0IHtDbGFzc1R5cGUsIElkVHlwZX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLCBUeXBlVXRpbH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtBY3Rpb25CdXR0b25EZXNjcmlwdG9yLCBFZGl0b3JEZXNjcmlwdG9yLCBNb2RlbERlc2NyaXB0b3J9IGZyb20gJy4vJztcbmltcG9ydCB7QWN0aW9uQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvcn0gZnJvbSAnLi9hY3Rpb24vYWN0aW9uLWNvbmZpcm1hdGlvbi5kZXNjcmlwdG9yJztcbmltcG9ydCB7QWN0aW9uQWN0aXZhdGlvblRyaWdnZXJFbnVtLCBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bSwgQWN0aW9uUG9zaXRpb25FbnVtLCBBY3Rpb25UeXBlRW51bX0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25EZXNjcmlwdG9yPFQ+IHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX21vZGVsOiBNb2RlbERlc2NyaXB0b3I8VD4gfCBudWxsO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfYWN0aW9uTmFtZTogc3RyaW5nO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfYWN0aW9uTmFtZUxvbmc6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3BhcmVudFR5cGU/OiBDbGFzc1R5cGU8dW5rbm93bj47XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9wYXJlbnRUeXBlTmFtZT86IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3BhcmVudFByb3BlcnR5Pzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF9pMThuTW9kZWxBY3Rpb25CYXNlS2V5Pzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF90eXBlOiBBY3Rpb25UeXBlRW51bSA9IEFjdGlvblR5cGVFbnVtLkRpcmVjdDtcbiAgICBwcm90ZWN0ZWQgX2FjdGl2YXRpb25UcmlnZ2VyOiBBY3Rpb25BY3RpdmF0aW9uVHJpZ2dlckVudW0gPSBBY3Rpb25BY3RpdmF0aW9uVHJpZ2dlckVudW0uT25DbGljaztcbiAgICBwcm90ZWN0ZWQgX3Bvc2l0aW9uOiBBY3Rpb25Qb3NpdGlvbkVudW0gPSBBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhclJpZ2h0O1xuICAgIHByb3RlY3RlZCBfbGV2ZWw6IFN0eWxlTGV2ZWxFbnVtID0gU3R5bGVMZXZlbEVudW0uRGVmYXVsdDtcbiAgICBwcml2YXRlIF9wb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM/OiBzdHJpbmdbXTtcbiAgICBwcm90ZWN0ZWQgX3RhYmxldmlld0NhdGVnb3J5Pzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF9yb3V0ZVVybDogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcm90ZWN0ZWQgX2RhdGFQcm92aWRlcj86IElEYXRhUHJvdmlkZXI8VCwgYW55PjtcbiAgICBwcm90ZWN0ZWQgX3J1bkZ1bmN0aW9uPzogKGN0eDogQWN0aW9uQ29udGV4dDxULCBhbnk+KSA9PiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQgfCBudWxsPjtcbiAgICBwcm90ZWN0ZWQgX2lzVmlzaWJsZUZ1bmN0aW9uPzogKGN0eDogQWN0aW9uQ29udGV4dFZhbGlkYXRpb248VCwgYW55PikgPT4gT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgICBwcm90ZWN0ZWQgX2lzRW5hYmxlZEZ1bmN0aW9uPzogKGN0eDogQWN0aW9uQ29udGV4dFZhbGlkYXRpb248VCwgYW55PikgPT4gT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIHByb3RlY3RlZCBfcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvcj86IEFjdGlvbkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3I8VD47XG5cbiAgICBwcm90ZWN0ZWQgX2hhc1J1bk5vdGlmaWNhdGlvblN1Y2Nlc3MgPSB0cnVlO1xuICAgIHByb3RlY3RlZCBfcnVuTm90aWZpY2F0aW9uU3VjY2Vzc1RpdGxlPzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfcnVuTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX2hhc1J1bk5vdGlmaWNhdGlvbkVycm9yID0gdHJ1ZTtcbiAgICBwcm90ZWN0ZWQgX3J1bk5vdGlmaWNhdGlvbkVycm9yVGl0bGU/OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIF9ydW5Ob3RpZmljYXRpb25FcnJvck1lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX2FmdGVyUnVuQWN0aW9uPzogQWN0aW9uRGVzY3JpcHRvcjx1bmtub3duPjtcbiAgICBwcm90ZWN0ZWQgX29uUnVuRXJyb3JBY3Rpb24/OiBBY3Rpb25EZXNjcmlwdG9yPHVua25vd24+O1xuXG4gICAgLy8gc2VjdXJpdHlcbiAgICBwcm90ZWN0ZWQgX3Blcm1pc3Npb25zPzogQVBlcm1pc3Npb25zO1xuXG4gICAgLy9idXR0b25cbiAgICBwcm90ZWN0ZWQgX2J1dHRvbiA9IG5ldyBBY3Rpb25CdXR0b25EZXNjcmlwdG9yKCk7XG5cbiAgICAvLyBtdWx0aXBsZSByb3cgc2VsZWN0aW9uXG4gICAgcHJvdGVjdGVkIF9oYXNJdGVtc1NlbGVjdGlvbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IobW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxUPiB8IG51bGwsIGFjdGlvbk5hbWU6IHN0cmluZywgcGFyZW50VHlwZT86IENsYXNzVHlwZTx1bmtub3duPiwgcGFyZW50UHJvcGVydHk/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fbW9kZWwgPSBtb2RlbDtcbiAgICAgICAgdGhpcy5fYWN0aW9uTmFtZSA9IGFjdGlvbk5hbWU7XG5cbiAgICAgICAgaWYgKChwYXJlbnRUeXBlICYmICFwYXJlbnRQcm9wZXJ0eSkgfHwgKCFwYXJlbnRQcm9wZXJ0eSAmJiBwYXJlbnRQcm9wZXJ0eSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUHJvdmlkZSBib3RoIHRoZSBwYXJlbnQgdHlwZSBhbmQgcGFyZW50IHByb3BlcnR5IG9yIG5vbmU6ICR7cGFyZW50VHlwZX0sICR7cGFyZW50UHJvcGVydHl9LmApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3BhcmVudFR5cGUgPSBwYXJlbnRUeXBlO1xuICAgICAgICB0aGlzLl9wYXJlbnRUeXBlTmFtZSA9IHBhcmVudFR5cGUgPyBUeXBlVXRpbC5maW5kVHlwZU5hbWUocGFyZW50VHlwZSkgOiB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuX3BhcmVudFByb3BlcnR5ID0gcGFyZW50UHJvcGVydHk7XG5cbiAgICAgICAgdGhpcy5zZXRJMThuTW9kZWxBY3Rpb25CYXNlS2V5KCk7XG5cbiAgICAgICAgbGV0IGRpc3BsYXlOYW1lID0gYWN0aW9uTmFtZTtcbiAgICAgICAgaWYgKHRoaXMuX21vZGVsKSBkaXNwbGF5TmFtZSA9IGAke3RoaXMuX21vZGVsLnR5cGVOYW1lfS4ke2Rpc3BsYXlOYW1lfWA7XG4gICAgICAgIGlmICh0aGlzLl9wYXJlbnRUeXBlTmFtZSkge1xuICAgICAgICAgICAgZGlzcGxheU5hbWUgPSBgJHt0aGlzLl9wYXJlbnRUeXBlTmFtZX0uJHt0aGlzLl9wYXJlbnRQcm9wZXJ0eX1fJHtkaXNwbGF5TmFtZX1gO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2FjdGlvbk5hbWVMb25nID0gZGlzcGxheU5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBtb2RlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21vZGVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGFyZW50VHlwZU5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJlbnRUeXBlTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBhcmVudFByb3BlcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50UHJvcGVydHk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpMThuTW9kZWxBY3Rpb25CYXNlS2V5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faTE4bk1vZGVsQWN0aW9uQmFzZUtleTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90eXBlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aXZhdGlvblRyaWdnZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmF0aW9uVHJpZ2dlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBvc2l0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcG9zaXRpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBsZXZlbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xldmVsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcm91dGVVcmwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yb3V0ZVVybDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRhdGFQcm92aWRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFQcm92aWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1J1bkZ1bmN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIHRoaXMuX3J1bkZ1bmN0aW9uID09PSAnZnVuY3Rpb24nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcnVuRnVuY3Rpb24oKTogKGN0eDogQWN0aW9uQ29udGV4dDxULCBhbnk+KSA9PiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQgfCBudWxsPiB7XG4gICAgICAgIGlmICghdGhpcy5fcnVuRnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUnVuIGZ1bmN0aW9uIGlzIG5vdCBkZWZpbmVkIGFuZCBjYW5ub3QgYmUgaW52b2tlZCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5GdW5jdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzVmlzaWJsZUZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNWaXNpYmxlRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc0VuYWJsZWRGdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aW9uTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbk5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhY3Rpb25OYW1lTG9uZygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbk5hbWVMb25nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgY2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5idXR0b24uc3R5bGVDbGFzcy5jdXN0b21DbGFzcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJ1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzUnVuQ29uZmlybWF0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvciAhPT0gbnVsbCAmJiB0aGlzLl9ydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yICE9PSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNSdW5Ob3RpZmljYXRpb25TdWNjZXNzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzUnVuTm90aWZpY2F0aW9uU3VjY2VzcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJ1bk5vdGlmaWNhdGlvblN1Y2Nlc3NUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bk5vdGlmaWNhdGlvblN1Y2Nlc3NUaXRsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJ1bk5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNSdW5Ob3RpZmljYXRpb25FcnJvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1J1bk5vdGlmaWNhdGlvbkVycm9yO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcnVuTm90aWZpY2F0aW9uRXJyb3JUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bk5vdGlmaWNhdGlvbkVycm9yVGl0bGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBydW5Ob3RpZmljYXRpb25FcnJvck1lc3NhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5Ob3RpZmljYXRpb25FcnJvck1lc3NhZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBhZnRlclJ1bkFjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FmdGVyUnVuQWN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgb25SdW5FcnJvckFjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX29uUnVuRXJyb3JBY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwZXJtaXNzaW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Blcm1pc3Npb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGFibGV2aWV3Q2F0ZWdvcnkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90YWJsZXZpZXdDYXRlZ29yeTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0l0ZW1zU2VsZWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzSXRlbXNTZWxlY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBidXR0b24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9idXR0b247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHNldEkxOG5Nb2RlbEFjdGlvbkJhc2VLZXkoYmFzZT86IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5fcGFyZW50VHlwZU5hbWUgfHwgdGhpcy5fbW9kZWwpIHtcbiAgICAgICAgICAgIHRoaXMuX2kxOG5Nb2RlbEFjdGlvbkJhc2VLZXkgPSB0aGlzLl9wYXJlbnRUeXBlTmFtZVxuICAgICAgICAgICAgICAgID8gYCR7dGhpcy5fcGFyZW50VHlwZU5hbWV9LmFjdGlvbnMuJHt0aGlzLl9wYXJlbnRQcm9wZXJ0eX1fJHt0aGlzLl9hY3Rpb25OYW1lfWBcbiAgICAgICAgICAgICAgICA6IGAke2Jhc2UgPz8gdGhpcy5fbW9kZWwhLmkxOG5CYXNlS2V5fS5hY3Rpb25zLiR7dGhpcy5fYWN0aW9uTmFtZX1gO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEYXRhUHJvdmlkZXIoZGF0YVByb3ZpZGVyOiBJRGF0YVByb3ZpZGVyPFQsIGFueT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gZGF0YVByb3ZpZGVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFNlcnZpY2VUeXBlPFM+KHNlcnZpY2VUeXBlOiBUeXBlPFM+KTogdGhpcyB7XG4gICAgICAgIGlmICghdGhpcy5fbW9kZWwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHNldCBkYXRhIHByb3ZpZGVyIGlmIG5vIG1vZGVsIHR5cGUgaXMgcHJvdmlkZWQgZm9yIGFjdGlvbiAke3RoaXMuX2FjdGlvbk5hbWV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gbmV3IERhdGFQcm92aWRlcih0aGlzLl9tb2RlbC50eXBlLCBzZXJ2aWNlVHlwZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUnVuRnVuY3Rpb248Uz4oZm46IChjdHg6IEFjdGlvbkNvbnRleHQ8VCwgUz4pID0+IE9ic2VydmFibGU8VCB8IHVuZGVmaW5lZCB8IG51bGw+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3J1bkZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSXNWaXNpYmxlRnVuY3Rpb248Uz4oZm46IChjdHg6IEFjdGlvbkNvbnRleHRWYWxpZGF0aW9uPFQsIFM+KSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzVmlzaWJsZUZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSXNFbmFibGVkRnVuY3Rpb248Uz4oZm46IChjdHg6IEFjdGlvbkNvbnRleHRWYWxpZGF0aW9uPFQsIFM+KSA9PiBPYnNlcnZhYmxlPGJvb2xlYW4+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUm91dGVUcmlnZ2VyKHJvdXRlVXJsOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYWN0aXZhdGlvblRyaWdnZXIgPSBBY3Rpb25BY3RpdmF0aW9uVHJpZ2dlckVudW0uT25Sb3V0ZTtcbiAgICAgICAgdGhpcy5fcm91dGVVcmwgPSByb3V0ZVVybDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQb3NpdGlvbihwb3NpdGlvbjogQWN0aW9uUG9zaXRpb25FbnVtKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uID0gcG9zaXRpb247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgY29uZmlybWF0aW9uIGFjdGlvbiB3aXRoIGRlZmF1bHQgc3R5bGUgYmFzZWQgb24gYWN0aW9uIGRlc2NyaXB0b3JcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFJ1bkNvbmZpcm1hdGlvbigpOiBBY3Rpb25Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgdGhpcy5fcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvciA9IG5ldyBBY3Rpb25Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yPFQ+KCk7XG4gICAgICAgIHRoaXMuX3J1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3IuYWNjZXB0QnV0dG9uLnN0eWxlQ2xhc3Mud2l0aEFjdGlvbkxldmVsKHRoaXMuX2xldmVsKTtcbiAgICAgICAgdGhpcy5fcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvci5yZWplY3RCdXR0b24/LnN0eWxlQ2xhc3Mud2l0aEFjdGlvbkxldmVsKHRoaXMuX2xldmVsKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5fcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBZGQgYSBjb25maWd1cmF0aW9uIGRpYWxvZ3VlIHRvIGFjdGlvbiB1c2luZyBBY3Rpb25Db25maWd1cmF0aW9uRGVzY3JpcHRvclxuICAgICAqIEBwYXJhbSBjb25maXJtYXRpb25EZXNjcmlwdG9yIGRlc2NyaXB0b3Igd2l0aCBjdXN0b21pemFibGUgaW5mb3JtYXRpb24gZm9yIGRpYWxvZ1xuICAgICAqL1xuICAgIHB1YmxpYyB3aXRoUnVuQ29uZmlybWF0aW9uRGVzY3JpcHRvcihydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yOiBBY3Rpb25Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yPFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3J1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3IgPSBydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJ1bk5vdGlmaWNhdGlvblN1Y2Nlc3ModGl0bGU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcsIGhhc05vdGlmaWNhdGlvbiA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzUnVuTm90aWZpY2F0aW9uU3VjY2VzcyA9IGhhc05vdGlmaWNhdGlvbjtcbiAgICAgICAgdGhpcy5fcnVuTm90aWZpY2F0aW9uU3VjY2Vzc1RpdGxlID0gdGl0bGU7XG4gICAgICAgIHRoaXMuX3J1bk5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSdW5Ob3RpZmljYXRpb25FcnJvcih0aXRsZT86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZywgaGFzTm90aWZpY2F0aW9uID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oYXNSdW5Ob3RpZmljYXRpb25FcnJvciA9IGhhc05vdGlmaWNhdGlvbjtcbiAgICAgICAgdGhpcy5fcnVuTm90aWZpY2F0aW9uRXJyb3JUaXRsZSA9IHRpdGxlO1xuICAgICAgICB0aGlzLl9ydW5Ob3RpZmljYXRpb25FcnJvck1lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEFmdGVyUnVuQWN0aW9uPFJUPihhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8UlQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FmdGVyUnVuQWN0aW9uID0gYWN0aW9uIGFzIEFjdGlvbkRlc2NyaXB0b3I8dW5rbm93bj47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoT25SdW5FcnJvckFjdGlvbjxSVD4oYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPFJUPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9vblJ1bkVycm9yQWN0aW9uID0gYWN0aW9uIGFzIEFjdGlvbkRlc2NyaXB0b3I8dW5rbm93bj47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUGVybWlzc2lvbnMocGVybWlzc2lvbnM6IEFQZXJtaXNzaW9ucyk6IHRoaXMge1xuICAgICAgICBpZiAodGhpcy5fdGFibGV2aWV3Q2F0ZWdvcnkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgUGVybWlzc2lvbnMgc2V0IG9uIGFjdGlvbiAke3RoaXMuX2FjdGlvbk5hbWVMb25nfSB3aXRoIHJvdXRlIHR5cGUgJyR7dGhpcy5fdGFibGV2aWV3Q2F0ZWdvcnl9JyB3aWxsIGJlIG9taXR0ZWQgaW4gcm91dGUgZ3VhcmQgdmFsaWRhdGlvbi5gKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wZXJtaXNzaW9ucyA9IHBlcm1pc3Npb25zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhYmxldmlld0NhdGVnb3J5KHBlcm1pc3Npb25zUm91dGVUeXBlOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFibGV2aWV3Q2F0ZWdvcnkgPSBwZXJtaXNzaW9uc1JvdXRlVHlwZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhCdXR0b25EZXNjcmlwdG9yKGJ1dHRvbjogQWN0aW9uQnV0dG9uRGVzY3JpcHRvcik6IHRoaXMge1xuICAgICAgICB0aGlzLl9idXR0b24gPSBidXR0b247XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQnV0dG9uKGxhYmVsPzogc3RyaW5nIHwgbnVsbCwgaWNvbjogc3RyaW5nIHwgbnVsbCA9IG51bGwsIHN0eWxlTGV2ZWwgPSBTdHlsZUxldmVsRW51bS5EZWZhdWx0LCBzdHlsZVRleHQgPSBmYWxzZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9idXR0b24gPSBuZXcgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcigpLndpdGhMYWJlbChsYWJlbCkud2l0aEljb24oaWNvbikud2l0aFN0eWxlQ2xhc3MobmV3IEJ1dHRvblN0eWxlQnVpbGRlcihzdHlsZUxldmVsKS53aXRoVGV4dEJ1dHRvbihzdHlsZVRleHQpKTtcblxuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEl0ZW1zU2VsZWN0aW9uKGhhc1NlbGVjdGlvbiA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzSXRlbXNTZWxlY3Rpb24gPSBoYXNTZWxlY3Rpb247XG4gICAgICAgIHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uID0gdGhpcy5faXNFbmFibGVkRnVuY3Rpb24gPz8gKGN0eCA9PiBvZigoY3R4LnBhcmFtZXRlcnMuc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoID8/IDApID4gMCkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyhwb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM6IHN0cmluZ1tdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3Bvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcyA9IHBvc2l0aW9uVGFibGV2aWV3Q2F0ZWdvcmllcztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhJMThuQmFzZShiYXNlOiBDbGFzc1R5cGU8dW5rbm93bj4gfCBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiYXNlICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgYmFzZSA9IFR5cGVVdGlsLmZpbmRUeXBlTmFtZShiYXNlKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEkxOG5Nb2RlbEFjdGlvbkJhc2VLZXkoYmFzZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFjdGlvblNpbXBsZURlc2NyaXB0b3I8VD4gZXh0ZW5kcyBBY3Rpb25EZXNjcmlwdG9yPFQ+IHtcbiAgICBjb25zdHJ1Y3RvcihhY3Rpb25OYW1lOiBzdHJpbmcsIG1vZGVsVHlwZT86IENsYXNzVHlwZTxUPiwgaWRQcm9wZXJ0eT86IHN0cmluZywgdGl0bGVQcm9wZXJ0eT86IHN0cmluZywgaTE4bkJhc2VLZXk/OiBzdHJpbmcgfCBDbGFzc1R5cGU8dW5rbm93bj4pIHtcbiAgICAgICAgY29uc3QgbW9kZWwgPSBtb2RlbFR5cGUgPyBuZXcgTW9kZWxEZXNjcmlwdG9yPFQ+KG1vZGVsVHlwZSwgaWRQcm9wZXJ0eSwgdGl0bGVQcm9wZXJ0eSwgaTE4bkJhc2VLZXkpIDogbnVsbDtcbiAgICAgICAgc3VwZXIobW9kZWwsIGFjdGlvbk5hbWUpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFjdGlvbkVkaXRvckRlc2NyaXB0b3I8VD4gZXh0ZW5kcyBBY3Rpb25EZXNjcmlwdG9yPFQ+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lZGl0b3JEZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9yPFQ+O1xuXG4gICAgcHJvdGVjdGVkIF9lZGl0b3JBY3Rpb25zOiBBY3Rpb25EZXNjcmlwdG9yPFQ+W10gPSBbXTtcbiAgICBwcm90ZWN0ZWQgX2VkaXRvclRpdGxlPzogc3RyaW5nIHwgbnVsbCA9IHVuZGVmaW5lZDtcblxuICAgIHByb3RlY3RlZCBfaGFzRmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIF9mZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3NUaXRsZT86IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgX2ZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2U/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgX2RpYWxvZ1NpemUgPSBTdHlsZVNpemVFbnVtLk5vcm1hbDtcbiAgICBwcm90ZWN0ZWQgX2RpYWxvZ0NsYXNzTmFtZT86IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfZGF0YVByb3ZpZGVyPzogSUVkaXRvckRhdGFQcm92aWRlcjxULCBhbnk+O1xuICAgIHByb3RlY3RlZCBfZmV0Y2hGdW5jdGlvbj86IChjdHg6IEFjdGlvbkNvbnRleHQ8VCwgYW55PikgPT4gT2JzZXJ2YWJsZTxUPjtcbiAgICBwcm90ZWN0ZWQgX3N1Ym1pdEZ1bmN0aW9uPzogKGN0eDogQWN0aW9uQ29udGV4dDxULCBhbnk+KSA9PiBPYnNlcnZhYmxlPFQ+O1xuXG4gICAgcHJvdGVjdGVkIF9lZGl0b3JDb21wb25lbnQ/OiBUeXBlPGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihlZGl0b3JEZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9yPFQ+LCBhY3Rpb25OYW1lOiBzdHJpbmcsIHBhcmVudFR5cGU/OiBDbGFzc1R5cGU8dW5rbm93bj4sIHBhcmVudFByb3BlcnR5Pzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKGVkaXRvckRlc2NyaXB0b3IubW9kZWwsIGFjdGlvbk5hbWUsIHBhcmVudFR5cGUsIHBhcmVudFByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5fdHlwZSA9IEFjdGlvblR5cGVFbnVtLkVkaXRvcjtcbiAgICAgICAgdGhpcy5fZWRpdG9yRGVzY3JpcHRvciA9IGVkaXRvckRlc2NyaXB0b3I7XG4gICAgICAgIHRoaXMuX2VkaXRvckFjdGlvbnMucHVzaChBY3Rpb25FZGl0b3JTdWJtaXREZXNjcmlwdG9yLmZvclByaW1hcnkodGhpcyksIEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3IuZm9yU2Vjb25kYXJ5KHRoaXMpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRvclRpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdG9yVGl0bGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JEZXNjcmlwdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdG9yRGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRpYWxvZ1NpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaWFsb2dTaXplO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZGlhbG9nQ2xhc3NOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlhbG9nQ2xhc3NOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzRmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzRmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3NUaXRsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2UoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9mZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgZGF0YVByb3ZpZGVyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YVByb3ZpZGVyO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSBnZXQgcnVuRnVuY3Rpb24oKTogKGN0eDogQWN0aW9uQ29udGV4dDxULCB1bmtub3duPikgPT4gT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignUnVuIGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2VkIGluIGVkaXRvciBhY3Rpb24uIFVzZSBzdWJtaXQgZnVuY3Rpb24gaW5zdGVhZCEnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZldGNoRnVuY3Rpb24oKTogKGN0eDogQWN0aW9uQ29udGV4dDxULCB1bmtub3duPikgPT4gT2JzZXJ2YWJsZTxUPiB7XG4gICAgICAgIGlmICghdGhpcy5fZmV0Y2hGdW5jdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIGN0eCA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5kZWJ1ZyhgRmV0Y2ggZnVuY3Rpb24gaXMgbm90IHByb3ZpZGVkIGZvciBmdW5jdGlvbiAke3RoaXMuX2FjdGlvbk5hbWVMb25nfSwgdXNpbmcgZGVmYXVsdCBhbmQgcmV0dXJuaW5nIGNvbnRleHQgaXRlbWAsIGN0eC5wYXJhbWV0ZXJzPy5pdGVtKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb2YoY3R4LnBhcmFtZXRlcnM/Lml0ZW0gPyBjdHgucGFyYW1ldGVycy5pdGVtIDogKHt9IGFzIFQpKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZldGNoRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdWJtaXRGdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N1Ym1pdEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yQWN0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvckFjdGlvbnM7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JDb21wb25lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JDb21wb25lbnQ7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFZGl0b3JUaXRsZSh0aXRsZTogc3RyaW5nIHwgbnVsbCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9lZGl0b3JUaXRsZSA9IHRpdGxlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aERhdGFQcm92aWRlcihkYXRhUHJvdmlkZXI6IElFZGl0b3JEYXRhUHJvdmlkZXI8VCwgYW55Pik6IHRoaXMge1xuICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBkYXRhUHJvdmlkZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSB3aXRoU2VydmljZVR5cGU8Uz4oc2VydmljZVR5cGU6IFR5cGU8Uz4pOiB0aGlzIHtcbiAgICAgICAgaWYgKCF0aGlzLl9tb2RlbCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3Qgc2V0IGRhdGEgcHJvdmlkZXIgaWYgbm8gbW9kZWwgdHlwZSBpcyBwcm92aWRlZCBmb3IgYWN0aW9uICR7dGhpcy5fYWN0aW9uTmFtZX1gKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBuZXcgRWRpdG9yRGF0YVByb3ZpZGVyKHRoaXMuX21vZGVsLnR5cGUsIHNlcnZpY2VUeXBlKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEaWFsb2dTaXplKHNpemUgPSBTdHlsZVNpemVFbnVtLk5vcm1hbCk6IHRoaXMge1xuICAgICAgICB0aGlzLl9kaWFsb2dTaXplID0gc2l6ZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhEaWFsb2dDbGFzc05hbWUoY2xhc3NOYW1lOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGlhbG9nQ2xhc3NOYW1lID0gY2xhc3NOYW1lO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aFJ1bkZ1bmN0aW9uPFM+KGZuOiAoY3R4OiBBY3Rpb25Db250ZXh0PFQsIFM+KSA9PiBPYnNlcnZhYmxlPFQ+KTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhTdWJtaXRGdW5jdGlvbihmbiBhcyAoY3R4OiBBY3Rpb25Db250ZXh0PFQsIFM+KSA9PiBPYnNlcnZhYmxlPFQ+KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZldGNoRnVuY3Rpb248Uz4oZm46IChjdHg6IEFjdGlvbkNvbnRleHQ8VCwgUz4pID0+IE9ic2VydmFibGU8VD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZmV0Y2hGdW5jdGlvbiA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFN1Ym1pdEZ1bmN0aW9uPFM+KGZuOiAoY3R4OiBBY3Rpb25Db250ZXh0PFQsIFM+KSA9PiBPYnNlcnZhYmxlPFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3N1Ym1pdEZ1bmN0aW9uID0gZm47XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRmV0Y2hOb3RpZmljYXRpb25FcnJvcih0aXRsZT86IHN0cmluZywgbWVzc2FnZT86IHN0cmluZywgaGFzTm90aWZpY2F0aW9uID0gdHJ1ZSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9oYXNGZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3MgPSBoYXNOb3RpZmljYXRpb247XG4gICAgICAgIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc1RpdGxlID0gdGl0bGU7XG4gICAgICAgIHRoaXMuX2ZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc01lc3NhZ2UgPSBtZXNzYWdlO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVkaXRvckFjdGlvbihhY3Rpb246IEFjdGlvbkRlc2NyaXB0b3I8VD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZWRpdG9yQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdG9yQWN0aW9ucyhhY3Rpb25zOiBBY3Rpb25EZXNjcmlwdG9yPFQ+W10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZWRpdG9yQWN0aW9ucyA9IGFjdGlvbnM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdG9yQ29tcG9uZW50KGVkaXRvckNvbXBvbmVudDogVHlwZTxhbnk+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2VkaXRvckNvbXBvbmVudCA9IGVkaXRvckNvbXBvbmVudDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWN0aW9uRWRpdG9yU3VibWl0RGVzY3JpcHRvcjxUPiBleHRlbmRzIEFjdGlvbkRlc2NyaXB0b3I8VD4ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VkaXRvckFjdGlvbjogQWN0aW9uRWRpdG9yRGVzY3JpcHRvcjxUPjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9zdWJtaXRUeXBlOiBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bTtcblxuICAgIGNvbnN0cnVjdG9yKGVkaXRvckFjdGlvbjogQWN0aW9uRWRpdG9yRGVzY3JpcHRvcjxUPiwgc3VibWl0VHlwZSA9IEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLlN1Ym1pdCkge1xuICAgICAgICBzdXBlcihlZGl0b3JBY3Rpb24ubW9kZWwsIHN1Ym1pdFR5cGUgPT09IEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLlN1Ym1pdCA/ICdzdWJtaXQnIDogJ2NhbmNlbCcpO1xuICAgICAgICB0aGlzLl9lZGl0b3JBY3Rpb24gPSBlZGl0b3JBY3Rpb247XG4gICAgICAgIHRoaXMuX3N1Ym1pdFR5cGUgPSBzdWJtaXRUeXBlO1xuICAgICAgICB0aGlzLl9wb3NpdGlvbiA9IEFjdGlvblBvc2l0aW9uRW51bS5Gb290ZXJSaWdodDtcblxuICAgICAgICB0aGlzLmJ1dHRvbi5zdHlsZUNsYXNzLndpdGhBY3Rpb25MZXZlbChlZGl0b3JBY3Rpb24ubGV2ZWwpLndpdGhUZXh0QnV0dG9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBwcmltYXJ5IGFjdGlvbiB3aXRoIHByaW1hcnkgYnV0dG9uIHN0eWxlXG4gICAgICogQHBhcmFtIGVkaXRvckFjdGlvblxuICAgICAqIEBwYXJhbSBzdWJtaXRUeXBlXG4gICAgICovXG4gICAgc3RhdGljIGZvclByaW1hcnk8VD4oZWRpdG9yQWN0aW9uOiBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yPFQ+LCBzdWJtaXRUeXBlID0gQWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW0uU3VibWl0KTogQWN0aW9uRWRpdG9yU3VibWl0RGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIHJldHVybiBuZXcgQWN0aW9uRWRpdG9yU3VibWl0RGVzY3JpcHRvcihlZGl0b3JBY3Rpb24sIHN1Ym1pdFR5cGUpLndpdGhCdXR0b25EZXNjcmlwdG9yKG5ldyBBY3Rpb25CdXR0b25EZXNjcmlwdG9yKCkud2l0aFN0eWxlQ2xhc3MobmV3IEJ1dHRvblN0eWxlQnVpbGRlcigpKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogY3JlYXRlcyBzZWNvbmRhcnkgYnV0dG9uIHdpdGggdGV4dCBidXR0b24gc3R5bGVcbiAgICAgKiBAcGFyYW0gZWRpdG9yQWN0aW9uXG4gICAgICogQHBhcmFtIHN1Ym1pdFR5cGVcbiAgICAgKi9cbiAgICBzdGF0aWMgZm9yU2Vjb25kYXJ5PFQ+KGVkaXRvckFjdGlvbjogQWN0aW9uRWRpdG9yRGVzY3JpcHRvcjxUPiwgc3VibWl0VHlwZSA9IEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLkNhbmNlbCk6IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3I8VD4ge1xuICAgICAgICByZXR1cm4gbmV3IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3IoZWRpdG9yQWN0aW9uLCBzdWJtaXRUeXBlKS53aXRoQnV0dG9uRGVzY3JpcHRvcihcbiAgICAgICAgICAgIG5ldyBBY3Rpb25CdXR0b25EZXNjcmlwdG9yKCkud2l0aFN0eWxlQ2xhc3MobmV3IEJ1dHRvblN0eWxlQnVpbGRlcigpLndpdGhUZXh0QnV0dG9uKCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzdWJtaXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3VibWl0VHlwZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvcjxUPiBleHRlbmRzIEFjdGlvbkVkaXRvckRlc2NyaXB0b3I8VD4ge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUNUSU9OX05BTUUgPSAnZGV0YWlscyc7XG5cbiAgICBjb25zdHJ1Y3RvcihlZGl0b3JEZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9yPFQ+KSB7XG4gICAgICAgIHN1cGVyKGVkaXRvckRlc2NyaXB0b3IsIEFjdGlvbkVkaXRvckRldGFpbHNEZXNjcmlwdG9yLkFDVElPTl9OQU1FKTtcbiAgICAgICAgdGhpcy53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLlJvd0NsaWNrKTtcbiAgICAgICAgdGhpcy53aXRoUm91dGVUcmlnZ2VyKCc6aXRlbUlkJyk7XG4gICAgICAgIHRoaXMud2l0aEZldGNoRnVuY3Rpb24oQWN0aW9uRGF0YVByb3ZpZGVyVXRpbC5ydW5GZXRjaE9yRmFpbCk7XG5cbiAgICAgICAgdGhpcy53aXRoRWRpdG9yQWN0aW9ucyhbbmV3IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3IodGhpcywgQWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW0uQ2FuY2VsKV0pO1xuICAgICAgICB0aGlzLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERVRBSUxTKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aFNlcnZpY2VUeXBlPFM+KHNlcnZpY2VUeXBlOiBUeXBlPFM+KTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhTZXJ2aWNlRmV0Y2hGdW5jdGlvbihzZXJ2aWNlVHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTZXJ2aWNlRmV0Y2hGdW5jdGlvbjxTPihzZXJ2aWNlVHlwZTogVHlwZTxTPiwgZmV0Y2hGbj86IChpZDogSWRUeXBlLCBzZXJ2aWNlPzogUykgPT4gT2JzZXJ2YWJsZTxUPik6IHRoaXMge1xuICAgICAgICBjb25zdCBkYXRhUHJvdmlkZXIgPSBuZXcgRWRpdG9yRGF0YVByb3ZpZGVyKHRoaXMuX21vZGVsIS50eXBlLCBzZXJ2aWNlVHlwZSk7XG4gICAgICAgIGlmIChmZXRjaEZuKSB7XG4gICAgICAgICAgICBkYXRhUHJvdmlkZXIud2l0aEZldGNoKGZldGNoRm4pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2RhdGFQcm92aWRlciA9IGRhdGFQcm92aWRlcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWN0aW9uRWRpdG9yQWRkRGVzY3JpcHRvcjxUPiBleHRlbmRzIEFjdGlvbkVkaXRvckRlc2NyaXB0b3I8VD4ge1xuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUNUSU9OX05BTUUgPSAnYWRkJztcblxuICAgIGNvbnN0cnVjdG9yKGVkaXRvckRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3I8VD4pIHtcbiAgICAgICAgc3VwZXIoZWRpdG9yRGVzY3JpcHRvciwgQWN0aW9uRWRpdG9yQWRkRGVzY3JpcHRvci5BQ1RJT05fTkFNRSk7XG4gICAgICAgIHRoaXMud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Ub29sYmFyTGVmdCk7XG4gICAgICAgIHRoaXMud2l0aFJvdXRlVHJpZ2dlcignYWRkJyk7XG4gICAgICAgIHRoaXMud2l0aFN1Ym1pdEZ1bmN0aW9uKEFjdGlvbkRhdGFQcm92aWRlclV0aWwucnVuQ3JlYXRlT3JGYWlsKTtcblxuICAgICAgICB0aGlzLmJ1dHRvbi53aXRoSWNvbigncGkgcGktcGx1cycpO1xuICAgICAgICB0aGlzLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5BREQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSB3aXRoU2VydmljZVR5cGU8Uz4oc2VydmljZVR5cGU6IFR5cGU8Uz4pOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aFNlcnZpY2VTdWJtaXRGdW5jdGlvbihzZXJ2aWNlVHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTZXJ2aWNlU3VibWl0RnVuY3Rpb248Uz4oc2VydmljZVR5cGU6IFR5cGU8Uz4sIGNyZWF0ZUZuPzogKGl0ZW0/OiBULCBzZXJ2aWNlPzogUykgPT4gT2JzZXJ2YWJsZTxUPiwgZmV0Y2hGbj86IChpZDogSWRUeXBlLCBzZXJ2aWNlPzogUykgPT4gT2JzZXJ2YWJsZTxUPik6IHRoaXMge1xuICAgICAgICBjb25zdCBkYXRhUHJvdmlkZXIgPSBuZXcgRWRpdG9yRGF0YVByb3ZpZGVyKHRoaXMuX21vZGVsIS50eXBlLCBzZXJ2aWNlVHlwZSk7XG4gICAgICAgIGlmIChjcmVhdGVGbikge1xuICAgICAgICAgICAgZGF0YVByb3ZpZGVyLndpdGhDcmVhdGUoY3JlYXRlRm4pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChmZXRjaEZuKSB7XG4gICAgICAgICAgICBkYXRhUHJvdmlkZXIud2l0aEZldGNoKGZldGNoRm4pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2RhdGFQcm92aWRlciA9IGRhdGFQcm92aWRlcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWN0aW9uRWRpdG9yRWRpdERlc2NyaXB0b3I8VD4gZXh0ZW5kcyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yPFQ+IHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTl9OQU1FID0gJ2VkaXQnO1xuXG4gICAgY29uc3RydWN0b3IoZWRpdG9yRGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvcjxUPikge1xuICAgICAgICBzdXBlcihlZGl0b3JEZXNjcmlwdG9yLCBBY3Rpb25FZGl0b3JFZGl0RGVzY3JpcHRvci5BQ1RJT05fTkFNRSk7XG4gICAgICAgIHRoaXMud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUpO1xuICAgICAgICB0aGlzLmJ1dHRvbi5zdHlsZUNsYXNzLndpdGhTaXplKFN0eWxlU2l6ZUVudW0uU21hbGwpO1xuICAgICAgICB0aGlzLndpdGhSb3V0ZVRyaWdnZXIoJzppdGVtSWQvZWRpdCcpO1xuICAgICAgICB0aGlzLndpdGhGZXRjaEZ1bmN0aW9uKEFjdGlvbkRhdGFQcm92aWRlclV0aWwucnVuRmV0Y2hPckZhaWwpO1xuICAgICAgICB0aGlzLndpdGhTdWJtaXRGdW5jdGlvbihBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLnJ1blVwZGF0ZU9yRmFpbCk7XG4gICAgICAgIHRoaXMud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkVESVQpO1xuICAgICAgICB0aGlzLmJ1dHRvbi53aXRoTGFiZWwobnVsbCkud2l0aEljb24oJ3BpIHBpLXBlbmNpbCcpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvdmVycmlkZSB3aXRoU2VydmljZVR5cGU8Uz4oc2VydmljZVR5cGU6IFR5cGU8Uz4pOiB0aGlzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2l0aFNlcnZpY2VTdWJtaXRGdW5jdGlvbihzZXJ2aWNlVHlwZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTZXJ2aWNlU3VibWl0RnVuY3Rpb248Uz4oXG4gICAgICAgIHNlcnZpY2VUeXBlOiBUeXBlPFM+LFxuICAgICAgICB1cGRhdGVGbj86IChpZDogSWRUeXBlLCBpdGVtPzogVCwgc2VydmljZT86IFMpID0+IE9ic2VydmFibGU8VD4sXG4gICAgICAgIGZldGNoRm4/OiAoaWQ6IElkVHlwZSwgc2VydmljZT86IFMpID0+IE9ic2VydmFibGU8VD5cbiAgICApOiB0aGlzIHtcbiAgICAgICAgY29uc3QgZGF0YVByb3ZpZGVyID0gbmV3IEVkaXRvckRhdGFQcm92aWRlcih0aGlzLl9tb2RlbCEudHlwZSwgc2VydmljZVR5cGUpO1xuICAgICAgICBpZiAodXBkYXRlRm4pIHtcbiAgICAgICAgICAgIGRhdGFQcm92aWRlci53aXRoVXBkYXRlKHVwZGF0ZUZuKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmV0Y2hGbikge1xuICAgICAgICAgICAgZGF0YVByb3ZpZGVyLndpdGhGZXRjaChmZXRjaEZuKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBkYXRhUHJvdmlkZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFjdGlvbkRlbGV0ZURlc2NyaXB0b3I8VD4gZXh0ZW5kcyBBY3Rpb25EZXNjcmlwdG9yPFQ+IHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTl9OQU1FID0gJ2RlbGV0ZSc7XG5cbiAgICBjb25zdHJ1Y3Rvcihtb2RlbDogTW9kZWxEZXNjcmlwdG9yPFQ+KSB7XG4gICAgICAgIHN1cGVyKG1vZGVsLCBBY3Rpb25EZWxldGVEZXNjcmlwdG9yLkFDVElPTl9OQU1FKTtcbiAgICAgICAgdGhpcy53aXRoUG9zaXRpb24oQWN0aW9uUG9zaXRpb25FbnVtLlJvd0lubGluZSk7XG4gICAgICAgIHRoaXMuYnV0dG9uLnN0eWxlQ2xhc3Mud2l0aFNpemUoU3R5bGVTaXplRW51bS5TbWFsbCk7XG4gICAgICAgIHRoaXMud2l0aFJ1bkZ1bmN0aW9uKEFjdGlvbkRhdGFQcm92aWRlclV0aWwucnVuRGVsZXRlT3JGYWlsKTtcbiAgICAgICAgdGhpcy5idXR0b24uc3R5bGVDbGFzcy53aXRoQWN0aW9uTGV2ZWwoU3R5bGVMZXZlbEVudW0uRGFuZ2VyKTtcbiAgICAgICAgdGhpcy53aXRoUnVuQ29uZmlybWF0aW9uKCk7XG4gICAgICAgIHRoaXMud2l0aFRhYmxldmlld0NhdGVnb3J5KFRhYmxldmlld0FjdGlvbkRlZmF1bHRDYXRlZ29yaWVzLkRFTEVURSk7XG4gICAgICAgIHRoaXMuYnV0dG9uLndpdGhMYWJlbChudWxsKS53aXRoSWNvbigncGkgcGktdHJhc2gnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aFNlcnZpY2VUeXBlPFM+KHNlcnZpY2VUeXBlOiBUeXBlPFM+KTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhTZXJ2aWNlRGVsZXRlRnVuY3Rpb24oc2VydmljZVR5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU2VydmljZURlbGV0ZUZ1bmN0aW9uPFM+KHNlcnZpY2VUeXBlOiBUeXBlPFM+LCBkZWxldGVGbj86IChpZDogSWRUeXBlLCBpdGVtPzogVCwgc2VydmljZT86IFMpID0+IE9ic2VydmFibGU8VD4pOiB0aGlzIHtcbiAgICAgICAgY29uc3QgZGF0YVByb3ZpZGVyID0gbmV3IEVkaXRvckRhdGFQcm92aWRlcih0aGlzLl9tb2RlbCEudHlwZSwgc2VydmljZVR5cGUpO1xuICAgICAgICBpZiAoZGVsZXRlRm4pIHtcbiAgICAgICAgICAgIGRhdGFQcm92aWRlci53aXRoRGVsZXRlKGRlbGV0ZUZuKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBkYXRhUHJvdmlkZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFjdGlvbkxpbmtEZXNjcmlwdG9yPFQ+IGV4dGVuZHMgQWN0aW9uRGVzY3JpcHRvcjxUPiB7XG4gICAgcHJpdmF0ZSBfdXJsID0gJyc7XG4gICAgcHJpdmF0ZSBfcGF0aFNlZ21lbnRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHByaXZhdGUgX3F1ZXJ5UGFyYW1zPzogUGFyYW1zO1xuICAgIHByaXZhdGUgX3F1ZXJ5UGFyYW1zSGFuZGxpbmc/OiBRdWVyeVBhcmFtc0hhbmRsaW5nO1xuICAgIHByaXZhdGUgX3JlcGxhY2VVcmwgPSBmYWxzZTtcbiAgICBwcml2YXRlIF90YXJnZXQgPSAnX3NlbGYnO1xuICAgIHByaXZhdGUgX2lzU3R5bGVMaW5rID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihtb2RlbDogTW9kZWxEZXNjcmlwdG9yPFQ+IHwgbnVsbCA9IG51bGwsIGFjdGlvbk5hbWUgPSAnbGluaycpIHtcbiAgICAgICAgc3VwZXIobW9kZWwsIGFjdGlvbk5hbWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdXJsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl91cmw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYXRoU2VnbWVudHMoKTogc3RyaW5nW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGF0aFNlZ21lbnRzO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcXVlcnlQYXJhbXMoKTogUGFyYW1zIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3F1ZXJ5UGFyYW1zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcXVlcnlQYXJhbXNIYW5kbGluZygpOiBRdWVyeVBhcmFtc0hhbmRsaW5nIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3F1ZXJ5UGFyYW1zSGFuZGxpbmc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCByZXBsYWNlVXJsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVwbGFjZVVybDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRhcmdldCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFyZ2V0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNTdHlsZUxpbmsoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1N0eWxlTGluaztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEhyZWYodXJsOiBzdHJpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdXJsID0gdXJsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJvdXRlckxpbmsoLi4ucGF0aFNlZ21lbnRzOiBzdHJpbmdbXSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9wYXRoU2VnbWVudHMgPSBwYXRoU2VnbWVudHM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUXVlcnlQYXJhbXMocXVlcnlQYXJhbXM6IFBhcmFtcywgcXVlcnlQYXJhbXNIYW5kbGluZz86IFF1ZXJ5UGFyYW1zSGFuZGxpbmcpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtcztcbiAgICAgICAgdGhpcy5fcXVlcnlQYXJhbXNIYW5kbGluZyA9IHF1ZXJ5UGFyYW1zSGFuZGxpbmc7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUmVwbGFjZVVybChyZXBsYWNlVXJsID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcmVwbGFjZVVybCA9IHJlcGxhY2VVcmw7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoVGFyZ2V0KHRhcmdldDogJ19zZWxmJyB8ICdfYmxhbmsnID0gJ19zZWxmJyk6IHRoaXMge1xuICAgICAgICB0aGlzLl90YXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU3R5bGVMaW5rKGlzU3R5bGVMaW5rOiBib29sZWFuKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2lzU3R5bGVMaW5rID0gaXNTdHlsZUxpbms7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cbiJdfQ==
548
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmRlc2NyaXB0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2Rlc2NyaXB0b3JzL2FjdGlvbi5kZXNjcmlwdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE9BQU8sRUFBYSxFQUFFLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFFcEMsT0FBTyxFQUF5QyxnQ0FBZ0MsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3JILE9BQU8sRUFBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQXFDLE1BQU0sbUJBQW1CLENBQUM7QUFFdkcsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sV0FBVyxDQUFDO0FBQzdDLE9BQU8sRUFBQyxjQUFjLEVBQUUsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFFL0QsT0FBTyxFQUFDLHNCQUFzQixFQUFFLFFBQVEsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUMxRCxPQUFPLEVBQUMsc0JBQXNCLEVBQW9CLGVBQWUsRUFBQyxNQUFNLElBQUksQ0FBQztBQUM3RSxPQUFPLEVBQUMsa0NBQWtDLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRixPQUFPLEVBQUMsMkJBQTJCLEVBQUUsMEJBQTBCLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBRXBILE1BQU0sT0FBTyxnQkFBZ0I7SUE4Q3pCLFlBQVksS0FBZ0MsRUFBRSxVQUFrQixFQUFFLFVBQStCLEVBQUUsY0FBdUI7UUFwQ2hILFVBQUssR0FBbUIsY0FBYyxDQUFDLE1BQU0sQ0FBQztRQUM5Qyx1QkFBa0IsR0FBZ0MsMkJBQTJCLENBQUMsT0FBTyxDQUFDO1FBQ3RGLGNBQVMsR0FBdUIsa0JBQWtCLENBQUMsWUFBWSxDQUFDO1FBQ2hFLFdBQU0sR0FBbUIsY0FBYyxDQUFDLE9BQU8sQ0FBQztRQUloRCxjQUFTLEdBQWtCLElBQUksQ0FBQztRQVNoQywrQkFBMEIsR0FBRyxJQUFJLENBQUM7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SUFDNUIsQ0FBQztJQUVELElBQVcsTUFBTTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDO0lBRUQsSUFBVyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUM3QixDQUFDO0lBRU0sUUFBUSxDQUFDLEdBQVc7UUFDdkIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUM7UUFDaEIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGNBQWMsQ0FBQyxHQUFHLFlBQXNCO1FBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxlQUFlLENBQUMsV0FBbUIsRUFBRSxtQkFBeUM7UUFDakYsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG1CQUFtQixDQUFDO1FBQ2hELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxjQUFjLENBQUMsVUFBVSxHQUFHLEtBQUs7UUFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDOUIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxTQUE2QixPQUFPO1FBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxhQUFhLENBQUMsV0FBb0I7UUFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtUeXBlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UGFyYW1zLCBRdWVyeVBhcmFtc0hhbmRsaW5nfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQge09ic2VydmFibGUsIG9mfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtBY3Rpb25Db250ZXh0LCBBY3Rpb25Db250ZXh0VmFsaWRhdGlvbiwgVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXN9IGZyb20gJy4uL2NvbXBvbmVudHMvYWN0aW9uL21vZGVscyc7XG5pbXBvcnQge0RhdGFQcm92aWRlciwgRWRpdG9yRGF0YVByb3ZpZGVyLCBJRGF0YVByb3ZpZGVyLCBJRWRpdG9yRGF0YVByb3ZpZGVyfSBmcm9tICcuLi9kYXRhLXByb3ZpZGVycyc7XG5pbXBvcnQge0FQZXJtaXNzaW9uc30gZnJvbSAnLi4vc2VjdXJpdHkvbW9kZWwnO1xuaW1wb3J0IHtCdXR0b25TdHlsZUJ1aWxkZXJ9IGZyb20gJy4uL3N0eWxlcyc7XG5pbXBvcnQge1N0eWxlTGV2ZWxFbnVtLCBTdHlsZVNpemVFbnVtfSBmcm9tICcuLi9zdHlsZXMvbW9kZWxzJztcbmltcG9ydCB7Q2xhc3NUeXBlLCBJZFR5cGV9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7QWN0aW9uRGF0YVByb3ZpZGVyVXRpbCwgVHlwZVV0aWx9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7QWN0aW9uQnV0dG9uRGVzY3JpcHRvciwgRWRpdG9yRGVzY3JpcHRvciwgTW9kZWxEZXNjcmlwdG9yfSBmcm9tICcuLyc7XG5pbXBvcnQge0FjdGlvbkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3J9IGZyb20gJy4vYWN0aW9uL2FjdGlvbi1jb25maXJtYXRpb24uZGVzY3JpcHRvcic7XG5pbXBvcnQge0FjdGlvbkFjdGl2YXRpb25UcmlnZ2VyRW51bSwgQWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW0sIEFjdGlvblBvc2l0aW9uRW51bSwgQWN0aW9uVHlwZUVudW19IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY2xhc3MgQWN0aW9uRGVzY3JpcHRvcjxUPiB7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9tb2RlbDogTW9kZWxEZXNjcmlwdG9yPFQ+IHwgbnVsbDtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FjdGlvbk5hbWU6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgX2FjdGlvbk5hbWVMb25nOiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9wYXJlbnRUeXBlPzogQ2xhc3NUeXBlPHVua25vd24+O1xuICAgIHByb3RlY3RlZCByZWFkb25seSBfcGFyZW50VHlwZU5hbWU/OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9wYXJlbnRQcm9wZXJ0eT86IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBfaTE4bk1vZGVsQWN0aW9uQmFzZUtleT86IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBfdHlwZTogQWN0aW9uVHlwZUVudW0gPSBBY3Rpb25UeXBlRW51bS5EaXJlY3Q7XG4gICAgcHJvdGVjdGVkIF9hY3RpdmF0aW9uVHJpZ2dlcjogQWN0aW9uQWN0aXZhdGlvblRyaWdnZXJFbnVtID0gQWN0aW9uQWN0aXZhdGlvblRyaWdnZXJFbnVtLk9uQ2xpY2s7XG4gICAgcHJvdGVjdGVkIF9wb3NpdGlvbjogQWN0aW9uUG9zaXRpb25FbnVtID0gQWN0aW9uUG9zaXRpb25FbnVtLlRvb2xiYXJSaWdodDtcbiAgICBwcm90ZWN0ZWQgX2xldmVsOiBTdHlsZUxldmVsRW51bSA9IFN0eWxlTGV2ZWxFbnVtLkRlZmF1bHQ7XG4gICAgcHJpdmF0ZSBfcG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzPzogc3RyaW5nW107XG4gICAgcHJvdGVjdGVkIF90YWJsZXZpZXdDYXRlZ29yeT86IHN0cmluZztcblxuICAgIHByb3RlY3RlZCBfcm91dGVVcmw6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgcHJvdGVjdGVkIF9kYXRhUHJvdmlkZXI/OiBJRGF0YVByb3ZpZGVyPFQsIGFueT47XG4gICAgcHJvdGVjdGVkIF9ydW5GdW5jdGlvbj86IChjdHg6IEFjdGlvbkNvbnRleHQ8VCwgYW55PikgPT4gT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkIHwgbnVsbD47XG4gICAgcHJvdGVjdGVkIF9pc1Zpc2libGVGdW5jdGlvbj86IChjdHg6IEFjdGlvbkNvbnRleHRWYWxpZGF0aW9uPFQsIGFueT4pID0+IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgcHJvdGVjdGVkIF9pc0VuYWJsZWRGdW5jdGlvbj86IChjdHg6IEFjdGlvbkNvbnRleHRWYWxpZGF0aW9uPFQsIGFueT4pID0+IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICBwcm90ZWN0ZWQgX3J1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3I/OiBBY3Rpb25Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yPFQ+O1xuXG4gICAgcHJvdGVjdGVkIF9oYXNSdW5Ob3RpZmljYXRpb25TdWNjZXNzID0gdHJ1ZTtcbiAgICBwcm90ZWN0ZWQgX3J1bk5vdGlmaWNhdGlvblN1Y2Nlc3NUaXRsZT86IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgX3J1bk5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlPzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF9oYXNSdW5Ob3RpZmljYXRpb25FcnJvciA9IHRydWU7XG4gICAgcHJvdGVjdGVkIF9ydW5Ob3RpZmljYXRpb25FcnJvclRpdGxlPzogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfcnVuTm90aWZpY2F0aW9uRXJyb3JNZXNzYWdlPzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF9hZnRlclJ1bkFjdGlvbj86IEFjdGlvbkRlc2NyaXB0b3I8dW5rbm93bj47XG4gICAgcHJvdGVjdGVkIF9vblJ1bkVycm9yQWN0aW9uPzogQWN0aW9uRGVzY3JpcHRvcjx1bmtub3duPjtcblxuICAgIC8vIHNlY3VyaXR5XG4gICAgcHJvdGVjdGVkIF9wZXJtaXNzaW9ucz86IEFQZXJtaXNzaW9ucztcblxuICAgIC8vYnV0dG9uXG4gICAgcHJvdGVjdGVkIF9idXR0b24gPSBuZXcgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcigpO1xuXG4gICAgLy8gbXVsdGlwbGUgcm93IHNlbGVjdGlvblxuICAgIHByb3RlY3RlZCBfaGFzSXRlbXNTZWxlY3Rpb24gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKG1vZGVsOiBNb2RlbERlc2NyaXB0b3I8VD4gfCBudWxsLCBhY3Rpb25OYW1lOiBzdHJpbmcsIHBhcmVudFR5cGU/OiBDbGFzc1R5cGU8dW5rbm93bj4sIHBhcmVudFByb3BlcnR5Pzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX21vZGVsID0gbW9kZWw7XG4gICAgICAgIHRoaXMuX2FjdGlvbk5hbWUgPSBhY3Rpb25OYW1lO1xuXG4gICAgICAgIGlmICgocGFyZW50VHlwZSAmJiAhcGFyZW50UHJvcGVydHkpIHx8ICghcGFyZW50UHJvcGVydHkgJiYgcGFyZW50UHJvcGVydHkpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFByb3ZpZGUgYm90aCB0aGUgcGFyZW50IHR5cGUgYW5kIHBhcmVudCBwcm9wZXJ0eSBvciBub25lOiAke3BhcmVudFR5cGV9LCAke3BhcmVudFByb3BlcnR5fS5gKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wYXJlbnRUeXBlID0gcGFyZW50VHlwZTtcbiAgICAgICAgdGhpcy5fcGFyZW50VHlwZU5hbWUgPSBwYXJlbnRUeXBlID8gVHlwZVV0aWwuZmluZFR5cGVOYW1lKHBhcmVudFR5cGUpIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLl9wYXJlbnRQcm9wZXJ0eSA9IHBhcmVudFByb3BlcnR5O1xuXG4gICAgICAgIHRoaXMuc2V0STE4bk1vZGVsQWN0aW9uQmFzZUtleSgpO1xuXG4gICAgICAgIGxldCBkaXNwbGF5TmFtZSA9IGFjdGlvbk5hbWU7XG4gICAgICAgIGlmICh0aGlzLl9tb2RlbCkgZGlzcGxheU5hbWUgPSBgJHt0aGlzLl9tb2RlbC50eXBlTmFtZX0uJHtkaXNwbGF5TmFtZX1gO1xuICAgICAgICBpZiAodGhpcy5fcGFyZW50VHlwZU5hbWUpIHtcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lID0gYCR7dGhpcy5fcGFyZW50VHlwZU5hbWV9LiR7dGhpcy5fcGFyZW50UHJvcGVydHl9XyR7ZGlzcGxheU5hbWV9YDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9hY3Rpb25OYW1lTG9uZyA9IGRpc3BsYXlOYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbW9kZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9tb2RlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHBhcmVudFR5cGVOYW1lKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcGFyZW50VHlwZU5hbWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwYXJlbnRQcm9wZXJ0eSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudFByb3BlcnR5O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaTE4bk1vZGVsQWN0aW9uQmFzZUtleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2kxOG5Nb2RlbEFjdGlvbkJhc2VLZXk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0eXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGl2YXRpb25UcmlnZ2VyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYWN0aXZhdGlvblRyaWdnZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBwb3NpdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Bvc2l0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgbGV2ZWwoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9sZXZlbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJvdXRlVXJsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcm91dGVVcmw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkYXRhUHJvdmlkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kYXRhUHJvdmlkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNSdW5GdW5jdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiB0aGlzLl9ydW5GdW5jdGlvbiA9PT0gJ2Z1bmN0aW9uJztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJ1bkZ1bmN0aW9uKCk6IChjdHg6IEFjdGlvbkNvbnRleHQ8VCwgYW55PikgPT4gT2JzZXJ2YWJsZTxUIHwgdW5kZWZpbmVkIHwgbnVsbD4ge1xuICAgICAgICBpZiAoIXRoaXMuX3J1bkZ1bmN0aW9uKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1J1biBmdW5jdGlvbiBpcyBub3QgZGVmaW5lZCBhbmQgY2Fubm90IGJlIGludm9rZWQnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5fcnVuRnVuY3Rpb247XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBpc1Zpc2libGVGdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmlzaWJsZUZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaXNFbmFibGVkRnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0VuYWJsZWRGdW5jdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGlvbk5hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3Rpb25OYW1lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWN0aW9uTmFtZUxvbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3Rpb25OYW1lTG9uZztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGNsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYnV0dG9uLnN0eWxlQ2xhc3MuY3VzdG9tQ2xhc3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc1J1bkNvbmZpcm1hdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3IgIT09IG51bGwgJiYgdGhpcy5fcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvciAhPT0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzUnVuTm90aWZpY2F0aW9uU3VjY2VzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1J1bk5vdGlmaWNhdGlvblN1Y2Nlc3M7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBydW5Ob3RpZmljYXRpb25TdWNjZXNzVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5Ob3RpZmljYXRpb25TdWNjZXNzVGl0bGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBydW5Ob3RpZmljYXRpb25TdWNjZXNzTWVzc2FnZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bk5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgaGFzUnVuTm90aWZpY2F0aW9uRXJyb3IoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNSdW5Ob3RpZmljYXRpb25FcnJvcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHJ1bk5vdGlmaWNhdGlvbkVycm9yVGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ydW5Ob3RpZmljYXRpb25FcnJvclRpdGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcnVuTm90aWZpY2F0aW9uRXJyb3JNZXNzYWdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcnVuTm90aWZpY2F0aW9uRXJyb3JNZXNzYWdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYWZ0ZXJSdW5BY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hZnRlclJ1bkFjdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG9uUnVuRXJyb3JBY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9vblJ1bkVycm9yQWN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGVybWlzc2lvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wZXJtaXNzaW9ucztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHRhYmxldmlld0NhdGVnb3J5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGFibGV2aWV3Q2F0ZWdvcnk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBoYXNJdGVtc1NlbGVjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0l0ZW1zU2VsZWN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgYnV0dG9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fYnV0dG9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBzZXRJMThuTW9kZWxBY3Rpb25CYXNlS2V5KGJhc2U/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuX3BhcmVudFR5cGVOYW1lIHx8IHRoaXMuX21vZGVsKSB7XG4gICAgICAgICAgICB0aGlzLl9pMThuTW9kZWxBY3Rpb25CYXNlS2V5ID0gdGhpcy5fcGFyZW50VHlwZU5hbWVcbiAgICAgICAgICAgICAgICA/IGAke3RoaXMuX3BhcmVudFR5cGVOYW1lfS5hY3Rpb25zLiR7dGhpcy5fcGFyZW50UHJvcGVydHl9XyR7dGhpcy5fYWN0aW9uTmFtZX1gXG4gICAgICAgICAgICAgICAgOiBgJHtiYXNlID8/IHRoaXMuX21vZGVsIS5pMThuQmFzZUtleX0uYWN0aW9ucy4ke3RoaXMuX2FjdGlvbk5hbWV9YDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGF0YVByb3ZpZGVyKGRhdGFQcm92aWRlcjogSURhdGFQcm92aWRlcjxULCBhbnk+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RhdGFQcm92aWRlciA9IGRhdGFQcm92aWRlcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTZXJ2aWNlVHlwZTxTPihzZXJ2aWNlVHlwZTogVHlwZTxTPik6IHRoaXMge1xuICAgICAgICBpZiAoIXRoaXMuX21vZGVsKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBzZXQgZGF0YSBwcm92aWRlciBpZiBubyBtb2RlbCB0eXBlIGlzIHByb3ZpZGVkIGZvciBhY3Rpb24gJHt0aGlzLl9hY3Rpb25OYW1lfWApO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2RhdGFQcm92aWRlciA9IG5ldyBEYXRhUHJvdmlkZXIodGhpcy5fbW9kZWwudHlwZSwgc2VydmljZVR5cGUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJ1bkZ1bmN0aW9uPFM+KGZuOiAoY3R4OiBBY3Rpb25Db250ZXh0PFQsIFM+KSA9PiBPYnNlcnZhYmxlPFQgfCB1bmRlZmluZWQgfCBudWxsPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9ydW5GdW5jdGlvbiA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aElzVmlzaWJsZUZ1bmN0aW9uPFM+KGZuOiAoY3R4OiBBY3Rpb25Db250ZXh0VmFsaWRhdGlvbjxULCBTPikgPT4gT2JzZXJ2YWJsZTxib29sZWFuPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc1Zpc2libGVGdW5jdGlvbiA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aElzRW5hYmxlZEZ1bmN0aW9uPFM+KGZuOiAoY3R4OiBBY3Rpb25Db250ZXh0VmFsaWRhdGlvbjxULCBTPikgPT4gT2JzZXJ2YWJsZTxib29sZWFuPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc0VuYWJsZWRGdW5jdGlvbiA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJvdXRlVHJpZ2dlcihyb3V0ZVVybDogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2FjdGl2YXRpb25UcmlnZ2VyID0gQWN0aW9uQWN0aXZhdGlvblRyaWdnZXJFbnVtLk9uUm91dGU7XG4gICAgICAgIHRoaXMuX3JvdXRlVXJsID0gcm91dGVVcmw7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUG9zaXRpb24ocG9zaXRpb246IEFjdGlvblBvc2l0aW9uRW51bSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9wb3NpdGlvbiA9IHBvc2l0aW9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBjcmVhdGVzIGNvbmZpcm1hdGlvbiBhY3Rpb24gd2l0aCBkZWZhdWx0IHN0eWxlIGJhc2VkIG9uIGFjdGlvbiBkZXNjcmlwdG9yXG4gICAgICovXG4gICAgcHVibGljIHdpdGhSdW5Db25maXJtYXRpb24oKTogQWN0aW9uQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvcjxUPiB7XG4gICAgICAgIHRoaXMuX3J1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3IgPSBuZXcgQWN0aW9uQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvcjxUPigpO1xuICAgICAgICB0aGlzLl9ydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yLmFjY2VwdEJ1dHRvbi5zdHlsZUNsYXNzLndpdGhBY3Rpb25MZXZlbCh0aGlzLl9sZXZlbCk7XG4gICAgICAgIHRoaXMuX3J1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3IucmVqZWN0QnV0dG9uPy5zdHlsZUNsYXNzLndpdGhBY3Rpb25MZXZlbCh0aGlzLl9sZXZlbCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuX3J1bkNvbmZpcm1hdGlvbkRpYWxvZ0Rlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIGEgY29uZmlndXJhdGlvbiBkaWFsb2d1ZSB0byBhY3Rpb24gdXNpbmcgQWN0aW9uQ29uZmlndXJhdGlvbkRlc2NyaXB0b3JcbiAgICAgKiBAcGFyYW0gY29uZmlybWF0aW9uRGVzY3JpcHRvciBkZXNjcmlwdG9yIHdpdGggY3VzdG9taXphYmxlIGluZm9ybWF0aW9uIGZvciBkaWFsb2dcbiAgICAgKi9cbiAgICBwdWJsaWMgd2l0aFJ1bkNvbmZpcm1hdGlvbkRlc2NyaXB0b3IocnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvcjogQWN0aW9uQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvcjxUPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9ydW5Db25maXJtYXRpb25EaWFsb2dEZXNjcmlwdG9yID0gcnVuQ29uZmlybWF0aW9uRGlhbG9nRGVzY3JpcHRvcjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSdW5Ob3RpZmljYXRpb25TdWNjZXNzKHRpdGxlPzogc3RyaW5nLCBtZXNzYWdlPzogc3RyaW5nLCBoYXNOb3RpZmljYXRpb24gPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hhc1J1bk5vdGlmaWNhdGlvblN1Y2Nlc3MgPSBoYXNOb3RpZmljYXRpb247XG4gICAgICAgIHRoaXMuX3J1bk5vdGlmaWNhdGlvblN1Y2Nlc3NUaXRsZSA9IHRpdGxlO1xuICAgICAgICB0aGlzLl9ydW5Ob3RpZmljYXRpb25TdWNjZXNzTWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoUnVuTm90aWZpY2F0aW9uRXJyb3IodGl0bGU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcsIGhhc05vdGlmaWNhdGlvbiA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzUnVuTm90aWZpY2F0aW9uRXJyb3IgPSBoYXNOb3RpZmljYXRpb247XG4gICAgICAgIHRoaXMuX3J1bk5vdGlmaWNhdGlvbkVycm9yVGl0bGUgPSB0aXRsZTtcbiAgICAgICAgdGhpcy5fcnVuTm90aWZpY2F0aW9uRXJyb3JNZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhBZnRlclJ1bkFjdGlvbjxSVD4oYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPFJUPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9hZnRlclJ1bkFjdGlvbiA9IGFjdGlvbiBhcyBBY3Rpb25EZXNjcmlwdG9yPHVua25vd24+O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aE9uUnVuRXJyb3JBY3Rpb248UlQ+KGFjdGlvbjogQWN0aW9uRGVzY3JpcHRvcjxSVD4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fb25SdW5FcnJvckFjdGlvbiA9IGFjdGlvbiBhcyBBY3Rpb25EZXNjcmlwdG9yPHVua25vd24+O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFBlcm1pc3Npb25zKHBlcm1pc3Npb25zOiBBUGVybWlzc2lvbnMpOiB0aGlzIHtcbiAgICAgICAgaWYgKHRoaXMuX3RhYmxldmlld0NhdGVnb3J5KSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFBlcm1pc3Npb25zIHNldCBvbiBhY3Rpb24gJHt0aGlzLl9hY3Rpb25OYW1lTG9uZ30gd2l0aCByb3V0ZSB0eXBlICcke3RoaXMuX3RhYmxldmlld0NhdGVnb3J5fScgd2lsbCBiZSBvbWl0dGVkIGluIHJvdXRlIGd1YXJkIHZhbGlkYXRpb24uYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcGVybWlzc2lvbnMgPSBwZXJtaXNzaW9ucztcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhUYWJsZXZpZXdDYXRlZ29yeShwZXJtaXNzaW9uc1JvdXRlVHlwZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3RhYmxldmlld0NhdGVnb3J5ID0gcGVybWlzc2lvbnNSb3V0ZVR5cGU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoQnV0dG9uRGVzY3JpcHRvcihidXR0b246IEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYnV0dG9uID0gYnV0dG9uO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEJ1dHRvbihsYWJlbD86IHN0cmluZyB8IG51bGwsIGljb246IHN0cmluZyB8IG51bGwgPSBudWxsLCBzdHlsZUxldmVsID0gU3R5bGVMZXZlbEVudW0uRGVmYXVsdCwgc3R5bGVUZXh0ID0gZmFsc2UpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fYnV0dG9uID0gbmV3IEFjdGlvbkJ1dHRvbkRlc2NyaXB0b3IoKS53aXRoTGFiZWwobGFiZWwpLndpdGhJY29uKGljb24pLndpdGhTdHlsZUNsYXNzKG5ldyBCdXR0b25TdHlsZUJ1aWxkZXIoc3R5bGVMZXZlbCkud2l0aFRleHRCdXR0b24oc3R5bGVUZXh0KSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhJdGVtc1NlbGVjdGlvbihoYXNTZWxlY3Rpb24gPSB0cnVlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2hhc0l0ZW1zU2VsZWN0aW9uID0gaGFzU2VsZWN0aW9uO1xuICAgICAgICB0aGlzLl9pc0VuYWJsZWRGdW5jdGlvbiA9IHRoaXMuX2lzRW5hYmxlZEZ1bmN0aW9uID8/IChjdHggPT4gb2YoKGN0eC5wYXJhbWV0ZXJzLnNlbGVjdGVkSXRlbXM/Lmxlbmd0aCA/PyAwKSA+IDApKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhQb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMocG9zaXRpb25UYWJsZXZpZXdDYXRlZ29yaWVzOiBzdHJpbmdbXSk6IHRoaXMge1xuICAgICAgICB0aGlzLl9wb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXMgPSBwb3NpdGlvblRhYmxldmlld0NhdGVnb3JpZXM7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoSTE4bkJhc2UoYmFzZTogQ2xhc3NUeXBlPHVua25vd24+IHwgc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIGlmICh0eXBlb2YgYmFzZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGJhc2UgPSBUeXBlVXRpbC5maW5kVHlwZU5hbWUoYmFzZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZXRJMThuTW9kZWxBY3Rpb25CYXNlS2V5KGJhc2UpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25TaW1wbGVEZXNjcmlwdG9yPFQ+IGV4dGVuZHMgQWN0aW9uRGVzY3JpcHRvcjxUPiB7XG4gICAgY29uc3RydWN0b3IoYWN0aW9uTmFtZTogc3RyaW5nLCBtb2RlbFR5cGU/OiBDbGFzc1R5cGU8VD4sIGlkUHJvcGVydHk/OiBzdHJpbmcsIHRpdGxlUHJvcGVydHk/OiBzdHJpbmcsIGkxOG5CYXNlS2V5Pzogc3RyaW5nIHwgQ2xhc3NUeXBlPHVua25vd24+KSB7XG4gICAgICAgIGNvbnN0IG1vZGVsID0gbW9kZWxUeXBlID8gbmV3IE1vZGVsRGVzY3JpcHRvcjxUPihtb2RlbFR5cGUsIGlkUHJvcGVydHksIHRpdGxlUHJvcGVydHksIGkxOG5CYXNlS2V5KSA6IG51bGw7XG4gICAgICAgIHN1cGVyKG1vZGVsLCBhY3Rpb25OYW1lKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yPFQ+IGV4dGVuZHMgQWN0aW9uRGVzY3JpcHRvcjxUPiB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBfZWRpdG9yRGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvcjxUPjtcblxuICAgIHByb3RlY3RlZCBfZWRpdG9yQWN0aW9uczogQWN0aW9uRGVzY3JpcHRvcjxUPltdID0gW107XG4gICAgcHJvdGVjdGVkIF9lZGl0b3JUaXRsZT86IHN0cmluZyB8IG51bGwgPSB1bmRlZmluZWQ7XG5cbiAgICBwcm90ZWN0ZWQgX2hhc0ZldGNoTm90aWZpY2F0aW9uU3VjY2VzcyA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBfZmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzVGl0bGU/OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIF9mZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlPzogc3RyaW5nO1xuXG4gICAgcHJvdGVjdGVkIF9kaWFsb2dTaXplID0gU3R5bGVTaXplRW51bS5Ob3JtYWw7XG4gICAgcHJvdGVjdGVkIF9kaWFsb2dDbGFzc05hbWU/OiBzdHJpbmc7XG5cbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX2RhdGFQcm92aWRlcj86IElFZGl0b3JEYXRhUHJvdmlkZXI8VCwgYW55PjtcbiAgICBwcm90ZWN0ZWQgX2ZldGNoRnVuY3Rpb24/OiAoY3R4OiBBY3Rpb25Db250ZXh0PFQsIGFueT4pID0+IE9ic2VydmFibGU8VD47XG4gICAgcHJvdGVjdGVkIF9zdWJtaXRGdW5jdGlvbj86IChjdHg6IEFjdGlvbkNvbnRleHQ8VCwgYW55PikgPT4gT2JzZXJ2YWJsZTxUPjtcblxuICAgIHByb3RlY3RlZCBfZWRpdG9yQ29tcG9uZW50PzogVHlwZTxhbnk+O1xuXG4gICAgY29uc3RydWN0b3IoZWRpdG9yRGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvcjxUPiwgYWN0aW9uTmFtZTogc3RyaW5nLCBwYXJlbnRUeXBlPzogQ2xhc3NUeXBlPHVua25vd24+LCBwYXJlbnRQcm9wZXJ0eT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihlZGl0b3JEZXNjcmlwdG9yLm1vZGVsLCBhY3Rpb25OYW1lLCBwYXJlbnRUeXBlLCBwYXJlbnRQcm9wZXJ0eSk7XG4gICAgICAgIHRoaXMuX3R5cGUgPSBBY3Rpb25UeXBlRW51bS5FZGl0b3I7XG4gICAgICAgIHRoaXMuX2VkaXRvckRlc2NyaXB0b3IgPSBlZGl0b3JEZXNjcmlwdG9yO1xuICAgICAgICB0aGlzLl9lZGl0b3JBY3Rpb25zLnB1c2goQWN0aW9uRWRpdG9yU3VibWl0RGVzY3JpcHRvci5mb3JQcmltYXJ5KHRoaXMpLCBBY3Rpb25FZGl0b3JTdWJtaXREZXNjcmlwdG9yLmZvclNlY29uZGFyeSh0aGlzKSk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBlZGl0b3JUaXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvclRpdGxlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yRGVzY3JpcHRvcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2VkaXRvckRlc2NyaXB0b3I7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBkaWFsb2dTaXplKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlhbG9nU2l6ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGRpYWxvZ0NsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RpYWxvZ0NsYXNzTmFtZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGhhc0ZldGNoTm90aWZpY2F0aW9uU3VjY2VzcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0ZldGNoTm90aWZpY2F0aW9uU3VjY2VzcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGZldGNoTm90aWZpY2F0aW9uU3VjY2Vzc1RpdGxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzVGl0bGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzTWVzc2FnZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGRhdGFQcm92aWRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFQcm92aWRlcjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IHJ1bkZ1bmN0aW9uKCk6IChjdHg6IEFjdGlvbkNvbnRleHQ8VCwgdW5rbm93bj4pID0+IE9ic2VydmFibGU8VD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1J1biBmdW5jdGlvbiBjYW5ub3QgYmUgdXNlZCBpbiBlZGl0b3IgYWN0aW9uLiBVc2Ugc3VibWl0IGZ1bmN0aW9uIGluc3RlYWQhJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBmZXRjaEZ1bmN0aW9uKCk6IChjdHg6IEFjdGlvbkNvbnRleHQ8VCwgdW5rbm93bj4pID0+IE9ic2VydmFibGU8VD4ge1xuICAgICAgICBpZiAoIXRoaXMuX2ZldGNoRnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBjdHggPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoYEZldGNoIGZ1bmN0aW9uIGlzIG5vdCBwcm92aWRlZCBmb3IgZnVuY3Rpb24gJHt0aGlzLl9hY3Rpb25OYW1lTG9uZ30sIHVzaW5nIGRlZmF1bHQgYW5kIHJldHVybmluZyBjb250ZXh0IGl0ZW1gLCBjdHgucGFyYW1ldGVycz8uaXRlbSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG9mKGN0eC5wYXJhbWV0ZXJzPy5pdGVtID8gY3R4LnBhcmFtZXRlcnMuaXRlbSA6ICh7fSBhcyBUKSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9mZXRjaEZ1bmN0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc3VibWl0RnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdWJtaXRGdW5jdGlvbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGVkaXRvckFjdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lZGl0b3JBY3Rpb25zO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZWRpdG9yQ29tcG9uZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZWRpdG9yQ29tcG9uZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRWRpdG9yVGl0bGUodGl0bGU6IHN0cmluZyB8IG51bGwpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZWRpdG9yVGl0bGUgPSB0aXRsZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHdpdGhEYXRhUHJvdmlkZXIoZGF0YVByb3ZpZGVyOiBJRWRpdG9yRGF0YVByb3ZpZGVyPFQsIGFueT4pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gZGF0YVByb3ZpZGVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aFNlcnZpY2VUeXBlPFM+KHNlcnZpY2VUeXBlOiBUeXBlPFM+KTogdGhpcyB7XG4gICAgICAgIGlmICghdGhpcy5fbW9kZWwpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHNldCBkYXRhIHByb3ZpZGVyIGlmIG5vIG1vZGVsIHR5cGUgaXMgcHJvdmlkZWQgZm9yIGFjdGlvbiAke3RoaXMuX2FjdGlvbk5hbWV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gbmV3IEVkaXRvckRhdGFQcm92aWRlcih0aGlzLl9tb2RlbC50eXBlLCBzZXJ2aWNlVHlwZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGlhbG9nU2l6ZShzaXplID0gU3R5bGVTaXplRW51bS5Ob3JtYWwpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fZGlhbG9nU2l6ZSA9IHNpemU7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoRGlhbG9nQ2xhc3NOYW1lKGNsYXNzTmFtZTogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2RpYWxvZ0NsYXNzTmFtZSA9IGNsYXNzTmFtZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHdpdGhSdW5GdW5jdGlvbjxTPihmbjogKGN0eDogQWN0aW9uQ29udGV4dDxULCBTPikgPT4gT2JzZXJ2YWJsZTxUPik6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoU3VibWl0RnVuY3Rpb24oZm4gYXMgKGN0eDogQWN0aW9uQ29udGV4dDxULCBTPikgPT4gT2JzZXJ2YWJsZTxUPik7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhGZXRjaEZ1bmN0aW9uPFM+KGZuOiAoY3R4OiBBY3Rpb25Db250ZXh0PFQsIFM+KSA9PiBPYnNlcnZhYmxlPFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2ZldGNoRnVuY3Rpb24gPSBmbjtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhTdWJtaXRGdW5jdGlvbjxTPihmbjogKGN0eDogQWN0aW9uQ29udGV4dDxULCBTPikgPT4gT2JzZXJ2YWJsZTxUPik6IHRoaXMge1xuICAgICAgICB0aGlzLl9zdWJtaXRGdW5jdGlvbiA9IGZuO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEZldGNoTm90aWZpY2F0aW9uRXJyb3IodGl0bGU/OiBzdHJpbmcsIG1lc3NhZ2U/OiBzdHJpbmcsIGhhc05vdGlmaWNhdGlvbiA9IHRydWUpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5faGFzRmV0Y2hOb3RpZmljYXRpb25TdWNjZXNzID0gaGFzTm90aWZpY2F0aW9uO1xuICAgICAgICB0aGlzLl9mZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3NUaXRsZSA9IHRpdGxlO1xuICAgICAgICB0aGlzLl9mZXRjaE5vdGlmaWNhdGlvblN1Y2Nlc3NNZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhFZGl0b3JBY3Rpb24oYWN0aW9uOiBBY3Rpb25EZXNjcmlwdG9yPFQ+KTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2VkaXRvckFjdGlvbnMucHVzaChhY3Rpb24pO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVkaXRvckFjdGlvbnMoYWN0aW9uczogQWN0aW9uRGVzY3JpcHRvcjxUPltdKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX2VkaXRvckFjdGlvbnMgPSBhY3Rpb25zO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aEVkaXRvckNvbXBvbmVudChlZGl0b3JDb21wb25lbnQ6IFR5cGU8YW55Pik6IHRoaXMge1xuICAgICAgICB0aGlzLl9lZGl0b3JDb21wb25lbnQgPSBlZGl0b3JDb21wb25lbnQ7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3I8VD4gZXh0ZW5kcyBBY3Rpb25EZXNjcmlwdG9yPFQ+IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9lZGl0b3JBY3Rpb246IEFjdGlvbkVkaXRvckRlc2NyaXB0b3I8VD47XG4gICAgcHJpdmF0ZSByZWFkb25seSBfc3VibWl0VHlwZTogQWN0aW9uRWRpdG9yU3VibWl0VHlwZUVudW07XG5cbiAgICBjb25zdHJ1Y3RvcihlZGl0b3JBY3Rpb246IEFjdGlvbkVkaXRvckRlc2NyaXB0b3I8VD4sIHN1Ym1pdFR5cGUgPSBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5TdWJtaXQpIHtcbiAgICAgICAgc3VwZXIoZWRpdG9yQWN0aW9uLm1vZGVsLCBzdWJtaXRUeXBlID09PSBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5TdWJtaXQgPyBgJHtlZGl0b3JBY3Rpb24uYWN0aW9uTmFtZX0uc3VibWl0YCA6IGAke2VkaXRvckFjdGlvbi5hY3Rpb25OYW1lfS5jYW5jZWxgKTtcbiAgICAgICAgdGhpcy5fZWRpdG9yQWN0aW9uID0gZWRpdG9yQWN0aW9uO1xuICAgICAgICB0aGlzLl9zdWJtaXRUeXBlID0gc3VibWl0VHlwZTtcbiAgICAgICAgdGhpcy5fcG9zaXRpb24gPSBBY3Rpb25Qb3NpdGlvbkVudW0uRm9vdGVyUmlnaHQ7XG5cbiAgICAgICAgdGhpcy5idXR0b24uc3R5bGVDbGFzcy53aXRoQWN0aW9uTGV2ZWwoZWRpdG9yQWN0aW9uLmxldmVsKS53aXRoVGV4dEJ1dHRvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgcHJpbWFyeSBhY3Rpb24gd2l0aCBwcmltYXJ5IGJ1dHRvbiBzdHlsZVxuICAgICAqIEBwYXJhbSBlZGl0b3JBY3Rpb25cbiAgICAgKiBAcGFyYW0gc3VibWl0VHlwZVxuICAgICAqL1xuICAgIHN0YXRpYyBmb3JQcmltYXJ5PFQ+KGVkaXRvckFjdGlvbjogQWN0aW9uRWRpdG9yRGVzY3JpcHRvcjxUPiwgc3VibWl0VHlwZSA9IEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLlN1Ym1pdCk6IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3I8VD4ge1xuICAgICAgICByZXR1cm4gbmV3IEFjdGlvbkVkaXRvclN1Ym1pdERlc2NyaXB0b3IoZWRpdG9yQWN0aW9uLCBzdWJtaXRUeXBlKS53aXRoQnV0dG9uRGVzY3JpcHRvcihuZXcgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcigpLndpdGhTdHlsZUNsYXNzKG5ldyBCdXR0b25TdHlsZUJ1aWxkZXIoKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIGNyZWF0ZXMgc2Vjb25kYXJ5IGJ1dHRvbiB3aXRoIHRleHQgYnV0dG9uIHN0eWxlXG4gICAgICogQHBhcmFtIGVkaXRvckFjdGlvblxuICAgICAqIEBwYXJhbSBzdWJtaXRUeXBlXG4gICAgICovXG4gICAgc3RhdGljIGZvclNlY29uZGFyeTxUPihlZGl0b3JBY3Rpb246IEFjdGlvbkVkaXRvckRlc2NyaXB0b3I8VD4sIHN1Ym1pdFR5cGUgPSBBY3Rpb25FZGl0b3JTdWJtaXRUeXBlRW51bS5DYW5jZWwpOiBBY3Rpb25FZGl0b3JTdWJtaXREZXNjcmlwdG9yPFQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBBY3Rpb25FZGl0b3JTdWJtaXREZXNjcmlwdG9yKGVkaXRvckFjdGlvbiwgc3VibWl0VHlwZSkud2l0aEJ1dHRvbkRlc2NyaXB0b3IoXG4gICAgICAgICAgICBuZXcgQWN0aW9uQnV0dG9uRGVzY3JpcHRvcigpLndpdGhTdHlsZUNsYXNzKG5ldyBCdXR0b25TdHlsZUJ1aWxkZXIoKS53aXRoVGV4dEJ1dHRvbigpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc3VibWl0VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N1Ym1pdFR5cGU7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgQWN0aW9uRWRpdG9yRGV0YWlsc0Rlc2NyaXB0b3I8VD4gZXh0ZW5kcyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yPFQ+IHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTl9OQU1FID0gJ2RldGFpbHMnO1xuXG4gICAgY29uc3RydWN0b3IoZWRpdG9yRGVzY3JpcHRvcjogRWRpdG9yRGVzY3JpcHRvcjxUPikge1xuICAgICAgICBzdXBlcihlZGl0b3JEZXNjcmlwdG9yLCBBY3Rpb25FZGl0b3JEZXRhaWxzRGVzY3JpcHRvci5BQ1RJT05fTkFNRSk7XG4gICAgICAgIHRoaXMud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Sb3dDbGljayk7XG4gICAgICAgIHRoaXMud2l0aFJvdXRlVHJpZ2dlcignOml0ZW1JZCcpO1xuICAgICAgICB0aGlzLndpdGhGZXRjaEZ1bmN0aW9uKEFjdGlvbkRhdGFQcm92aWRlclV0aWwucnVuRmV0Y2hPckZhaWwpO1xuXG4gICAgICAgIHRoaXMud2l0aEVkaXRvckFjdGlvbnMoW25ldyBBY3Rpb25FZGl0b3JTdWJtaXREZXNjcmlwdG9yKHRoaXMsIEFjdGlvbkVkaXRvclN1Ym1pdFR5cGVFbnVtLkNhbmNlbCldKTtcbiAgICAgICAgdGhpcy53aXRoVGFibGV2aWV3Q2F0ZWdvcnkoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuREVUQUlMUyk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHdpdGhTZXJ2aWNlVHlwZTxTPihzZXJ2aWNlVHlwZTogVHlwZTxTPik6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoU2VydmljZUZldGNoRnVuY3Rpb24oc2VydmljZVR5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU2VydmljZUZldGNoRnVuY3Rpb248Uz4oc2VydmljZVR5cGU6IFR5cGU8Uz4sIGZldGNoRm4/OiAoaWQ6IElkVHlwZSwgc2VydmljZT86IFMpID0+IE9ic2VydmFibGU8VD4pOiB0aGlzIHtcbiAgICAgICAgY29uc3QgZGF0YVByb3ZpZGVyID0gbmV3IEVkaXRvckRhdGFQcm92aWRlcih0aGlzLl9tb2RlbCEudHlwZSwgc2VydmljZVR5cGUpO1xuICAgICAgICBpZiAoZmV0Y2hGbikge1xuICAgICAgICAgICAgZGF0YVByb3ZpZGVyLndpdGhGZXRjaChmZXRjaEZuKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBkYXRhUHJvdmlkZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3I8VD4gZXh0ZW5kcyBBY3Rpb25FZGl0b3JEZXNjcmlwdG9yPFQ+IHtcbiAgICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFDVElPTl9OQU1FID0gJ2FkZCc7XG5cbiAgICBjb25zdHJ1Y3RvcihlZGl0b3JEZXNjcmlwdG9yOiBFZGl0b3JEZXNjcmlwdG9yPFQ+KSB7XG4gICAgICAgIHN1cGVyKGVkaXRvckRlc2NyaXB0b3IsIEFjdGlvbkVkaXRvckFkZERlc2NyaXB0b3IuQUNUSU9OX05BTUUpO1xuICAgICAgICB0aGlzLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uVG9vbGJhckxlZnQpO1xuICAgICAgICB0aGlzLndpdGhSb3V0ZVRyaWdnZXIoJ2FkZCcpO1xuICAgICAgICB0aGlzLndpdGhTdWJtaXRGdW5jdGlvbihBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLnJ1bkNyZWF0ZU9yRmFpbCk7XG5cbiAgICAgICAgdGhpcy5idXR0b24ud2l0aEljb24oJ3BpIHBpLXBsdXMnKTtcbiAgICAgICAgdGhpcy53aXRoVGFibGV2aWV3Q2F0ZWdvcnkoVGFibGV2aWV3QWN0aW9uRGVmYXVsdENhdGVnb3JpZXMuQUREKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aFNlcnZpY2VUeXBlPFM+KHNlcnZpY2VUeXBlOiBUeXBlPFM+KTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhTZXJ2aWNlU3VibWl0RnVuY3Rpb24oc2VydmljZVR5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU2VydmljZVN1Ym1pdEZ1bmN0aW9uPFM+KHNlcnZpY2VUeXBlOiBUeXBlPFM+LCBjcmVhdGVGbj86IChpdGVtPzogVCwgc2VydmljZT86IFMpID0+IE9ic2VydmFibGU8VD4sIGZldGNoRm4/OiAoaWQ6IElkVHlwZSwgc2VydmljZT86IFMpID0+IE9ic2VydmFibGU8VD4pOiB0aGlzIHtcbiAgICAgICAgY29uc3QgZGF0YVByb3ZpZGVyID0gbmV3IEVkaXRvckRhdGFQcm92aWRlcih0aGlzLl9tb2RlbCEudHlwZSwgc2VydmljZVR5cGUpO1xuICAgICAgICBpZiAoY3JlYXRlRm4pIHtcbiAgICAgICAgICAgIGRhdGFQcm92aWRlci53aXRoQ3JlYXRlKGNyZWF0ZUZuKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZmV0Y2hGbikge1xuICAgICAgICAgICAgZGF0YVByb3ZpZGVyLndpdGhGZXRjaChmZXRjaEZuKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9kYXRhUHJvdmlkZXIgPSBkYXRhUHJvdmlkZXI7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFjdGlvbkVkaXRvckVkaXREZXNjcmlwdG9yPFQ+IGV4dGVuZHMgQWN0aW9uRWRpdG9yRGVzY3JpcHRvcjxUPiB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBQ1RJT05fTkFNRSA9ICdlZGl0JztcblxuICAgIGNvbnN0cnVjdG9yKGVkaXRvckRlc2NyaXB0b3I6IEVkaXRvckRlc2NyaXB0b3I8VD4pIHtcbiAgICAgICAgc3VwZXIoZWRpdG9yRGVzY3JpcHRvciwgQWN0aW9uRWRpdG9yRWRpdERlc2NyaXB0b3IuQUNUSU9OX05BTUUpO1xuICAgICAgICB0aGlzLndpdGhQb3NpdGlvbihBY3Rpb25Qb3NpdGlvbkVudW0uUm93SW5saW5lKTtcbiAgICAgICAgdGhpcy5idXR0b24uc3R5bGVDbGFzcy53aXRoU2l6ZShTdHlsZVNpemVFbnVtLlNtYWxsKTtcbiAgICAgICAgdGhpcy53aXRoUm91dGVUcmlnZ2VyKCc6aXRlbUlkL2VkaXQnKTtcbiAgICAgICAgdGhpcy53aXRoRmV0Y2hGdW5jdGlvbihBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLnJ1bkZldGNoT3JGYWlsKTtcbiAgICAgICAgdGhpcy53aXRoU3VibWl0RnVuY3Rpb24oQWN0aW9uRGF0YVByb3ZpZGVyVXRpbC5ydW5VcGRhdGVPckZhaWwpO1xuICAgICAgICB0aGlzLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5FRElUKTtcbiAgICAgICAgdGhpcy5idXR0b24ud2l0aExhYmVsKG51bGwpLndpdGhJY29uKCdwaSBwaS1wZW5jaWwnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3ZlcnJpZGUgd2l0aFNlcnZpY2VUeXBlPFM+KHNlcnZpY2VUeXBlOiBUeXBlPFM+KTogdGhpcyB7XG4gICAgICAgIHJldHVybiB0aGlzLndpdGhTZXJ2aWNlU3VibWl0RnVuY3Rpb24oc2VydmljZVR5cGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3aXRoU2VydmljZVN1Ym1pdEZ1bmN0aW9uPFM+KFxuICAgICAgICBzZXJ2aWNlVHlwZTogVHlwZTxTPixcbiAgICAgICAgdXBkYXRlRm4/OiAoaWQ6IElkVHlwZSwgaXRlbT86IFQsIHNlcnZpY2U/OiBTKSA9PiBPYnNlcnZhYmxlPFQ+LFxuICAgICAgICBmZXRjaEZuPzogKGlkOiBJZFR5cGUsIHNlcnZpY2U/OiBTKSA9PiBPYnNlcnZhYmxlPFQ+XG4gICAgKTogdGhpcyB7XG4gICAgICAgIGNvbnN0IGRhdGFQcm92aWRlciA9IG5ldyBFZGl0b3JEYXRhUHJvdmlkZXIodGhpcy5fbW9kZWwhLnR5cGUsIHNlcnZpY2VUeXBlKTtcbiAgICAgICAgaWYgKHVwZGF0ZUZuKSB7XG4gICAgICAgICAgICBkYXRhUHJvdmlkZXIud2l0aFVwZGF0ZSh1cGRhdGVGbik7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGZldGNoRm4pIHtcbiAgICAgICAgICAgIGRhdGFQcm92aWRlci53aXRoRmV0Y2goZmV0Y2hGbik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gZGF0YVByb3ZpZGVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25EZWxldGVEZXNjcmlwdG9yPFQ+IGV4dGVuZHMgQWN0aW9uRGVzY3JpcHRvcjxUPiB7XG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBBQ1RJT05fTkFNRSA9ICdkZWxldGUnO1xuXG4gICAgY29uc3RydWN0b3IobW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxUPikge1xuICAgICAgICBzdXBlcihtb2RlbCwgQWN0aW9uRGVsZXRlRGVzY3JpcHRvci5BQ1RJT05fTkFNRSk7XG4gICAgICAgIHRoaXMud2l0aFBvc2l0aW9uKEFjdGlvblBvc2l0aW9uRW51bS5Sb3dJbmxpbmUpO1xuICAgICAgICB0aGlzLmJ1dHRvbi5zdHlsZUNsYXNzLndpdGhTaXplKFN0eWxlU2l6ZUVudW0uU21hbGwpO1xuICAgICAgICB0aGlzLndpdGhSdW5GdW5jdGlvbihBY3Rpb25EYXRhUHJvdmlkZXJVdGlsLnJ1bkRlbGV0ZU9yRmFpbCk7XG4gICAgICAgIHRoaXMuYnV0dG9uLnN0eWxlQ2xhc3Mud2l0aEFjdGlvbkxldmVsKFN0eWxlTGV2ZWxFbnVtLkRhbmdlcik7XG4gICAgICAgIHRoaXMud2l0aFJ1bkNvbmZpcm1hdGlvbigpO1xuICAgICAgICB0aGlzLndpdGhUYWJsZXZpZXdDYXRlZ29yeShUYWJsZXZpZXdBY3Rpb25EZWZhdWx0Q2F0ZWdvcmllcy5ERUxFVEUpO1xuICAgICAgICB0aGlzLmJ1dHRvbi53aXRoTGFiZWwobnVsbCkud2l0aEljb24oJ3BpIHBpLXRyYXNoJyk7XG4gICAgfVxuXG4gICAgcHVibGljIG92ZXJyaWRlIHdpdGhTZXJ2aWNlVHlwZTxTPihzZXJ2aWNlVHlwZTogVHlwZTxTPik6IHRoaXMge1xuICAgICAgICByZXR1cm4gdGhpcy53aXRoU2VydmljZURlbGV0ZUZ1bmN0aW9uKHNlcnZpY2VUeXBlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFNlcnZpY2VEZWxldGVGdW5jdGlvbjxTPihzZXJ2aWNlVHlwZTogVHlwZTxTPiwgZGVsZXRlRm4/OiAoaWQ6IElkVHlwZSwgaXRlbT86IFQsIHNlcnZpY2U/OiBTKSA9PiBPYnNlcnZhYmxlPFQ+KTogdGhpcyB7XG4gICAgICAgIGNvbnN0IGRhdGFQcm92aWRlciA9IG5ldyBFZGl0b3JEYXRhUHJvdmlkZXIodGhpcy5fbW9kZWwhLnR5cGUsIHNlcnZpY2VUeXBlKTtcbiAgICAgICAgaWYgKGRlbGV0ZUZuKSB7XG4gICAgICAgICAgICBkYXRhUHJvdmlkZXIud2l0aERlbGV0ZShkZWxldGVGbik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZGF0YVByb3ZpZGVyID0gZGF0YVByb3ZpZGVyO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBY3Rpb25MaW5rRGVzY3JpcHRvcjxUPiBleHRlbmRzIEFjdGlvbkRlc2NyaXB0b3I8VD4ge1xuICAgIHByaXZhdGUgX3VybCA9ICcnO1xuICAgIHByaXZhdGUgX3BhdGhTZWdtZW50czogc3RyaW5nW10gPSBbXTtcbiAgICBwcml2YXRlIF9xdWVyeVBhcmFtcz86IFBhcmFtcztcbiAgICBwcml2YXRlIF9xdWVyeVBhcmFtc0hhbmRsaW5nPzogUXVlcnlQYXJhbXNIYW5kbGluZztcbiAgICBwcml2YXRlIF9yZXBsYWNlVXJsID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfdGFyZ2V0ID0gJ19zZWxmJztcbiAgICBwcml2YXRlIF9pc1N0eWxlTGluayA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IobW9kZWw6IE1vZGVsRGVzY3JpcHRvcjxUPiB8IG51bGwgPSBudWxsLCBhY3Rpb25OYW1lID0gJ2xpbmsnKSB7XG4gICAgICAgIHN1cGVyKG1vZGVsLCBhY3Rpb25OYW1lKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHVybCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fdXJsO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcGF0aFNlZ21lbnRzKCk6IHN0cmluZ1tdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhdGhTZWdtZW50cztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHF1ZXJ5UGFyYW1zKCk6IFBhcmFtcyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9xdWVyeVBhcmFtcztcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHF1ZXJ5UGFyYW1zSGFuZGxpbmcoKTogUXVlcnlQYXJhbXNIYW5kbGluZyB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9xdWVyeVBhcmFtc0hhbmRsaW5nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgcmVwbGFjZVVybCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlcGxhY2VVcmw7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0YXJnZXQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhcmdldDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGlzU3R5bGVMaW5rKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTdHlsZUxpbms7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhIcmVmKHVybDogc3RyaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3VybCA9IHVybDtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHdpdGhSb3V0ZXJMaW5rKC4uLnBhdGhTZWdtZW50czogc3RyaW5nW10pOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fcGF0aFNlZ21lbnRzID0gcGF0aFNlZ21lbnRzO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFF1ZXJ5UGFyYW1zKHF1ZXJ5UGFyYW1zOiBQYXJhbXMsIHF1ZXJ5UGFyYW1zSGFuZGxpbmc/OiBRdWVyeVBhcmFtc0hhbmRsaW5nKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3F1ZXJ5UGFyYW1zID0gcXVlcnlQYXJhbXM7XG4gICAgICAgIHRoaXMuX3F1ZXJ5UGFyYW1zSGFuZGxpbmcgPSBxdWVyeVBhcmFtc0hhbmRsaW5nO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFJlcGxhY2VVcmwocmVwbGFjZVVybCA9IGZhbHNlKTogdGhpcyB7XG4gICAgICAgIHRoaXMuX3JlcGxhY2VVcmwgPSByZXBsYWNlVXJsO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFRhcmdldCh0YXJnZXQ6ICdfc2VsZicgfCAnX2JsYW5rJyA9ICdfc2VsZicpOiB0aGlzIHtcbiAgICAgICAgdGhpcy5fdGFyZ2V0ID0gdGFyZ2V0O1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgd2l0aFN0eWxlTGluayhpc1N0eWxlTGluazogYm9vbGVhbik6IHRoaXMge1xuICAgICAgICB0aGlzLl9pc1N0eWxlTGluayA9IGlzU3R5bGVMaW5rO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG59XG4iXX0=