@fundamental-ngx/core 0.52.2-rc.2 → 0.52.2-rc.4

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.
@@ -161,16 +161,15 @@ export class WizardComponent {
161
161
  }
162
162
  /** @hidden */
163
163
  _getWizardFooterHeight() {
164
- const wizard = this._elRef.nativeElement;
165
- let retVal;
166
- if (wizard.querySelector('.' + BAR_FOOTER_CLASS)) {
167
- retVal = wizard.querySelector('.' + BAR_FOOTER_CLASS).offsetHeight;
168
- }
169
- else if (wizard.querySelector('.' + BAR_FLOATING_FOOTER_CLASS)) {
170
- retVal = wizard.querySelector('.' + BAR_FLOATING_FOOTER_CLASS).offsetHeight;
171
- }
172
- else {
173
- retVal = 0;
164
+ let retVal = 0;
165
+ if (this._dialogBodyComponent) {
166
+ const dialogBody = this._dialogBodyComponent.elementRef.nativeElement;
167
+ if (dialogBody.querySelector('.' + BAR_FOOTER_CLASS)) {
168
+ retVal = dialogBody.querySelector('.' + BAR_FOOTER_CLASS).offsetHeight;
169
+ }
170
+ else if (dialogBody.querySelector('.' + BAR_FLOATING_FOOTER_CLASS)) {
171
+ retVal = dialogBody.querySelector('.' + BAR_FLOATING_FOOTER_CLASS).offsetHeight;
172
+ }
174
173
  }
175
174
  return retVal;
176
175
  }
@@ -179,9 +178,10 @@ export class WizardComponent {
179
178
  let retVal = 0;
180
179
  if (this._dialogBodyComponent) {
181
180
  const dialogBody = this._dialogBodyComponent.elementRef.nativeElement;
181
+ const dialogComponent = dialogBody.closest('fd-dialog');
182
182
  if (dialogBody.tagName.toLowerCase() === 'fd-dialog-body') {
183
183
  this._dialogBodyComponent.dialogConfig.verticalPadding = false;
184
- const dialogBodyTitle = dialogBody.querySelector('.fd-title--h2');
184
+ const dialogBodyTitle = dialogComponent.querySelector('.fd-title--h2');
185
185
  if (dialogBodyTitle) {
186
186
  retVal = dialogBodyTitle.offsetHeight;
187
187
  }
@@ -559,4 +559,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
559
559
  type: HostListener,
560
560
  args: ['window:resize']
561
561
  }] } });
562
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS93aXphcmQvd2l6YXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS93aXphcmQvd2l6YXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBRVQsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFZLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9B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LGFBQWEsOEVBQUUsa0JBQWtCLCtJQUFFLGdCQUFnQjs7MkZBRXhFLGVBQWU7a0JBcEIzQixTQUFTOytCQUNJLFdBQVcsaUJBR04saUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUCxhQUFhO3dCQUNiOzRCQUNJLE9BQU8sRUFBRSxNQUFNOzRCQUNmLFdBQVcsaUJBQWlCO3lCQUMvQjtxQkFDSixRQUNLO3dCQUNGLElBQUksRUFBRSxRQUFRO3dCQUNkLG1CQUFtQixFQUFFLGtDQUFrQztxQkFDMUQsY0FDVyxJQUFJLFdBQ1AsQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLENBQUM7OzBCQW1GN0UsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx3QkFBd0I7eUNBM0VoRCxjQUFjO3NCQURiLEtBQUs7Z0JBUU4sYUFBYTtzQkFEWixLQUFLO2dCQVFOLGtCQUFrQjtzQkFGakIsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxzQ0FBc0M7Z0JBS25ELGtCQUFrQjtzQkFEakIsS0FBSztnQkFRTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sS0FBSztzQkFESixlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFLM0QsV0FBVztzQkFEVixZQUFZO3VCQUFDLDBCQUEwQjtnQkFLeEMsYUFBYTtzQkFEWixlQUFlO3VCQUFDLHNCQUFzQjtnQkFLdkMsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUs3QixTQUFTO3NCQURSLFNBQVM7dUJBQUMsa0JBQWtCO2dCQW9DN0IsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnVsbGFibGUsIFRhYmJhYmxlRWxlbWVudFNlcnZpY2UsIHNjcm9sbFRvcCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IERpYWxvZ0JvZHlDb21wb25lbnQsIEZEX0RJQUxPR19CT0RZX0NPTVBPTkVOVCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgU2Nyb2xsU3B5RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbC1zcHknO1xuaW1wb3J0IHsgU2Nyb2xsYmFyRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbGJhcic7XG5pbXBvcnQgeyByZXNvbHZlVHJhbnNsYXRpb25TaWduYWwgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBQ1RJVkVfU1RFUF9TVEFUVVMsIENPTVBMRVRFRF9TVEVQX1NUQVRVUywgQ1VSUkVOVF9TVEVQX1NUQVRVUywgVVBDT01JTkdfU1RFUF9TVEFUVVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBXaXphcmRDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi93aXphcmQtY29udGVudC93aXphcmQtY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV0laQVJEIH0gZnJvbSAnLi93aXphcmQtaW5qZWN0aW9uLXRva2VuJztcbmltcG9ydCB7IFdpemFyZFByb2dyZXNzQmFyRGlyZWN0aXZlIH0gZnJvbSAnLi93aXphcmQtcHJvZ3Jlc3MtYmFyL3dpemFyZC1wcm9ncmVzcy1iYXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFdpemFyZFN0ZXBDb21wb25lbnQgfSBmcm9tICcuL3dpemFyZC1zdGVwL3dpemFyZC1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaXphcmRTZXJ2aWNlIH0gZnJvbSAnLi93aXphcmQuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBTVEVQX01JTl9XSURUSCA9IDE2ODtcbmV4cG9ydCBjb25zdCBTVEVQX1NUQUNLRURfVE9QX0NMQVNTID0gJ2ZkLXdpemFyZF9fc3RlcC0tc3RhY2tlZC10b3AnO1xuZXhwb3J0IGNvbnN0IFNURVBfU1RBQ0tFRF9DTEFTUyA9ICdmZC13aXphcmRfX3N0ZXAtLXN0YWNrZWQnO1xuZXhwb3J0IGNvbnN0IFNURVBfTk9fTEFCRUxfQ0xBU1MgPSAnZmQtd2l6YXJkX19zdGVwLS1uby1sYWJlbCc7XG5cbmV4cG9ydCBjb25zdCBXSVpBUkRfTkFWSUdBVElPTl9DTEFTUyA9ICdmZC13aXphcmRfX25hdmlnYXRpb24nO1xuZXhwb3J0IGNvbnN0IFdJWkFSRF9DT05URU5UX0NMQVNTID0gJ2ZkLXdpemFyZF9fY29udGVudCc7XG5leHBvcnQgY29uc3QgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTID0gJ2ZkLXdpemFyZC1jb250YWluZXItd3JhcHBlcic7XG5leHBvcnQgY29uc3QgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUyA9ICdmZC13aXphcmQtdGFsbC1jb250ZW50JztcbmV4cG9ydCBjb25zdCBTSEVMTEJBUl9DTEFTUyA9ICdmZC1zaGVsbGJhcic7XG5leHBvcnQgY29uc3QgQkFSX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZvb3Rlcic7XG5leHBvcnQgY29uc3QgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZsb2F0aW5nLWZvb3Rlcic7XG5cbmV4cG9ydCBsZXQgX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwO1xuZXhwb3J0IGxldCB0aW1lcjogYW55ID0gbnVsbDtcbmV4cG9ydCBjb25zdCBoYW5kbGVUaW1lb3V0UmVmZXJlbmNlID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmICh0aW1lciAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cbiAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBfZnJvbVNjcm9sbFRvQ3VycmVudFN0ZXAgPSBmYWxzZTtcbiAgICB9LCAxNTApO1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC13aXphcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93aXphcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi93aXphcmQuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFdpemFyZFNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFdJWkFSRCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBXaXphcmRDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICByb2xlOiAncmVnaW9uJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogJ2FyaWFMYWJlbCB8fCBfZGVmYXVsdEFyaWFMYWJlbCgpJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbU2Nyb2xsU3B5RGlyZWN0aXZlLCBDZGtTY3JvbGxhYmxlLCBTY3JvbGxiYXJEaXJlY3RpdmUsIE5nVGVtcGxhdGVPdXRsZXRdXG59KVxuZXhwb3J0IGNsYXNzIFdpemFyZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdG8gYXBwZW5kIHRoZSBzdGVwIHRvIHRoZSB3aXphcmQuIElmIGZhbHNlLCBlYWNoIHN0ZXAgd2lsbCBiZSBkaXNwbGF5ZWQgb24gYSBkaWZmZXJlbnQgcGFnZS5cbiAgICAgKiBEZWZhdWx0IGlzIHRydWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcHBlbmRUb1dpemFyZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gaGVpZ2h0IHRvIHVzZSBmb3IgdGhlIHdpemFyZCdzIGNvbnRlbnQgcGFuZS4gQnkgZGVmYXVsdCwgdGhpcyB2YWx1ZSBpcyBjYWxjKDEwMHZoIC0gMTQ0cHgpLCB3aGVyZSAxNDRweFxuICAgICAqIGlzIHRoZSBjb21iaW5lZCBoZWlnaHQgb2YgdGhlIHNoZWxsYmFyLCB3aXphcmQgaGVhZGVyIGFuZCB3aXphcmQgZm9vdGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29udGVudEhlaWdodDogTnVsbGFibGU8c3RyaW5nIHwgbnVsbD47XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCBhcHBseSByZXNwb25zaXZlIHBhZGRpbmdzIHN0eWxpbmcuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXdpemFyZC0tcmVzcG9uc2l2ZS1wYWRkaW5ncycpXG4gICAgcmVzcG9uc2l2ZVBhZGRpbmdzID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0byBkaXNwbGF5IGEgc3VtbWFyeSBzdGVwLiAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlTdW1tYXJ5U3RlcCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogYWRkaW5nIGFyaWEgbGFiZWwgdG8gdGhlIGNvbXBvbmVudFxuICAgICAqIElmIG5vdCBwcm92aWRlZCwgaXMgYmVpbmcgdHJhbnNsYXRlZCBieSBpMThuIHBhY2thZ2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFdpemFyZFN0ZXBDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBzdGVwczogUXVlcnlMaXN0PFdpemFyZFN0ZXBDb21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKFdpemFyZFByb2dyZXNzQmFyRGlyZWN0aXZlKVxuICAgIHByb2dyZXNzQmFyOiBXaXphcmRQcm9ncmVzc0JhckRpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihXaXphcmRDb250ZW50Q29tcG9uZW50KVxuICAgIHdpemFyZENvbnRlbnQ6IFdpemFyZENvbnRlbnRDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3dyYXBwZXJDb250YWluZXInKVxuICAgIHdyYXBwZXJDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKFNjcm9sbGJhckRpcmVjdGl2ZSlcbiAgICBzY3JvbGxiYXI6IFNjcm9sbGJhckRpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29udGVudFRlbXBsYXRlczogVGVtcGxhdGVSZWY8YW55PltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHN0YWNrZWRTdGVwc0xlZnQ6IFdpemFyZFN0ZXBDb21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGFja2VkU3RlcHNSaWdodDogV2l6YXJkU3RlcENvbXBvbmVudFtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZGVmYXVsdEFyaWFMYWJlbCA9IHJlc29sdmVUcmFuc2xhdGlvblNpZ25hbCgnY29yZVdpemFyZC5hcmlhTGFiZWwnKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3RlcEV2ZW50U3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ByZXZpb3VzV2lkdGg6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFiYmFibGVTZXJ2aWNlID0gaW5qZWN0KFRhYmJhYmxlRWxlbWVudFNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChGRF9ESUFMT0dfQk9EWV9DT01QT05FTlQpIHByaXZhdGUgX2RpYWxvZ0JvZHlDb21wb25lbnQ6IERpYWxvZ0JvZHlDb21wb25lbnRcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICAgIHJlc2l6ZUhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdpemFyZFdpZHRoID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgaWYgKCF0aGlzLl9wcmV2aW91c1dpZHRoIHx8IHdpemFyZFdpZHRoIDw9IHRoaXMuX3ByZXZpb3VzV2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3dpemFyZFNocmlua2luZygpO1xuICAgICAgICB9IGVsc2UgaWYgKHdpemFyZFdpZHRoID4gdGhpcy5fcHJldmlvdXNXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5fc2hyaW5rV2hpbGVBbnlTdGVwSXNUb29OYXJyb3coKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wcmV2aW91c1dpZHRoID0gd2l6YXJkV2lkdGg7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpLnN0eWxlLmhlaWdodCA9XG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2V0Q29udGFpbmVyQW5kVGFsbENvbnRlbnRIZWlnaHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zdWJzY3JpcHRpb25zLmNsb3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZml4ZXMgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvclxuICAgICAgICAgICAgdGhpcy5fc2V0Q29udGVudFRlbXBsYXRlcygpO1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZVN0ZXBPclN0YXR1c0NoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0dXBTdGVwRXZlbnRzKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9zZXR1cFN0ZXBFdmVudHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZVN0ZXBPclN0YXR1c0NoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMucmVzaXplSGFuZGxlcigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy53cmFwcGVyQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVRpbWVvdXRSZWZlcmVuY2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2Nyb2xsU3B5Q2hhbmdlKCRldmVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfZnJvbVNjcm9sbFRvQ3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdGVwLl9zdGVwSWQudG9TdHJpbmcoKSA9PT0gJGV2ZW50LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ1VSUkVOVF9TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0ZXAuX3N0ZXBJZCA8IHBhcnNlSW50KCRldmVudC5jaGlsZHJlblswXS5jaGlsZHJlblswXS5pZCwgMTApKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ09NUExFVEVEX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gVVBDT01JTkdfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2hyaW5rV2hpbGVBbnlTdGVwSXNUb29OYXJyb3coKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgdGhlIGhlaWdodCBvZiB0aGUgd2l6YXJkIGNvbnRlbnQgYnkgbG9va2luZyBmb3IgdGhlIGRvY3VtZW50J3Mgc2hlbGxiYXIsIHRoZSB3aXphcmRcbiAgICAgKiBuYXZpZ2F0aW9uIGFuZCB0aGUgd2l6YXJkIGZvb3RlciwgYW5kIGNhbGN1bGF0aW5nIHRoZSBoZWlnaHQgYmFzZWQgb24gdGhlaXIgcHJlc2VuY2UuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlQ29udGVudEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBsZXQgd2l6YXJkTmF2SGVpZ2h0ID0gMDtcbiAgICAgICAgY29uc3Qgc2hlbGxiYXJIZWlnaHQgPSB0aGlzLl9nZXRTaGVsbGJhckhlaWdodCgpO1xuICAgICAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFN0ZXBTdW1tYXJ5KCkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIHdpemFyZE5hdkhlaWdodCA9IHRoaXMuX2dldFdpemFyZE5hdkhlaWdodCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHdpemFyZEZvb3RlckhlaWdodCA9IHRoaXMuX2dldFdpemFyZEZvb3RlckhlaWdodCgpO1xuICAgICAgICBjb25zdCBkaWFsb2dPZmZzZXQgPSB0aGlzLl9nZXREaWFsb2dPZmZzZXQoKTtcblxuICAgICAgICByZXR1cm4gc2hlbGxiYXJIZWlnaHQgKyB3aXphcmROYXZIZWlnaHQgKyB3aXphcmRGb290ZXJIZWlnaHQgKyBkaWFsb2dPZmZzZXQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRTaGVsbGJhckhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy4nICsgU0hFTExCQVJfQ0xBU1MpPy5jbGllbnRIZWlnaHQgPz8gMDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFdpemFyZE5hdkhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB3aXphcmQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBsZXQgcmV0VmFsO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX05BVklHQVRJT05fQ0xBU1MpKSB7XG4gICAgICAgICAgICByZXRWYWwgPSB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfTkFWSUdBVElPTl9DTEFTUykuY2xpZW50SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0VmFsID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0V2l6YXJkRm9vdGVySGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHdpemFyZCA9IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGxldCByZXRWYWw7XG4gICAgICAgIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRk9PVEVSX0NMQVNTKSkge1xuICAgICAgICAgICAgcmV0VmFsID0gd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgQkFSX0ZPT1RFUl9DTEFTUykub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9IGVsc2UgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIEJBUl9GTE9BVElOR19GT09URVJfQ0xBU1MpKSB7XG4gICAgICAgICAgICByZXRWYWwgPSB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRkxPQVRJTkdfRk9PVEVSX0NMQVNTKS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXRWYWwgPSAwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXREaWFsb2dPZmZzZXQoKTogbnVtYmVyIHtcbiAgICAgICAgbGV0IHJldFZhbCA9IDA7XG4gICAgICAgIGlmICh0aGlzLl9kaWFsb2dCb2R5Q29tcG9uZW50KSB7XG4gICAgICAgICAgICBjb25zdCBkaWFsb2dCb2R5ID0gdGhpcy5fZGlhbG9nQm9keUNvbXBvbmVudC5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoZGlhbG9nQm9keS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdmZC1kaWFsb2ctYm9keScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9kaWFsb2dCb2R5Q29tcG9uZW50LmRpYWxvZ0NvbmZpZy52ZXJ0aWNhbFBhZGRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb25zdCBkaWFsb2dCb2R5VGl0bGUgPSBkaWFsb2dCb2R5LnF1ZXJ5U2VsZWN0b3IoJy5mZC10aXRsZS0taDInKTtcbiAgICAgICAgICAgICAgICBpZiAoZGlhbG9nQm9keVRpdGxlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldFZhbCA9IGRpYWxvZ0JvZHlUaXRsZS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldFZhbCA9IHJldFZhbCArIHdpbmRvdy5pbm5lckhlaWdodCAtIGRpYWxvZ0JvZHkub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldENvbnRhaW5lckFuZFRhbGxDb250ZW50SGVpZ2h0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCB3aXphcmQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBjb25zdCBjb21iaW5lZEhlaWdodCA9IHRoaXMuY29udGVudEhlaWdodCA/IHRoaXMuY29udGVudEhlaWdodCA6IHRoaXMuX2NhbGN1bGF0ZUNvbnRlbnRIZWlnaHQoKTtcbiAgICAgICAgaWYgKHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykpIHtcbiAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykuc3R5bGUuaGVpZ2h0ID1cbiAgICAgICAgICAgICAgICAnY2FsYygxMDB2aCAtICcgKyBjb21iaW5lZEhlaWdodCArICdweCknO1xuICAgICAgICB9XG4gICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yQWxsKCcuJyArIFdJWkFSRF9DT05URU5UX0NMQVNTKS5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBub2RlLnN0eWxlLmhlaWdodCA9ICdhdXRvJztcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKSkge1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MpLm9mZnNldEhlaWdodCA8XG4gICAgICAgICAgICAgICAgd2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTKS5vZmZzZXRIZWlnaHRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MpLnN0eWxlLmhlaWdodCA9XG4gICAgICAgICAgICAgICAgICAgICdjYWxjKDEwMHZoIC0gJyArIGNvbWJpbmVkSGVpZ2h0ICsgJ3B4KSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9UQUxMX0NPTlRFTlRfQ0xBU1MpLnN0eWxlLnBhZGRpbmdCb3R0b20gPSAnMjRweCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldHVwU3RlcEV2ZW50cygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgICAgIHN0ZXAuc3RlcENsaWNrZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGVwQ2xpY2tlZChldmVudCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBzdGVwLnN0YXR1c0NoYW5nZS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVTdGVwT3JTdGF0dXNDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBzdGVwLnN0ZXBJbmRpY2F0b3JJdGVtQ2xpY2tlZC5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0ZXBDbGlja2VkKGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8vIG5lZWQgdG8gY2FsbCB3aXphcmRTaHJpbmtpbmcgZm9yIGVhY2ggc3RlcCA8IDE2OHB4IG9uIGZpcnN0IGxvYWRcbiAgICAgICAgICAgIGlmIChzdGVwLndpemFyZExhYmVsICYmIHN0ZXAuZ2V0U3RlcENsaWVudFdpZHRoKCkgPCBTVEVQX01JTl9XSURUSCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3dpemFyZFNocmlua2luZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3dpemFyZFNocmlua2luZygpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXAgPSB0aGlzLl9nZXRDdXJyZW50U3RlcCgpO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBjdXJyZW50U3RlcCAmJlxuICAgICAgICAgICAgKCFjdXJyZW50U3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApICYmXG4gICAgICAgICAgICBjdXJyZW50U3RlcC53aXphcmRMYWJlbCAmJlxuICAgICAgICAgICAgY3VycmVudFN0ZXAuZ2V0U3RlcENsaWVudFdpZHRoKCkgPCBTVEVQX01JTl9XSURUSFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuX2hpZGVTb21lU3RlcChjdXJyZW50U3RlcCk7XG4gICAgICAgICAgICB0aGlzLl9zZXRTdGFja2VkVG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldENvbnRlbnRUZW1wbGF0ZXMoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHRlbXBsYXRlc0xlbmd0aCA9IHRoaXMuY29udGVudFRlbXBsYXRlcy5sZW5ndGg7XG4gICAgICAgIHRoaXMuY29udGVudFRlbXBsYXRlcyA9IFtdO1xuICAgICAgICBsZXQgX3N0ZXBJZCA9IDA7XG4gICAgICAgIGNvbnN0IHN0ZXBzID0gdGhpcy5zdGVwcy50b0FycmF5KCk7XG4gICAgICAgIGZvciAoY29uc3Qgc3RlcCBvZiBzdGVwcykge1xuICAgICAgICAgICAgaWYgKHN0ZXAuY29udGVudCkge1xuICAgICAgICAgICAgICAgIGlmICghc3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5jb250ZW50LnRhbGxDb250ZW50ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC53aXphcmRDb250ZW50SWQgPSBfc3RlcElkLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzdGVwLl9zdGVwSWQgPSBfc3RlcElkO1xuICAgICAgICAgICAgX3N0ZXBJZCsrO1xuICAgICAgICAgICAgc3RlcC5zZXRGaW5hbFN0ZXAoZmFsc2UpO1xuICAgICAgICAgICAgLypcbiAgICAgICAgICAgICBJZiB0aGUgc3RlcCBpcyBjb21wbGV0ZWQgYW5kIGFwcGVuZFRvV2l6YXJkIGlzIHRydWUsIGhpZGUgdGhlIG5leHRTdGVwIGJ1dHRvbiwgdW5sZXNzIGl0J3MgdGhlIGxhc3Qgc3RlcCxcbiAgICAgICAgICAgICBvciBpZiB0aGVyZSdzIGEgc3VtbWFyeSBhbmQgaXQgaXMgdGhlIHNlY29uZCB0byBsYXN0IHN0ZXBcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHN0ZXAuY29tcGxldGVkICYmXG4gICAgICAgICAgICAgICAgdGhpcy5hcHBlbmRUb1dpemFyZCAmJlxuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudD8ubmV4dFN0ZXA/LmNhbkhpZGUgJiZcbiAgICAgICAgICAgICAgICBzdGVwICE9PSB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgc3RlcC5jb250ZW50Lm5leHRTdGVwLl9oaWRlRWxlbWVudCgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQ/Lm5leHRTdGVwICYmXG4gICAgICAgICAgICAgICAgKChzdGVwLmNvbXBsZXRlZCAmJiB0aGlzLmFwcGVuZFRvV2l6YXJkKSB8fFxuICAgICAgICAgICAgICAgICAgICAoc3RlcC52aXNpdGVkICYmIHN0ZXAuYnJhbmNoaW5nICYmIHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTKSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC5uZXh0U3RlcC5fc2hvd0VsZW1lbnQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwLnZpc2l0ZWQgfHxcbiAgICAgICAgICAgICAgICAoKHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTIHx8IHN0ZXAuc3RhdHVzID09PSBDT01QTEVURURfU1RFUF9TVEFUVVMpICYmIHN0ZXAuY29udGVudClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN0ZXAudmlzaXRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmICghc3RlcC5jb21wbGV0ZWQgfHwgIXRoaXMuYXBwZW5kVG9XaXphcmQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50U3RlcCA9ICF0aGlzLmFwcGVuZFRvV2l6YXJkICYmIHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTO1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0ZW1wbGF0ZXNMZW5ndGggfHwgaXNDdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMgPSBbc3RlcC5jb250ZW50LmNvbnRlbnRUZW1wbGF0ZV07XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgZm91bmQgbmVlZGVkIHN0ZXAsIGJyZWFrIHRoZSBjeWNsZSwgc2luY2UgaXQgbWlnaHQgc2V0IHdyb25nIHN0ZXAgbGF0ZXIuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0N1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcHBlbmRUb1dpemFyZCAmJiAoIXN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMucHVzaChzdGVwLmNvbnRlbnQuY29udGVudFRlbXBsYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXN0VmlzaWJsZVRlbXBsYXRlID0gc3RlcHNbdGhpcy5jb250ZW50VGVtcGxhdGVzLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAobGFzdFZpc2libGVUZW1wbGF0ZSAmJiBsYXN0VmlzaWJsZVRlbXBsYXRlLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIGxhc3RWaXNpYmxlVGVtcGxhdGUuY29udGVudC50YWxsQ29udGVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2V0RmluYWxTdGVwKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zY3JvbGxUb0N1cnJlbnRTdGVwKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hcHBlbmRUb1dpemFyZCkge1xuICAgICAgICAgICAgX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgJiYgKCFzdGVwLmlzU3VtbWFyeSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLndyYXBwZXJDb250YWluZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXS5jaGlsZHJlbltpbmRleF0gYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpemFyZE5hdmlnYXRpb25IZWlnaHQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgICAgICAgICAnLicgKyBXSVpBUkRfTkFWSUdBVElPTl9DTEFTU1xuICAgICAgICAgICAgICAgICAgICApLmNsaWVudEhlaWdodDtcblxuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3AodGhpcy53cmFwcGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQsIGNoaWxkLm9mZnNldFRvcCAtIHdpemFyZE5hdmlnYXRpb25IZWlnaHQpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudChpbmRleCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBzZXRUaW1lb3V0IG5lZWRlZCB0byBhbGxvdyBmb3Igc21vb3RoIHNjcm9sbCBhbmltYXRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQoaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSwgNTAwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fc2V0VXBTY3JvbGxMaXN0ZW5lcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KGluZGV4ID0gMCk6IHZvaWQge1xuICAgICAgICBjb25zdCBjb250ZW50Q29udGFpbmVyID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuZmQtd2l6YXJkX19jb250ZW50JylbaW5kZXhdO1xuICAgICAgICB0aGlzLl90YWJiYWJsZVNlcnZpY2UuZ2V0VGFiYmFibGVFbGVtZW50KGNvbnRlbnRDb250YWluZXIpPy5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0VXBTY3JvbGxMaXN0ZW5lcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy53cmFwcGVyQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVRpbWVvdXRSZWZlcmVuY2UsIGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2hpZGVTb21lU3RlcChjdXJyZW50U3RlcDogV2l6YXJkU3RlcENvbXBvbmVudCk6IHZvaWQge1xuICAgICAgICAvLyBJZiBhIHNtYWxsIHN0ZXAgd2FzIGZvdW5kLCBnZXQgdGhlIHN0ZXAgd2l0aCBhIHZpc2libGUgbGFiZWwgZnVydGhlc3QgYXdheSBmcm9tIHRoZSBjdXJyZW50IHN0ZXAgYW5kIGhpZGUgdGhlIGxhYmVsXG4gICAgICAgIGxldCBzdGVwc0FycmF5ID0gdGhpcy5zdGVwcy50b0FycmF5KCk7XG4gICAgICAgIHN0ZXBzQXJyYXkgPSBzdGVwc0FycmF5LmZpbHRlcigoc3RlcCkgPT4gIXN0ZXAuaGFzTGFiZWwoU1RFUF9OT19MQUJFTF9DTEFTUykpO1xuICAgICAgICBpZiAodGhpcy5zdGVwcy5sYXN0LmlzU3VtbWFyeSAmJiAhdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIHN0ZXBzQXJyYXkucG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0ZXBzQXJyYXkubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgbGV0IGN1cnJlbnRTdGVwSW5kZXggPSAwLFxuICAgICAgICAgICAgICAgIHN0ZXBUb0hpZGU7XG4gICAgICAgICAgICBpZiAoY3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50U3RlcEluZGV4ID0gc3RlcHNBcnJheS5pbmRleE9mKGN1cnJlbnRTdGVwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGN1cnJlbnRTdGVwSW5kZXggPiAoc3RlcHNBcnJheS5sZW5ndGggLSAxKSAvIDJcbiAgICAgICAgICAgICAgICA/IChzdGVwVG9IaWRlID0gc3RlcHNBcnJheVswXSlcbiAgICAgICAgICAgICAgICA6IChzdGVwVG9IaWRlID0gc3RlcHNBcnJheVtzdGVwc0FycmF5Lmxlbmd0aCAtIDFdKTtcbiAgICAgICAgICAgIHN0ZXBUb0hpZGUuZ2V0Q2xhc3NMaXN0KCkuYWRkKFNURVBfTk9fTEFCRUxfQ0xBU1MpO1xuICAgICAgICAgICAgc3RlcFRvSGlkZS5nZXRDbGFzc0xpc3QoKS5hZGQoU1RFUF9TVEFDS0VEX0NMQVNTKTtcbiAgICAgICAgICAgIGlmIChzdGVwc0FycmF5LmluZGV4T2Yoc3RlcFRvSGlkZSkgPCBjdXJyZW50U3RlcEluZGV4ICYmICF0aGlzLnN0YWNrZWRTdGVwc0xlZnQuaW5jbHVkZXMoc3RlcFRvSGlkZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc0xlZnQuc3BsaWNlKHRoaXMuc3RlcHMudG9BcnJheSgpLmluZGV4T2Yoc3RlcFRvSGlkZSksIDAsIHN0ZXBUb0hpZGUpO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwc0FycmF5LmluZGV4T2Yoc3RlcFRvSGlkZSkgPiBjdXJyZW50U3RlcEluZGV4ICYmXG4gICAgICAgICAgICAgICAgIXRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQuaW5jbHVkZXMoc3RlcFRvSGlkZSlcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQudW5zaGlmdChzdGVwVG9IaWRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0U3RhY2tlZFRvcCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY3VycmVudFN0ZXAgPSB0aGlzLl9nZXRDdXJyZW50U3RlcCgpO1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RlcC5zdGVwSW5kaWNhdG9yKSB7XG4gICAgICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5yZW1vdmUoU1RFUF9TVEFDS0VEX1RPUF9DTEFTUyk7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMudG9BcnJheSgpW2luZGV4ICsgMV0gPT09IGN1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXAuZ2V0Q2xhc3NMaXN0KCkuYWRkKFNURVBfU1RBQ0tFRF9UT1BfQ0xBU1MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnN0YWNrZWRTdGVwc0xlZnQuaW5jbHVkZXMoc3RlcCkgJiYgdGhpcy5zdGFja2VkU3RlcHNMZWZ0Lmxlbmd0aCA+PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNMZWZ0LnNwbGljZShpbmRleCwgMCwgc3RlcCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGVwSW5kaWNhdG9yLnNldFN0YWNrZWRJdGVtcyh0aGlzLnN0YWNrZWRTdGVwc0xlZnQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RlcEluZGljYXRvci5zdGFja2VkSXRlbXMkLnNldChbXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCkuc3RlcEluZGljYXRvcj8uc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfcmVzZXRTdGVwQ2xhc3NlcygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX1NUQUNLRURfVE9QX0NMQVNTKTtcbiAgICAgICAgICAgIHN0ZXAuZ2V0Q2xhc3NMaXN0KCkucmVtb3ZlKFNURVBfU1RBQ0tFRF9DTEFTUyk7XG4gICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX05PX0xBQkVMX0NMQVNTKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oYW5kbGVTdGVwT3JTdGF0dXNDaGFuZ2VzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5faXNDdXJyZW50U3RlcFN1bW1hcnkoKSAmJiAhdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NCYXIudmlzaWJsZSA9IGZhbHNlO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9zaG93U3VtbWFyeSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5wcm9ncmVzc0Jhci52aXNpYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuX3NldENvbnRlbnRUZW1wbGF0ZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3Nocmlua1doaWxlQW55U3RlcElzVG9vTmFycm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmFwcGVuZFRvV2l6YXJkKSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUhhbmRsZXIoKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5faXNDdXJyZW50U3RlcFN1bW1hcnkoKSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvQ3VycmVudFN0ZXAoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3NldEZpbmFsU3RlcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0RmluYWxTdGVwKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBsYXN0Tm9uU3VtbWFyeVN0ZXAgPSB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKTtcbiAgICAgICAgaWYgKGxhc3ROb25TdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMubGFzdC5pc1N1bW1hcnkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwcy5sYXN0LnJlbW92ZUZyb21Eb20oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsYXN0Tm9uU3VtbWFyeVN0ZXAuY29udGVudCkge1xuICAgICAgICAgICAgICAgIGxhc3ROb25TdW1tYXJ5U3RlcC5jb250ZW50LnRhbGxDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3ROb25TdW1tYXJ5U3RlcC5zZXRGaW5hbFN0ZXAodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Nob3dTdW1tYXJ5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgIGlmICghc3RlcC5pc1N1bW1hcnkpIHtcbiAgICAgICAgICAgICAgICBzdGVwLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzdW1tYXJ5ID0gdGhpcy5zdGVwcy5maW5kKChzdGVwKSA9PiBzdGVwLmlzU3VtbWFyeSk7XG4gICAgICAgIGlmIChzdW1tYXJ5KSB7XG4gICAgICAgICAgICBzdW1tYXJ5LmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzID0gW3N1bW1hcnkuY29udGVudC5jb250ZW50VGVtcGxhdGVdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0N1cnJlbnRTdGVwU3VtbWFyeSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMuc29tZSgoc3RlcCkgPT4gc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgJiYgc3RlcC5pc1N1bW1hcnkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q3VycmVudFN0ZXAoKTogV2l6YXJkU3RlcENvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmZpbHRlcihcbiAgICAgICAgICAgIChzdGVwKSA9PiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyB8fCBzdGVwLnN0YXR1cyA9PT0gQUNUSVZFX1NURVBfU1RBVFVTXG4gICAgICAgIClbMF07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpOiB2b2lkIHtcbiAgICAgICAgLy8gQWRkIHNtYWxsIGRlbGF5IGZvciBlbGVtZW50cyB0byByZW5kZXIgYXBwcm9wcmlhdGVseS5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc0xlZnQgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMuZmlyc3Quc3RlcEluZGljYXRvcj8uc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzTGVmdCk7XG4gICAgICAgICAgICB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKS5zdGVwSW5kaWNhdG9yPy5zZXRTdGFja2VkSXRlbXModGhpcy5zdGFja2VkU3RlcHNSaWdodCk7XG4gICAgICAgICAgICB0aGlzLl9yZXNldFN0ZXBDbGFzc2VzKCk7XG4gICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICB3aGlsZSAodGhpcy5fYW55U3RlcElzVG9vTmFycm93KCkgJiYgaSA8IHRoaXMuc3RlcHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICB0aGlzLl93aXphcmRTaHJpbmtpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYW55U3RlcElzVG9vTmFycm93KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5zb21lKChzdGVwKSA9PiBzdGVwLmdldFN0ZXBDbGllbnRXaWR0aCgpIDwgU1RFUF9NSU5fV0lEVEgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3RlcENsaWNrZWQoY2xpY2tlZFN0ZXA6IFdpemFyZFN0ZXBDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjbGlja2VkU3RlcCkge1xuICAgICAgICAgICAgY2xpY2tlZFN0ZXAgPSB0aGlzLnN0ZXBzLmZpcnN0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsaWNrZWRTdGVwSW5kZXggPSB0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKGNsaWNrZWRTdGVwKTtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RlcCA9PT0gY2xpY2tlZFN0ZXApIHtcbiAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IENVUlJFTlRfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2UuZW1pdChDVVJSRU5UX1NURVBfU1RBVFVTKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RlcCAhPT0gY2xpY2tlZFN0ZXApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihzdGVwKSA8IGNsaWNrZWRTdGVwSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDT01QTEVURURfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzQ2hhbmdlLmVtaXQoQ09NUExFVEVEX1NURVBfU1RBVFVTKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RlcHMudG9BcnJheSgpLmluZGV4T2Yoc3RlcCkgPiBjbGlja2VkU3RlcEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gVVBDT01JTkdfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzQ2hhbmdlLmVtaXQoVVBDT01JTkdfU1RFUF9TVEFUVVMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmJsdXIoKTsgLy8gdGhpcyBmdW5jdGlvbiBjYW4gZm9jdXMgc3RlcCBpbmRpY2F0b3JzIHVuZGVzaXJhYmx5XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCk6IFdpemFyZFN0ZXBDb21wb25lbnQge1xuICAgICAgICBpZiAodGhpcy5zdGVwcy5sYXN0LmlzU3VtbWFyeSAmJiAhdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnRvQXJyYXkoKVt0aGlzLnN0ZXBzLmxlbmd0aCAtIDJdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMubGFzdDtcbiAgICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cImZkLXdpemFyZFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZkLXdpemFyZC1uYXZpZ2F0aW9uXCI+PC9uZy1jb250ZW50PlxuICAgIEBpZiAoYXBwZW5kVG9XaXphcmQpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmZC13aXphcmQtY29udGFpbmVyLXdyYXBwZXJcIlxuICAgICAgICAgICAgI3dyYXBwZXJDb250YWluZXJcbiAgICAgICAgICAgIGZkU2Nyb2xsU3B5XG4gICAgICAgICAgICBjZGtTY3JvbGxhYmxlXG4gICAgICAgICAgICBbdHJhY2tlZFRhZ3NdPVwiWydkaXYnXVwiXG4gICAgICAgICAgICAoc3B5Q2hhbmdlKT1cInNjcm9sbFNweUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBmZC1zY3JvbGxiYXI+XG4gICAgICAgICAgICAgICAgQGZvciAoY29udGVudFRlbXBsYXRlIG9mIGNvbnRlbnRUZW1wbGF0ZXM7IHRyYWNrIGNvbnRlbnRUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjZGtTY3JvbGxhYmxlIGNsYXNzPVwiZmQtd2l6YXJkLWNvbnRhaW5lci13cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLXNjcm9sbGJhcj5cbiAgICAgICAgICAgICAgICBAZm9yIChjb250ZW50VGVtcGxhdGUgb2YgY29udGVudFRlbXBsYXRlczsgdHJhY2sgY29udGVudFRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L3NlY3Rpb24+XG4iXX0=
562
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS93aXphcmQvd2l6YXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS93aXphcmQvd2l6YXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLGVBQWUsRUFDZixVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixTQUFTLEVBRVQsU0FBUyxFQUNULGlCQUFpQixFQUNqQixNQUFNLEVBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFZLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3pGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3JFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ25ILE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDO0FBQ25GLE9B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QkFBMEIsMkRBSnZCLG1CQUFtQixtRUFRbkIsc0JBQXNCLCtLQVE1QixrQkFBa0IsZ0RDaklqQyx5bkNBZ0NBLG02ZEQ2Q2Msa0JBQWtCLHlNQUFFLGFBQWEsOEVBQUUsa0JBQWtCLCtJQUFFLGdCQUFnQjs7MkZBRXhFLGVBQWU7a0JBcEIzQixTQUFTOytCQUNJLFdBQVcsaUJBR04saUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDUCxhQUFhO3dCQUNiOzRCQUNJLE9BQU8sRUFBRSxNQUFNOzRCQUNmLFdBQVcsaUJBQWlCO3lCQUMvQjtxQkFDSixRQUNLO3dCQUNGLElBQUksRUFBRSxRQUFRO3dCQUNkLG1CQUFtQixFQUFFLGtDQUFrQztxQkFDMUQsY0FDVyxJQUFJLFdBQ1AsQ0FBQyxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLENBQUM7OzBCQW1GN0UsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyx3QkFBd0I7eUNBM0VoRCxjQUFjO3NCQURiLEtBQUs7Z0JBUU4sYUFBYTtzQkFEWixLQUFLO2dCQVFOLGtCQUFrQjtzQkFGakIsS0FBSzs7c0JBQ0wsV0FBVzt1QkFBQyxzQ0FBc0M7Z0JBS25ELGtCQUFrQjtzQkFEakIsS0FBSztnQkFRTixTQUFTO3NCQURSLEtBQUs7Z0JBS04sS0FBSztzQkFESixlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFLM0QsV0FBVztzQkFEVixZQUFZO3VCQUFDLDBCQUEwQjtnQkFLeEMsYUFBYTtzQkFEWixlQUFlO3VCQUFDLHNCQUFzQjtnQkFLdkMsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsa0JBQWtCO2dCQUs3QixTQUFTO3NCQURSLFNBQVM7dUJBQUMsa0JBQWtCO2dCQW9DN0IsYUFBYTtzQkFEWixZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtTY3JvbGxhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgaW5qZWN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTnVsbGFibGUsIFRhYmJhYmxlRWxlbWVudFNlcnZpY2UsIHNjcm9sbFRvcCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY2RrL3V0aWxzJztcbmltcG9ydCB7IERpYWxvZ0JvZHlDb21wb25lbnQsIEZEX0RJQUxPR19CT0RZX0NPTVBPTkVOVCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZS9kaWFsb2cnO1xuaW1wb3J0IHsgU2Nyb2xsU3B5RGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbC1zcHknO1xuaW1wb3J0IHsgU2Nyb2xsYmFyRGlyZWN0aXZlIH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlL3Njcm9sbGJhcic7XG5pbXBvcnQgeyByZXNvbHZlVHJhbnNsYXRpb25TaWduYWwgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2kxOG4nO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBQ1RJVkVfU1RFUF9TVEFUVVMsIENPTVBMRVRFRF9TVEVQX1NUQVRVUywgQ1VSUkVOVF9TVEVQX1NUQVRVUywgVVBDT01JTkdfU1RFUF9TVEFUVVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBXaXphcmRDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi93aXphcmQtY29udGVudC93aXphcmQtY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV0laQVJEIH0gZnJvbSAnLi93aXphcmQtaW5qZWN0aW9uLXRva2VuJztcbmltcG9ydCB7IFdpemFyZFByb2dyZXNzQmFyRGlyZWN0aXZlIH0gZnJvbSAnLi93aXphcmQtcHJvZ3Jlc3MtYmFyL3dpemFyZC1wcm9ncmVzcy1iYXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFdpemFyZFN0ZXBDb21wb25lbnQgfSBmcm9tICcuL3dpemFyZC1zdGVwL3dpemFyZC1zdGVwLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBXaXphcmRTZXJ2aWNlIH0gZnJvbSAnLi93aXphcmQuc2VydmljZSc7XG5cbmV4cG9ydCBjb25zdCBTVEVQX01JTl9XSURUSCA9IDE2ODtcbmV4cG9ydCBjb25zdCBTVEVQX1NUQUNLRURfVE9QX0NMQVNTID0gJ2ZkLXdpemFyZF9fc3RlcC0tc3RhY2tlZC10b3AnO1xuZXhwb3J0IGNvbnN0IFNURVBfU1RBQ0tFRF9DTEFTUyA9ICdmZC13aXphcmRfX3N0ZXAtLXN0YWNrZWQnO1xuZXhwb3J0IGNvbnN0IFNURVBfTk9fTEFCRUxfQ0xBU1MgPSAnZmQtd2l6YXJkX19zdGVwLS1uby1sYWJlbCc7XG5cbmV4cG9ydCBjb25zdCBXSVpBUkRfTkFWSUdBVElPTl9DTEFTUyA9ICdmZC13aXphcmRfX25hdmlnYXRpb24nO1xuZXhwb3J0IGNvbnN0IFdJWkFSRF9DT05URU5UX0NMQVNTID0gJ2ZkLXdpemFyZF9fY29udGVudCc7XG5leHBvcnQgY29uc3QgV0laQVJEX0NPTlRBSU5FUl9XUkFQUEVSX0NMQVNTID0gJ2ZkLXdpemFyZC1jb250YWluZXItd3JhcHBlcic7XG5leHBvcnQgY29uc3QgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUyA9ICdmZC13aXphcmQtdGFsbC1jb250ZW50JztcbmV4cG9ydCBjb25zdCBTSEVMTEJBUl9DTEFTUyA9ICdmZC1zaGVsbGJhcic7XG5leHBvcnQgY29uc3QgQkFSX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZvb3Rlcic7XG5leHBvcnQgY29uc3QgQkFSX0ZMT0FUSU5HX0ZPT1RFUl9DTEFTUyA9ICdmZC1iYXItLWZsb2F0aW5nLWZvb3Rlcic7XG5cbmV4cG9ydCBsZXQgX2Zyb21TY3JvbGxUb0N1cnJlbnRTdGVwO1xuZXhwb3J0IGxldCB0aW1lcjogYW55ID0gbnVsbDtcbmV4cG9ydCBjb25zdCBoYW5kbGVUaW1lb3V0UmVmZXJlbmNlID0gKCk6IHZvaWQgPT4ge1xuICAgIGlmICh0aW1lciAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZXIpO1xuICAgIH1cbiAgICB0aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBfZnJvbVNjcm9sbFRvQ3VycmVudFN0ZXAgPSBmYWxzZTtcbiAgICB9LCAxNTApO1xufTtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdmZC13aXphcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi93aXphcmQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi93aXphcmQuY29tcG9uZW50LnNjc3MnLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIFdpemFyZFNlcnZpY2UsXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFdJWkFSRCxcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBXaXphcmRDb21wb25lbnRcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICByb2xlOiAncmVnaW9uJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtbGFiZWxdJzogJ2FyaWFMYWJlbCB8fCBfZGVmYXVsdEFyaWFMYWJlbCgpJ1xuICAgIH0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbU2Nyb2xsU3B5RGlyZWN0aXZlLCBDZGtTY3JvbGxhYmxlLCBTY3JvbGxiYXJEaXJlY3RpdmUsIE5nVGVtcGxhdGVPdXRsZXRdXG59KVxuZXhwb3J0IGNsYXNzIFdpemFyZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogV2hldGhlciBvciBub3QgdG8gYXBwZW5kIHRoZSBzdGVwIHRvIHRoZSB3aXphcmQuIElmIGZhbHNlLCBlYWNoIHN0ZXAgd2lsbCBiZSBkaXNwbGF5ZWQgb24gYSBkaWZmZXJlbnQgcGFnZS5cbiAgICAgKiBEZWZhdWx0IGlzIHRydWUuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBhcHBlbmRUb1dpemFyZCA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBDdXN0b20gaGVpZ2h0IHRvIHVzZSBmb3IgdGhlIHdpemFyZCdzIGNvbnRlbnQgcGFuZS4gQnkgZGVmYXVsdCwgdGhpcyB2YWx1ZSBpcyBjYWxjKDEwMHZoIC0gMTQ0cHgpLCB3aGVyZSAxNDRweFxuICAgICAqIGlzIHRoZSBjb21iaW5lZCBoZWlnaHQgb2YgdGhlIHNoZWxsYmFyLCB3aXphcmQgaGVhZGVyIGFuZCB3aXphcmQgZm9vdGVyLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgY29udGVudEhlaWdodDogTnVsbGFibGU8c3RyaW5nIHwgbnVsbD47XG5cbiAgICAvKipcbiAgICAgKiBXaGV0aGVyIG9yIG5vdCBhcHBseSByZXNwb25zaXZlIHBhZGRpbmdzIHN0eWxpbmcuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmZkLXdpemFyZC0tcmVzcG9uc2l2ZS1wYWRkaW5ncycpXG4gICAgcmVzcG9uc2l2ZVBhZGRpbmdzID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0byBkaXNwbGF5IGEgc3VtbWFyeSBzdGVwLiAgKi9cbiAgICBASW5wdXQoKVxuICAgIGRpc3BsYXlTdW1tYXJ5U3RlcCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogYWRkaW5nIGFyaWEgbGFiZWwgdG8gdGhlIGNvbXBvbmVudFxuICAgICAqIElmIG5vdCBwcm92aWRlZCwgaXMgYmVpbmcgdHJhbnNsYXRlZCBieSBpMThuIHBhY2thZ2VcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKFdpemFyZFN0ZXBDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBzdGVwczogUXVlcnlMaXN0PFdpemFyZFN0ZXBDb21wb25lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKFdpemFyZFByb2dyZXNzQmFyRGlyZWN0aXZlKVxuICAgIHByb2dyZXNzQmFyOiBXaXphcmRQcm9ncmVzc0JhckRpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihXaXphcmRDb250ZW50Q29tcG9uZW50KVxuICAgIHdpemFyZENvbnRlbnQ6IFdpemFyZENvbnRlbnRDb21wb25lbnQ7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ3dyYXBwZXJDb250YWluZXInKVxuICAgIHdyYXBwZXJDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKFNjcm9sbGJhckRpcmVjdGl2ZSlcbiAgICBzY3JvbGxiYXI6IFNjcm9sbGJhckRpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgY29udGVudFRlbXBsYXRlczogVGVtcGxhdGVSZWY8YW55PltdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHN0YWNrZWRTdGVwc0xlZnQ6IFdpemFyZFN0ZXBDb21wb25lbnRbXSA9IFtdO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBzdGFja2VkU3RlcHNSaWdodDogV2l6YXJkU3RlcENvbXBvbmVudFtdID0gW107XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZGVmYXVsdEFyaWFMYWJlbCA9IHJlc29sdmVUcmFuc2xhdGlvblNpZ25hbCgnY29yZVdpemFyZC5hcmlhTGFiZWwnKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3RlcEV2ZW50U3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb24gPSBuZXcgU3Vic2NyaXB0aW9uKCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3ByZXZpb3VzV2lkdGg6IG51bWJlcjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBfdGFiYmFibGVTZXJ2aWNlID0gaW5qZWN0KFRhYmJhYmxlRWxlbWVudFNlcnZpY2UpO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBfZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgX2NkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChGRF9ESUFMT0dfQk9EWV9DT01QT05FTlQpIHByaXZhdGUgX2RpYWxvZ0JvZHlDb21wb25lbnQ6IERpYWxvZ0JvZHlDb21wb25lbnRcbiAgICApIHt9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnKVxuICAgIHJlc2l6ZUhhbmRsZXIoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHdpemFyZFdpZHRoID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgaWYgKCF0aGlzLl9wcmV2aW91c1dpZHRoIHx8IHdpemFyZFdpZHRoIDw9IHRoaXMuX3ByZXZpb3VzV2lkdGgpIHtcbiAgICAgICAgICAgIHRoaXMuX3dpemFyZFNocmlua2luZygpO1xuICAgICAgICB9IGVsc2UgaWYgKHdpemFyZFdpZHRoID4gdGhpcy5fcHJldmlvdXNXaWR0aCkge1xuICAgICAgICAgICAgdGhpcy5fc2hyaW5rV2hpbGVBbnlTdGVwSXNUb29OYXJyb3coKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9wcmV2aW91c1dpZHRoID0gd2l6YXJkV2lkdGg7XG4gICAgICAgIGlmICh0aGlzLmNvbnRlbnRIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpLnN0eWxlLmhlaWdodCA9XG4gICAgICAgICAgICAgICAgdGhpcy5jb250ZW50SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fc2V0Q29udGFpbmVyQW5kVGFsbENvbnRlbnRIZWlnaHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9zdWJzY3JpcHRpb25zLmNsb3NlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gZml4ZXMgRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvclxuICAgICAgICAgICAgdGhpcy5fc2V0Q29udGVudFRlbXBsYXRlcygpO1xuICAgICAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwcy5jaGFuZ2VzLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2hhbmRsZVN0ZXBPclN0YXR1c0NoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0dXBTdGVwRXZlbnRzKCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLl9zZXR1cFN0ZXBFdmVudHMoKTtcbiAgICAgICAgICAgIHRoaXMuX2NkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX2hhbmRsZVN0ZXBPclN0YXR1c0NoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMucmVzaXplSGFuZGxlcigpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy53cmFwcGVyQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVRpbWVvdXRSZWZlcmVuY2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgc2Nyb2xsU3B5Q2hhbmdlKCRldmVudDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFfZnJvbVNjcm9sbFRvQ3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChzdGVwLl9zdGVwSWQudG9TdHJpbmcoKSA9PT0gJGV2ZW50LmNoaWxkcmVuWzBdLmNoaWxkcmVuWzBdLmlkKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ1VSUkVOVF9TVEVQX1NUQVRVUztcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0ZXAuX3N0ZXBJZCA8IHBhcnNlSW50KCRldmVudC5jaGlsZHJlblswXS5jaGlsZHJlblswXS5pZCwgMTApKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gQ09NUExFVEVEX1NURVBfU1RBVFVTO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gVVBDT01JTkdfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2hyaW5rV2hpbGVBbnlTdGVwSXNUb29OYXJyb3coKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQHByaXZhdGVcbiAgICAgKiBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgdGhlIGhlaWdodCBvZiB0aGUgd2l6YXJkIGNvbnRlbnQgYnkgbG9va2luZyBmb3IgdGhlIGRvY3VtZW50J3Mgc2hlbGxiYXIsIHRoZSB3aXphcmRcbiAgICAgKiBuYXZpZ2F0aW9uIGFuZCB0aGUgd2l6YXJkIGZvb3RlciwgYW5kIGNhbGN1bGF0aW5nIHRoZSBoZWlnaHQgYmFzZWQgb24gdGhlaXIgcHJlc2VuY2UuXG4gICAgICovXG4gICAgcHJpdmF0ZSBfY2FsY3VsYXRlQ29udGVudEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBsZXQgd2l6YXJkTmF2SGVpZ2h0ID0gMDtcbiAgICAgICAgY29uc3Qgc2hlbGxiYXJIZWlnaHQgPSB0aGlzLl9nZXRTaGVsbGJhckhlaWdodCgpO1xuICAgICAgICBpZiAoIXRoaXMuX2lzQ3VycmVudFN0ZXBTdW1tYXJ5KCkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIHdpemFyZE5hdkhlaWdodCA9IHRoaXMuX2dldFdpemFyZE5hdkhlaWdodCgpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHdpemFyZEZvb3RlckhlaWdodCA9IHRoaXMuX2dldFdpemFyZEZvb3RlckhlaWdodCgpO1xuICAgICAgICBjb25zdCBkaWFsb2dPZmZzZXQgPSB0aGlzLl9nZXREaWFsb2dPZmZzZXQoKTtcblxuICAgICAgICByZXR1cm4gc2hlbGxiYXJIZWlnaHQgKyB3aXphcmROYXZIZWlnaHQgKyB3aXphcmRGb290ZXJIZWlnaHQgKyBkaWFsb2dPZmZzZXQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9nZXRTaGVsbGJhckhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJy4nICsgU0hFTExCQVJfQ0xBU1MpPy5jbGllbnRIZWlnaHQgPz8gMDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldFdpemFyZE5hdkhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB3aXphcmQgPSB0aGlzLl9lbFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICBsZXQgcmV0VmFsO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX05BVklHQVRJT05fQ0xBU1MpKSB7XG4gICAgICAgICAgICByZXRWYWwgPSB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfTkFWSUdBVElPTl9DTEFTUykuY2xpZW50SGVpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0VmFsID0gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0V2l6YXJkRm9vdGVySGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIGxldCByZXRWYWwgPSAwO1xuICAgICAgICBpZiAodGhpcy5fZGlhbG9nQm9keUNvbXBvbmVudCkge1xuICAgICAgICAgICAgY29uc3QgZGlhbG9nQm9keSA9IHRoaXMuX2RpYWxvZ0JvZHlDb21wb25lbnQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGRpYWxvZ0JvZHkucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRk9PVEVSX0NMQVNTKSkge1xuICAgICAgICAgICAgICAgIHJldFZhbCA9IGRpYWxvZ0JvZHkucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRk9PVEVSX0NMQVNTKS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGRpYWxvZ0JvZHkucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRkxPQVRJTkdfRk9PVEVSX0NMQVNTKSkge1xuICAgICAgICAgICAgICAgIHJldFZhbCA9IGRpYWxvZ0JvZHkucXVlcnlTZWxlY3RvcignLicgKyBCQVJfRkxPQVRJTkdfRk9PVEVSX0NMQVNTKS5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldFZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX2dldERpYWxvZ09mZnNldCgpOiBudW1iZXIge1xuICAgICAgICBsZXQgcmV0VmFsID0gMDtcbiAgICAgICAgaWYgKHRoaXMuX2RpYWxvZ0JvZHlDb21wb25lbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ0JvZHkgPSB0aGlzLl9kaWFsb2dCb2R5Q29tcG9uZW50LmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ0NvbXBvbmVudCA9IGRpYWxvZ0JvZHkuY2xvc2VzdCgnZmQtZGlhbG9nJyk7XG5cbiAgICAgICAgICAgIGlmIChkaWFsb2dCb2R5LnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2ZkLWRpYWxvZy1ib2R5Jykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2RpYWxvZ0JvZHlDb21wb25lbnQuZGlhbG9nQ29uZmlnLnZlcnRpY2FsUGFkZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpYWxvZ0JvZHlUaXRsZSA9IGRpYWxvZ0NvbXBvbmVudC5xdWVyeVNlbGVjdG9yKCcuZmQtdGl0bGUtLWgyJyk7XG4gICAgICAgICAgICAgICAgaWYgKGRpYWxvZ0JvZHlUaXRsZSkge1xuICAgICAgICAgICAgICAgICAgICByZXRWYWwgPSBkaWFsb2dCb2R5VGl0bGUub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXRWYWwgPSByZXRWYWwgKyB3aW5kb3cuaW5uZXJIZWlnaHQgLSBkaWFsb2dCb2R5Lm9mZnNldEhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXRWYWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRDb250YWluZXJBbmRUYWxsQ29udGVudEhlaWdodCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgd2l6YXJkID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgY29uc3QgY29tYmluZWRIZWlnaHQgPSB0aGlzLmNvbnRlbnRIZWlnaHQgPyB0aGlzLmNvbnRlbnRIZWlnaHQgOiB0aGlzLl9jYWxjdWxhdGVDb250ZW50SGVpZ2h0KCk7XG4gICAgICAgIGlmICh3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpKSB7XG4gICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfQ09OVEFJTkVSX1dSQVBQRVJfQ0xBU1MpLnN0eWxlLmhlaWdodCA9XG4gICAgICAgICAgICAgICAgJ2NhbGMoMTAwdmggLSAnICsgY29tYmluZWRIZWlnaHQgKyAncHgpJztcbiAgICAgICAgfVxuICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvckFsbCgnLicgKyBXSVpBUkRfQ09OVEVOVF9DTEFTUykuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgbm9kZS5zdHlsZS5oZWlnaHQgPSAnYXV0byc7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAod2l6YXJkLnF1ZXJ5U2VsZWN0b3IoJy4nICsgV0laQVJEX1RBTExfQ09OVEVOVF9DTEFTUykpIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5vZmZzZXRIZWlnaHQgPFxuICAgICAgICAgICAgICAgIHdpemFyZC5xdWVyeVNlbGVjdG9yKCcuJyArIFdJWkFSRF9DT05UQUlORVJfV1JBUFBFUl9DTEFTUykub2Zmc2V0SGVpZ2h0XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5zdHlsZS5oZWlnaHQgPVxuICAgICAgICAgICAgICAgICAgICAnY2FsYygxMDB2aCAtICcgKyBjb21iaW5lZEhlaWdodCArICdweCknO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aXphcmQucXVlcnlTZWxlY3RvcignLicgKyBXSVpBUkRfVEFMTF9DT05URU5UX0NMQVNTKS5zdHlsZS5wYWRkaW5nQm90dG9tID0gJzI0cHgnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXR1cFN0ZXBFdmVudHMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX3N0ZXBFdmVudFN1YnNjcmlwdGlvbnMudW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zdGVwRXZlbnRTdWJzY3JpcHRpb25zLmFkZChcbiAgICAgICAgICAgICAgICBzdGVwLnN0ZXBDbGlja2VkLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RlcENsaWNrZWQoZXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2Uuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5fc3RlcEV2ZW50U3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICAgICAgc3RlcC5zdGVwSW5kaWNhdG9ySXRlbUNsaWNrZWQuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGVwQ2xpY2tlZChldmVudCk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICAvLyBuZWVkIHRvIGNhbGwgd2l6YXJkU2hyaW5raW5nIGZvciBlYWNoIHN0ZXAgPCAxNjhweCBvbiBmaXJzdCBsb2FkXG4gICAgICAgICAgICBpZiAoc3RlcC53aXphcmRMYWJlbCAmJiBzdGVwLmdldFN0ZXBDbGllbnRXaWR0aCgpIDwgU1RFUF9NSU5fV0lEVEgpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl93aXphcmRTaHJpbmtpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF93aXphcmRTaHJpbmtpbmcoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5fZ2V0Q3VycmVudFN0ZXAoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgY3VycmVudFN0ZXAgJiZcbiAgICAgICAgICAgICghY3VycmVudFN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSAmJlxuICAgICAgICAgICAgY3VycmVudFN0ZXAud2l6YXJkTGFiZWwgJiZcbiAgICAgICAgICAgIGN1cnJlbnRTdGVwLmdldFN0ZXBDbGllbnRXaWR0aCgpIDwgU1RFUF9NSU5fV0lEVEhcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9oaWRlU29tZVN0ZXAoY3VycmVudFN0ZXApO1xuICAgICAgICAgICAgdGhpcy5fc2V0U3RhY2tlZFRvcCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zZXRDb250ZW50VGVtcGxhdGVzKCk6IHZvaWQge1xuICAgICAgICBjb25zdCB0ZW1wbGF0ZXNMZW5ndGggPSB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLmNvbnRlbnRUZW1wbGF0ZXMgPSBbXTtcbiAgICAgICAgbGV0IF9zdGVwSWQgPSAwO1xuICAgICAgICBjb25zdCBzdGVwcyA9IHRoaXMuc3RlcHMudG9BcnJheSgpO1xuICAgICAgICBmb3IgKGNvbnN0IHN0ZXAgb2Ygc3RlcHMpIHtcbiAgICAgICAgICAgIGlmIChzdGVwLmNvbnRlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXN0ZXAuaXNTdW1tYXJ5IHx8IHRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC50YWxsQ29udGVudCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQud2l6YXJkQ29udGVudElkID0gX3N0ZXBJZC50b1N0cmluZygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3RlcC5fc3RlcElkID0gX3N0ZXBJZDtcbiAgICAgICAgICAgIF9zdGVwSWQrKztcbiAgICAgICAgICAgIHN0ZXAuc2V0RmluYWxTdGVwKGZhbHNlKTtcbiAgICAgICAgICAgIC8qXG4gICAgICAgICAgICAgSWYgdGhlIHN0ZXAgaXMgY29tcGxldGVkIGFuZCBhcHBlbmRUb1dpemFyZCBpcyB0cnVlLCBoaWRlIHRoZSBuZXh0U3RlcCBidXR0b24sIHVubGVzcyBpdCdzIHRoZSBsYXN0IHN0ZXAsXG4gICAgICAgICAgICAgb3IgaWYgdGhlcmUncyBhIHN1bW1hcnkgYW5kIGl0IGlzIHRoZSBzZWNvbmQgdG8gbGFzdCBzdGVwXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICBzdGVwLmNvbXBsZXRlZCAmJlxuICAgICAgICAgICAgICAgIHRoaXMuYXBwZW5kVG9XaXphcmQgJiZcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQ/Lm5leHRTdGVwPy5jYW5IaWRlICYmXG4gICAgICAgICAgICAgICAgc3RlcCAhPT0gdGhpcy5fZ2V0TGFzdE5vblN1bW1hcnlTdGVwKClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHN0ZXAuY29udGVudC5uZXh0U3RlcC5faGlkZUVsZW1lbnQoKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcC5jb250ZW50Py5uZXh0U3RlcCAmJlxuICAgICAgICAgICAgICAgICgoc3RlcC5jb21wbGV0ZWQgJiYgdGhpcy5hcHBlbmRUb1dpemFyZCkgfHxcbiAgICAgICAgICAgICAgICAgICAgKHN0ZXAudmlzaXRlZCAmJiBzdGVwLmJyYW5jaGluZyAmJiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUykpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQubmV4dFN0ZXAuX3Nob3dFbGVtZW50KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcC52aXNpdGVkIHx8XG4gICAgICAgICAgICAgICAgKChzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyB8fCBzdGVwLnN0YXR1cyA9PT0gQ09NUExFVEVEX1NURVBfU1RBVFVTKSAmJiBzdGVwLmNvbnRlbnQpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBzdGVwLnZpc2l0ZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmIChzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyAmJiAoIXN0ZXAuY29tcGxldGVkIHx8ICF0aGlzLmFwcGVuZFRvV2l6YXJkKSkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGlzQ3VycmVudFN0ZXAgPSAhdGhpcy5hcHBlbmRUb1dpemFyZCAmJiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUztcblxuICAgICAgICAgICAgICAgIGlmICghdGVtcGxhdGVzTGVuZ3RoIHx8IGlzQ3VycmVudFN0ZXApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzID0gW3N0ZXAuY29udGVudC5jb250ZW50VGVtcGxhdGVdO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGZvdW5kIG5lZWRlZCBzdGVwLCBicmVhayB0aGUgY3ljbGUsIHNpbmNlIGl0IG1pZ2h0IHNldCB3cm9uZyBzdGVwIGxhdGVyLlxuICAgICAgICAgICAgICAgICAgICBpZiAoaXNDdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXBwZW5kVG9XaXphcmQgJiYgKCFzdGVwLmlzU3VtbWFyeSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzLnB1c2goc3RlcC5jb250ZW50LmNvbnRlbnRUZW1wbGF0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbGFzdFZpc2libGVUZW1wbGF0ZSA9IHN0ZXBzW3RoaXMuY29udGVudFRlbXBsYXRlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKGxhc3RWaXNpYmxlVGVtcGxhdGUgJiYgbGFzdFZpc2libGVUZW1wbGF0ZS5jb250ZW50KSB7XG4gICAgICAgICAgICBsYXN0VmlzaWJsZVRlbXBsYXRlLmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3NldEZpbmFsU3RlcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2Nyb2xsVG9DdXJyZW50U3RlcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuYXBwZW5kVG9XaXphcmQpIHtcbiAgICAgICAgICAgIF9mcm9tU2Nyb2xsVG9DdXJyZW50U3RlcCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXAsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHN0ZXAuc3RhdHVzID09PSBDVVJSRU5UX1NURVBfU1RBVFVTICYmICghc3RlcC5pc1N1bW1hcnkgfHwgdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy53cmFwcGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2hpbGRyZW5baW5kZXhdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB3aXphcmROYXZpZ2F0aW9uSGVpZ2h0ID0gdGhpcy5fZWxSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgICAgICAgICAgICAgICAgICAgJy4nICsgV0laQVJEX05BVklHQVRJT05fQ0xBU1NcbiAgICAgICAgICAgICAgICAgICAgKS5jbGllbnRIZWlnaHQ7XG5cbiAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wKHRoaXMud3JhcHBlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50LCBjaGlsZC5vZmZzZXRUb3AgLSB3aXphcmROYXZpZ2F0aW9uSGVpZ2h0KTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzRmlyc3RUYWJiYWJsZUVsZW1lbnQoaW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2V0VGltZW91dCBuZWVkZWQgdG8gYWxsb3cgZm9yIHNtb290aCBzY3JvbGwgYW5pbWF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KGluZGV4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuX3NldFVwU2Nyb2xsTGlzdGVuZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZm9jdXNGaXJzdFRhYmJhYmxlRWxlbWVudChpbmRleCA9IDApOiB2b2lkIHtcbiAgICAgICAgY29uc3QgY29udGVudENvbnRhaW5lciA9IHRoaXMuX2VsUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmZkLXdpemFyZF9fY29udGVudCcpW2luZGV4XTtcbiAgICAgICAgdGhpcy5fdGFiYmFibGVTZXJ2aWNlLmdldFRhYmJhYmxlRWxlbWVudChjb250ZW50Q29udGFpbmVyKT8uZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFVwU2Nyb2xsTGlzdGVuZXIoKTogdm9pZCB7XG4gICAgICAgIHRoaXMud3JhcHBlckNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVUaW1lb3V0UmVmZXJlbmNlLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9oaWRlU29tZVN0ZXAoY3VycmVudFN0ZXA6IFdpemFyZFN0ZXBDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgLy8gSWYgYSBzbWFsbCBzdGVwIHdhcyBmb3VuZCwgZ2V0IHRoZSBzdGVwIHdpdGggYSB2aXNpYmxlIGxhYmVsIGZ1cnRoZXN0IGF3YXkgZnJvbSB0aGUgY3VycmVudCBzdGVwIGFuZCBoaWRlIHRoZSBsYWJlbFxuICAgICAgICBsZXQgc3RlcHNBcnJheSA9IHRoaXMuc3RlcHMudG9BcnJheSgpO1xuICAgICAgICBzdGVwc0FycmF5ID0gc3RlcHNBcnJheS5maWx0ZXIoKHN0ZXApID0+ICFzdGVwLmhhc0xhYmVsKFNURVBfTk9fTEFCRUxfQ0xBU1MpKTtcbiAgICAgICAgaWYgKHRoaXMuc3RlcHMubGFzdC5pc1N1bW1hcnkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICBzdGVwc0FycmF5LnBvcCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGVwc0FycmF5Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIGxldCBjdXJyZW50U3RlcEluZGV4ID0gMCxcbiAgICAgICAgICAgICAgICBzdGVwVG9IaWRlO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRTdGVwKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFN0ZXBJbmRleCA9IHN0ZXBzQXJyYXkuaW5kZXhPZihjdXJyZW50U3RlcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjdXJyZW50U3RlcEluZGV4ID4gKHN0ZXBzQXJyYXkubGVuZ3RoIC0gMSkgLyAyXG4gICAgICAgICAgICAgICAgPyAoc3RlcFRvSGlkZSA9IHN0ZXBzQXJyYXlbMF0pXG4gICAgICAgICAgICAgICAgOiAoc3RlcFRvSGlkZSA9IHN0ZXBzQXJyYXlbc3RlcHNBcnJheS5sZW5ndGggLSAxXSk7XG4gICAgICAgICAgICBzdGVwVG9IaWRlLmdldENsYXNzTGlzdCgpLmFkZChTVEVQX05PX0xBQkVMX0NMQVNTKTtcbiAgICAgICAgICAgIHN0ZXBUb0hpZGUuZ2V0Q2xhc3NMaXN0KCkuYWRkKFNURVBfU1RBQ0tFRF9DTEFTUyk7XG4gICAgICAgICAgICBpZiAoc3RlcHNBcnJheS5pbmRleE9mKHN0ZXBUb0hpZGUpIDwgY3VycmVudFN0ZXBJbmRleCAmJiAhdGhpcy5zdGFja2VkU3RlcHNMZWZ0LmluY2x1ZGVzKHN0ZXBUb0hpZGUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGFja2VkU3RlcHNMZWZ0LnNwbGljZSh0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKHN0ZXBUb0hpZGUpLCAwLCBzdGVwVG9IaWRlKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgc3RlcHNBcnJheS5pbmRleE9mKHN0ZXBUb0hpZGUpID4gY3VycmVudFN0ZXBJbmRleCAmJlxuICAgICAgICAgICAgICAgICF0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0LmluY2x1ZGVzKHN0ZXBUb0hpZGUpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0LnVuc2hpZnQoc3RlcFRvSGlkZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3NldFN0YWNrZWRUb3AoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRTdGVwID0gdGhpcy5fZ2V0Q3VycmVudFN0ZXAoKTtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKHN0ZXAuc3RlcEluZGljYXRvcikge1xuICAgICAgICAgICAgICAgIHN0ZXAuZ2V0Q2xhc3NMaXN0KCkucmVtb3ZlKFNURVBfU1RBQ0tFRF9UT1BfQ0xBU1MpO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0ZXBzLnRvQXJyYXkoKVtpbmRleCArIDFdID09PSBjdXJyZW50U3RlcCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGVwcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLmFkZChTVEVQX1NUQUNLRURfVE9QX0NMQVNTKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zdGFja2VkU3RlcHNMZWZ0LmluY2x1ZGVzKHN0ZXApICYmIHRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5sZW5ndGggPj0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzTGVmdC5zcGxpY2UoaW5kZXgsIDAsIHN0ZXApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RlcEluZGljYXRvci5zZXRTdGFja2VkSXRlbXModGhpcy5zdGFja2VkU3RlcHNMZWZ0KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzdGVwLnN0ZXBJbmRpY2F0b3Iuc3RhY2tlZEl0ZW1zJC5zZXQoW10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX2dldExhc3ROb25TdW1tYXJ5U3RlcCgpLnN0ZXBJbmRpY2F0b3I/LnNldFN0YWNrZWRJdGVtcyh0aGlzLnN0YWNrZWRTdGVwc1JpZ2h0KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Jlc2V0U3RlcENsYXNzZXMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3RlcHMuZm9yRWFjaCgoc3RlcCkgPT4ge1xuICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5yZW1vdmUoU1RFUF9TVEFDS0VEX1RPUF9DTEFTUyk7XG4gICAgICAgICAgICBzdGVwLmdldENsYXNzTGlzdCgpLnJlbW92ZShTVEVQX1NUQUNLRURfQ0xBU1MpO1xuICAgICAgICAgICAgc3RlcC5nZXRDbGFzc0xpc3QoKS5yZW1vdmUoU1RFUF9OT19MQUJFTF9DTEFTUyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfaGFuZGxlU3RlcE9yU3RhdHVzQ2hhbmdlcygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2lzQ3VycmVudFN0ZXBTdW1tYXJ5KCkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnByb2dyZXNzQmFyLnZpc2libGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5fc2hvd1N1bW1hcnkoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucHJvZ3Jlc3NCYXIudmlzaWJsZSA9IHRydWU7XG5cbiAgICAgICAgICAgIHRoaXMuX3NldENvbnRlbnRUZW1wbGF0ZXMoKTtcbiAgICAgICAgICAgIHRoaXMuX3Nocmlua1doaWxlQW55U3RlcElzVG9vTmFycm93KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLmFwcGVuZFRvV2l6YXJkKSB7XG4gICAgICAgICAgICB0aGlzLl9mb2N1c0ZpcnN0VGFiYmFibGVFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZUhhbmRsZXIoKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5faXNDdXJyZW50U3RlcFN1bW1hcnkoKSB8fCB0aGlzLmRpc3BsYXlTdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgICAgIHRoaXMuX3Njcm9sbFRvQ3VycmVudFN0ZXAoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuX3NldEZpbmFsU3RlcCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc2V0RmluYWxTdGVwKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBsYXN0Tm9uU3VtbWFyeVN0ZXAgPSB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKTtcbiAgICAgICAgaWYgKGxhc3ROb25TdW1tYXJ5U3RlcCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3RlcHMubGFzdC5pc1N1bW1hcnkgJiYgIXRoaXMuZGlzcGxheVN1bW1hcnlTdGVwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwcy5sYXN0LnJlbW92ZUZyb21Eb20oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChsYXN0Tm9uU3VtbWFyeVN0ZXAuY29udGVudCkge1xuICAgICAgICAgICAgICAgIGxhc3ROb25TdW1tYXJ5U3RlcC5jb250ZW50LnRhbGxDb250ZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhc3ROb25TdW1tYXJ5U3RlcC5zZXRGaW5hbFN0ZXAodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByaXZhdGUgX3Nob3dTdW1tYXJ5KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnN0ZXBzLmZvckVhY2goKHN0ZXApID0+IHtcbiAgICAgICAgICAgIGlmICghc3RlcC5pc1N1bW1hcnkpIHtcbiAgICAgICAgICAgICAgICBzdGVwLmNvbXBsZXRlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBzdW1tYXJ5ID0gdGhpcy5zdGVwcy5maW5kKChzdGVwKSA9PiBzdGVwLmlzU3VtbWFyeSk7XG4gICAgICAgIGlmIChzdW1tYXJ5KSB7XG4gICAgICAgICAgICBzdW1tYXJ5LmNvbnRlbnQudGFsbENvbnRlbnQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jb250ZW50VGVtcGxhdGVzID0gW3N1bW1hcnkuY29udGVudC5jb250ZW50VGVtcGxhdGVdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9pc0N1cnJlbnRTdGVwU3VtbWFyeSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMuc29tZSgoc3RlcCkgPT4gc3RlcC5zdGF0dXMgPT09IENVUlJFTlRfU1RFUF9TVEFUVVMgJiYgc3RlcC5pc1N1bW1hcnkpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0Q3VycmVudFN0ZXAoKTogV2l6YXJkU3RlcENvbXBvbmVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLmZpbHRlcihcbiAgICAgICAgICAgIChzdGVwKSA9PiBzdGVwLnN0YXR1cyA9PT0gQ1VSUkVOVF9TVEVQX1NUQVRVUyB8fCBzdGVwLnN0YXR1cyA9PT0gQUNUSVZFX1NURVBfU1RBVFVTXG4gICAgICAgIClbMF07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcml2YXRlIF9zaHJpbmtXaGlsZUFueVN0ZXBJc1Rvb05hcnJvdygpOiB2b2lkIHtcbiAgICAgICAgLy8gQWRkIHNtYWxsIGRlbGF5IGZvciBlbGVtZW50cyB0byByZW5kZXIgYXBwcm9wcmlhdGVseS5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnN0YWNrZWRTdGVwc0xlZnQgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc3RhY2tlZFN0ZXBzUmlnaHQgPSBbXTtcbiAgICAgICAgICAgIHRoaXMuc3RlcHMuZmlyc3Quc3RlcEluZGljYXRvcj8uc2V0U3RhY2tlZEl0ZW1zKHRoaXMuc3RhY2tlZFN0ZXBzTGVmdCk7XG4gICAgICAgICAgICB0aGlzLl9nZXRMYXN0Tm9uU3VtbWFyeVN0ZXAoKS5zdGVwSW5kaWNhdG9yPy5zZXRTdGFja2VkSXRlbXModGhpcy5zdGFja2VkU3RlcHNSaWdodCk7XG4gICAgICAgICAgICB0aGlzLl9yZXNldFN0ZXBDbGFzc2VzKCk7XG4gICAgICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgICAgICB3aGlsZSAodGhpcy5fYW55U3RlcElzVG9vTmFycm93KCkgJiYgaSA8IHRoaXMuc3RlcHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIGkrKztcbiAgICAgICAgICAgICAgICB0aGlzLl93aXphcmRTaHJpbmtpbmcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgMTApO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfYW55U3RlcElzVG9vTmFycm93KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zdGVwcy5zb21lKChzdGVwKSA9PiBzdGVwLmdldFN0ZXBDbGllbnRXaWR0aCgpIDwgU1RFUF9NSU5fV0lEVEgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfc3RlcENsaWNrZWQoY2xpY2tlZFN0ZXA6IFdpemFyZFN0ZXBDb21wb25lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCFjbGlja2VkU3RlcCkge1xuICAgICAgICAgICAgY2xpY2tlZFN0ZXAgPSB0aGlzLnN0ZXBzLmZpcnN0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNsaWNrZWRTdGVwSW5kZXggPSB0aGlzLnN0ZXBzLnRvQXJyYXkoKS5pbmRleE9mKGNsaWNrZWRTdGVwKTtcbiAgICAgICAgdGhpcy5zdGVwcy5mb3JFYWNoKChzdGVwKSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RlcCA9PT0gY2xpY2tlZFN0ZXApIHtcbiAgICAgICAgICAgICAgICBzdGVwLnN0YXR1cyA9IENVUlJFTlRfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgc3RlcC5zdGF0dXNDaGFuZ2UuZW1pdChDVVJSRU5UX1NURVBfU1RBVFVTKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RlcCAhPT0gY2xpY2tlZFN0ZXApIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGVwcy50b0FycmF5KCkuaW5kZXhPZihzdGVwKSA8IGNsaWNrZWRTdGVwSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgc3RlcC5zdGF0dXMgPSBDT01QTEVURURfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzQ2hhbmdlLmVtaXQoQ09NUExFVEVEX1NURVBfU1RBVFVTKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc3RlcHMudG9BcnJheSgpLmluZGV4T2Yoc3RlcCkgPiBjbGlja2VkU3RlcEluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzID0gVVBDT01JTkdfU1RFUF9TVEFUVVM7XG4gICAgICAgICAgICAgICAgICAgIHN0ZXAuc3RhdHVzQ2hhbmdlLmVtaXQoVVBDT01JTkdfU1RFUF9TVEFUVVMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQpLmJsdXIoKTsgLy8gdGhpcyBmdW5jdGlvbiBjYW4gZm9jdXMgc3RlcCBpbmRpY2F0b3JzIHVuZGVzaXJhYmx5XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJpdmF0ZSBfZ2V0TGFzdE5vblN1bW1hcnlTdGVwKCk6IFdpemFyZFN0ZXBDb21wb25lbnQge1xuICAgICAgICBpZiAodGhpcy5zdGVwcy5sYXN0LmlzU3VtbWFyeSAmJiAhdGhpcy5kaXNwbGF5U3VtbWFyeVN0ZXApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0ZXBzLnRvQXJyYXkoKVt0aGlzLnN0ZXBzLmxlbmd0aCAtIDJdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuc3RlcHMubGFzdDtcbiAgICB9XG59XG4iLCI8c2VjdGlvbiBjbGFzcz1cImZkLXdpemFyZFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImZkLXdpemFyZC1uYXZpZ2F0aW9uXCI+PC9uZy1jb250ZW50PlxuICAgIEBpZiAoYXBwZW5kVG9XaXphcmQpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJmZC13aXphcmQtY29udGFpbmVyLXdyYXBwZXJcIlxuICAgICAgICAgICAgI3dyYXBwZXJDb250YWluZXJcbiAgICAgICAgICAgIGZkU2Nyb2xsU3B5XG4gICAgICAgICAgICBjZGtTY3JvbGxhYmxlXG4gICAgICAgICAgICBbdHJhY2tlZFRhZ3NdPVwiWydkaXYnXVwiXG4gICAgICAgICAgICAoc3B5Q2hhbmdlKT1cInNjcm9sbFNweUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBmZC1zY3JvbGxiYXI+XG4gICAgICAgICAgICAgICAgQGZvciAoY29udGVudFRlbXBsYXRlIG9mIGNvbnRlbnRUZW1wbGF0ZXM7IHRyYWNrIGNvbnRlbnRUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvbnRlbnRUZW1wbGF0ZVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjZGtTY3JvbGxhYmxlIGNsYXNzPVwiZmQtd2l6YXJkLWNvbnRhaW5lci13cmFwcGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGZkLXNjcm9sbGJhcj5cbiAgICAgICAgICAgICAgICBAZm9yIChjb250ZW50VGVtcGxhdGUgb2YgY29udGVudFRlbXBsYXRlczsgdHJhY2sgY29udGVudFRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwiY29udGVudFRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L3NlY3Rpb24+XG4iXX0=
@@ -583,16 +583,15 @@ class WizardComponent {
583
583
  }
584
584
  /** @hidden */
585
585
  _getWizardFooterHeight() {
586
- const wizard = this._elRef.nativeElement;
587
- let retVal;
588
- if (wizard.querySelector('.' + BAR_FOOTER_CLASS)) {
589
- retVal = wizard.querySelector('.' + BAR_FOOTER_CLASS).offsetHeight;
590
- }
591
- else if (wizard.querySelector('.' + BAR_FLOATING_FOOTER_CLASS)) {
592
- retVal = wizard.querySelector('.' + BAR_FLOATING_FOOTER_CLASS).offsetHeight;
593
- }
594
- else {
595
- retVal = 0;
586
+ let retVal = 0;
587
+ if (this._dialogBodyComponent) {
588
+ const dialogBody = this._dialogBodyComponent.elementRef.nativeElement;
589
+ if (dialogBody.querySelector('.' + BAR_FOOTER_CLASS)) {
590
+ retVal = dialogBody.querySelector('.' + BAR_FOOTER_CLASS).offsetHeight;
591
+ }
592
+ else if (dialogBody.querySelector('.' + BAR_FLOATING_FOOTER_CLASS)) {
593
+ retVal = dialogBody.querySelector('.' + BAR_FLOATING_FOOTER_CLASS).offsetHeight;
594
+ }
596
595
  }
597
596
  return retVal;
598
597
  }
@@ -601,9 +600,10 @@ class WizardComponent {
601
600
  let retVal = 0;
602
601
  if (this._dialogBodyComponent) {
603
602
  const dialogBody = this._dialogBodyComponent.elementRef.nativeElement;
603
+ const dialogComponent = dialogBody.closest('fd-dialog');
604
604
  if (dialogBody.tagName.toLowerCase() === 'fd-dialog-body') {
605
605
  this._dialogBodyComponent.dialogConfig.verticalPadding = false;
606
- const dialogBodyTitle = dialogBody.querySelector('.fd-title--h2');
606
+ const dialogBodyTitle = dialogComponent.querySelector('.fd-title--h2');
607
607
  if (dialogBodyTitle) {
608
608
  retVal = dialogBodyTitle.offsetHeight;
609
609
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fundamental-ngx-core-wizard.mjs","sources":["../../../../libs/core/wizard/wizard-next-step/wizard-next-step.component.ts","../../../../libs/core/wizard/wizard-next-step/wizard-next-step.component.html","../../../../libs/core/wizard/wizard-content/wizard-content.component.ts","../../../../libs/core/wizard/wizard-content/wizard-content.component.html","../../../../libs/core/wizard/wizard-injection-token.ts","../../../../libs/core/wizard/wizard-navigation/wizard-navigation.component.ts","../../../../libs/core/wizard/wizard-navigation/wizard-navigation.component.html","../../../../libs/core/wizard/wizard-progress-bar/wizard-progress-bar.directive.ts","../../../../libs/core/wizard/constants.ts","../../../../libs/core/wizard/wizard-step-indicator/wizard-step-indicator.component.ts","../../../../libs/core/wizard/wizard-step-indicator/wizard-step-indicator.component.html","../../../../libs/core/wizard/wizard-step/wizard-step.component.ts","../../../../libs/core/wizard/wizard-step/wizard-step.component.html","../../../../libs/core/wizard/wizard.service.ts","../../../../libs/core/wizard/wizard.component.ts","../../../../libs/core/wizard/wizard.component.html","../../../../libs/core/wizard/wizard.module.ts","../../../../libs/core/wizard/fundamental-ngx-core-wizard.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, Input, inject } from '@angular/core';\n\n@Component({\n selector: 'fd-wizard-next-step',\n templateUrl: './wizard-next-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class WizardNextStepComponent {\n /**\n * Whether or not the next step button should float directly above the footer.\n */\n @Input()\n floating = false;\n\n /**\n * Whether or not element can be hidden when step status is completed.\n */\n @Input()\n set canHide(value: boolean) {\n this._canHide = value;\n\n if (!value) {\n this._showElement();\n }\n }\n\n get canHide(): boolean {\n return this._canHide;\n }\n\n /** @hidden */\n private _canHide = true;\n\n /** @hidden */\n private readonly _elRef = inject(ElementRef);\n\n /** @hidden */\n _getElRef(): ElementRef {\n return this._elRef;\n }\n\n /** @hidden */\n _showElement(): void {\n this._elRef.nativeElement.style.removeProperty('display');\n }\n\n /** @hidden */\n _hideElement(): void {\n this._elRef.nativeElement.style.display = 'none';\n }\n}\n","<div class=\"fd-wizard__next-step\" [class.fd-wizard__next-step--floating]=\"floating\">\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { WizardNextStepComponent } from '../wizard-next-step/wizard-next-step.component';\nimport { WizardSize } from '../wizard-progress-bar/wizard-progress-bar.directive';\n\nexport type WizardContentBackground = 'solid' | 'list' | 'transparent';\n\n@Component({\n selector: 'fd-wizard-content',\n templateUrl: './wizard-content.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './wizard-content.component.scss',\n standalone: true\n})\nexport class WizardContentComponent {\n /**\n * The type of wizard background ('solid', 'list', or 'transparent').\n */\n @Input()\n contentBackground: WizardContentBackground;\n\n /**\n * Size (horizontal paddings) of the wizard content.\n */\n @Input()\n size: WizardSize;\n\n /** @hidden */\n @ViewChild('contentTemplate')\n contentTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ContentChild(WizardNextStepComponent)\n nextStep: WizardNextStepComponent;\n\n /** @hidden */\n wizardContentId: string;\n\n /** @hidden */\n tallContent = false;\n}\n","<ng-template #contentTemplate>\n <section\n [id]=\"wizardContentId\"\n class=\"fd-wizard__content\"\n [class]=\"\n (contentBackground ? 'fd-wizard__content--' + contentBackground + ' ' : '') +\n (size ? 'fd-wizard__content--' + size : '')\n \"\n [class.fd-wizard-tall-content]=\"tallContent\"\n >\n <div class=\"fd-wizard__step-content-container\">\n <ng-content></ng-content>\n </div>\n </section>\n</ng-template>\n","import { InjectionToken } from '@angular/core';\n\nexport interface WizardComponentInterface {\n displaySummaryStep: boolean;\n ariaLabel: string;\n}\n\nexport const WIZARD = new InjectionToken<WizardComponentInterface>('Wizard component dependency');\n","import { ChangeDetectionStrategy, Component, Inject, Input, Optional } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { WIZARD, WizardComponentInterface } from '../wizard-injection-token';\n\n@Component({\n selector: 'fd-wizard-navigation',\n templateUrl: './wizard-navigation.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class WizardNavigationComponent {\n /** Aria label for the wizard navigation component element. */\n @Input()\n set ariaLabel(value: Nullable<string>) {\n this._ariaLabel = value;\n }\n get ariaLabel(): string | undefined {\n return this._ariaLabel ?? this._wizard?.ariaLabel;\n }\n\n /** @hidden */\n private _ariaLabel: Nullable<string>;\n\n /** @hidden */\n constructor(@Optional() @Inject(WIZARD) private _wizard?: WizardComponentInterface) {}\n}\n","<nav class=\"fd-wizard__navigation\" [attr.aria-label]=\"ariaLabel\">\n <ng-content></ng-content>\n</nav>\n","import { Directive, Input } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nexport type WizardSize = 'sm' | 'md' | 'lg' | 'xl';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-wizard-progress-bar]',\n host: {\n class: 'fd-wizard__progress-bar',\n '[class.fd-wizard__progress-bar--sm]': 'size === \"sm\"',\n '[class.fd-wizard__progress-bar--md]': 'size === \"md\"',\n '[class.fd-wizard__progress-bar--lg]': 'size === \"lg\"',\n '[class.fd-wizard__progress-bar--xl]': 'size === \"xl\"',\n '[style.display]': 'visible ? \"\" : \"none\"'\n },\n standalone: true\n})\nexport class WizardProgressBarDirective {\n /**\n * Size (horizontal paddings) of the wizard progress bar.\n */\n @Input()\n size: Nullable<WizardSize> = null;\n\n /** @hidden */\n visible = true;\n}\n","import { InjectionToken } from '@angular/core';\nimport { WizardStepIndicator } from './models/wizard-step';\n\nexport const ACTIVE_STEP_STATUS = 'active';\nexport const CURRENT_STEP_STATUS = 'current';\nexport const UPCOMING_STEP_STATUS = 'upcoming';\nexport const COMPLETED_STEP_STATUS = 'completed';\nexport const FD_WIZARD_STEP_INDICATOR = new InjectionToken<WizardStepIndicator>('FdWizardStepindicator');\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n signal\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport {\n ActionSheetBodyComponent,\n ActionSheetComponent,\n ActionSheetControlComponent,\n ActionSheetItemComponent\n} from '@fundamental-ngx/core/action-sheet';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent, IconFont } from '@fundamental-ngx/core/icon';\nimport { Subscription } from 'rxjs';\nimport { FD_WIZARD_STEP_INDICATOR } from '../constants';\nimport { WizardStepIndicator } from '../models/wizard-step';\nimport { WizardStepComponent } from '../wizard-step/wizard-step.component';\n\n@Component({\n selector: 'fd-wizard-step-indicator',\n templateUrl: './wizard-step-indicator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_WIZARD_STEP_INDICATOR,\n useExisting: WizardStepIndicatorComponent\n }\n ],\n standalone: true,\n imports: [\n ActionSheetComponent,\n ActionSheetControlComponent,\n NgTemplateOutlet,\n ActionSheetBodyComponent,\n ActionSheetItemComponent,\n IconComponent\n ]\n})\nexport class WizardStepIndicatorComponent implements WizardStepIndicator, OnDestroy {\n /**\n * The icon to use for this step.\n */\n @Input()\n glyph: Nullable<string>;\n\n /** Glyph font family */\n @Input()\n glyphFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n /**\n * Event emitted when this step indicator is clicked.\n */\n @Output()\n stepIndicatorItemClicked = new EventEmitter<WizardStepComponent>();\n\n /** @hidden */\n @ViewChild(ActionSheetComponent)\n actionSheet: ActionSheetComponent;\n\n /** @hidden */\n stackedItems$ = signal<WizardStepComponent[]>([]);\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n stepItemClicked(step?: WizardStepComponent, event?: MouseEvent): void {\n if (step && step.visited) {\n if (this.actionSheet) {\n this.actionSheet.close();\n }\n event?.preventDefault();\n this.stepIndicatorItemClicked.emit(step);\n }\n }\n\n /** @hidden */\n setStackedItems(items: WizardStepComponent[]): void {\n this.stackedItems$.set(items || []);\n }\n}\n","@if (stackedItems$() && stackedItems$().length > 1) {\n <fd-action-sheet [style.pointer-events]=\"'all'\">\n <fd-action-sheet-control>\n <span class=\"fd-wizard__step-indicator\">\n <ng-template [ngTemplateOutlet]=\"stepIndicatorContent\"></ng-template>\n </span>\n </fd-action-sheet-control>\n <fd-action-sheet-body>\n @for (step of stackedItems$(); track step) {\n <li\n fd-action-sheet-item\n [label]=\"step.label\"\n [glyph]=\"step.glyph\"\n [glyphFont]=\"glyphFont\"\n [disabled]=\"!step.visited\"\n (click)=\"stepItemClicked(step, $event)\"\n ></li>\n }\n </fd-action-sheet-body>\n </fd-action-sheet>\n} @else {\n <span\n class=\"fd-wizard__step-indicator\"\n (click)=\"stepItemClicked(stackedItems$().length ? stackedItems$()[0] : undefined, $event)\"\n >\n <ng-template [ngTemplateOutlet]=\"stepIndicatorContent\"></ng-template>\n </span>\n}\n<ng-template #stepIndicatorContent>\n @if (glyph) {\n <fd-icon [glyph]=\"glyph\" class=\"fd-wizard__icon\"></fd-icon>\n }\n <ng-content></ng-content>\n</ng-template>\n","import { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { KeyUtil, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Subscription } from 'rxjs';\nimport { WizardContentComponent } from '../wizard-content/wizard-content.component';\n\nexport type WizardStepStatus = 'completed' | 'current' | 'upcoming' | 'active';\n\nimport { COMPLETED_STEP_STATUS, CURRENT_STEP_STATUS, FD_WIZARD_STEP_INDICATOR } from '../constants';\nimport { WizardStepIndicator } from '../models/wizard-step';\nimport { WIZARD, WizardComponentInterface } from '../wizard-injection-token';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-wizard-step]',\n host: {\n class: 'fd-wizard__step',\n '[class.fd-wizard__step--completed]': 'status === \"completed\" || completed',\n '[class.fd-wizard__step--current]': 'status === \"current\"',\n '[class.fd-wizard__step--upcoming]': 'status === \"upcoming\"',\n '[class.fd-wizard__step--active]': 'status === \"active\"',\n '[attr.aria-label]': 'ariaLabel'\n },\n templateUrl: './wizard-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: []\n})\nexport class WizardStepComponent implements OnChanges, AfterViewInit, OnDestroy {\n /**\n * The aria-label for the step container.\n */\n @Input()\n ariaLabel: Nullable<string>;\n\n /**\n * The aria-label for the step container.\n */\n @Input()\n ariaRoleDecription = 'Navigation';\n\n /**\n * The type of step ('completed', 'current', 'upcoming', and 'active'.)\n */\n @Input()\n status: WizardStepStatus;\n\n /**\n * Whether or not this is a 'branching' step.\n */\n @Input()\n branching = false;\n\n /**\n * The label text.\n */\n @Input()\n label: string;\n\n /**\n * The smaller text for labeling the step as optional.\n */\n @Input()\n optionalText: string;\n\n /**\n * Whether or not this step is the summary page.\n */\n @Input()\n isSummary = false;\n\n /**\n * User-defined validation function which determines if user can navigate between steps.\n */\n @Input()\n stepClickValidator: (visited: boolean, completed: boolean) => boolean | Promise<boolean>;\n\n /**\n * Event emitted when the wizard step's status changes.\n */\n @Output()\n statusChange = new EventEmitter<WizardStepStatus>();\n\n /**\n * Event emitted when a step is clicked.\n */\n @Output()\n stepClicked = new EventEmitter<WizardStepComponent>();\n\n /**\n * Event emitted when a step indicator is clicked.\n */\n @Output()\n stepIndicatorItemClicked = new EventEmitter<WizardStepComponent>();\n\n /** @hidden */\n @ContentChild(WizardContentComponent)\n content: WizardContentComponent;\n\n /** @hidden */\n @ContentChild(FD_WIZARD_STEP_INDICATOR)\n stepIndicator: WizardStepIndicator<WizardStepComponent>;\n\n /** The wizard label span element. */\n @ViewChild('wizardLabel', { read: ElementRef })\n wizardLabel: ElementRef;\n\n /** @hidden */\n @ViewChild('progressBarLink', { read: ElementRef })\n progressBarLink: ElementRef;\n\n /** @hidden */\n glyph: string;\n\n /** @hidden */\n visited = false;\n\n /** @hidden */\n completed = false;\n\n /** @hidden */\n _stepId: number;\n\n /** @hidden */\n _finalStep = false;\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n constructor(\n private _elRef: ElementRef,\n private _cdRef: ChangeDetectorRef,\n @Optional() @Inject(WIZARD) private _wizard: WizardComponentInterface\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes.status) {\n if (\n changes.status.previousValue === CURRENT_STEP_STATUS &&\n changes.status.currentValue === COMPLETED_STEP_STATUS\n ) {\n this.completed = true;\n }\n this.statusChange.emit(this.status);\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.isSummary && !this._wizard?.displaySummaryStep) {\n this._summaryInit();\n } else if (this.stepIndicator) {\n this._notSummaryInit();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n setFinalStep(val: boolean): void {\n this._finalStep = val;\n this._cdRef.detectChanges();\n }\n\n /** @hidden */\n async stepContainerKeypress(event?: KeyboardEvent): Promise<void> {\n if (event) {\n event.preventDefault();\n }\n\n if (\n this.visited &&\n (!event || KeyUtil.isKeyCode(event, [SPACE, ENTER])) &&\n (!this.stepIndicator ||\n !this.stepIndicator.stackedItems$() ||\n !this.stepIndicator.stackedItems$().length) &&\n (this.stepClickValidator === undefined ||\n (await this.stepClickValidator(this.visited, this.completed)) === true)\n ) {\n this.stepClicked.emit(this);\n }\n }\n\n /** @hidden */\n getClassList(): DOMTokenList {\n return this._elRef.nativeElement.classList;\n }\n\n /** @hidden */\n hasLabel(label: string): boolean {\n return this._elRef.nativeElement.classList.contains(label);\n }\n\n /** @hidden */\n getStepClientWidth(): number {\n return this._elRef.nativeElement.clientWidth;\n }\n\n /** @hidden */\n removeFromDom(): void {\n if (this._elRef.nativeElement.parentNode) {\n this._elRef.nativeElement.parentNode.removeChild(this._elRef.nativeElement);\n }\n }\n\n /** @hidden */\n _summaryInit(): void {\n this._elRef.nativeElement.style.display = 'none';\n this.content.tallContent = true;\n }\n\n /** @hidden */\n _notSummaryInit(): void {\n this._subscriptions.add(\n this.stepIndicator.stepIndicatorItemClicked.subscribe((step) => {\n this.stepIndicatorItemClicked.emit(step);\n })\n );\n if (this.stepIndicator.glyph) {\n this.glyph = this.stepIndicator.glyph;\n }\n }\n}\n","<div class=\"fd-wizard__step-wrapper\">\n @if (label || optionalText) {\n <a\n #progressBarLink\n class=\"fd-wizard__step-container\"\n (click)=\"stepContainerKeypress()\"\n (keypress)=\"stepContainerKeypress($event)\"\n [style.cursor]=\"visited ? 'pointer' : 'auto'\"\n [style.pointer-events]=\"visited ? 'auto' : 'none'\"\n [attr.tabindex]=\"status === 'current' ? 0 : -1\"\n [attr.aria-roledescription]=\"ariaRoleDecription\"\n >\n <ng-content select=\"fd-wizard-step-indicator\"></ng-content>\n <div class=\"fd-wizard__label-container\" [class.fd-wizard__label-container--optional]=\"optionalText\">\n <div #wizardLabel>\n <span class=\"fd-wizard__label\">{{ label }}</span>\n @if (optionalText) {\n <span class=\"fd-wizard__optional-text\">\n {{ optionalText }}\n </span>\n }\n </div>\n </div>\n </a>\n }\n <ng-content></ng-content>\n @if (!_finalStep || branching) {\n <span\n class=\"fd-wizard__connector\"\n [class.fd-wizard__connector--active]=\"completed\"\n [class.fd-wizard__connector--branching]=\"branching\"\n >\n </span>\n }\n</div>\n","import { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { Injectable, QueryList, inject } from '@angular/core';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { COMPLETED_STEP_STATUS, CURRENT_STEP_STATUS } from './constants';\nimport { WizardStepComponent } from './wizard-step/wizard-step.component';\n\n@Injectable()\nexport class WizardService {\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n progressBarKeyHandler(event: any, steps: QueryList<WizardStepComponent>, index: number): void {\n const rtlDirection = this._rtlService?.rtlSignal();\n if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {\n if (\n steps.get(index - 1)?.status === COMPLETED_STEP_STATUS ||\n steps.get(index - 1)?.status === CURRENT_STEP_STATUS\n ) {\n if (!rtlDirection) {\n this._focusPrevious(index, steps);\n } else {\n this._focusNext(index, steps);\n }\n }\n } else if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {\n if (steps.get(index)?.status === COMPLETED_STEP_STATUS) {\n if (!rtlDirection) {\n this._focusNext(index, steps);\n } else {\n this._focusPrevious(index, steps);\n }\n }\n }\n }\n\n /** @hidden */\n private _focusNext(index: number, steps: QueryList<WizardStepComponent>): void {\n if (index + 1 < steps.length) {\n steps.get(index + 1)?.progressBarLink.nativeElement.focus();\n } else {\n steps.get(0)?.progressBarLink.nativeElement.focus();\n }\n }\n\n /** @hidden */\n private _focusPrevious(index: number, steps: QueryList<WizardStepComponent>): void {\n if (index - 1 >= 0) {\n steps.get(index - 1)?.progressBarLink.nativeElement.focus();\n } else {\n steps.get(steps.length - 1)?.progressBarLink.nativeElement.focus();\n }\n }\n}\n","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n Optional,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { Nullable, TabbableElementService, scrollTop } from '@fundamental-ngx/cdk/utils';\nimport { DialogBodyComponent, FD_DIALOG_BODY_COMPONENT } from '@fundamental-ngx/core/dialog';\nimport { ScrollSpyDirective } from '@fundamental-ngx/core/scroll-spy';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { resolveTranslationSignal } from '@fundamental-ngx/i18n';\nimport { Subscription } from 'rxjs';\nimport { ACTIVE_STEP_STATUS, COMPLETED_STEP_STATUS, CURRENT_STEP_STATUS, UPCOMING_STEP_STATUS } from './constants';\nimport { WizardContentComponent } from './wizard-content/wizard-content.component';\nimport { WIZARD } from './wizard-injection-token';\nimport { WizardProgressBarDirective } from './wizard-progress-bar/wizard-progress-bar.directive';\nimport { WizardStepComponent } from './wizard-step/wizard-step.component';\nimport { WizardService } from './wizard.service';\n\nexport const STEP_MIN_WIDTH = 168;\nexport const STEP_STACKED_TOP_CLASS = 'fd-wizard__step--stacked-top';\nexport const STEP_STACKED_CLASS = 'fd-wizard__step--stacked';\nexport const STEP_NO_LABEL_CLASS = 'fd-wizard__step--no-label';\n\nexport const WIZARD_NAVIGATION_CLASS = 'fd-wizard__navigation';\nexport const WIZARD_CONTENT_CLASS = 'fd-wizard__content';\nexport const WIZARD_CONTAINER_WRAPPER_CLASS = 'fd-wizard-container-wrapper';\nexport const WIZARD_TALL_CONTENT_CLASS = 'fd-wizard-tall-content';\nexport const SHELLBAR_CLASS = 'fd-shellbar';\nexport const BAR_FOOTER_CLASS = 'fd-bar--footer';\nexport const BAR_FLOATING_FOOTER_CLASS = 'fd-bar--floating-footer';\n\nexport let _fromScrollToCurrentStep;\nexport let timer: any = null;\nexport const handleTimeoutReference = (): void => {\n if (timer !== null) {\n clearTimeout(timer);\n }\n timer = setTimeout(() => {\n _fromScrollToCurrentStep = false;\n }, 150);\n};\n\n@Component({\n selector: 'fd-wizard',\n templateUrl: './wizard.component.html',\n styleUrl: './wizard.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n WizardService,\n {\n provide: WIZARD,\n useExisting: WizardComponent\n }\n ],\n host: {\n role: 'region',\n '[attr.aria-label]': 'ariaLabel || _defaultAriaLabel()'\n },\n standalone: true,\n imports: [ScrollSpyDirective, CdkScrollable, ScrollbarDirective, NgTemplateOutlet]\n})\nexport class WizardComponent implements AfterViewInit, OnDestroy {\n /**\n * Whether or not to append the step to the wizard. If false, each step will be displayed on a different page.\n * Default is true.\n */\n @Input()\n appendToWizard = true;\n\n /**\n * Custom height to use for the wizard's content pane. By default, this value is calc(100vh - 144px), where 144px\n * is the combined height of the shellbar, wizard header and wizard footer.\n */\n @Input()\n contentHeight: Nullable<string | null>;\n\n /**\n * Whether or not apply responsive paddings styling.\n */\n @Input()\n @HostBinding('class.fd-wizard--responsive-paddings')\n responsivePaddings = false;\n\n /** Whether to display a summary step. */\n @Input()\n displaySummaryStep = false;\n\n /**\n * adding aria label to the component\n * If not provided, is being translated by i18n package\n */\n @Input()\n ariaLabel: string;\n\n /** @hidden */\n @ContentChildren(WizardStepComponent, { descendants: true })\n steps: QueryList<WizardStepComponent>;\n\n /** @hidden */\n @ContentChild(WizardProgressBarDirective)\n progressBar: WizardProgressBarDirective;\n\n /** @hidden */\n @ContentChildren(WizardContentComponent)\n wizardContent: WizardContentComponent;\n\n /** @hidden */\n @ViewChild('wrapperContainer')\n wrapperContainer: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild(ScrollbarDirective)\n scrollbar: ScrollbarDirective;\n\n /** @hidden */\n contentTemplates: TemplateRef<any>[] = [];\n\n /** @hidden */\n stackedStepsLeft: WizardStepComponent[] = [];\n\n /** @hidden */\n stackedStepsRight: WizardStepComponent[] = [];\n\n /** @hidden */\n protected _defaultAriaLabel = resolveTranslationSignal('coreWizard.ariaLabel');\n\n /** @hidden */\n private _stepEventSubscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _previousWidth: number;\n\n /** @hidden */\n private readonly _tabbableService = inject(TabbableElementService);\n\n /** @hidden */\n constructor(\n private _elRef: ElementRef,\n private readonly _cdRef: ChangeDetectorRef,\n @Optional() @Inject(FD_DIALOG_BODY_COMPONENT) private _dialogBodyComponent: DialogBodyComponent\n ) {}\n\n /** @hidden */\n @HostListener('window:resize')\n resizeHandler(): void {\n const wizardWidth = this._elRef.nativeElement.getBoundingClientRect().width;\n if (!this._previousWidth || wizardWidth <= this._previousWidth) {\n this._wizardShrinking();\n } else if (wizardWidth > this._previousWidth) {\n this._shrinkWhileAnyStepIsTooNarrow();\n }\n this._previousWidth = wizardWidth;\n if (this.contentHeight) {\n this._elRef.nativeElement.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS).style.height =\n this.contentHeight;\n } else {\n this._setContainerAndTallContentHeight();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (this._subscriptions.closed) {\n return;\n }\n\n // fixes ExpressionChangedAfterItHasBeenCheckedError\n this._setContentTemplates();\n this._subscriptions.add(\n this.steps.changes.subscribe(() => {\n this._handleStepOrStatusChanges();\n this._setupStepEvents();\n })\n );\n this._setupStepEvents();\n this._cdRef.detectChanges();\n this._handleStepOrStatusChanges();\n this.resizeHandler();\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._stepEventSubscriptions.unsubscribe();\n this._subscriptions.unsubscribe();\n this.wrapperContainer?.nativeElement.removeEventListener('scroll', handleTimeoutReference);\n }\n\n /** @hidden */\n scrollSpyChange($event: HTMLElement): void {\n if (!_fromScrollToCurrentStep) {\n this.steps.forEach((step) => {\n if (step._stepId.toString() === $event.children[0].children[0].id) {\n step.status = CURRENT_STEP_STATUS;\n } else if (step._stepId < parseInt($event.children[0].children[0].id, 10)) {\n step.status = COMPLETED_STEP_STATUS;\n } else {\n step.status = UPCOMING_STEP_STATUS;\n }\n });\n }\n this._shrinkWhileAnyStepIsTooNarrow();\n }\n\n /**\n * @hidden\n * @private\n * This function determines the height of the wizard content by looking for the document's shellbar, the wizard\n * navigation and the wizard footer, and calculating the height based on their presence.\n */\n private _calculateContentHeight(): number {\n let wizardNavHeight = 0;\n const shellbarHeight = this._getShellbarHeight();\n if (!this._isCurrentStepSummary() || this.displaySummaryStep) {\n wizardNavHeight = this._getWizardNavHeight();\n }\n const wizardFooterHeight = this._getWizardFooterHeight();\n const dialogOffset = this._getDialogOffset();\n\n return shellbarHeight + wizardNavHeight + wizardFooterHeight + dialogOffset;\n }\n\n /** @hidden */\n private _getShellbarHeight(): number {\n return document.querySelector<HTMLElement>('.' + SHELLBAR_CLASS)?.clientHeight ?? 0;\n }\n\n /** @hidden */\n private _getWizardNavHeight(): number {\n const wizard = this._elRef.nativeElement;\n let retVal;\n if (wizard.querySelector('.' + WIZARD_NAVIGATION_CLASS)) {\n retVal = wizard.querySelector('.' + WIZARD_NAVIGATION_CLASS).clientHeight;\n } else {\n retVal = 0;\n }\n return retVal;\n }\n\n /** @hidden */\n private _getWizardFooterHeight(): number {\n const wizard = this._elRef.nativeElement;\n let retVal;\n if (wizard.querySelector('.' + BAR_FOOTER_CLASS)) {\n retVal = wizard.querySelector('.' + BAR_FOOTER_CLASS).offsetHeight;\n } else if (wizard.querySelector('.' + BAR_FLOATING_FOOTER_CLASS)) {\n retVal = wizard.querySelector('.' + BAR_FLOATING_FOOTER_CLASS).offsetHeight;\n } else {\n retVal = 0;\n }\n return retVal;\n }\n\n /** @hidden */\n private _getDialogOffset(): number {\n let retVal = 0;\n if (this._dialogBodyComponent) {\n const dialogBody = this._dialogBodyComponent.elementRef.nativeElement;\n if (dialogBody.tagName.toLowerCase() === 'fd-dialog-body') {\n this._dialogBodyComponent.dialogConfig.verticalPadding = false;\n const dialogBodyTitle = dialogBody.querySelector('.fd-title--h2');\n if (dialogBodyTitle) {\n retVal = dialogBodyTitle.offsetHeight;\n }\n retVal = retVal + window.innerHeight - dialogBody.offsetHeight;\n }\n }\n\n return retVal;\n }\n\n /** @hidden */\n private _setContainerAndTallContentHeight(): void {\n const wizard = this._elRef.nativeElement;\n const combinedHeight = this.contentHeight ? this.contentHeight : this._calculateContentHeight();\n if (wizard.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS)) {\n wizard.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS).style.height =\n 'calc(100vh - ' + combinedHeight + 'px)';\n }\n wizard.querySelectorAll('.' + WIZARD_CONTENT_CLASS).forEach((node) => {\n node.style.height = 'auto';\n });\n if (wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS)) {\n if (\n wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS).offsetHeight <\n wizard.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS).offsetHeight\n ) {\n wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS).style.height =\n 'calc(100vh - ' + combinedHeight + 'px)';\n } else {\n wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS).style.paddingBottom = '24px';\n }\n }\n }\n\n /** @hidden */\n private _setupStepEvents(): void {\n this._stepEventSubscriptions.unsubscribe();\n this._stepEventSubscriptions = new Subscription();\n this.steps.forEach((step) => {\n this._stepEventSubscriptions.add(\n step.stepClicked.subscribe((event) => {\n this._stepClicked(event);\n })\n );\n this._stepEventSubscriptions.add(\n step.statusChange.subscribe(() => {\n this._handleStepOrStatusChanges();\n })\n );\n this._stepEventSubscriptions.add(\n step.stepIndicatorItemClicked.subscribe((event) => {\n this._stepClicked(event);\n })\n );\n // need to call wizardShrinking for each step < 168px on first load\n if (step.wizardLabel && step.getStepClientWidth() < STEP_MIN_WIDTH) {\n this._wizardShrinking();\n }\n });\n }\n\n /** @hidden */\n private _wizardShrinking(): void {\n const currentStep = this._getCurrentStep();\n if (\n currentStep &&\n (!currentStep.isSummary || this.displaySummaryStep) &&\n currentStep.wizardLabel &&\n currentStep.getStepClientWidth() < STEP_MIN_WIDTH\n ) {\n this._hideSomeStep(currentStep);\n this._setStackedTop();\n }\n }\n\n /** @hidden */\n private _setContentTemplates(): void {\n const templatesLength = this.contentTemplates.length;\n this.contentTemplates = [];\n let _stepId = 0;\n const steps = this.steps.toArray();\n for (const step of steps) {\n if (step.content) {\n if (!step.isSummary || this.displaySummaryStep) {\n step.content.tallContent = false;\n }\n step.content.wizardContentId = _stepId.toString();\n }\n step._stepId = _stepId;\n _stepId++;\n step.setFinalStep(false);\n /*\n If the step is completed and appendToWizard is true, hide the nextStep button, unless it's the last step,\n or if there's a summary and it is the second to last step\n */\n if (\n step.completed &&\n this.appendToWizard &&\n step.content?.nextStep?.canHide &&\n step !== this._getLastNonSummaryStep()\n ) {\n step.content.nextStep._hideElement();\n } else if (\n step.content?.nextStep &&\n ((step.completed && this.appendToWizard) ||\n (step.visited && step.branching && step.status === CURRENT_STEP_STATUS))\n ) {\n step.content.nextStep._showElement();\n }\n if (\n step.visited ||\n ((step.status === CURRENT_STEP_STATUS || step.status === COMPLETED_STEP_STATUS) && step.content)\n ) {\n step.visited = true;\n if (step.status === CURRENT_STEP_STATUS && (!step.completed || !this.appendToWizard)) {\n step.content.tallContent = true;\n }\n\n const isCurrentStep = !this.appendToWizard && step.status === CURRENT_STEP_STATUS;\n\n if (!templatesLength || isCurrentStep) {\n this.contentTemplates = [step.content.contentTemplate];\n\n // If we found needed step, break the cycle, since it might set wrong step later.\n if (isCurrentStep) {\n break;\n }\n } else if (this.appendToWizard && (!step.isSummary || this.displaySummaryStep)) {\n this.contentTemplates.push(step.content.contentTemplate);\n }\n }\n }\n\n const lastVisibleTemplate = steps[this.contentTemplates.length - 1];\n if (lastVisibleTemplate && lastVisibleTemplate.content) {\n lastVisibleTemplate.content.tallContent = true;\n }\n this._setFinalStep();\n }\n\n /** @hidden */\n private _scrollToCurrentStep(): void {\n if (this.appendToWizard) {\n _fromScrollToCurrentStep = true;\n this.steps.forEach((step, index) => {\n if (step.status === CURRENT_STEP_STATUS && (!step.isSummary || this.displaySummaryStep)) {\n const child = this.wrapperContainer.nativeElement.children[0].children[index] as HTMLElement;\n const wizardNavigationHeight = this._elRef.nativeElement.querySelector(\n '.' + WIZARD_NAVIGATION_CLASS\n ).clientHeight;\n\n scrollTop(this.wrapperContainer.nativeElement, child.offsetTop - wizardNavigationHeight);\n\n if (index === 0) {\n this._focusFirstTabbableElement(index);\n } else {\n // setTimeout needed to allow for smooth scroll animation\n setTimeout(() => {\n this._focusFirstTabbableElement(index);\n }, 500);\n }\n }\n });\n this._setUpScrollListener();\n }\n }\n\n /** @hidden */\n private _focusFirstTabbableElement(index = 0): void {\n const contentContainer = this._elRef.nativeElement.querySelectorAll('.fd-wizard__content')[index];\n this._tabbableService.getTabbableElement(contentContainer)?.focus();\n }\n\n /** @hidden */\n private _setUpScrollListener(): void {\n this.wrapperContainer?.nativeElement.addEventListener('scroll', handleTimeoutReference, false);\n }\n\n /** @hidden */\n private _hideSomeStep(currentStep: WizardStepComponent): void {\n // If a small step was found, get the step with a visible label furthest away from the current step and hide the label\n let stepsArray = this.steps.toArray();\n stepsArray = stepsArray.filter((step) => !step.hasLabel(STEP_NO_LABEL_CLASS));\n if (this.steps.last.isSummary && !this.displaySummaryStep) {\n stepsArray.pop();\n }\n if (stepsArray.length > 1) {\n let currentStepIndex = 0,\n stepToHide;\n if (currentStep) {\n currentStepIndex = stepsArray.indexOf(currentStep);\n }\n currentStepIndex > (stepsArray.length - 1) / 2\n ? (stepToHide = stepsArray[0])\n : (stepToHide = stepsArray[stepsArray.length - 1]);\n stepToHide.getClassList().add(STEP_NO_LABEL_CLASS);\n stepToHide.getClassList().add(STEP_STACKED_CLASS);\n if (stepsArray.indexOf(stepToHide) < currentStepIndex && !this.stackedStepsLeft.includes(stepToHide)) {\n this.stackedStepsLeft.splice(this.steps.toArray().indexOf(stepToHide), 0, stepToHide);\n } else if (\n stepsArray.indexOf(stepToHide) > currentStepIndex &&\n !this.stackedStepsRight.includes(stepToHide)\n ) {\n this.stackedStepsRight.unshift(stepToHide);\n }\n this._cdRef.detectChanges();\n }\n }\n\n /** @hidden */\n private _setStackedTop(): void {\n const currentStep = this._getCurrentStep();\n this.steps.forEach((step, index) => {\n if (step.stepIndicator) {\n step.getClassList().remove(STEP_STACKED_TOP_CLASS);\n if (this.steps.toArray()[index + 1] === currentStep) {\n if (this.steps.length > 1) {\n step.getClassList().add(STEP_STACKED_TOP_CLASS);\n if (!this.stackedStepsLeft.includes(step) && this.stackedStepsLeft.length >= 1) {\n this.stackedStepsLeft.splice(index, 0, step);\n }\n }\n step.stepIndicator.setStackedItems(this.stackedStepsLeft);\n } else {\n step.stepIndicator.stackedItems$.set([]);\n }\n }\n });\n this._getLastNonSummaryStep().stepIndicator?.setStackedItems(this.stackedStepsRight);\n }\n\n /** @hidden */\n private _resetStepClasses(): void {\n this.steps.forEach((step) => {\n step.getClassList().remove(STEP_STACKED_TOP_CLASS);\n step.getClassList().remove(STEP_STACKED_CLASS);\n step.getClassList().remove(STEP_NO_LABEL_CLASS);\n });\n }\n\n /** @hidden */\n private _handleStepOrStatusChanges(): void {\n if (this._isCurrentStepSummary() && !this.displaySummaryStep) {\n setTimeout(() => {\n this.progressBar.visible = false;\n });\n this._showSummary();\n } else {\n this.progressBar.visible = true;\n this._setContentTemplates();\n this._shrinkWhileAnyStepIsTooNarrow();\n }\n if (!this.appendToWizard) {\n this._focusFirstTabbableElement();\n }\n setTimeout(() => {\n this._cdRef.detectChanges();\n this.resizeHandler();\n if (!this._isCurrentStepSummary() || this.displaySummaryStep) {\n this._scrollToCurrentStep();\n }\n });\n this._setFinalStep();\n }\n\n /** @hidden */\n private _setFinalStep(): void {\n const lastNonSummaryStep = this._getLastNonSummaryStep();\n if (lastNonSummaryStep) {\n if (this.steps.last.isSummary && !this.displaySummaryStep) {\n this.steps.last.removeFromDom();\n }\n if (lastNonSummaryStep.content) {\n lastNonSummaryStep.content.tallContent = true;\n }\n lastNonSummaryStep.setFinalStep(true);\n }\n }\n\n /** @hidden */\n private _showSummary(): void {\n this.steps.forEach((step) => {\n if (!step.isSummary) {\n step.completed = true;\n }\n });\n const summary = this.steps.find((step) => step.isSummary);\n if (summary) {\n summary.content.tallContent = true;\n this.contentTemplates = [summary.content.contentTemplate];\n }\n }\n\n /** @hidden */\n private _isCurrentStepSummary(): boolean {\n return this.steps.some((step) => step.status === CURRENT_STEP_STATUS && step.isSummary);\n }\n\n /** @hidden */\n private _getCurrentStep(): WizardStepComponent {\n return this.steps.filter(\n (step) => step.status === CURRENT_STEP_STATUS || step.status === ACTIVE_STEP_STATUS\n )[0];\n }\n\n /** @hidden */\n private _shrinkWhileAnyStepIsTooNarrow(): void {\n // Add small delay for elements to render appropriately.\n setTimeout(() => {\n this.stackedStepsLeft = [];\n this.stackedStepsRight = [];\n this.steps.first.stepIndicator?.setStackedItems(this.stackedStepsLeft);\n this._getLastNonSummaryStep().stepIndicator?.setStackedItems(this.stackedStepsRight);\n this._resetStepClasses();\n let i = 0;\n while (this._anyStepIsTooNarrow() && i < this.steps.length - 1) {\n i++;\n this._wizardShrinking();\n }\n }, 10);\n }\n\n /** @hidden */\n private _anyStepIsTooNarrow(): boolean {\n return this.steps.some((step) => step.getStepClientWidth() < STEP_MIN_WIDTH);\n }\n\n /** @hidden */\n private _stepClicked(clickedStep: WizardStepComponent): void {\n if (!clickedStep) {\n clickedStep = this.steps.first;\n }\n const clickedStepIndex = this.steps.toArray().indexOf(clickedStep);\n this.steps.forEach((step) => {\n if (step === clickedStep) {\n step.status = CURRENT_STEP_STATUS;\n step.statusChange.emit(CURRENT_STEP_STATUS);\n } else if (step !== clickedStep) {\n if (this.steps.toArray().indexOf(step) < clickedStepIndex) {\n step.status = COMPLETED_STEP_STATUS;\n step.statusChange.emit(COMPLETED_STEP_STATUS);\n } else if (this.steps.toArray().indexOf(step) > clickedStepIndex) {\n step.status = UPCOMING_STEP_STATUS;\n step.statusChange.emit(UPCOMING_STEP_STATUS);\n }\n }\n });\n setTimeout(() => {\n (document.activeElement as HTMLElement).blur(); // this function can focus step indicators undesirably\n });\n }\n\n /** @hidden */\n private _getLastNonSummaryStep(): WizardStepComponent {\n if (this.steps.last.isSummary && !this.displaySummaryStep) {\n return this.steps.toArray()[this.steps.length - 2];\n }\n\n return this.steps.last;\n }\n}\n","<section class=\"fd-wizard\">\n <ng-content select=\"fd-wizard-navigation\"></ng-content>\n @if (appendToWizard) {\n <div\n class=\"fd-wizard-container-wrapper\"\n #wrapperContainer\n fdScrollSpy\n cdkScrollable\n [trackedTags]=\"['div']\"\n (spyChange)=\"scrollSpyChange($event)\"\n >\n <div fd-scrollbar>\n @for (contentTemplate of contentTemplates; track contentTemplate) {\n <div>\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template>\n </div>\n }\n </div>\n </div>\n } @else {\n <div cdkScrollable class=\"fd-wizard-container-wrapper\">\n <div fd-scrollbar>\n @for (contentTemplate of contentTemplates; track contentTemplate) {\n <div>\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template>\n </div>\n }\n </div>\n </div>\n }\n <ng-content></ng-content>\n</section>\n","import { NgModule } from '@angular/core';\nimport { WizardContentComponent } from './wizard-content/wizard-content.component';\nimport { WizardNavigationComponent } from './wizard-navigation/wizard-navigation.component';\nimport { WizardNextStepComponent } from './wizard-next-step/wizard-next-step.component';\nimport { WizardProgressBarDirective } from './wizard-progress-bar/wizard-progress-bar.directive';\nimport { WizardStepIndicatorComponent } from './wizard-step-indicator/wizard-step-indicator.component';\nimport { WizardStepComponent } from './wizard-step/wizard-step.component';\nimport { WizardComponent } from './wizard.component';\nimport { WizardService } from './wizard.service';\n\nconst components = [\n WizardComponent,\n WizardNavigationComponent,\n WizardProgressBarDirective,\n WizardStepComponent,\n WizardStepIndicatorComponent,\n WizardContentComponent,\n WizardNextStepComponent\n];\n\n/**\n * @deprecated\n * Use direct imports of `WizardComponent`,\n `WizardNavigationComponent`,\n `WizardProgressBarDirective`,\n `WizardStepComponent`,\n `WizardStepIndicatorComponent`,\n `WizardContentComponent`,\n `WizardNextStepComponent`\n */\n@NgModule({\n imports: [...components],\n exports: [...components],\n providers: [WizardService]\n})\nexport class WizardModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fundamental-ngx-core-wizard.mjs","sources":["../../../../libs/core/wizard/wizard-next-step/wizard-next-step.component.ts","../../../../libs/core/wizard/wizard-next-step/wizard-next-step.component.html","../../../../libs/core/wizard/wizard-content/wizard-content.component.ts","../../../../libs/core/wizard/wizard-content/wizard-content.component.html","../../../../libs/core/wizard/wizard-injection-token.ts","../../../../libs/core/wizard/wizard-navigation/wizard-navigation.component.ts","../../../../libs/core/wizard/wizard-navigation/wizard-navigation.component.html","../../../../libs/core/wizard/wizard-progress-bar/wizard-progress-bar.directive.ts","../../../../libs/core/wizard/constants.ts","../../../../libs/core/wizard/wizard-step-indicator/wizard-step-indicator.component.ts","../../../../libs/core/wizard/wizard-step-indicator/wizard-step-indicator.component.html","../../../../libs/core/wizard/wizard-step/wizard-step.component.ts","../../../../libs/core/wizard/wizard-step/wizard-step.component.html","../../../../libs/core/wizard/wizard.service.ts","../../../../libs/core/wizard/wizard.component.ts","../../../../libs/core/wizard/wizard.component.html","../../../../libs/core/wizard/wizard.module.ts","../../../../libs/core/wizard/fundamental-ngx-core-wizard.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, ElementRef, Input, inject } from '@angular/core';\n\n@Component({\n selector: 'fd-wizard-next-step',\n templateUrl: './wizard-next-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class WizardNextStepComponent {\n /**\n * Whether or not the next step button should float directly above the footer.\n */\n @Input()\n floating = false;\n\n /**\n * Whether or not element can be hidden when step status is completed.\n */\n @Input()\n set canHide(value: boolean) {\n this._canHide = value;\n\n if (!value) {\n this._showElement();\n }\n }\n\n get canHide(): boolean {\n return this._canHide;\n }\n\n /** @hidden */\n private _canHide = true;\n\n /** @hidden */\n private readonly _elRef = inject(ElementRef);\n\n /** @hidden */\n _getElRef(): ElementRef {\n return this._elRef;\n }\n\n /** @hidden */\n _showElement(): void {\n this._elRef.nativeElement.style.removeProperty('display');\n }\n\n /** @hidden */\n _hideElement(): void {\n this._elRef.nativeElement.style.display = 'none';\n }\n}\n","<div class=\"fd-wizard__next-step\" [class.fd-wizard__next-step--floating]=\"floating\">\n <ng-content></ng-content>\n</div>\n","import { ChangeDetectionStrategy, Component, ContentChild, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { WizardNextStepComponent } from '../wizard-next-step/wizard-next-step.component';\nimport { WizardSize } from '../wizard-progress-bar/wizard-progress-bar.directive';\n\nexport type WizardContentBackground = 'solid' | 'list' | 'transparent';\n\n@Component({\n selector: 'fd-wizard-content',\n templateUrl: './wizard-content.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n styleUrl: './wizard-content.component.scss',\n standalone: true\n})\nexport class WizardContentComponent {\n /**\n * The type of wizard background ('solid', 'list', or 'transparent').\n */\n @Input()\n contentBackground: WizardContentBackground;\n\n /**\n * Size (horizontal paddings) of the wizard content.\n */\n @Input()\n size: WizardSize;\n\n /** @hidden */\n @ViewChild('contentTemplate')\n contentTemplate: TemplateRef<any>;\n\n /** @hidden */\n @ContentChild(WizardNextStepComponent)\n nextStep: WizardNextStepComponent;\n\n /** @hidden */\n wizardContentId: string;\n\n /** @hidden */\n tallContent = false;\n}\n","<ng-template #contentTemplate>\n <section\n [id]=\"wizardContentId\"\n class=\"fd-wizard__content\"\n [class]=\"\n (contentBackground ? 'fd-wizard__content--' + contentBackground + ' ' : '') +\n (size ? 'fd-wizard__content--' + size : '')\n \"\n [class.fd-wizard-tall-content]=\"tallContent\"\n >\n <div class=\"fd-wizard__step-content-container\">\n <ng-content></ng-content>\n </div>\n </section>\n</ng-template>\n","import { InjectionToken } from '@angular/core';\n\nexport interface WizardComponentInterface {\n displaySummaryStep: boolean;\n ariaLabel: string;\n}\n\nexport const WIZARD = new InjectionToken<WizardComponentInterface>('Wizard component dependency');\n","import { ChangeDetectionStrategy, Component, Inject, Input, Optional } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport { WIZARD, WizardComponentInterface } from '../wizard-injection-token';\n\n@Component({\n selector: 'fd-wizard-navigation',\n templateUrl: './wizard-navigation.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class WizardNavigationComponent {\n /** Aria label for the wizard navigation component element. */\n @Input()\n set ariaLabel(value: Nullable<string>) {\n this._ariaLabel = value;\n }\n get ariaLabel(): string | undefined {\n return this._ariaLabel ?? this._wizard?.ariaLabel;\n }\n\n /** @hidden */\n private _ariaLabel: Nullable<string>;\n\n /** @hidden */\n constructor(@Optional() @Inject(WIZARD) private _wizard?: WizardComponentInterface) {}\n}\n","<nav class=\"fd-wizard__navigation\" [attr.aria-label]=\"ariaLabel\">\n <ng-content></ng-content>\n</nav>\n","import { Directive, Input } from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\n\nexport type WizardSize = 'sm' | 'md' | 'lg' | 'xl';\n\n@Directive({\n // eslint-disable-next-line @angular-eslint/directive-selector\n selector: '[fd-wizard-progress-bar]',\n host: {\n class: 'fd-wizard__progress-bar',\n '[class.fd-wizard__progress-bar--sm]': 'size === \"sm\"',\n '[class.fd-wizard__progress-bar--md]': 'size === \"md\"',\n '[class.fd-wizard__progress-bar--lg]': 'size === \"lg\"',\n '[class.fd-wizard__progress-bar--xl]': 'size === \"xl\"',\n '[style.display]': 'visible ? \"\" : \"none\"'\n },\n standalone: true\n})\nexport class WizardProgressBarDirective {\n /**\n * Size (horizontal paddings) of the wizard progress bar.\n */\n @Input()\n size: Nullable<WizardSize> = null;\n\n /** @hidden */\n visible = true;\n}\n","import { InjectionToken } from '@angular/core';\nimport { WizardStepIndicator } from './models/wizard-step';\n\nexport const ACTIVE_STEP_STATUS = 'active';\nexport const CURRENT_STEP_STATUS = 'current';\nexport const UPCOMING_STEP_STATUS = 'upcoming';\nexport const COMPLETED_STEP_STATUS = 'completed';\nexport const FD_WIZARD_STEP_INDICATOR = new InjectionToken<WizardStepIndicator>('FdWizardStepindicator');\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n ViewChild,\n signal\n} from '@angular/core';\nimport { Nullable } from '@fundamental-ngx/cdk/utils';\nimport {\n ActionSheetBodyComponent,\n ActionSheetComponent,\n ActionSheetControlComponent,\n ActionSheetItemComponent\n} from '@fundamental-ngx/core/action-sheet';\nimport { FD_DEFAULT_ICON_FONT_FAMILY, IconComponent, IconFont } from '@fundamental-ngx/core/icon';\nimport { Subscription } from 'rxjs';\nimport { FD_WIZARD_STEP_INDICATOR } from '../constants';\nimport { WizardStepIndicator } from '../models/wizard-step';\nimport { WizardStepComponent } from '../wizard-step/wizard-step.component';\n\n@Component({\n selector: 'fd-wizard-step-indicator',\n templateUrl: './wizard-step-indicator.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: FD_WIZARD_STEP_INDICATOR,\n useExisting: WizardStepIndicatorComponent\n }\n ],\n standalone: true,\n imports: [\n ActionSheetComponent,\n ActionSheetControlComponent,\n NgTemplateOutlet,\n ActionSheetBodyComponent,\n ActionSheetItemComponent,\n IconComponent\n ]\n})\nexport class WizardStepIndicatorComponent implements WizardStepIndicator, OnDestroy {\n /**\n * The icon to use for this step.\n */\n @Input()\n glyph: Nullable<string>;\n\n /** Glyph font family */\n @Input()\n glyphFont: IconFont = FD_DEFAULT_ICON_FONT_FAMILY;\n\n /**\n * Event emitted when this step indicator is clicked.\n */\n @Output()\n stepIndicatorItemClicked = new EventEmitter<WizardStepComponent>();\n\n /** @hidden */\n @ViewChild(ActionSheetComponent)\n actionSheet: ActionSheetComponent;\n\n /** @hidden */\n stackedItems$ = signal<WizardStepComponent[]>([]);\n\n /** @hidden */\n private _subscriptions = new Subscription();\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n stepItemClicked(step?: WizardStepComponent, event?: MouseEvent): void {\n if (step && step.visited) {\n if (this.actionSheet) {\n this.actionSheet.close();\n }\n event?.preventDefault();\n this.stepIndicatorItemClicked.emit(step);\n }\n }\n\n /** @hidden */\n setStackedItems(items: WizardStepComponent[]): void {\n this.stackedItems$.set(items || []);\n }\n}\n","@if (stackedItems$() && stackedItems$().length > 1) {\n <fd-action-sheet [style.pointer-events]=\"'all'\">\n <fd-action-sheet-control>\n <span class=\"fd-wizard__step-indicator\">\n <ng-template [ngTemplateOutlet]=\"stepIndicatorContent\"></ng-template>\n </span>\n </fd-action-sheet-control>\n <fd-action-sheet-body>\n @for (step of stackedItems$(); track step) {\n <li\n fd-action-sheet-item\n [label]=\"step.label\"\n [glyph]=\"step.glyph\"\n [glyphFont]=\"glyphFont\"\n [disabled]=\"!step.visited\"\n (click)=\"stepItemClicked(step, $event)\"\n ></li>\n }\n </fd-action-sheet-body>\n </fd-action-sheet>\n} @else {\n <span\n class=\"fd-wizard__step-indicator\"\n (click)=\"stepItemClicked(stackedItems$().length ? stackedItems$()[0] : undefined, $event)\"\n >\n <ng-template [ngTemplateOutlet]=\"stepIndicatorContent\"></ng-template>\n </span>\n}\n<ng-template #stepIndicatorContent>\n @if (glyph) {\n <fd-icon [glyph]=\"glyph\" class=\"fd-wizard__icon\"></fd-icon>\n }\n <ng-content></ng-content>\n</ng-template>\n","import { ENTER, SPACE } from '@angular/cdk/keycodes';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Optional,\n Output,\n SimpleChanges,\n ViewChild\n} from '@angular/core';\nimport { KeyUtil, Nullable } from '@fundamental-ngx/cdk/utils';\nimport { Subscription } from 'rxjs';\nimport { WizardContentComponent } from '../wizard-content/wizard-content.component';\n\nexport type WizardStepStatus = 'completed' | 'current' | 'upcoming' | 'active';\n\nimport { COMPLETED_STEP_STATUS, CURRENT_STEP_STATUS, FD_WIZARD_STEP_INDICATOR } from '../constants';\nimport { WizardStepIndicator } from '../models/wizard-step';\nimport { WIZARD, WizardComponentInterface } from '../wizard-injection-token';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: '[fd-wizard-step]',\n host: {\n class: 'fd-wizard__step',\n '[class.fd-wizard__step--completed]': 'status === \"completed\" || completed',\n '[class.fd-wizard__step--current]': 'status === \"current\"',\n '[class.fd-wizard__step--upcoming]': 'status === \"upcoming\"',\n '[class.fd-wizard__step--active]': 'status === \"active\"',\n '[attr.aria-label]': 'ariaLabel'\n },\n templateUrl: './wizard-step.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n imports: []\n})\nexport class WizardStepComponent implements OnChanges, AfterViewInit, OnDestroy {\n /**\n * The aria-label for the step container.\n */\n @Input()\n ariaLabel: Nullable<string>;\n\n /**\n * The aria-label for the step container.\n */\n @Input()\n ariaRoleDecription = 'Navigation';\n\n /**\n * The type of step ('completed', 'current', 'upcoming', and 'active'.)\n */\n @Input()\n status: WizardStepStatus;\n\n /**\n * Whether or not this is a 'branching' step.\n */\n @Input()\n branching = false;\n\n /**\n * The label text.\n */\n @Input()\n label: string;\n\n /**\n * The smaller text for labeling the step as optional.\n */\n @Input()\n optionalText: string;\n\n /**\n * Whether or not this step is the summary page.\n */\n @Input()\n isSummary = false;\n\n /**\n * User-defined validation function which determines if user can navigate between steps.\n */\n @Input()\n stepClickValidator: (visited: boolean, completed: boolean) => boolean | Promise<boolean>;\n\n /**\n * Event emitted when the wizard step's status changes.\n */\n @Output()\n statusChange = new EventEmitter<WizardStepStatus>();\n\n /**\n * Event emitted when a step is clicked.\n */\n @Output()\n stepClicked = new EventEmitter<WizardStepComponent>();\n\n /**\n * Event emitted when a step indicator is clicked.\n */\n @Output()\n stepIndicatorItemClicked = new EventEmitter<WizardStepComponent>();\n\n /** @hidden */\n @ContentChild(WizardContentComponent)\n content: WizardContentComponent;\n\n /** @hidden */\n @ContentChild(FD_WIZARD_STEP_INDICATOR)\n stepIndicator: WizardStepIndicator<WizardStepComponent>;\n\n /** The wizard label span element. */\n @ViewChild('wizardLabel', { read: ElementRef })\n wizardLabel: ElementRef;\n\n /** @hidden */\n @ViewChild('progressBarLink', { read: ElementRef })\n progressBarLink: ElementRef;\n\n /** @hidden */\n glyph: string;\n\n /** @hidden */\n visited = false;\n\n /** @hidden */\n completed = false;\n\n /** @hidden */\n _stepId: number;\n\n /** @hidden */\n _finalStep = false;\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n constructor(\n private _elRef: ElementRef,\n private _cdRef: ChangeDetectorRef,\n @Optional() @Inject(WIZARD) private _wizard: WizardComponentInterface\n ) {}\n\n /** @hidden */\n ngOnChanges(changes: SimpleChanges): void {\n if (changes && changes.status) {\n if (\n changes.status.previousValue === CURRENT_STEP_STATUS &&\n changes.status.currentValue === COMPLETED_STEP_STATUS\n ) {\n this.completed = true;\n }\n this.statusChange.emit(this.status);\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n if (this.isSummary && !this._wizard?.displaySummaryStep) {\n this._summaryInit();\n } else if (this.stepIndicator) {\n this._notSummaryInit();\n }\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._subscriptions.unsubscribe();\n }\n\n /** @hidden */\n setFinalStep(val: boolean): void {\n this._finalStep = val;\n this._cdRef.detectChanges();\n }\n\n /** @hidden */\n async stepContainerKeypress(event?: KeyboardEvent): Promise<void> {\n if (event) {\n event.preventDefault();\n }\n\n if (\n this.visited &&\n (!event || KeyUtil.isKeyCode(event, [SPACE, ENTER])) &&\n (!this.stepIndicator ||\n !this.stepIndicator.stackedItems$() ||\n !this.stepIndicator.stackedItems$().length) &&\n (this.stepClickValidator === undefined ||\n (await this.stepClickValidator(this.visited, this.completed)) === true)\n ) {\n this.stepClicked.emit(this);\n }\n }\n\n /** @hidden */\n getClassList(): DOMTokenList {\n return this._elRef.nativeElement.classList;\n }\n\n /** @hidden */\n hasLabel(label: string): boolean {\n return this._elRef.nativeElement.classList.contains(label);\n }\n\n /** @hidden */\n getStepClientWidth(): number {\n return this._elRef.nativeElement.clientWidth;\n }\n\n /** @hidden */\n removeFromDom(): void {\n if (this._elRef.nativeElement.parentNode) {\n this._elRef.nativeElement.parentNode.removeChild(this._elRef.nativeElement);\n }\n }\n\n /** @hidden */\n _summaryInit(): void {\n this._elRef.nativeElement.style.display = 'none';\n this.content.tallContent = true;\n }\n\n /** @hidden */\n _notSummaryInit(): void {\n this._subscriptions.add(\n this.stepIndicator.stepIndicatorItemClicked.subscribe((step) => {\n this.stepIndicatorItemClicked.emit(step);\n })\n );\n if (this.stepIndicator.glyph) {\n this.glyph = this.stepIndicator.glyph;\n }\n }\n}\n","<div class=\"fd-wizard__step-wrapper\">\n @if (label || optionalText) {\n <a\n #progressBarLink\n class=\"fd-wizard__step-container\"\n (click)=\"stepContainerKeypress()\"\n (keypress)=\"stepContainerKeypress($event)\"\n [style.cursor]=\"visited ? 'pointer' : 'auto'\"\n [style.pointer-events]=\"visited ? 'auto' : 'none'\"\n [attr.tabindex]=\"status === 'current' ? 0 : -1\"\n [attr.aria-roledescription]=\"ariaRoleDecription\"\n >\n <ng-content select=\"fd-wizard-step-indicator\"></ng-content>\n <div class=\"fd-wizard__label-container\" [class.fd-wizard__label-container--optional]=\"optionalText\">\n <div #wizardLabel>\n <span class=\"fd-wizard__label\">{{ label }}</span>\n @if (optionalText) {\n <span class=\"fd-wizard__optional-text\">\n {{ optionalText }}\n </span>\n }\n </div>\n </div>\n </a>\n }\n <ng-content></ng-content>\n @if (!_finalStep || branching) {\n <span\n class=\"fd-wizard__connector\"\n [class.fd-wizard__connector--active]=\"completed\"\n [class.fd-wizard__connector--branching]=\"branching\"\n >\n </span>\n }\n</div>\n","import { LEFT_ARROW, RIGHT_ARROW } from '@angular/cdk/keycodes';\nimport { Injectable, QueryList, inject } from '@angular/core';\nimport { KeyUtil, RtlService } from '@fundamental-ngx/cdk/utils';\nimport { COMPLETED_STEP_STATUS, CURRENT_STEP_STATUS } from './constants';\nimport { WizardStepComponent } from './wizard-step/wizard-step.component';\n\n@Injectable()\nexport class WizardService {\n /** @hidden */\n private readonly _rtlService = inject(RtlService, { optional: true });\n\n /** @hidden */\n progressBarKeyHandler(event: any, steps: QueryList<WizardStepComponent>, index: number): void {\n const rtlDirection = this._rtlService?.rtlSignal();\n if (KeyUtil.isKeyCode(event, LEFT_ARROW)) {\n if (\n steps.get(index - 1)?.status === COMPLETED_STEP_STATUS ||\n steps.get(index - 1)?.status === CURRENT_STEP_STATUS\n ) {\n if (!rtlDirection) {\n this._focusPrevious(index, steps);\n } else {\n this._focusNext(index, steps);\n }\n }\n } else if (KeyUtil.isKeyCode(event, RIGHT_ARROW)) {\n if (steps.get(index)?.status === COMPLETED_STEP_STATUS) {\n if (!rtlDirection) {\n this._focusNext(index, steps);\n } else {\n this._focusPrevious(index, steps);\n }\n }\n }\n }\n\n /** @hidden */\n private _focusNext(index: number, steps: QueryList<WizardStepComponent>): void {\n if (index + 1 < steps.length) {\n steps.get(index + 1)?.progressBarLink.nativeElement.focus();\n } else {\n steps.get(0)?.progressBarLink.nativeElement.focus();\n }\n }\n\n /** @hidden */\n private _focusPrevious(index: number, steps: QueryList<WizardStepComponent>): void {\n if (index - 1 >= 0) {\n steps.get(index - 1)?.progressBarLink.nativeElement.focus();\n } else {\n steps.get(steps.length - 1)?.progressBarLink.nativeElement.focus();\n }\n }\n}\n","import { CdkScrollable } from '@angular/cdk/scrolling';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n OnDestroy,\n Optional,\n QueryList,\n TemplateRef,\n ViewChild,\n ViewEncapsulation,\n inject\n} from '@angular/core';\nimport { Nullable, TabbableElementService, scrollTop } from '@fundamental-ngx/cdk/utils';\nimport { DialogBodyComponent, FD_DIALOG_BODY_COMPONENT } from '@fundamental-ngx/core/dialog';\nimport { ScrollSpyDirective } from '@fundamental-ngx/core/scroll-spy';\nimport { ScrollbarDirective } from '@fundamental-ngx/core/scrollbar';\nimport { resolveTranslationSignal } from '@fundamental-ngx/i18n';\nimport { Subscription } from 'rxjs';\nimport { ACTIVE_STEP_STATUS, COMPLETED_STEP_STATUS, CURRENT_STEP_STATUS, UPCOMING_STEP_STATUS } from './constants';\nimport { WizardContentComponent } from './wizard-content/wizard-content.component';\nimport { WIZARD } from './wizard-injection-token';\nimport { WizardProgressBarDirective } from './wizard-progress-bar/wizard-progress-bar.directive';\nimport { WizardStepComponent } from './wizard-step/wizard-step.component';\nimport { WizardService } from './wizard.service';\n\nexport const STEP_MIN_WIDTH = 168;\nexport const STEP_STACKED_TOP_CLASS = 'fd-wizard__step--stacked-top';\nexport const STEP_STACKED_CLASS = 'fd-wizard__step--stacked';\nexport const STEP_NO_LABEL_CLASS = 'fd-wizard__step--no-label';\n\nexport const WIZARD_NAVIGATION_CLASS = 'fd-wizard__navigation';\nexport const WIZARD_CONTENT_CLASS = 'fd-wizard__content';\nexport const WIZARD_CONTAINER_WRAPPER_CLASS = 'fd-wizard-container-wrapper';\nexport const WIZARD_TALL_CONTENT_CLASS = 'fd-wizard-tall-content';\nexport const SHELLBAR_CLASS = 'fd-shellbar';\nexport const BAR_FOOTER_CLASS = 'fd-bar--footer';\nexport const BAR_FLOATING_FOOTER_CLASS = 'fd-bar--floating-footer';\n\nexport let _fromScrollToCurrentStep;\nexport let timer: any = null;\nexport const handleTimeoutReference = (): void => {\n if (timer !== null) {\n clearTimeout(timer);\n }\n timer = setTimeout(() => {\n _fromScrollToCurrentStep = false;\n }, 150);\n};\n\n@Component({\n selector: 'fd-wizard',\n templateUrl: './wizard.component.html',\n styleUrl: './wizard.component.scss',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n WizardService,\n {\n provide: WIZARD,\n useExisting: WizardComponent\n }\n ],\n host: {\n role: 'region',\n '[attr.aria-label]': 'ariaLabel || _defaultAriaLabel()'\n },\n standalone: true,\n imports: [ScrollSpyDirective, CdkScrollable, ScrollbarDirective, NgTemplateOutlet]\n})\nexport class WizardComponent implements AfterViewInit, OnDestroy {\n /**\n * Whether or not to append the step to the wizard. If false, each step will be displayed on a different page.\n * Default is true.\n */\n @Input()\n appendToWizard = true;\n\n /**\n * Custom height to use for the wizard's content pane. By default, this value is calc(100vh - 144px), where 144px\n * is the combined height of the shellbar, wizard header and wizard footer.\n */\n @Input()\n contentHeight: Nullable<string | null>;\n\n /**\n * Whether or not apply responsive paddings styling.\n */\n @Input()\n @HostBinding('class.fd-wizard--responsive-paddings')\n responsivePaddings = false;\n\n /** Whether to display a summary step. */\n @Input()\n displaySummaryStep = false;\n\n /**\n * adding aria label to the component\n * If not provided, is being translated by i18n package\n */\n @Input()\n ariaLabel: string;\n\n /** @hidden */\n @ContentChildren(WizardStepComponent, { descendants: true })\n steps: QueryList<WizardStepComponent>;\n\n /** @hidden */\n @ContentChild(WizardProgressBarDirective)\n progressBar: WizardProgressBarDirective;\n\n /** @hidden */\n @ContentChildren(WizardContentComponent)\n wizardContent: WizardContentComponent;\n\n /** @hidden */\n @ViewChild('wrapperContainer')\n wrapperContainer: ElementRef<HTMLElement>;\n\n /** @hidden */\n @ViewChild(ScrollbarDirective)\n scrollbar: ScrollbarDirective;\n\n /** @hidden */\n contentTemplates: TemplateRef<any>[] = [];\n\n /** @hidden */\n stackedStepsLeft: WizardStepComponent[] = [];\n\n /** @hidden */\n stackedStepsRight: WizardStepComponent[] = [];\n\n /** @hidden */\n protected _defaultAriaLabel = resolveTranslationSignal('coreWizard.ariaLabel');\n\n /** @hidden */\n private _stepEventSubscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _subscriptions: Subscription = new Subscription();\n\n /** @hidden */\n private _previousWidth: number;\n\n /** @hidden */\n private readonly _tabbableService = inject(TabbableElementService);\n\n /** @hidden */\n constructor(\n private _elRef: ElementRef,\n private readonly _cdRef: ChangeDetectorRef,\n @Optional() @Inject(FD_DIALOG_BODY_COMPONENT) private _dialogBodyComponent: DialogBodyComponent\n ) {}\n\n /** @hidden */\n @HostListener('window:resize')\n resizeHandler(): void {\n const wizardWidth = this._elRef.nativeElement.getBoundingClientRect().width;\n if (!this._previousWidth || wizardWidth <= this._previousWidth) {\n this._wizardShrinking();\n } else if (wizardWidth > this._previousWidth) {\n this._shrinkWhileAnyStepIsTooNarrow();\n }\n this._previousWidth = wizardWidth;\n if (this.contentHeight) {\n this._elRef.nativeElement.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS).style.height =\n this.contentHeight;\n } else {\n this._setContainerAndTallContentHeight();\n }\n }\n\n /** @hidden */\n ngAfterViewInit(): void {\n setTimeout(() => {\n if (this._subscriptions.closed) {\n return;\n }\n\n // fixes ExpressionChangedAfterItHasBeenCheckedError\n this._setContentTemplates();\n this._subscriptions.add(\n this.steps.changes.subscribe(() => {\n this._handleStepOrStatusChanges();\n this._setupStepEvents();\n })\n );\n this._setupStepEvents();\n this._cdRef.detectChanges();\n this._handleStepOrStatusChanges();\n this.resizeHandler();\n });\n }\n\n /** @hidden */\n ngOnDestroy(): void {\n this._stepEventSubscriptions.unsubscribe();\n this._subscriptions.unsubscribe();\n this.wrapperContainer?.nativeElement.removeEventListener('scroll', handleTimeoutReference);\n }\n\n /** @hidden */\n scrollSpyChange($event: HTMLElement): void {\n if (!_fromScrollToCurrentStep) {\n this.steps.forEach((step) => {\n if (step._stepId.toString() === $event.children[0].children[0].id) {\n step.status = CURRENT_STEP_STATUS;\n } else if (step._stepId < parseInt($event.children[0].children[0].id, 10)) {\n step.status = COMPLETED_STEP_STATUS;\n } else {\n step.status = UPCOMING_STEP_STATUS;\n }\n });\n }\n this._shrinkWhileAnyStepIsTooNarrow();\n }\n\n /**\n * @hidden\n * @private\n * This function determines the height of the wizard content by looking for the document's shellbar, the wizard\n * navigation and the wizard footer, and calculating the height based on their presence.\n */\n private _calculateContentHeight(): number {\n let wizardNavHeight = 0;\n const shellbarHeight = this._getShellbarHeight();\n if (!this._isCurrentStepSummary() || this.displaySummaryStep) {\n wizardNavHeight = this._getWizardNavHeight();\n }\n const wizardFooterHeight = this._getWizardFooterHeight();\n const dialogOffset = this._getDialogOffset();\n\n return shellbarHeight + wizardNavHeight + wizardFooterHeight + dialogOffset;\n }\n\n /** @hidden */\n private _getShellbarHeight(): number {\n return document.querySelector<HTMLElement>('.' + SHELLBAR_CLASS)?.clientHeight ?? 0;\n }\n\n /** @hidden */\n private _getWizardNavHeight(): number {\n const wizard = this._elRef.nativeElement;\n let retVal;\n if (wizard.querySelector('.' + WIZARD_NAVIGATION_CLASS)) {\n retVal = wizard.querySelector('.' + WIZARD_NAVIGATION_CLASS).clientHeight;\n } else {\n retVal = 0;\n }\n return retVal;\n }\n\n /** @hidden */\n private _getWizardFooterHeight(): number {\n let retVal = 0;\n if (this._dialogBodyComponent) {\n const dialogBody = this._dialogBodyComponent.elementRef.nativeElement;\n if (dialogBody.querySelector('.' + BAR_FOOTER_CLASS)) {\n retVal = dialogBody.querySelector('.' + BAR_FOOTER_CLASS).offsetHeight;\n } else if (dialogBody.querySelector('.' + BAR_FLOATING_FOOTER_CLASS)) {\n retVal = dialogBody.querySelector('.' + BAR_FLOATING_FOOTER_CLASS).offsetHeight;\n }\n }\n return retVal;\n }\n\n /** @hidden */\n private _getDialogOffset(): number {\n let retVal = 0;\n if (this._dialogBodyComponent) {\n const dialogBody = this._dialogBodyComponent.elementRef.nativeElement;\n const dialogComponent = dialogBody.closest('fd-dialog');\n\n if (dialogBody.tagName.toLowerCase() === 'fd-dialog-body') {\n this._dialogBodyComponent.dialogConfig.verticalPadding = false;\n const dialogBodyTitle = dialogComponent.querySelector('.fd-title--h2');\n if (dialogBodyTitle) {\n retVal = dialogBodyTitle.offsetHeight;\n }\n retVal = retVal + window.innerHeight - dialogBody.offsetHeight;\n }\n }\n\n return retVal;\n }\n\n /** @hidden */\n private _setContainerAndTallContentHeight(): void {\n const wizard = this._elRef.nativeElement;\n const combinedHeight = this.contentHeight ? this.contentHeight : this._calculateContentHeight();\n if (wizard.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS)) {\n wizard.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS).style.height =\n 'calc(100vh - ' + combinedHeight + 'px)';\n }\n wizard.querySelectorAll('.' + WIZARD_CONTENT_CLASS).forEach((node) => {\n node.style.height = 'auto';\n });\n if (wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS)) {\n if (\n wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS).offsetHeight <\n wizard.querySelector('.' + WIZARD_CONTAINER_WRAPPER_CLASS).offsetHeight\n ) {\n wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS).style.height =\n 'calc(100vh - ' + combinedHeight + 'px)';\n } else {\n wizard.querySelector('.' + WIZARD_TALL_CONTENT_CLASS).style.paddingBottom = '24px';\n }\n }\n }\n\n /** @hidden */\n private _setupStepEvents(): void {\n this._stepEventSubscriptions.unsubscribe();\n this._stepEventSubscriptions = new Subscription();\n this.steps.forEach((step) => {\n this._stepEventSubscriptions.add(\n step.stepClicked.subscribe((event) => {\n this._stepClicked(event);\n })\n );\n this._stepEventSubscriptions.add(\n step.statusChange.subscribe(() => {\n this._handleStepOrStatusChanges();\n })\n );\n this._stepEventSubscriptions.add(\n step.stepIndicatorItemClicked.subscribe((event) => {\n this._stepClicked(event);\n })\n );\n // need to call wizardShrinking for each step < 168px on first load\n if (step.wizardLabel && step.getStepClientWidth() < STEP_MIN_WIDTH) {\n this._wizardShrinking();\n }\n });\n }\n\n /** @hidden */\n private _wizardShrinking(): void {\n const currentStep = this._getCurrentStep();\n if (\n currentStep &&\n (!currentStep.isSummary || this.displaySummaryStep) &&\n currentStep.wizardLabel &&\n currentStep.getStepClientWidth() < STEP_MIN_WIDTH\n ) {\n this._hideSomeStep(currentStep);\n this._setStackedTop();\n }\n }\n\n /** @hidden */\n private _setContentTemplates(): void {\n const templatesLength = this.contentTemplates.length;\n this.contentTemplates = [];\n let _stepId = 0;\n const steps = this.steps.toArray();\n for (const step of steps) {\n if (step.content) {\n if (!step.isSummary || this.displaySummaryStep) {\n step.content.tallContent = false;\n }\n step.content.wizardContentId = _stepId.toString();\n }\n step._stepId = _stepId;\n _stepId++;\n step.setFinalStep(false);\n /*\n If the step is completed and appendToWizard is true, hide the nextStep button, unless it's the last step,\n or if there's a summary and it is the second to last step\n */\n if (\n step.completed &&\n this.appendToWizard &&\n step.content?.nextStep?.canHide &&\n step !== this._getLastNonSummaryStep()\n ) {\n step.content.nextStep._hideElement();\n } else if (\n step.content?.nextStep &&\n ((step.completed && this.appendToWizard) ||\n (step.visited && step.branching && step.status === CURRENT_STEP_STATUS))\n ) {\n step.content.nextStep._showElement();\n }\n if (\n step.visited ||\n ((step.status === CURRENT_STEP_STATUS || step.status === COMPLETED_STEP_STATUS) && step.content)\n ) {\n step.visited = true;\n if (step.status === CURRENT_STEP_STATUS && (!step.completed || !this.appendToWizard)) {\n step.content.tallContent = true;\n }\n\n const isCurrentStep = !this.appendToWizard && step.status === CURRENT_STEP_STATUS;\n\n if (!templatesLength || isCurrentStep) {\n this.contentTemplates = [step.content.contentTemplate];\n\n // If we found needed step, break the cycle, since it might set wrong step later.\n if (isCurrentStep) {\n break;\n }\n } else if (this.appendToWizard && (!step.isSummary || this.displaySummaryStep)) {\n this.contentTemplates.push(step.content.contentTemplate);\n }\n }\n }\n\n const lastVisibleTemplate = steps[this.contentTemplates.length - 1];\n if (lastVisibleTemplate && lastVisibleTemplate.content) {\n lastVisibleTemplate.content.tallContent = true;\n }\n this._setFinalStep();\n }\n\n /** @hidden */\n private _scrollToCurrentStep(): void {\n if (this.appendToWizard) {\n _fromScrollToCurrentStep = true;\n this.steps.forEach((step, index) => {\n if (step.status === CURRENT_STEP_STATUS && (!step.isSummary || this.displaySummaryStep)) {\n const child = this.wrapperContainer.nativeElement.children[0].children[index] as HTMLElement;\n const wizardNavigationHeight = this._elRef.nativeElement.querySelector(\n '.' + WIZARD_NAVIGATION_CLASS\n ).clientHeight;\n\n scrollTop(this.wrapperContainer.nativeElement, child.offsetTop - wizardNavigationHeight);\n\n if (index === 0) {\n this._focusFirstTabbableElement(index);\n } else {\n // setTimeout needed to allow for smooth scroll animation\n setTimeout(() => {\n this._focusFirstTabbableElement(index);\n }, 500);\n }\n }\n });\n this._setUpScrollListener();\n }\n }\n\n /** @hidden */\n private _focusFirstTabbableElement(index = 0): void {\n const contentContainer = this._elRef.nativeElement.querySelectorAll('.fd-wizard__content')[index];\n this._tabbableService.getTabbableElement(contentContainer)?.focus();\n }\n\n /** @hidden */\n private _setUpScrollListener(): void {\n this.wrapperContainer?.nativeElement.addEventListener('scroll', handleTimeoutReference, false);\n }\n\n /** @hidden */\n private _hideSomeStep(currentStep: WizardStepComponent): void {\n // If a small step was found, get the step with a visible label furthest away from the current step and hide the label\n let stepsArray = this.steps.toArray();\n stepsArray = stepsArray.filter((step) => !step.hasLabel(STEP_NO_LABEL_CLASS));\n if (this.steps.last.isSummary && !this.displaySummaryStep) {\n stepsArray.pop();\n }\n if (stepsArray.length > 1) {\n let currentStepIndex = 0,\n stepToHide;\n if (currentStep) {\n currentStepIndex = stepsArray.indexOf(currentStep);\n }\n currentStepIndex > (stepsArray.length - 1) / 2\n ? (stepToHide = stepsArray[0])\n : (stepToHide = stepsArray[stepsArray.length - 1]);\n stepToHide.getClassList().add(STEP_NO_LABEL_CLASS);\n stepToHide.getClassList().add(STEP_STACKED_CLASS);\n if (stepsArray.indexOf(stepToHide) < currentStepIndex && !this.stackedStepsLeft.includes(stepToHide)) {\n this.stackedStepsLeft.splice(this.steps.toArray().indexOf(stepToHide), 0, stepToHide);\n } else if (\n stepsArray.indexOf(stepToHide) > currentStepIndex &&\n !this.stackedStepsRight.includes(stepToHide)\n ) {\n this.stackedStepsRight.unshift(stepToHide);\n }\n this._cdRef.detectChanges();\n }\n }\n\n /** @hidden */\n private _setStackedTop(): void {\n const currentStep = this._getCurrentStep();\n this.steps.forEach((step, index) => {\n if (step.stepIndicator) {\n step.getClassList().remove(STEP_STACKED_TOP_CLASS);\n if (this.steps.toArray()[index + 1] === currentStep) {\n if (this.steps.length > 1) {\n step.getClassList().add(STEP_STACKED_TOP_CLASS);\n if (!this.stackedStepsLeft.includes(step) && this.stackedStepsLeft.length >= 1) {\n this.stackedStepsLeft.splice(index, 0, step);\n }\n }\n step.stepIndicator.setStackedItems(this.stackedStepsLeft);\n } else {\n step.stepIndicator.stackedItems$.set([]);\n }\n }\n });\n this._getLastNonSummaryStep().stepIndicator?.setStackedItems(this.stackedStepsRight);\n }\n\n /** @hidden */\n private _resetStepClasses(): void {\n this.steps.forEach((step) => {\n step.getClassList().remove(STEP_STACKED_TOP_CLASS);\n step.getClassList().remove(STEP_STACKED_CLASS);\n step.getClassList().remove(STEP_NO_LABEL_CLASS);\n });\n }\n\n /** @hidden */\n private _handleStepOrStatusChanges(): void {\n if (this._isCurrentStepSummary() && !this.displaySummaryStep) {\n setTimeout(() => {\n this.progressBar.visible = false;\n });\n this._showSummary();\n } else {\n this.progressBar.visible = true;\n\n this._setContentTemplates();\n this._shrinkWhileAnyStepIsTooNarrow();\n }\n if (!this.appendToWizard) {\n this._focusFirstTabbableElement();\n }\n setTimeout(() => {\n this._cdRef.detectChanges();\n this.resizeHandler();\n if (!this._isCurrentStepSummary() || this.displaySummaryStep) {\n this._scrollToCurrentStep();\n }\n });\n this._setFinalStep();\n }\n\n /** @hidden */\n private _setFinalStep(): void {\n const lastNonSummaryStep = this._getLastNonSummaryStep();\n if (lastNonSummaryStep) {\n if (this.steps.last.isSummary && !this.displaySummaryStep) {\n this.steps.last.removeFromDom();\n }\n if (lastNonSummaryStep.content) {\n lastNonSummaryStep.content.tallContent = true;\n }\n lastNonSummaryStep.setFinalStep(true);\n }\n }\n\n /** @hidden */\n private _showSummary(): void {\n this.steps.forEach((step) => {\n if (!step.isSummary) {\n step.completed = true;\n }\n });\n const summary = this.steps.find((step) => step.isSummary);\n if (summary) {\n summary.content.tallContent = true;\n this.contentTemplates = [summary.content.contentTemplate];\n }\n }\n\n /** @hidden */\n private _isCurrentStepSummary(): boolean {\n return this.steps.some((step) => step.status === CURRENT_STEP_STATUS && step.isSummary);\n }\n\n /** @hidden */\n private _getCurrentStep(): WizardStepComponent {\n return this.steps.filter(\n (step) => step.status === CURRENT_STEP_STATUS || step.status === ACTIVE_STEP_STATUS\n )[0];\n }\n\n /** @hidden */\n private _shrinkWhileAnyStepIsTooNarrow(): void {\n // Add small delay for elements to render appropriately.\n setTimeout(() => {\n this.stackedStepsLeft = [];\n this.stackedStepsRight = [];\n this.steps.first.stepIndicator?.setStackedItems(this.stackedStepsLeft);\n this._getLastNonSummaryStep().stepIndicator?.setStackedItems(this.stackedStepsRight);\n this._resetStepClasses();\n let i = 0;\n while (this._anyStepIsTooNarrow() && i < this.steps.length - 1) {\n i++;\n this._wizardShrinking();\n }\n }, 10);\n }\n\n /** @hidden */\n private _anyStepIsTooNarrow(): boolean {\n return this.steps.some((step) => step.getStepClientWidth() < STEP_MIN_WIDTH);\n }\n\n /** @hidden */\n private _stepClicked(clickedStep: WizardStepComponent): void {\n if (!clickedStep) {\n clickedStep = this.steps.first;\n }\n const clickedStepIndex = this.steps.toArray().indexOf(clickedStep);\n this.steps.forEach((step) => {\n if (step === clickedStep) {\n step.status = CURRENT_STEP_STATUS;\n step.statusChange.emit(CURRENT_STEP_STATUS);\n } else if (step !== clickedStep) {\n if (this.steps.toArray().indexOf(step) < clickedStepIndex) {\n step.status = COMPLETED_STEP_STATUS;\n step.statusChange.emit(COMPLETED_STEP_STATUS);\n } else if (this.steps.toArray().indexOf(step) > clickedStepIndex) {\n step.status = UPCOMING_STEP_STATUS;\n step.statusChange.emit(UPCOMING_STEP_STATUS);\n }\n }\n });\n setTimeout(() => {\n (document.activeElement as HTMLElement).blur(); // this function can focus step indicators undesirably\n });\n }\n\n /** @hidden */\n private _getLastNonSummaryStep(): WizardStepComponent {\n if (this.steps.last.isSummary && !this.displaySummaryStep) {\n return this.steps.toArray()[this.steps.length - 2];\n }\n\n return this.steps.last;\n }\n}\n","<section class=\"fd-wizard\">\n <ng-content select=\"fd-wizard-navigation\"></ng-content>\n @if (appendToWizard) {\n <div\n class=\"fd-wizard-container-wrapper\"\n #wrapperContainer\n fdScrollSpy\n cdkScrollable\n [trackedTags]=\"['div']\"\n (spyChange)=\"scrollSpyChange($event)\"\n >\n <div fd-scrollbar>\n @for (contentTemplate of contentTemplates; track contentTemplate) {\n <div>\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template>\n </div>\n }\n </div>\n </div>\n } @else {\n <div cdkScrollable class=\"fd-wizard-container-wrapper\">\n <div fd-scrollbar>\n @for (contentTemplate of contentTemplates; track contentTemplate) {\n <div>\n <ng-template [ngTemplateOutlet]=\"contentTemplate\"></ng-template>\n </div>\n }\n </div>\n </div>\n }\n <ng-content></ng-content>\n</section>\n","import { NgModule } from '@angular/core';\nimport { WizardContentComponent } from './wizard-content/wizard-content.component';\nimport { WizardNavigationComponent } from './wizard-navigation/wizard-navigation.component';\nimport { WizardNextStepComponent } from './wizard-next-step/wizard-next-step.component';\nimport { WizardProgressBarDirective } from './wizard-progress-bar/wizard-progress-bar.directive';\nimport { WizardStepIndicatorComponent } from './wizard-step-indicator/wizard-step-indicator.component';\nimport { WizardStepComponent } from './wizard-step/wizard-step.component';\nimport { WizardComponent } from './wizard.component';\nimport { WizardService } from './wizard.service';\n\nconst components = [\n WizardComponent,\n WizardNavigationComponent,\n WizardProgressBarDirective,\n WizardStepComponent,\n WizardStepIndicatorComponent,\n WizardContentComponent,\n WizardNextStepComponent\n];\n\n/**\n * @deprecated\n * Use direct imports of `WizardComponent`,\n `WizardNavigationComponent`,\n `WizardProgressBarDirective`,\n `WizardStepComponent`,\n `WizardStepIndicatorComponent`,\n `WizardContentComponent`,\n `WizardNextStepComponent`\n */\n@NgModule({\n imports: [...components],\n exports: [...components],\n providers: [WizardService]\n})\nexport class WizardModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fundamental-ngx/core",
3
- "version": "0.52.2-rc.2",
3
+ "version": "0.52.2-rc.4",
4
4
  "schematics": "./schematics/collection.json",
5
5
  "ng-update": {
6
6
  "migrations": "./schematics/migrations.json"
@@ -23,8 +23,8 @@
23
23
  "@angular/forms": "^18.0.0",
24
24
  "@angular/platform-browser": "^18.0.0",
25
25
  "@angular/router": "^18.0.0",
26
- "@fundamental-ngx/cdk": "0.52.2-rc.2",
27
- "@fundamental-ngx/i18n": "0.52.2-rc.2",
26
+ "@fundamental-ngx/cdk": "0.52.2-rc.4",
27
+ "@fundamental-ngx/i18n": "0.52.2-rc.4",
28
28
  "@sap-theming/theming-base-content": "^11.18.0",
29
29
  "fundamental-styles": "0.37.7",
30
30
  "rxjs": "^7.8.0"