mis-crystal-design-system 18.1.2-signal → 18.1.4-signal

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.
@@ -274,7 +274,7 @@ export class TzDrpContainerComponent {
274
274
  this.openElement.set(true);
275
275
  this.singleDateSelectedValue.set(this.data().dates[0]?.selectedDate || '');
276
276
  }
277
- });
277
+ }, { allowSignalWrites: true });
278
278
  if (this.data()?.dpConfig?.timezone) {
279
279
  this.dayjsInstance = computed(() => (...args) => dayjs(...args).tz(this.data().dpConfig.timezone));
280
280
  }
@@ -530,4 +530,4 @@ export class TzDrpContainerComponent {
530
530
  args: ['singleDatePickerElement', { static: true, read: TzDatepickerDirective }]
531
531
  }] }); })();
532
532
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TzDrpContainerComponent, { className: "TzDrpContainerComponent" }); })();
533
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHotc2RwLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9zcGVjaWZpY2RhdGVwaWNrZXIvdHotc2RwLWNvbnRhaW5lci90ei1zZHAtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3NwZWNpZmljZGF0ZXBpY2tlci90ei1zZHAtY29udGFpbmVyL3R6LXNkcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQVUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEtBQW9CLE1BQU0sT0FBTyxDQUFDO0FBQ3pDLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8sYUFBYSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sY0FBYyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8saUJBQWlCLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxTQUFTLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ1Z6QyxBQURGLCtCQUE0RCxvQkFDMkY7SUFBbEYsd01BQWUsMkJBQW9CLEtBQUM7SUFBOEMsaUJB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QUFDO1lBY2pELEFBRkUsQUFwQkksaUJBbUJFLEVBQ0EsRUFFRjs7WUExSmlDLGlHQUEyRTtZQUV4RSxlQUFvQjtZQUFwQiwrQ0FBb0I7WUFLakIsY0FBaUU7WUFBakUsbUdBQWlFO1lBT2xHLGVBRUU7WUFGRixvRkFFRTtZQVNDLGVBQStDO1lBQS9DLGlGQUErQztZQUtnQixlQUFhO1lBQWIsd0NBQWE7WUFrQi9ELGVBQXNCO1lBQXRCLGlEQUFzQjtZQW1CbkMsZUFBeUM7WUFBekMsMkVBQXlDO1lBSTlDLGNBRUU7WUFGRixnRkFFRTtZQVlrRSxlQUFhO1lBQWIsd0NBQWE7WUFlL0QsZUFBbUI7WUFBbkIsOENBQW1CO1lBa0JFLGVBQW9CO1lBQXBCLDZDQUFvQjtZQUN0QixlQUE4RDtZQUE5RCxxREFBOEQ7WUFHbEcsZUFBZ0M7WUFBaEMscURBQWdDO1lBQ2hDLGNBQWlDO1lBQWpDLHNEQUFpQztZQUc3QixlQUFnQztZQUFoQyxxREFBZ0M7WUFDaEMsY0FBaUM7WUFBakMsc0RBQWlDO1lBSUwsY0FBdUU7WUFBdkUseUdBQXVFO1lBTzFHLGNBQTRCO1lBVzVCLEFBREEsQUFEQSxBQURBLEFBTEEsQUFIQSw4Q0FBNEIsK0NBR2Msd0NBS1AsMEJBQ1Ysd0JBQ0Ysa0NBQ007OztpRkQxSHhCLHVCQUF1QjtjQUxuQyxTQUFTOzJCQUNFLFlBQVk7O3NCQXFFVCxNQUFNO3VCQUFDLGNBQWM7Z0RBRm1ELHVCQUF1QjtrQkFBM0csU0FBUzttQkFBQyx5QkFBeUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFOztrRkEvRHhFLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBPbkluaXQsIFZpZXdDaGlsZCwgc2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9EQVRBLCBEQVRFX0ZPUk1BVCB9IGZyb20gXCIuLi9kYXRlcmFuZ2VwaWNrZXItY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBJQ3VycmVudE1vbnRoLCBJQ3VycmVudE1vbnRoRGF0ZXMsIElEYXRlUGlja2VyRGF0YSwgSVdlZWtEYXksIElTU2VsZWN0ZWREYXRlc0NvbmZpZywgSVJTZWxlY3RlZERhdGVzQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9zZHAtY29uZmlnLm1vZGVsXCI7XG5pbXBvcnQgeyBnZXRNb250aCB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vdG9hc3RcIjtcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgVHpEYXRlcGlja2VyRGlyZWN0aXZlIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vZGF0ZXBpY2tlcl92MlwiO1xuaW1wb3J0IGRheWpzLCB7IERheWpzLCB0eiB9IGZyb20gJ2RheWpzJztcbmltcG9ydCB0aW1lem9uZSBmcm9tICdkYXlqcy9wbHVnaW4vdGltZXpvbmUnO1xuaW1wb3J0IHV0YyBmcm9tICdkYXlqcy9wbHVnaW4vdXRjJztcbmltcG9ydCBpc1NhbWVPckFmdGVyIGZyb20gJ2RheWpzL3BsdWdpbi9pc1NhbWVPckFmdGVyJztcbmltcG9ydCBpc1NhbWVPckJlZm9yZSBmcm9tICdkYXlqcy9wbHVnaW4vaXNTYW1lT3JCZWZvcmUnO1xuaW1wb3J0IGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCc7XG5pbXBvcnQgaXNCZXR3ZWVuIGZyb20gJ2RheWpzL3BsdWdpbi9pc0JldHdlZW4nO1xuXG5kYXlqcy5leHRlbmQoaXNCZXR3ZWVuKTtcbmRheWpzLmV4dGVuZCh1dGMpO1xuZGF5anMuZXh0ZW5kKHRpbWV6b25lKTtcbmRheWpzLmV4dGVuZChjdXN0b21QYXJzZUZvcm1hdCk7XG5kYXlqcy5leHRlbmQoaXNTYW1lT3JBZnRlcik7XG5kYXlqcy5leHRlbmQoaXNTYW1lT3JCZWZvcmUpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLXR6LXNkcFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3R6LXNkcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3R6LXNkcC1jb250YWluZXIuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgVHpEcnBDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHJlYWRvbmx5IGRhdGEgPSBzaWduYWw8SURhdGVQaWNrZXJEYXRhPih0aGlzLmluamVjdGVkRGF0YSk7XG4gIHByaXZhdGUgZGF5anNJbnN0YW5jZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBkYXlqcyguLi5hcmdzKTtcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmF3V2Vla0RheXM6IHN0cmluZ1tdID0gW1wiU1VOXCIsIFwiTU9OXCIsIFwiVFVFXCIsIFwiV0VEXCIsIFwiVEhVXCIsIFwiRlJJXCIsIFwiU0FUXCJdO1xuXG4gIHB1YmxpYyByZWFkb25seSBsb2NhbFNlbGVjdGVkRGF0ZXMgPSBzaWduYWw8SVNTZWxlY3RlZERhdGVzQ29uZmlnW10+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IGxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlID0gc2lnbmFsPElSU2VsZWN0ZWREYXRlc0NvbmZpZz4oe3N0YXJ0RGF0ZTogbnVsbCwgZW5kRGF0ZTogbnVsbH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNEYXRlc1ZhbGlkID0gc2lnbmFsKGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGVSYW5nZVNlbGVjdGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBvcGVuRWxlbWVudCA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaW5nbGVEYXRlU2VsZWN0ZWRWYWx1ZSA9IHNpZ25hbCgnJyk7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25TdGFydGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnU3BlY2lmaWMgRGF0ZShzKScpO1xuICBwdWJsaWMgcmVhZG9ubHkgZGF0ZVBpY2tlclZhbHVlID0gc2lnbmFsPHN0cmluZ1tdPihbJ1NwZWNpZmljIERhdGUocyknLCdEYXRlIFJhbmdlJ10pO1xuICBcbiAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRNb250aE51bWJlciA9IHNpZ25hbCh0aGlzLmRheWpzSW5zdGFuY2UoKSgpLm1vbnRoKCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudFllYXJOdW1iZXIgPSBzaWduYWwodGhpcy5kYXlqc0luc3RhbmNlKCkoKS55ZWFyKCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgbmV4dE1vbnRoTnVtYmVyID0gc2lnbmFsKHRoaXMuZGF5anNJbnN0YW5jZSgpKCkuYWRkKDEsIFwibW9udGhcIikubW9udGgoKSk7XG4gIHB1YmxpYyByZWFkb25seSBuZXh0WWVhck51bWJlciA9IHNpZ25hbCh0aGlzLmRheWpzSW5zdGFuY2UoKSgpLmFkZCgxLCBcIm1vbnRoXCIpLnllYXIoKSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHdlZWtEYXlzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnJhd1dlZWtEYXlzLm1hcCgoZGF5LCBpbmRleCkgPT4gKHtcbiAgICAgIGxhYmVsOiBgJHtkYXlbMF19JHtkYXkuc2xpY2UoMSkudG9Mb3dlckNhc2UoKX1gLFxuICAgICAgaXNDdXJyZW50RGF5OiB0aGlzLmRheWpzSW5zdGFuY2UoKSgpLmRheSgpID09PSBpbmRleFxuICAgIH0pKTtcbiAgfSk7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50TW9udGggPSBjb21wdXRlZCgoKSA9PiBnZXRNb250aCh0aGlzLmN1cnJlbnRNb250aE51bWJlcigpKSk7XG4gIHB1YmxpYyByZWFkb25seSBuZXh0TW9udGggPSBjb21wdXRlZCgoKSA9PiBnZXRNb250aCh0aGlzLm5leHRNb250aE51bWJlcigpKSk7XG4gIHB1YmxpYyByZWFkb25seSB0b2RheU1vbnRoTnVtYmVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5kYXlqc0luc3RhbmNlKCkoKS5tb250aCgpKTtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGVSYW5nZUxlbmd0aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCByYW5nZSA9IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKTtcbiAgICBpZiAocmFuZ2U/LnN0YXJ0RGF0ZSAmJiByYW5nZT8uZW5kRGF0ZSkge1xuICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLmRheWpzSW5zdGFuY2UoKShyYW5nZS5zdGFydERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICBjb25zdCBlbmQgPSB0aGlzLmRheWpzSW5zdGFuY2UoKShyYW5nZS5lbmREYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgaWYgKHN0YXJ0LmlzVmFsaWQoKSAmJiBlbmQuaXNWYWxpZCgpKSB7XG4gICAgICAgIHJldHVybiBlbmQuZGlmZihzdGFydCwgJ2RheScpICsgMTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNQcmV2aW91c01vbnRoRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEluc3RhbmNlID0gdGhpcy5kYXlqc0luc3RhbmNlKCkoKS55ZWFyKHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSkubW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSk7XG4gICAgY29uc3QgbWluRGF0ZSA9ICEhdGhpcy5kYXRhKCkuZHBDb25maWcubWluRGF0ZSA/IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1pbkRhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgIHJldHVybiBtaW5EYXRlLmlzVmFsaWQoKSAmJiBtaW5EYXRlLmlzU2FtZU9yQWZ0ZXIoY3VycmVudEluc3RhbmNlLCBcIm1vbnRoXCIpO1xuICB9KTtcbiAgcHVibGljIHJlYWRvbmx5IGlzTmV4dE1vbnRoRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEluc3RhbmNlID0gdGhpcy5kYXlqc0luc3RhbmNlKCkoKS55ZWFyKHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSkubW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSk7XG4gICAgY29uc3QgbWF4RGF0ZSA9ICEhdGhpcy5kYXRhKCkuZHBDb25maWcubWF4RGF0ZSA/IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1heERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgIHJldHVybiBtYXhEYXRlLmlzVmFsaWQoKSAmJiBtYXhEYXRlLmlzU2FtZU9yQmVmb3JlKGN1cnJlbnRJbnN0YW5jZSwgXCJtb250aFwiKTtcbiAgfSk7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50TW9udGhEYXRlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCksIHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSk7XG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgbmV4dE1vbnRoRGF0ZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLm5leHRNb250aE51bWJlcigpLCB0aGlzLm5leHRZZWFyTnVtYmVyKCkpO1xuICB9KTtcblxuICBAVmlld0NoaWxkKCdzaW5nbGVEYXRlUGlja2VyRWxlbWVudCcsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUekRhdGVwaWNrZXJEaXJlY3RpdmUgfSkgc2luZ2xlRGF0ZVBpY2tlckVsZW1lbnQhOiBUekRhdGVwaWNrZXJEaXJlY3RpdmU7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChDT05UQUlORVJfREFUQSkgcHJpdmF0ZSBpbmplY3RlZERhdGE6IElEYXRlUGlja2VyRGF0YSwgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlKSB7XG4gICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMuc2V0KHRoaXMuZGF0YSgpLmRhdGVzKTtcbiAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlLnNldCh0aGlzLmluamVjdGVkRGF0YS5kYXRlc1JhbmdlIHx8IHtzdGFydERhdGU6IG51bGwsIGVuZERhdGU6IG51bGx9KTtcbiAgICB0aGlzLmlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZC5zZXQodGhpcy5kYXRhKCkuaXNTUGlja2VyU2VsZWN0ZWQpO1xuICAgIHRoaXMuaXNEYXRlc1ZhbGlkLnNldCh0aGlzLmRhdGEoKS5pc1NQaWNrZXJTZWxlY3RlZCA/IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzKCkubGVuZ3RoID4gMCA6ICEhKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uc3RhcnREYXRlICYmIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uZW5kRGF0ZSkpO1xuICAgIHRoaXMuZGF0ZVJhbmdlU2VsZWN0ZWQuc2V0KCF0aGlzLmlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpKTtcbiAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZC5zZXQodGhpcy5kYXRhKCkuaXNTaW5nbGVEYXRlUGlja2VyRW5hYmxlKTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBsZXQgc2VsZWN0ZWRTdGFydERhdGU6IERheWpzO1xuICAgICAgaWYgKCF0aGlzLmlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpKSB7XG4gICAgICAgIHNlbGVjdGVkU3RhcnREYXRlID0gdGhpcy5kYXlqc0luc3RhbmNlKCkodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5zdGFydERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxlY3RlZFN0YXJ0RGF0ZSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzKCk/LlswXT8uc2VsZWN0ZWREYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgfVxuICAgICAgaWYgKHNlbGVjdGVkU3RhcnREYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyLnNldChzZWxlY3RlZFN0YXJ0RGF0ZS55ZWFyKCkpO1xuICAgICAgICB0aGlzLm5leHRZZWFyTnVtYmVyLnNldChzZWxlY3RlZFN0YXJ0RGF0ZS5hZGQoMSwgXCJtb250aFwiKS55ZWFyKCkpO1xuICAgICAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlci5zZXQoc2VsZWN0ZWRTdGFydERhdGUuZ2V0KFwibW9udGhcIikpO1xuICAgICAgICB0aGlzLm5leHRNb250aE51bWJlci5zZXQoc2VsZWN0ZWRTdGFydERhdGUuYWRkKDEsIFwibW9udGhcIikubW9udGgoKSk7XG4gICAgICB9XG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgICBcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGF0YSgpLmlzU2luZ2xlRGF0ZVBpY2tlckVuYWJsZSkge1xuICAgICAgICBjb25zdCBwaWNrZXJWYWx1ZSA9ICdTaW5nbGUgRGF0ZSc7XG4gICAgICAgIGlmICghdGhpcy5kYXRlUGlja2VyVmFsdWUoKS5pbmNsdWRlcyhwaWNrZXJWYWx1ZSkpIHtcbiAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJWYWx1ZS51cGRhdGUoY3VycmVudFZhbHVlID0+IFtwaWNrZXJWYWx1ZSwgLi4uY3VycmVudFZhbHVlXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShwaWNrZXJWYWx1ZSk7XG4gICAgICAgIHRoaXMuc2luZ2xlRGF0ZVBpY2tlclNlbGVjdGVkLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudC5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuc2luZ2xlRGF0ZVNlbGVjdGVkVmFsdWUuc2V0KHRoaXMuZGF0YSgpLmRhdGVzWzBdPy5zZWxlY3RlZERhdGUgfHwgJycpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuZGF0YSgpPy5kcENvbmZpZz8udGltZXpvbmUpIHtcbiAgICAgIHRoaXMuZGF5anNJbnN0YW5jZSA9IGNvbXB1dGVkKCgpID0+ICguLi5hcmdzOiBhbnlbXSkgPT4gZGF5anMoLi4uYXJncykudHoodGhpcy5kYXRhKCkuZHBDb25maWcudGltZXpvbmUpKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGF0YSgpPy5kcENvbmZpZz8uZm9ybWF0KSB7XG4gICAgICB0aGlzLmRhdGEoKS5kcENvbmZpZyA9IHtcbiAgICAgICAgLi4udGhpcy5kYXRhKCkuZHBDb25maWcsXG4gICAgICAgIGZvcm1hdDogREFURV9GT1JNQVRcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZURhdGVzKG1vbnRoOiBudW1iZXIsIGN1cnJlbnRZZWFyTnVtYmVyOiBudW1iZXIpOiBJQ3VycmVudE1vbnRoRGF0ZXNbXSB7XG4gICAgY29uc3QgZGF0ZXM6IElDdXJyZW50TW9udGhEYXRlc1tdID0gW107XG4gICAgY29uc3QgZGF5c0luTW9udGggPSB0aGlzLmRheWpzSW5zdGFuY2UoKSgpLnllYXIoY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKG1vbnRoKS5kYXlzSW5Nb250aCgpO1xuICAgIFxuICAgIGZvciAobGV0IGN1cnJlbnREYXRlID0gMTsgY3VycmVudERhdGUgPD0gZGF5c0luTW9udGg7IGN1cnJlbnREYXRlKyspIHtcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmRheWpzSW5zdGFuY2UoKSgpLnllYXIoY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKG1vbnRoKS5kYXRlKGN1cnJlbnREYXRlKTtcbiAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuXG4gICAgICBsZXQgaXNEaXNhYmxlZERheSA9IHRoaXMuZGF0YSgpLmRhdGVzRGlzYWJsZWQuc29tZShkID0+IGQgPT09IGRhdGVTdHJpbmcpO1xuICAgICAgY29uc3QgbWluRGF0ZSA9ICEhdGhpcy5kYXRhKCkuZHBDb25maWcubWluRGF0ZSA/IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1pbkRhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgICAgaWYgKCFpc0Rpc2FibGVkRGF5ICYmIG1pbkRhdGUuaXNWYWxpZCgpKSB7XG4gICAgICAgIGlzRGlzYWJsZWREYXkgPSBtaW5EYXRlLmlzQWZ0ZXIoZGF0ZSwgXCJkYXlcIik7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXhEYXRlID0gISF0aGlzLmRhdGEoKS5kcENvbmZpZy5tYXhEYXRlID8gdGhpcy5kYXlqc0luc3RhbmNlKCkodGhpcy5kYXRhKCkuZHBDb25maWcubWF4RGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSA6IGRheWpzKCdpbnZhbGlkJyk7XG4gICAgICBpZiAoIWlzRGlzYWJsZWREYXkgJiYgbWF4RGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgaXNEaXNhYmxlZERheSA9IG1heERhdGUuaXNCZWZvcmUoZGF0ZSwgXCJkYXlcIik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzQ3VycmVudERheSA9IGRhdGUuaXNTYW1lKHRoaXMuZGF5anNJbnN0YW5jZSgpKCksICdkYXknKTtcbiAgICAgIGxldCBpc1NlbGVjdGVkRGF5ID0gdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMoKS5zb21lKGQgPT4gZC5zZWxlY3RlZERhdGUgPT09IGRhdGVTdHJpbmcpO1xuICAgICAgY29uc3QgaXNTZWxlY3RlZFN0YXJ0RGF5ID0gISF0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LnN0YXJ0RGF0ZSAmJiBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpID09PSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LnN0YXJ0RGF0ZTtcbiAgICAgIGNvbnN0IGlzU2VsZWN0ZWRFbmREYXkgPSAhIXRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uZW5kRGF0ZSAmJiBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpID09PSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LmVuZERhdGU7XG4gICAgICBjb25zdCBpblJhbmdlRGF5ID0gISEodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5zdGFydERhdGUgJiYgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5lbmREYXRlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUuaXNCZXR3ZWVuKHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uc3RhcnREYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpLCB0aGlzLmRheWpzSW5zdGFuY2UoKSh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LmVuZERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCksICdkYXknLCAnKCknKTtcblxuICAgICAgY29uc3QgaXNIb2xpZGF5ID0gdGhpcy5kYXRhKCkuaG9saWRheXMuaW5jbHVkZXMoZGF0ZVN0cmluZyk7XG4gICAgICBjb25zdCBpc1dlZWtPZmYgPSB0aGlzLmRhdGEoKS53ZWVrT2Zmcy5pbmNsdWRlcyhkYXRlLmZvcm1hdCgnZGRkJykpO1xuXG4gICAgICBkYXRlcy5wdXNoKHtcbiAgICAgICAgZGF0ZTogY3VycmVudERhdGUsXG4gICAgICAgIHdlZWtEYXk6IGRhdGUuZGF5KCksXG4gICAgICAgIGlzU2VsZWN0ZWREYXksXG4gICAgICAgIGlzQ3VycmVudERheSxcbiAgICAgICAgaXNTZWxlY3RlZFN0YXJ0RGF5LFxuICAgICAgICBpc1NlbGVjdGVkRW5kRGF5LFxuICAgICAgICBpblJhbmdlRGF5LFxuICAgICAgICBpc0hvbGlkYXksXG4gICAgICAgIGlzV2Vla09mZixcbiAgICAgICAgdG9hc3RNZXNzYWdlOiB0aGlzLmRhdGEoKS5tZXNzYWdlcy5maW5kKHEgPT4gZGF0ZS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSA9PT0gcS5kYXRlKT8ubWVzc2FnZSB8fCBcIlwiLFxuICAgICAgICBpc0Rpc2FibGVkRGF5XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gZGF0ZXNbMF0/LndlZWtEYXkgfHwgMDsgaSA+IDA7IGktLSkge1xuICAgICAgZGF0ZXMudW5zaGlmdCh7IGRhdGU6IDAsIHdlZWtEYXk6IGkgLSAxIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZXM7XG4gIH1cblxuICBuYXZpZ2F0ZU1vbnRoKGRpcmVjdGlvbjogXCJORVhUXCIgfCBcIlBSRVZJT1VTXCIpOiB2b2lkIHtcbiAgICBsZXQgdGhpc01vbnRoOiBEYXlqcyA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkpO1xuICAgIHRoaXNNb250aCA9IGRpcmVjdGlvbiA9PT0gXCJORVhUXCIgPyB0aGlzTW9udGguYWRkKDEsIFwibW9udGhcIikgOiB0aGlzTW9udGguc3VidHJhY3QoMSwgXCJtb250aFwiKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlci5zZXQodGhpc01vbnRoLm1vbnRoKCkpO1xuICAgIHRoaXMuY3VycmVudFllYXJOdW1iZXIuc2V0KHRoaXNNb250aC55ZWFyKCkpO1xuICAgIHRoaXMubmV4dE1vbnRoTnVtYmVyLnNldCh0aGlzTW9udGguY2xvbmUoKS5hZGQoMSwgXCJtb250aFwiKS5tb250aCgpKTtcbiAgICB0aGlzLm5leHRZZWFyTnVtYmVyLnNldCh0aGlzTW9udGguY2xvbmUoKS5hZGQoMSwgXCJtb250aFwiKS55ZWFyKCkpO1xuICB9XG5cbiAgc2VsZWN0RGF5KGZyb206IFwiTEVGVFwiIHwgXCJSSUdIVFwiLCBkYXk6IElDdXJyZW50TW9udGhEYXRlcyk6IHZvaWQge1xuICAgIGlmIChkYXkuZGF0ZSA8PSAwIHx8IGRheS5pc0Rpc2FibGVkRGF5KSB7XG4gICAgICBpZiAoZGF5LnRvYXN0TWVzc2FnZSkgdGhpcy50b2FzdC5kaXNwbGF5TXNnKGRheS50b2FzdE1lc3NhZ2UsIDQwMDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5pc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gdGhpcy5kYXlqc0luc3RhbmNlKCkoKVxuICAgICAgICAgIC55ZWFyKGZyb20gPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50WWVhck51bWJlcigpIDogdGhpcy5uZXh0WWVhck51bWJlcigpKVxuICAgICAgICAgIC5tb250aChmcm9tID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkgOiB0aGlzLm5leHRNb250aE51bWJlcigpKVxuICAgICAgICAgIC5kYXRlKGRheS5kYXRlKS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KTtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IGN1cnJlbnQuZmluZEluZGV4KGQgPT4gZC5zZWxlY3RlZERhdGUgPT09IGN1cnJlbnRTZWxlY3Rpb24pO1xuICAgICAgICBcbiAgICAgICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5pc0RhdGVzVmFsaWQuc2V0KGN1cnJlbnQubGVuZ3RoID4gMSk7XG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnQuZmlsdGVyKChfLCBpbmRleCkgPT4gaW5kZXggIT09IGV4aXN0aW5nSW5kZXgpO1xuICAgICAgICB9IGVsc2UgaWYgKCFkYXkuaXNEaXNhYmxlZERheSkge1xuICAgICAgICAgIHRoaXMuaXNEYXRlc1ZhbGlkLnNldCh0cnVlKTtcbiAgICAgICAgICByZXR1cm4gWy4uLmN1cnJlbnQsIHsgc2VsZWN0ZWREYXRlOiBjdXJyZW50U2VsZWN0aW9uIH1dO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRheWpzRGF5ID0gdGhpcy5kYXlqc0luc3RhbmNlKCkoKVxuICAgICAgICAueWVhcihmcm9tID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSA6IHRoaXMubmV4dFllYXJOdW1iZXIoKSlcbiAgICAgICAgLm1vbnRoKGZyb20gPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSA6IHRoaXMubmV4dE1vbnRoTnVtYmVyKCkpXG4gICAgICAgIC5kYXRlKGRheS5kYXRlKTtcbiAgICAgIFxuICAgICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvblN0YXJ0ZWQoKSkge1xuICAgICAgICAgIGlmIChkYXlqc0RheS5pc0JlZm9yZSh0aGlzLmRheWpzSW5zdGFuY2UoKShjdXJyZW50LnN0YXJ0RGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgXCJkYXlcIikpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRlZC5zZXQodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmlzRGF0ZXNWYWxpZC5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHsgc3RhcnREYXRlOiBkYXlqc0RheS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgZW5kRGF0ZTogbnVsbCB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ZWQuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmlzRGF0ZXNWYWxpZC5zZXQodHJ1ZSk7XG4gICAgICAgICAgcmV0dXJuIHsgLi4uY3VycmVudCwgZW5kRGF0ZTogZGF5anNEYXkuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ZWQuc2V0KHRydWUpO1xuICAgICAgICAgIHRoaXMuaXNEYXRlc1ZhbGlkLnNldChmYWxzZSk7XG4gICAgICAgICAgcmV0dXJuIHsgc3RhcnREYXRlOiBkYXlqc0RheS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgZW5kRGF0ZTogbnVsbCB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhcHBseURhdGVzKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YSgpLmRhdGVDaGFuZ2UodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMoKSk7XG4gIH1cblxuICBhcHBseURhdGVzUmFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhKCkuZGF0ZUNoYW5nZVJhbmdlKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKSk7XG4gIH1cblxuICBvblNpbmdsZURhdGVDaGFuZ2UoZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkRGF0YTogSVNTZWxlY3RlZERhdGVzQ29uZmlnID0geyBzZWxlY3RlZERhdGU6IGV2ZW50IH07XG4gICAgdGhpcy5zaW5nbGVEYXRlU2VsZWN0ZWRWYWx1ZS5zZXQoZXZlbnQpO1xuICAgIHRoaXMuZGF0YSgpLmRhdGVDaGFuZ2UoW3NlbGVjdGVkRGF0YV0pO1xuICB9XG5cbiAgY2FuY2VsRGF0ZVBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGEoKS5jbG9zZSgpO1xuICB9XG5cbiAgY2hhbmdlUGlja2VyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZC5zZXQoZXZlbnQgPT09IFwiU2luZ2xlIERhdGVcIik7XG4gICAgdGhpcy5vcGVuRWxlbWVudC5zZXQoZXZlbnQgPT09IFwiU2luZ2xlIERhdGVcIik7XG4gICAgdGhpcy5kYXRlUmFuZ2VTZWxlY3RlZC5zZXQoZXZlbnQgPT09IFwiRGF0ZSBSYW5nZVwiKTtcbiAgICB0aGlzLmlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZC5zZXQoZXZlbnQgPT09IFwiU3BlY2lmaWMgRGF0ZShzKVwiKTtcbiAgICBcbiAgICAvLyBBcyBkaXNjdXNzZWQsIHN0YXRlIGlzIHJldGFpbmVkIHdoZW4gc3dpdGNoaW5nIG1vZGVzLlxuICAgIC8vIFRoZSB2aWV3IHdpbGwgc2ltcGx5IHVwZGF0ZSB0byByZWZsZWN0IHRoZSBhY3RpdmUgbW9kZS5cbiAgICBcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGV2ZW50LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gIH1cbiAgXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNpbmdsZURhdGVQaWNrZXJFbGVtZW50KSB7XG4gICAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJFbGVtZW50LmNsb3NlKCk7XG4gICAgfVxuICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyXCIgW25nQ2xhc3NdPVwiZGF0YSgpLmlzU2luZ2xlRGF0ZVBpY2tlckVuYWJsZT8nc2luZ2xlLWRhdGUtcGlja2VyLWVuYWJsZWQnOicnXCI+XG4gIDxkaXYgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiAqbmdGb3I9XCJsZXQgcGlja2VyIG9mIGRhdGVQaWNrZXJWYWx1ZSgpXCI+XG4gICAgICA8bWlzLXJhZGlvIGNsYXNzPVwiaW5wdXRcIiBbbmFtZV09XCInZGF0ZVNlbGVjdGlvbidcIiBbdmFsdWVdPVwicGlja2VyXCIgKHZhbHVlQ2hhbmdlKT1cImNoYW5nZVBpY2tlcigkZXZlbnQpXCIgbmdEZWZhdWx0Q29udHJvbCBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIj48L21pcy1yYWRpbz5cbiAgICAgIDxzcGFuPnt7cGlja2VyfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic3BlY2lmaWMtZGF0ZXBpY2tlci1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7J2Rpc3BsYXknOiBzaW5nbGVEYXRlUGlja2VyU2VsZWN0ZWQoKSA/ICdub25lJyA6ICcnfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX192aWV3XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fbGVmdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9faGVhZGVyX19wcmFidVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYXJyb3dfX2ljb25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIiFpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpICYmIG5hdmlnYXRlTW9udGgoJ1BSRVZJT1VTJylcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnZGlzYWJsZWQtbW9udGgnOiBpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDIwIDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTE5LjcwNzEgOC43MDcxMUMyMC4wOTc2IDguMzE2NTggMjAuMDk3NiA3LjY4MzQyIDE5LjcwNzEgNy4yOTI4OUwxMy4zNDMxIDAuOTI4OTMzQzEyLjk1MjYgMC41Mzg0MDkgMTIuMzE5NSAwLjUzODQwOSAxMS45Mjg5IDAuOTI4OTMzQzExLjUzODQgMS4zMTk0NiAxMS41Mzg0IDEuOTUyNjIgMTEuOTI4OSAyLjM0MzE1TDE3LjU4NTggOEwxMS45Mjg5IDEzLjY1NjlDMTEuNTM4NCAxNC4wNDc0IDExLjUzODQgMTQuNjgwNSAxMS45Mjg5IDE1LjA3MTFDMTIuMzE5NSAxNS40NjE2IDEyLjk1MjYgMTUuNDYxNiAxMy4zNDMxIDE1LjA3MTFMMTkuNzA3MSA4LjcwNzExWk0tOC43NDIyOGUtMDggOUwxOSA5TDE5IDdMOC43NDIyOGUtMDggN0wtOC43NDIyOGUtMDggOVpcIlxuICAgICAgICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3Bhbj4ge3sgY3VycmVudE1vbnRoKCkgfX0ge3sgY3VycmVudFllYXJOdW1iZXIoKSB9fSA8L3NwYW4+XG4gICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX193ZWVrZGF5c1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX193ZWVrZGF5XCIgKm5nRm9yPVwibGV0IHdlZWtEYXkgb2Ygd2Vla0RheXMoKVwiPlxuICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnY3VycmVudC1kYXknOiB3ZWVrRGF5LmlzQ3VycmVudERheSAmJiAoY3VycmVudE1vbnRoTnVtYmVyKCkgPT09IHRvZGF5TW9udGhOdW1iZXIoKSlcbiAgICAgICAgICAgIH1cIj57eyB3ZWVrRGF5LmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2RheXNcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2RheVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdzZWxlY3RlZC1kYXknOiBkYXkuaXNTZWxlY3RlZERheSAmJiBpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2Rpc2FibGVkLWRheSc6IGRheS5pc0Rpc2FibGVkRGF5LFxuICAgICAgICAgICAgICAnc2VsZWN0ZWQtc3RhcnQtZGF5JzogZGF5LmlzU2VsZWN0ZWRTdGFydERheSAmJiAhaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdzZWxlY3RlZC1lbmQtZGF5JzogZGF5LmlzU2VsZWN0ZWRFbmREYXkgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnaW4tcmFuZ2UtZGF5JzogZGF5LmluUmFuZ2VEYXkgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnaXMtdmFsaWQtZGF0ZSc6IGRheS5kYXRlID4gMCAmJiAhaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCkgJiYgIShkYXkuaXNTZWxlY3RlZFN0YXJ0RGF5ICYmIGRheS5pc1NlbGVjdGVkRW5kRGF5KVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdtYXJnaW4tcmlnaHQnOiAhaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCkgPyAnMHB4JyA6ICcxcHgnLCd3aWR0aCc6ICFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSA/ICczNnB4JyA6ICczNXB4JywnanVzdGlmeS1jb250ZW50JzogZGF5LmlzSG9saWRheSA/ICdmbGV4LXN0YXJ0JyA6ICdjZW50ZXInLCdwYWRkaW5nLXRvcCc6IGRheS5pc0hvbGlkYXkgPyAnMi44cHgnIDogJzBweCcsJ2hlaWdodCc6IGRheS5pc0hvbGlkYXkgPyAnMzNweCcgOiAnMzZweCd9XCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgY3VycmVudE1vbnRoRGF0ZXMoKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF5KCdMRUZUJyxkYXkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY2lyY3VsYXItZG90JzogZGF5LmlzSG9saWRheVxuICAgICAgICAgIH1cIj48L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF5LmRhdGUgPiAwXCIgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2N1cnJlbnQtZGF5JzogZGF5LmlzQ3VycmVudERheSxcbiAgICAgICAgICAgICAgJ2hvbGlkYXktdGV4dCc6IGRheS5pc0hvbGlkYXkgfHwgZGF5LmlzV2Vla09mZlxuICAgICAgICAgICAgfVwiID5cbiAgICAgICAgICAgICAge3sgZGF5LmRhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fcmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19oZWFkZXJfX3ByYWJ1XCI+XG4gICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgIDxzcGFuPiB7eyBuZXh0TW9udGgoKSB9fSB7eyBuZXh0WWVhck51bWJlcigpIH19IDwvc3Bhbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYXJyb3dfX2ljb25cIlxuICAgICAgICAgIChjbGljayk9XCIhaXNOZXh0TW9udGhEaXNhYmxlZCgpICYmIG5hdmlnYXRlTW9udGgoJ05FWFQnKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2Rpc2FibGVkLW1vbnRoJzogaXNOZXh0TW9udGhEaXNhYmxlZCgpXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDIwIDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMTkuNzA3MSA4LjcwNzExQzIwLjA5NzYgOC4zMTY1OCAyMC4wOTc2IDcuNjgzNDIgMTkuNzA3MSA3LjI5Mjg5TDEzLjM0MzEgMC45Mjg5MzNDMTIuOTUyNiAwLjUzODQwOSAxMi4zMTk1IDAuNTM4NDA5IDExLjkyODkgMC45Mjg5MzNDMTEuNTM4NCAxLjMxOTQ2IDExLjUzODQgMS45NTI2MiAxMS45Mjg5IDIuMzQzMTVMMTcuNTg1OCA4TDExLjkyODkgMTMuNjU2OUMxMS41Mzg0IDE0LjA0NzQgMTEuNTM4NCAxNC42ODA1IDExLjkyODkgMTUuMDcxMUMxMi4zMTk1IDE1LjQ2MTYgMTIuOTUyNiAxNS40NjE2IDEzLjM0MzEgMTUuMDcxMUwxOS43MDcxIDguNzA3MTFaTS04Ljc0MjI4ZS0wOCA5TDE5IDlMMTkgN0w4Ljc0MjI4ZS0wOCA3TC04Ljc0MjI4ZS0wOCA5WlwiXG4gICAgICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fd2Vla2RheXNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fd2Vla2RheVwiICpuZ0Zvcj1cImxldCB3ZWVrRGF5IG9mIHdlZWtEYXlzKClcIiA+XG4gICAgICAgICAgICA8c3BhbiA+e3sgd2Vla0RheS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19kYXlzXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19kYXlcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnc2VsZWN0ZWQtZGF5JzogZGF5LmlzU2VsZWN0ZWREYXkgJiYgaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdkaXNhYmxlZC1kYXknOiBkYXkuaXNEaXNhYmxlZERheSxcbiAgICAgICAgICAgICAgJ3NlbGVjdGVkLXN0YXJ0LWRheSc6IGRheS5pc1NlbGVjdGVkU3RhcnREYXkgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnc2VsZWN0ZWQtZW5kLWRheSc6IGRheS5pc1NlbGVjdGVkRW5kRGF5ICYmICFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2luLXJhbmdlLWRheSc6IGRheS5pblJhbmdlRGF5ICYmICFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2lzLXZhbGlkLWRhdGUnOiBkYXkuZGF0ZSA+IDAgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpICYmICEoZGF5LmlzU2VsZWN0ZWRTdGFydERheSAmJiBkYXkuaXNTZWxlY3RlZEVuZERheSlcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiBuZXh0TW9udGhEYXRlcygpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXkoJ1JJR0hUJyxkYXkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY2lyY3VsYXItZG90JzogZGF5LmlzSG9saWRheVxuICAgICAgICAgIH1cIj48L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF5LmRhdGUgPiAwXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnY3VycmVudC1kYXknOiBkYXkuaXNDdXJyZW50RGF5ICYmIChjdXJyZW50TW9udGhOdW1iZXIoKSA9PT0gdG9kYXlNb250aE51bWJlcigpKSxcbiAgICAgICAgICAgICAgJ2hvbGlkYXktdGV4dCc6IGRheS5pc0hvbGlkYXkgfHwgZGF5LmlzV2Vla09mZlxuICAgICAgICAgICAgfVwiID5cbiAgICAgICAgICAgICAge3sgZGF5LmRhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ3ZWVrT2Zmc19ob2xpZGF5c19jb250YWluZXJcIj5cbiAgICA8c3Bhbj5XZWVrbHkgb2ZmczogPHNwYW4gKm5nRm9yPVwibGV0IHdlZWtPZmYgb2YgZGF0YSgpLndlZWtPZmZzOyBsZXQgbGFzdCA9IGxhc3RcIj57e3dlZWtPZmZ9fSA8c3BhbiAqbmdJZj1cIiFsYXN0XCI+LDwvc3Bhbj48L3NwYW4+PC9zcGFuPlxuICAgIDxzcGFuID5Ib2xpZGF5cyA8c3BhbiBjbGFzcz1cImNpcmN1bGFyLWRvdFwiIFtuZ1N0eWxlXT1cInsgZGlzcGxheTogJ2lubGluZS1ibG9jaycsICdtYXJnaW4tbGVmdCc6ICcxMHB4JyB9XCI+PC9zcGFuPjwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXJfX2Zvb3RlclwiPlxuICAgIDxzcGFuICpuZ0lmPVwiaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKClcIj48c3Bhbj57e2lzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpICYmIGxvY2FsU2VsZWN0ZWREYXRlcygpWzBdPy5zZWxlY3RlZERhdGUgPyBsb2NhbFNlbGVjdGVkRGF0ZXMoKS5sZW5ndGggOiAobG9jYWxTZWxlY3RlZERhdGVzKCkubGVuZ3RoIC0xICYmIDApfX0gPC9zcGFuPmRheShzKSBzZWxlY3RlZDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cIiFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKVwiPjxzcGFuPnt7ZGF0ZVJhbmdlTGVuZ3RoKCkgPiAwID8gZGF0ZVJhbmdlTGVuZ3RoKCkgOiAwIH19IDwvc3Bhbj5kYXkocykgc2VsZWN0ZWQ8L3NwYW4+XG4gICAgPGRpdiBjbGFzcz1cImZvb3Rlcl9hY3Rpb25fYnRuXCI+XG4gICAgICA8YnV0dG9uIG1pcy1idXR0b24gc2l6ZT1cIm1kXCIgdHlwZT1cIm5vbmVcIiAoY2xpY2spPVwiY2FuY2VsRGF0ZVBpY2tlcigpXCIgPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpXCIgbWlzLWJ1dHRvbiBzaXplPVwibWRcIiB0eXBlPVwicHJpbWFyeVwiIChjbGljayk9XCJhcHBseURhdGVzKClcIiBbZGlzYWJsZWRdPVwiIWlzRGF0ZXNWYWxpZCgpXCIgPkFwcGx5PC9idXR0b24+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwiIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpXCIgbWlzLWJ1dHRvbiBzaXplPVwibWRcIiB0eXBlPVwicHJpbWFyeVwiIChjbGljayk9XCJhcHBseURhdGVzUmFuZ2UoKVwiIFtkaXNhYmxlZF09XCIhaXNEYXRlc1ZhbGlkKCkgfHwgKGRhdGVSYW5nZUxlbmd0aCgpID09PSAwKVwiID5BcHBseTwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2luZ2xlLWRhdGVwaWNrZXItY29udGFpbmVyXCIgW25nU3R5bGVdPVwieydkaXNwbGF5JzogIXNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZCgpID8gJ25vbmUnIDogJ2Jsb2NrJ31cIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBtaXNUekRwXG4gICAgICAgIG1pc0lucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgY2xhc3M9XCJkYXRlLWlucHV0XCJcbiAgICAgICAgW2RwQ29uZmlnXT1cImRhdGEoKS5kcENvbmZpZ1wiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0XCJcbiAgICAgICAgKGRhdGVDaGFuZ2UpPVwib25TaW5nbGVEYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbc2VsZWN0ZWREYXRlXT1cInNpbmdsZURhdGVTZWxlY3RlZFZhbHVlKClcIlxuICAgICAgICBwb3NpdGlvblg9XCJjZW50ZXJcIlxuICAgICAgICBwb3NpdGlvblk9XCJ0b3BcIlxuICAgICAgICBvZmZzZXRYID0gNzFcbiAgICAgICAgb2Zmc2V0WSA9IC0xXG4gICAgICAgIFt2YWx1ZV09XCJzaW5nbGVEYXRlU2VsZWN0ZWRWYWx1ZSgpXCJcbiAgICAgICAgW2Rpc2FibGVCb3hTaGFkb3ddPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlT3ZlckxheV09XCJ0cnVlXCJcbiAgICAgICAgW29wZW5FbGVtZW50XT1cIm9wZW5FbGVtZW50KClcIlxuICAgICAgICAjc2luZ2xlRGF0ZVBpY2tlckVsZW1lbnRcbiAgICAgIC8+XG4gIDwvZGl2PlxuXG48L2Rpdj5cblxuXG4iXX0=
533
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHotc2RwLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9taXMtY29tcG9uZW50cy9zcGVjaWZpY2RhdGVwaWNrZXIvdHotc2RwLWNvbnRhaW5lci90ei1zZHAtY29udGFpbmVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL3NwZWNpZmljZGF0ZXBpY2tlci90ei1zZHAtY29udGFpbmVyL3R6LXNkcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQVUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNHLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFFM0UsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUVwQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEtBQW9CLE1BQU0sT0FBTyxDQUFDO0FBQ3pDLE9BQU8sUUFBUSxNQUFNLHVCQUF1QixDQUFDO0FBQzdDLE9BQU8sR0FBRyxNQUFNLGtCQUFrQixDQUFDO0FBQ25DLE9BQU8sYUFBYSxNQUFNLDRCQUE0QixDQUFDO0FBQ3ZELE9BQU8sY0FBYyxNQUFNLDZCQUE2QixDQUFDO0FBQ3pELE9BQU8saUJBQWlCLE1BQU0sZ0NBQWdDLENBQUM7QUFDL0QsT0FBTyxTQUFTLE1BQU0sd0JBQXdCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQ1Z6QyxBQURGLCtCQUE0RCxvQkFDMkY7SUFBbEYsd01BQWUsMkJBQW9CLEtBQUM7SUFBOEMsaUJB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Q0FBaUgsb0JBb0IzRztZQVhBLDBKQUFjLDhCQUEwQixLQUFDO1lBY2pELEFBRkUsQUFwQkksaUJBbUJFLEVBQ0EsRUFFRjs7WUExSmlDLGlHQUEyRTtZQUV4RSxlQUFvQjtZQUFwQiwrQ0FBb0I7WUFLakIsY0FBaUU7WUFBakUsbUdBQWlFO1lBT2xHLGVBRUU7WUFGRixvRkFFRTtZQVNDLGVBQStDO1lBQS9DLGlGQUErQztZQUtnQixlQUFhO1lBQWIsd0NBQWE7WUFrQi9ELGVBQXNCO1lBQXRCLGlEQUFzQjtZQW1CbkMsZUFBeUM7WUFBekMsMkVBQXlDO1lBSTlDLGNBRUU7WUFGRixnRkFFRTtZQVlrRSxlQUFhO1lBQWIsd0NBQWE7WUFlL0QsZUFBbUI7WUFBbkIsOENBQW1CO1lBa0JFLGVBQW9CO1lBQXBCLDZDQUFvQjtZQUN0QixlQUE4RDtZQUE5RCxxREFBOEQ7WUFHbEcsZUFBZ0M7WUFBaEMscURBQWdDO1lBQ2hDLGNBQWlDO1lBQWpDLHNEQUFpQztZQUc3QixlQUFnQztZQUFoQyxxREFBZ0M7WUFDaEMsY0FBaUM7WUFBakMsc0RBQWlDO1lBSUwsY0FBdUU7WUFBdkUseUdBQXVFO1lBTzFHLGNBQTRCO1lBVzVCLEFBREEsQUFEQSxBQURBLEFBTEEsQUFIQSw4Q0FBNEIsK0NBR2Msd0NBS1AsMEJBQ1Ysd0JBQ0Ysa0NBQ007OztpRkQxSHhCLHVCQUF1QjtjQUxuQyxTQUFTOzJCQUNFLFlBQVk7O3NCQXFFVCxNQUFNO3VCQUFDLGNBQWM7Z0RBRm1ELHVCQUF1QjtrQkFBM0csU0FBUzttQkFBQyx5QkFBeUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFOztrRkEvRHhFLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5qZWN0LCBPbkluaXQsIFZpZXdDaGlsZCwgc2lnbmFsLCBjb21wdXRlZCwgZWZmZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9EQVRBLCBEQVRFX0ZPUk1BVCB9IGZyb20gXCIuLi9kYXRlcmFuZ2VwaWNrZXItY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBJQ3VycmVudE1vbnRoLCBJQ3VycmVudE1vbnRoRGF0ZXMsIElEYXRlUGlja2VyRGF0YSwgSVdlZWtEYXksIElTU2VsZWN0ZWREYXRlc0NvbmZpZywgSVJTZWxlY3RlZERhdGVzQ29uZmlnIH0gZnJvbSBcIi4uL21vZGVscy9zZHAtY29uZmlnLm1vZGVsXCI7XG5pbXBvcnQgeyBnZXRNb250aCB9IGZyb20gXCIuLi91dGlsc1wiO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vdG9hc3RcIjtcbmltcG9ydCB7IFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgVHpEYXRlcGlja2VyRGlyZWN0aXZlIH0gZnJvbSBcIm1pcy1jcnlzdGFsLWRlc2lnbi1zeXN0ZW0vZGF0ZXBpY2tlcl92MlwiO1xuaW1wb3J0IGRheWpzLCB7IERheWpzLCB0eiB9IGZyb20gJ2RheWpzJztcbmltcG9ydCB0aW1lem9uZSBmcm9tICdkYXlqcy9wbHVnaW4vdGltZXpvbmUnO1xuaW1wb3J0IHV0YyBmcm9tICdkYXlqcy9wbHVnaW4vdXRjJztcbmltcG9ydCBpc1NhbWVPckFmdGVyIGZyb20gJ2RheWpzL3BsdWdpbi9pc1NhbWVPckFmdGVyJztcbmltcG9ydCBpc1NhbWVPckJlZm9yZSBmcm9tICdkYXlqcy9wbHVnaW4vaXNTYW1lT3JCZWZvcmUnO1xuaW1wb3J0IGN1c3RvbVBhcnNlRm9ybWF0IGZyb20gJ2RheWpzL3BsdWdpbi9jdXN0b21QYXJzZUZvcm1hdCc7XG5pbXBvcnQgaXNCZXR3ZWVuIGZyb20gJ2RheWpzL3BsdWdpbi9pc0JldHdlZW4nO1xuXG5kYXlqcy5leHRlbmQoaXNCZXR3ZWVuKTtcbmRheWpzLmV4dGVuZCh1dGMpO1xuZGF5anMuZXh0ZW5kKHRpbWV6b25lKTtcbmRheWpzLmV4dGVuZChjdXN0b21QYXJzZUZvcm1hdCk7XG5kYXlqcy5leHRlbmQoaXNTYW1lT3JBZnRlcik7XG5kYXlqcy5leHRlbmQoaXNTYW1lT3JCZWZvcmUpO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLXR6LXNkcFwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL3R6LXNkcC1jb250YWluZXIuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL3R6LXNkcC1jb250YWluZXIuY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgVHpEcnBDb250YWluZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIHJlYWRvbmx5IGRhdGEgPSBzaWduYWw8SURhdGVQaWNrZXJEYXRhPih0aGlzLmluamVjdGVkRGF0YSk7XG4gIHByaXZhdGUgZGF5anNJbnN0YW5jZSA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiBkYXlqcyguLi5hcmdzKTtcbiAgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmF3V2Vla0RheXM6IHN0cmluZ1tdID0gW1wiU1VOXCIsIFwiTU9OXCIsIFwiVFVFXCIsIFwiV0VEXCIsIFwiVEhVXCIsIFwiRlJJXCIsIFwiU0FUXCJdO1xuXG4gIHB1YmxpYyByZWFkb25seSBsb2NhbFNlbGVjdGVkRGF0ZXMgPSBzaWduYWw8SVNTZWxlY3RlZERhdGVzQ29uZmlnW10+KFtdKTtcbiAgcHVibGljIHJlYWRvbmx5IGxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlID0gc2lnbmFsPElSU2VsZWN0ZWREYXRlc0NvbmZpZz4oe3N0YXJ0RGF0ZTogbnVsbCwgZW5kRGF0ZTogbnVsbH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNEYXRlc1ZhbGlkID0gc2lnbmFsKGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGVSYW5nZVNlbGVjdGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IHNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZCA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBvcGVuRWxlbWVudCA9IHNpZ25hbChmYWxzZSk7XG4gIHB1YmxpYyByZWFkb25seSBzaW5nbGVEYXRlU2VsZWN0ZWRWYWx1ZSA9IHNpZ25hbCgnJyk7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25TdGFydGVkID0gc2lnbmFsKGZhbHNlKTtcbiAgcHVibGljIHJlYWRvbmx5IGlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IGZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgnU3BlY2lmaWMgRGF0ZShzKScpO1xuICBwdWJsaWMgcmVhZG9ubHkgZGF0ZVBpY2tlclZhbHVlID0gc2lnbmFsPHN0cmluZ1tdPihbJ1NwZWNpZmljIERhdGUocyknLCdEYXRlIFJhbmdlJ10pO1xuICBcbiAgcHVibGljIHJlYWRvbmx5IGN1cnJlbnRNb250aE51bWJlciA9IHNpZ25hbCh0aGlzLmRheWpzSW5zdGFuY2UoKSgpLm1vbnRoKCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgY3VycmVudFllYXJOdW1iZXIgPSBzaWduYWwodGhpcy5kYXlqc0luc3RhbmNlKCkoKS55ZWFyKCkpO1xuICBwdWJsaWMgcmVhZG9ubHkgbmV4dE1vbnRoTnVtYmVyID0gc2lnbmFsKHRoaXMuZGF5anNJbnN0YW5jZSgpKCkuYWRkKDEsIFwibW9udGhcIikubW9udGgoKSk7XG4gIHB1YmxpYyByZWFkb25seSBuZXh0WWVhck51bWJlciA9IHNpZ25hbCh0aGlzLmRheWpzSW5zdGFuY2UoKSgpLmFkZCgxLCBcIm1vbnRoXCIpLnllYXIoKSk7XG5cbiAgcHVibGljIHJlYWRvbmx5IHdlZWtEYXlzID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIHJldHVybiB0aGlzLnJhd1dlZWtEYXlzLm1hcCgoZGF5LCBpbmRleCkgPT4gKHtcbiAgICAgIGxhYmVsOiBgJHtkYXlbMF19JHtkYXkuc2xpY2UoMSkudG9Mb3dlckNhc2UoKX1gLFxuICAgICAgaXNDdXJyZW50RGF5OiB0aGlzLmRheWpzSW5zdGFuY2UoKSgpLmRheSgpID09PSBpbmRleFxuICAgIH0pKTtcbiAgfSk7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50TW9udGggPSBjb21wdXRlZCgoKSA9PiBnZXRNb250aCh0aGlzLmN1cnJlbnRNb250aE51bWJlcigpKSk7XG4gIHB1YmxpYyByZWFkb25seSBuZXh0TW9udGggPSBjb21wdXRlZCgoKSA9PiBnZXRNb250aCh0aGlzLm5leHRNb250aE51bWJlcigpKSk7XG4gIHB1YmxpYyByZWFkb25seSB0b2RheU1vbnRoTnVtYmVyID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5kYXlqc0luc3RhbmNlKCkoKS5tb250aCgpKTtcbiAgcHVibGljIHJlYWRvbmx5IGRhdGVSYW5nZUxlbmd0aCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCByYW5nZSA9IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKTtcbiAgICBpZiAocmFuZ2U/LnN0YXJ0RGF0ZSAmJiByYW5nZT8uZW5kRGF0ZSkge1xuICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLmRheWpzSW5zdGFuY2UoKShyYW5nZS5zdGFydERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICBjb25zdCBlbmQgPSB0aGlzLmRheWpzSW5zdGFuY2UoKShyYW5nZS5lbmREYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgaWYgKHN0YXJ0LmlzVmFsaWQoKSAmJiBlbmQuaXNWYWxpZCgpKSB7XG4gICAgICAgIHJldHVybiBlbmQuZGlmZihzdGFydCwgJ2RheScpICsgMTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgaXNQcmV2aW91c01vbnRoRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEluc3RhbmNlID0gdGhpcy5kYXlqc0luc3RhbmNlKCkoKS55ZWFyKHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSkubW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSk7XG4gICAgY29uc3QgbWluRGF0ZSA9ICEhdGhpcy5kYXRhKCkuZHBDb25maWcubWluRGF0ZSA/IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1pbkRhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgIHJldHVybiBtaW5EYXRlLmlzVmFsaWQoKSAmJiBtaW5EYXRlLmlzU2FtZU9yQWZ0ZXIoY3VycmVudEluc3RhbmNlLCBcIm1vbnRoXCIpO1xuICB9KTtcbiAgcHVibGljIHJlYWRvbmx5IGlzTmV4dE1vbnRoRGlzYWJsZWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEluc3RhbmNlID0gdGhpcy5kYXlqc0luc3RhbmNlKCkoKS55ZWFyKHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSkubW9udGgodGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSk7XG4gICAgY29uc3QgbWF4RGF0ZSA9ICEhdGhpcy5kYXRhKCkuZHBDb25maWcubWF4RGF0ZSA/IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1heERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgIHJldHVybiBtYXhEYXRlLmlzVmFsaWQoKSAmJiBtYXhEYXRlLmlzU2FtZU9yQmVmb3JlKGN1cnJlbnRJbnN0YW5jZSwgXCJtb250aFwiKTtcbiAgfSk7XG4gIHB1YmxpYyByZWFkb25seSBjdXJyZW50TW9udGhEYXRlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5nZW5lcmF0ZURhdGVzKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCksIHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSk7XG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgbmV4dE1vbnRoRGF0ZXMgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVEYXRlcyh0aGlzLm5leHRNb250aE51bWJlcigpLCB0aGlzLm5leHRZZWFyTnVtYmVyKCkpO1xuICB9KTtcblxuICBAVmlld0NoaWxkKCdzaW5nbGVEYXRlUGlja2VyRWxlbWVudCcsIHsgc3RhdGljOiB0cnVlLCByZWFkOiBUekRhdGVwaWNrZXJEaXJlY3RpdmUgfSkgc2luZ2xlRGF0ZVBpY2tlckVsZW1lbnQhOiBUekRhdGVwaWNrZXJEaXJlY3RpdmU7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChDT05UQUlORVJfREFUQSkgcHJpdmF0ZSBpbmplY3RlZERhdGE6IElEYXRlUGlja2VyRGF0YSwgcHJpdmF0ZSB0b2FzdDogVG9hc3RTZXJ2aWNlKSB7XG4gICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMuc2V0KHRoaXMuZGF0YSgpLmRhdGVzKTtcbiAgICB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlLnNldCh0aGlzLmluamVjdGVkRGF0YS5kYXRlc1JhbmdlIHx8IHtzdGFydERhdGU6IG51bGwsIGVuZERhdGU6IG51bGx9KTtcbiAgICB0aGlzLmlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZC5zZXQodGhpcy5kYXRhKCkuaXNTUGlja2VyU2VsZWN0ZWQpO1xuICAgIHRoaXMuaXNEYXRlc1ZhbGlkLnNldCh0aGlzLmRhdGEoKS5pc1NQaWNrZXJTZWxlY3RlZCA/IHRoaXMubG9jYWxTZWxlY3RlZERhdGVzKCkubGVuZ3RoID4gMCA6ICEhKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uc3RhcnREYXRlICYmIHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uZW5kRGF0ZSkpO1xuICAgIHRoaXMuZGF0ZVJhbmdlU2VsZWN0ZWQuc2V0KCF0aGlzLmlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpKTtcbiAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZC5zZXQodGhpcy5kYXRhKCkuaXNTaW5nbGVEYXRlUGlja2VyRW5hYmxlKTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBsZXQgc2VsZWN0ZWRTdGFydERhdGU6IERheWpzO1xuICAgICAgaWYgKCF0aGlzLmlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpKSB7XG4gICAgICAgIHNlbGVjdGVkU3RhcnREYXRlID0gdGhpcy5kYXlqc0luc3RhbmNlKCkodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5zdGFydERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxlY3RlZFN0YXJ0RGF0ZSA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzKCk/LlswXT8uc2VsZWN0ZWREYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuICAgICAgfVxuICAgICAgaWYgKHNlbGVjdGVkU3RhcnREYXRlLmlzVmFsaWQoKSkge1xuICAgICAgICB0aGlzLmN1cnJlbnRZZWFyTnVtYmVyLnNldChzZWxlY3RlZFN0YXJ0RGF0ZS55ZWFyKCkpO1xuICAgICAgICB0aGlzLm5leHRZZWFyTnVtYmVyLnNldChzZWxlY3RlZFN0YXJ0RGF0ZS5hZGQoMSwgXCJtb250aFwiKS55ZWFyKCkpO1xuICAgICAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlci5zZXQoc2VsZWN0ZWRTdGFydERhdGUuZ2V0KFwibW9udGhcIikpO1xuICAgICAgICB0aGlzLm5leHRNb250aE51bWJlci5zZXQoc2VsZWN0ZWRTdGFydERhdGUuYWRkKDEsIFwibW9udGhcIikubW9udGgoKSk7XG4gICAgICB9XG4gICAgfSwgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9KTtcbiAgICBcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZGF0YSgpLmlzU2luZ2xlRGF0ZVBpY2tlckVuYWJsZSkge1xuICAgICAgICBjb25zdCBwaWNrZXJWYWx1ZSA9ICdTaW5nbGUgRGF0ZSc7XG4gICAgICAgIGlmICghdGhpcy5kYXRlUGlja2VyVmFsdWUoKS5pbmNsdWRlcyhwaWNrZXJWYWx1ZSkpIHtcbiAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJWYWx1ZS51cGRhdGUoY3VycmVudFZhbHVlID0+IFtwaWNrZXJWYWx1ZSwgLi4uY3VycmVudFZhbHVlXSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5zZXRWYWx1ZShwaWNrZXJWYWx1ZSk7XG4gICAgICAgIHRoaXMuc2luZ2xlRGF0ZVBpY2tlclNlbGVjdGVkLnNldCh0cnVlKTtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudC5zZXQodHJ1ZSk7XG4gICAgICAgIHRoaXMuc2luZ2xlRGF0ZVNlbGVjdGVkVmFsdWUuc2V0KHRoaXMuZGF0YSgpLmRhdGVzWzBdPy5zZWxlY3RlZERhdGUgfHwgJycpO1xuICAgICAgfVxuICAgIH0sIHthbGxvd1NpZ25hbFdyaXRlczogdHJ1ZX0pO1xuXG4gICAgaWYgKHRoaXMuZGF0YSgpPy5kcENvbmZpZz8udGltZXpvbmUpIHtcbiAgICAgIHRoaXMuZGF5anNJbnN0YW5jZSA9IGNvbXB1dGVkKCgpID0+ICguLi5hcmdzOiBhbnlbXSkgPT4gZGF5anMoLi4uYXJncykudHoodGhpcy5kYXRhKCkuZHBDb25maWcudGltZXpvbmUpKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGF0YSgpPy5kcENvbmZpZz8uZm9ybWF0KSB7XG4gICAgICB0aGlzLmRhdGEoKS5kcENvbmZpZyA9IHtcbiAgICAgICAgLi4udGhpcy5kYXRhKCkuZHBDb25maWcsXG4gICAgICAgIGZvcm1hdDogREFURV9GT1JNQVRcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZURhdGVzKG1vbnRoOiBudW1iZXIsIGN1cnJlbnRZZWFyTnVtYmVyOiBudW1iZXIpOiBJQ3VycmVudE1vbnRoRGF0ZXNbXSB7XG4gICAgY29uc3QgZGF0ZXM6IElDdXJyZW50TW9udGhEYXRlc1tdID0gW107XG4gICAgY29uc3QgZGF5c0luTW9udGggPSB0aGlzLmRheWpzSW5zdGFuY2UoKSgpLnllYXIoY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKG1vbnRoKS5kYXlzSW5Nb250aCgpO1xuICAgIFxuICAgIGZvciAobGV0IGN1cnJlbnREYXRlID0gMTsgY3VycmVudERhdGUgPD0gZGF5c0luTW9udGg7IGN1cnJlbnREYXRlKyspIHtcbiAgICAgIGNvbnN0IGRhdGUgPSB0aGlzLmRheWpzSW5zdGFuY2UoKSgpLnllYXIoY3VycmVudFllYXJOdW1iZXIpLm1vbnRoKG1vbnRoKS5kYXRlKGN1cnJlbnREYXRlKTtcbiAgICAgIGNvbnN0IGRhdGVTdHJpbmcgPSBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpO1xuXG4gICAgICBsZXQgaXNEaXNhYmxlZERheSA9IHRoaXMuZGF0YSgpLmRhdGVzRGlzYWJsZWQuc29tZShkID0+IGQgPT09IGRhdGVTdHJpbmcpO1xuICAgICAgY29uc3QgbWluRGF0ZSA9ICEhdGhpcy5kYXRhKCkuZHBDb25maWcubWluRGF0ZSA/IHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMuZGF0YSgpLmRwQ29uZmlnLm1pbkRhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgOiBkYXlqcygnaW52YWxpZCcpO1xuICAgICAgaWYgKCFpc0Rpc2FibGVkRGF5ICYmIG1pbkRhdGUuaXNWYWxpZCgpKSB7XG4gICAgICAgIGlzRGlzYWJsZWREYXkgPSBtaW5EYXRlLmlzQWZ0ZXIoZGF0ZSwgXCJkYXlcIik7XG4gICAgICB9XG4gICAgICBjb25zdCBtYXhEYXRlID0gISF0aGlzLmRhdGEoKS5kcENvbmZpZy5tYXhEYXRlID8gdGhpcy5kYXlqc0luc3RhbmNlKCkodGhpcy5kYXRhKCkuZHBDb25maWcubWF4RGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSA6IGRheWpzKCdpbnZhbGlkJyk7XG4gICAgICBpZiAoIWlzRGlzYWJsZWREYXkgJiYgbWF4RGF0ZS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgaXNEaXNhYmxlZERheSA9IG1heERhdGUuaXNCZWZvcmUoZGF0ZSwgXCJkYXlcIik7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGlzQ3VycmVudERheSA9IGRhdGUuaXNTYW1lKHRoaXMuZGF5anNJbnN0YW5jZSgpKCksICdkYXknKTtcbiAgICAgIGxldCBpc1NlbGVjdGVkRGF5ID0gdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMoKS5zb21lKGQgPT4gZC5zZWxlY3RlZERhdGUgPT09IGRhdGVTdHJpbmcpO1xuICAgICAgY29uc3QgaXNTZWxlY3RlZFN0YXJ0RGF5ID0gISF0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LnN0YXJ0RGF0ZSAmJiBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpID09PSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LnN0YXJ0RGF0ZTtcbiAgICAgIGNvbnN0IGlzU2VsZWN0ZWRFbmREYXkgPSAhIXRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uZW5kRGF0ZSAmJiBkYXRlLmZvcm1hdCh0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpID09PSB0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LmVuZERhdGU7XG4gICAgICBjb25zdCBpblJhbmdlRGF5ID0gISEodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5zdGFydERhdGUgJiYgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZSgpPy5lbmREYXRlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGUuaXNCZXR3ZWVuKHRoaXMuZGF5anNJbnN0YW5jZSgpKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKT8uc3RhcnREYXRlLCB0aGlzLmRhdGEoKS5kcENvbmZpZy5mb3JtYXQpLCB0aGlzLmRheWpzSW5zdGFuY2UoKSh0aGlzLmxvY2FsU2VsZWN0ZWREYXRlc1JhbmdlKCk/LmVuZERhdGUsIHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCksICdkYXknLCAnKCknKTtcblxuICAgICAgY29uc3QgaXNIb2xpZGF5ID0gdGhpcy5kYXRhKCkuaG9saWRheXMuaW5jbHVkZXMoZGF0ZVN0cmluZyk7XG4gICAgICBjb25zdCBpc1dlZWtPZmYgPSB0aGlzLmRhdGEoKS53ZWVrT2Zmcy5pbmNsdWRlcyhkYXRlLmZvcm1hdCgnZGRkJykpO1xuXG4gICAgICBkYXRlcy5wdXNoKHtcbiAgICAgICAgZGF0ZTogY3VycmVudERhdGUsXG4gICAgICAgIHdlZWtEYXk6IGRhdGUuZGF5KCksXG4gICAgICAgIGlzU2VsZWN0ZWREYXksXG4gICAgICAgIGlzQ3VycmVudERheSxcbiAgICAgICAgaXNTZWxlY3RlZFN0YXJ0RGF5LFxuICAgICAgICBpc1NlbGVjdGVkRW5kRGF5LFxuICAgICAgICBpblJhbmdlRGF5LFxuICAgICAgICBpc0hvbGlkYXksXG4gICAgICAgIGlzV2Vla09mZixcbiAgICAgICAgdG9hc3RNZXNzYWdlOiB0aGlzLmRhdGEoKS5tZXNzYWdlcy5maW5kKHEgPT4gZGF0ZS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSA9PT0gcS5kYXRlKT8ubWVzc2FnZSB8fCBcIlwiLFxuICAgICAgICBpc0Rpc2FibGVkRGF5XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBmb3IgKGxldCBpID0gZGF0ZXNbMF0/LndlZWtEYXkgfHwgMDsgaSA+IDA7IGktLSkge1xuICAgICAgZGF0ZXMudW5zaGlmdCh7IGRhdGU6IDAsIHdlZWtEYXk6IGkgLSAxIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZXM7XG4gIH1cblxuICBuYXZpZ2F0ZU1vbnRoKGRpcmVjdGlvbjogXCJORVhUXCIgfCBcIlBSRVZJT1VTXCIpOiB2b2lkIHtcbiAgICBsZXQgdGhpc01vbnRoOiBEYXlqcyA9IHRoaXMuZGF5anNJbnN0YW5jZSgpKCkueWVhcih0aGlzLmN1cnJlbnRZZWFyTnVtYmVyKCkpLm1vbnRoKHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkpO1xuICAgIHRoaXNNb250aCA9IGRpcmVjdGlvbiA9PT0gXCJORVhUXCIgPyB0aGlzTW9udGguYWRkKDEsIFwibW9udGhcIikgOiB0aGlzTW9udGguc3VidHJhY3QoMSwgXCJtb250aFwiKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aE51bWJlci5zZXQodGhpc01vbnRoLm1vbnRoKCkpO1xuICAgIHRoaXMuY3VycmVudFllYXJOdW1iZXIuc2V0KHRoaXNNb250aC55ZWFyKCkpO1xuICAgIHRoaXMubmV4dE1vbnRoTnVtYmVyLnNldCh0aGlzTW9udGguY2xvbmUoKS5hZGQoMSwgXCJtb250aFwiKS5tb250aCgpKTtcbiAgICB0aGlzLm5leHRZZWFyTnVtYmVyLnNldCh0aGlzTW9udGguY2xvbmUoKS5hZGQoMSwgXCJtb250aFwiKS55ZWFyKCkpO1xuICB9XG5cbiAgc2VsZWN0RGF5KGZyb206IFwiTEVGVFwiIHwgXCJSSUdIVFwiLCBkYXk6IElDdXJyZW50TW9udGhEYXRlcyk6IHZvaWQge1xuICAgIGlmIChkYXkuZGF0ZSA8PSAwIHx8IGRheS5pc0Rpc2FibGVkRGF5KSB7XG4gICAgICBpZiAoZGF5LnRvYXN0TWVzc2FnZSkgdGhpcy50b2FzdC5kaXNwbGF5TXNnKGRheS50b2FzdE1lc3NhZ2UsIDQwMDApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBcbiAgICBpZiAodGhpcy5pc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gdGhpcy5kYXlqc0luc3RhbmNlKCkoKVxuICAgICAgICAgIC55ZWFyKGZyb20gPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50WWVhck51bWJlcigpIDogdGhpcy5uZXh0WWVhck51bWJlcigpKVxuICAgICAgICAgIC5tb250aChmcm9tID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudE1vbnRoTnVtYmVyKCkgOiB0aGlzLm5leHRNb250aE51bWJlcigpKVxuICAgICAgICAgIC5kYXRlKGRheS5kYXRlKS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KTtcbiAgICAgICAgY29uc3QgZXhpc3RpbmdJbmRleCA9IGN1cnJlbnQuZmluZEluZGV4KGQgPT4gZC5zZWxlY3RlZERhdGUgPT09IGN1cnJlbnRTZWxlY3Rpb24pO1xuICAgICAgICBcbiAgICAgICAgaWYgKGV4aXN0aW5nSW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5pc0RhdGVzVmFsaWQuc2V0KGN1cnJlbnQubGVuZ3RoID4gMSk7XG4gICAgICAgICAgcmV0dXJuIGN1cnJlbnQuZmlsdGVyKChfLCBpbmRleCkgPT4gaW5kZXggIT09IGV4aXN0aW5nSW5kZXgpO1xuICAgICAgICB9IGVsc2UgaWYgKCFkYXkuaXNEaXNhYmxlZERheSkge1xuICAgICAgICAgIHRoaXMuaXNEYXRlc1ZhbGlkLnNldCh0cnVlKTtcbiAgICAgICAgICByZXR1cm4gWy4uLmN1cnJlbnQsIHsgc2VsZWN0ZWREYXRlOiBjdXJyZW50U2VsZWN0aW9uIH1dO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRheWpzRGF5ID0gdGhpcy5kYXlqc0luc3RhbmNlKCkoKVxuICAgICAgICAueWVhcihmcm9tID09PSBcIkxFRlRcIiA/IHRoaXMuY3VycmVudFllYXJOdW1iZXIoKSA6IHRoaXMubmV4dFllYXJOdW1iZXIoKSlcbiAgICAgICAgLm1vbnRoKGZyb20gPT09IFwiTEVGVFwiID8gdGhpcy5jdXJyZW50TW9udGhOdW1iZXIoKSA6IHRoaXMubmV4dE1vbnRoTnVtYmVyKCkpXG4gICAgICAgIC5kYXRlKGRheS5kYXRlKTtcbiAgICAgIFxuICAgICAgdGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXNSYW5nZS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvblN0YXJ0ZWQoKSkge1xuICAgICAgICAgIGlmIChkYXlqc0RheS5pc0JlZm9yZSh0aGlzLmRheWpzSW5zdGFuY2UoKShjdXJyZW50LnN0YXJ0RGF0ZSwgdGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgXCJkYXlcIikpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnRlZC5zZXQodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLmlzRGF0ZXNWYWxpZC5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuIHsgc3RhcnREYXRlOiBkYXlqc0RheS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgZW5kRGF0ZTogbnVsbCB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ZWQuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmlzRGF0ZXNWYWxpZC5zZXQodHJ1ZSk7XG4gICAgICAgICAgcmV0dXJuIHsgLi4uY3VycmVudCwgZW5kRGF0ZTogZGF5anNEYXkuZm9ybWF0KHRoaXMuZGF0YSgpLmRwQ29uZmlnLmZvcm1hdCkgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvblN0YXJ0ZWQuc2V0KHRydWUpO1xuICAgICAgICAgIHRoaXMuaXNEYXRlc1ZhbGlkLnNldChmYWxzZSk7XG4gICAgICAgICAgcmV0dXJuIHsgc3RhcnREYXRlOiBkYXlqc0RheS5mb3JtYXQodGhpcy5kYXRhKCkuZHBDb25maWcuZm9ybWF0KSwgZW5kRGF0ZTogbnVsbCB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBhcHBseURhdGVzKCk6IHZvaWQge1xuICAgIHRoaXMuZGF0YSgpLmRhdGVDaGFuZ2UodGhpcy5sb2NhbFNlbGVjdGVkRGF0ZXMoKSk7XG4gIH1cblxuICBhcHBseURhdGVzUmFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhKCkuZGF0ZUNoYW5nZVJhbmdlKHRoaXMubG9jYWxTZWxlY3RlZERhdGVzUmFuZ2UoKSk7XG4gIH1cblxuICBvblNpbmdsZURhdGVDaGFuZ2UoZXZlbnQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkRGF0YTogSVNTZWxlY3RlZERhdGVzQ29uZmlnID0geyBzZWxlY3RlZERhdGU6IGV2ZW50IH07XG4gICAgdGhpcy5zaW5nbGVEYXRlU2VsZWN0ZWRWYWx1ZS5zZXQoZXZlbnQpO1xuICAgIHRoaXMuZGF0YSgpLmRhdGVDaGFuZ2UoW3NlbGVjdGVkRGF0YV0pO1xuICB9XG5cbiAgY2FuY2VsRGF0ZVBpY2tlcigpOiB2b2lkIHtcbiAgICB0aGlzLmRhdGEoKS5jbG9zZSgpO1xuICB9XG5cbiAgY2hhbmdlUGlja2VyKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZC5zZXQoZXZlbnQgPT09IFwiU2luZ2xlIERhdGVcIik7XG4gICAgdGhpcy5vcGVuRWxlbWVudC5zZXQoZXZlbnQgPT09IFwiU2luZ2xlIERhdGVcIik7XG4gICAgdGhpcy5kYXRlUmFuZ2VTZWxlY3RlZC5zZXQoZXZlbnQgPT09IFwiRGF0ZSBSYW5nZVwiKTtcbiAgICB0aGlzLmlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZC5zZXQoZXZlbnQgPT09IFwiU3BlY2lmaWMgRGF0ZShzKVwiKTtcbiAgICBcbiAgICAvLyBBcyBkaXNjdXNzZWQsIHN0YXRlIGlzIHJldGFpbmVkIHdoZW4gc3dpdGNoaW5nIG1vZGVzLlxuICAgIC8vIFRoZSB2aWV3IHdpbGwgc2ltcGx5IHVwZGF0ZSB0byByZWZsZWN0IHRoZSBhY3RpdmUgbW9kZS5cbiAgICBcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGV2ZW50LCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gIH1cbiAgXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNpbmdsZURhdGVQaWNrZXJFbGVtZW50KSB7XG4gICAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJFbGVtZW50LmNsb3NlKCk7XG4gICAgfVxuICB9XG59XG5cbiIsIjxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyXCIgW25nQ2xhc3NdPVwiZGF0YSgpLmlzU2luZ2xlRGF0ZVBpY2tlckVuYWJsZT8nc2luZ2xlLWRhdGUtcGlja2VyLWVuYWJsZWQnOicnXCI+XG4gIDxkaXYgY2xhc3M9XCJyYWRpby1jb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiAqbmdGb3I9XCJsZXQgcGlja2VyIG9mIGRhdGVQaWNrZXJWYWx1ZSgpXCI+XG4gICAgICA8bWlzLXJhZGlvIGNsYXNzPVwiaW5wdXRcIiBbbmFtZV09XCInZGF0ZVNlbGVjdGlvbidcIiBbdmFsdWVdPVwicGlja2VyXCIgKHZhbHVlQ2hhbmdlKT1cImNoYW5nZVBpY2tlcigkZXZlbnQpXCIgbmdEZWZhdWx0Q29udHJvbCBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIj48L21pcy1yYWRpbz5cbiAgICAgIDxzcGFuPnt7cGlja2VyfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic3BlY2lmaWMtZGF0ZXBpY2tlci1jb250YWluZXJcIiBbbmdTdHlsZV09XCJ7J2Rpc3BsYXknOiBzaW5nbGVEYXRlUGlja2VyU2VsZWN0ZWQoKSA/ICdub25lJyA6ICcnfVwiPlxuICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX192aWV3XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fbGVmdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9faGVhZGVyX19wcmFidVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYXJyb3dfX2ljb25cIlxuICAgICAgICAgICAgKGNsaWNrKT1cIiFpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpICYmIG5hdmlnYXRlTW9udGgoJ1BSRVZJT1VTJylcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnZGlzYWJsZWQtbW9udGgnOiBpc1ByZXZpb3VzTW9udGhEaXNhYmxlZCgpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDIwIDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICBkPVwiTTE5LjcwNzEgOC43MDcxMUMyMC4wOTc2IDguMzE2NTggMjAuMDk3NiA3LjY4MzQyIDE5LjcwNzEgNy4yOTI4OUwxMy4zNDMxIDAuOTI4OTMzQzEyLjk1MjYgMC41Mzg0MDkgMTIuMzE5NSAwLjUzODQwOSAxMS45Mjg5IDAuOTI4OTMzQzExLjUzODQgMS4zMTk0NiAxMS41Mzg0IDEuOTUyNjIgMTEuOTI4OSAyLjM0MzE1TDE3LjU4NTggOEwxMS45Mjg5IDEzLjY1NjlDMTEuNTM4NCAxNC4wNDc0IDExLjUzODQgMTQuNjgwNSAxMS45Mjg5IDE1LjA3MTFDMTIuMzE5NSAxNS40NjE2IDEyLjk1MjYgMTUuNDYxNiAxMy4zNDMxIDE1LjA3MTFMMTkuNzA3MSA4LjcwNzExWk0tOC43NDIyOGUtMDggOUwxOSA5TDE5IDdMOC43NDIyOGUtMDggN0wtOC43NDIyOGUtMDggOVpcIlxuICAgICAgICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c3Bhbj4ge3sgY3VycmVudE1vbnRoKCkgfX0ge3sgY3VycmVudFllYXJOdW1iZXIoKSB9fSA8L3NwYW4+XG4gICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19ib2R5XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX193ZWVrZGF5c1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX193ZWVrZGF5XCIgKm5nRm9yPVwibGV0IHdlZWtEYXkgb2Ygd2Vla0RheXMoKVwiPlxuICAgICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnY3VycmVudC1kYXknOiB3ZWVrRGF5LmlzQ3VycmVudERheSAmJiAoY3VycmVudE1vbnRoTnVtYmVyKCkgPT09IHRvZGF5TW9udGhOdW1iZXIoKSlcbiAgICAgICAgICAgIH1cIj57eyB3ZWVrRGF5LmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2RheXNcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImRhdGVyYW5nZXBpY2tlci1jb250YWluZXJfX2RheVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdzZWxlY3RlZC1kYXknOiBkYXkuaXNTZWxlY3RlZERheSAmJiBpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2Rpc2FibGVkLWRheSc6IGRheS5pc0Rpc2FibGVkRGF5LFxuICAgICAgICAgICAgICAnc2VsZWN0ZWQtc3RhcnQtZGF5JzogZGF5LmlzU2VsZWN0ZWRTdGFydERheSAmJiAhaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdzZWxlY3RlZC1lbmQtZGF5JzogZGF5LmlzU2VsZWN0ZWRFbmREYXkgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnaW4tcmFuZ2UtZGF5JzogZGF5LmluUmFuZ2VEYXkgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnaXMtdmFsaWQtZGF0ZSc6IGRheS5kYXRlID4gMCAmJiAhaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCkgJiYgIShkYXkuaXNTZWxlY3RlZFN0YXJ0RGF5ICYmIGRheS5pc1NlbGVjdGVkRW5kRGF5KVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdtYXJnaW4tcmlnaHQnOiAhaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCkgPyAnMHB4JyA6ICcxcHgnLCd3aWR0aCc6ICFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSA/ICczNnB4JyA6ICczNXB4JywnanVzdGlmeS1jb250ZW50JzogZGF5LmlzSG9saWRheSA/ICdmbGV4LXN0YXJ0JyA6ICdjZW50ZXInLCdwYWRkaW5nLXRvcCc6IGRheS5pc0hvbGlkYXkgPyAnMi44cHgnIDogJzBweCcsJ2hlaWdodCc6IGRheS5pc0hvbGlkYXkgPyAnMzNweCcgOiAnMzZweCd9XCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgY3VycmVudE1vbnRoRGF0ZXMoKVwiXG4gICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0RGF5KCdMRUZUJyxkYXkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY2lyY3VsYXItZG90JzogZGF5LmlzSG9saWRheVxuICAgICAgICAgIH1cIj48L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF5LmRhdGUgPiAwXCIgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgJ2N1cnJlbnQtZGF5JzogZGF5LmlzQ3VycmVudERheSxcbiAgICAgICAgICAgICAgJ2hvbGlkYXktdGV4dCc6IGRheS5pc0hvbGlkYXkgfHwgZGF5LmlzV2Vla09mZlxuICAgICAgICAgICAgfVwiID5cbiAgICAgICAgICAgICAge3sgZGF5LmRhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXBpY2tlcl9fcmlnaHRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19oZWFkZXJfX3ByYWJ1XCI+XG4gICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgIDxzcGFuPiB7eyBuZXh0TW9udGgoKSB9fSB7eyBuZXh0WWVhck51bWJlcigpIH19IDwvc3Bhbj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYXJyb3dfX2ljb25cIlxuICAgICAgICAgIChjbGljayk9XCIhaXNOZXh0TW9udGhEaXNhYmxlZCgpICYmIG5hdmlnYXRlTW9udGgoJ05FWFQnKVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgJ2Rpc2FibGVkLW1vbnRoJzogaXNOZXh0TW9udGhEaXNhYmxlZCgpXG4gICAgICAgICAgfVwiXG4gICAgICAgID5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDIwIDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNMTkuNzA3MSA4LjcwNzExQzIwLjA5NzYgOC4zMTY1OCAyMC4wOTc2IDcuNjgzNDIgMTkuNzA3MSA3LjI5Mjg5TDEzLjM0MzEgMC45Mjg5MzNDMTIuOTUyNiAwLjUzODQwOSAxMi4zMTk1IDAuNTM4NDA5IDExLjkyODkgMC45Mjg5MzNDMTEuNTM4NCAxLjMxOTQ2IDExLjUzODQgMS45NTI2MiAxMS45Mjg5IDIuMzQzMTVMMTcuNTg1OCA4TDExLjkyODkgMTMuNjU2OUMxMS41Mzg0IDE0LjA0NzQgMTEuNTM4NCAxNC42ODA1IDExLjkyODkgMTUuMDcxMUMxMi4zMTk1IDE1LjQ2MTYgMTIuOTUyNiAxNS40NjE2IDEzLjM0MzEgMTUuMDcxMUwxOS43MDcxIDguNzA3MTFaTS04Ljc0MjI4ZS0wOCA5TDE5IDlMMTkgN0w4Ljc0MjI4ZS0wOCA3TC04Ljc0MjI4ZS0wOCA5WlwiXG4gICAgICAgICAgICBmaWxsPVwiIzE4MUYzM1wiXG4gICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fd2Vla2RheXNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZXJhbmdlcGlja2VyLWNvbnRhaW5lcl9fd2Vla2RheVwiICpuZ0Zvcj1cImxldCB3ZWVrRGF5IG9mIHdlZWtEYXlzKClcIiA+XG4gICAgICAgICAgICA8c3BhbiA+e3sgd2Vla0RheS5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19kYXlzXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXItY29udGFpbmVyX19kYXlcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnc2VsZWN0ZWQtZGF5JzogZGF5LmlzU2VsZWN0ZWREYXkgJiYgaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKCksXG4gICAgICAgICAgICAgICdkaXNhYmxlZC1kYXknOiBkYXkuaXNEaXNhYmxlZERheSxcbiAgICAgICAgICAgICAgJ3NlbGVjdGVkLXN0YXJ0LWRheSc6IGRheS5pc1NlbGVjdGVkU3RhcnREYXkgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpLFxuICAgICAgICAgICAgICAnc2VsZWN0ZWQtZW5kLWRheSc6IGRheS5pc1NlbGVjdGVkRW5kRGF5ICYmICFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2luLXJhbmdlLWRheSc6IGRheS5pblJhbmdlRGF5ICYmICFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKSxcbiAgICAgICAgICAgICAgJ2lzLXZhbGlkLWRhdGUnOiBkYXkuZGF0ZSA+IDAgJiYgIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpICYmICEoZGF5LmlzU2VsZWN0ZWRTdGFydERheSAmJiBkYXkuaXNTZWxlY3RlZEVuZERheSlcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiBuZXh0TW9udGhEYXRlcygpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXkoJ1JJR0hUJyxkYXkpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnY2lyY3VsYXItZG90JzogZGF5LmlzSG9saWRheVxuICAgICAgICAgIH1cIj48L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF5LmRhdGUgPiAwXCIgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAnY3VycmVudC1kYXknOiBkYXkuaXNDdXJyZW50RGF5ICYmIChjdXJyZW50TW9udGhOdW1iZXIoKSA9PT0gdG9kYXlNb250aE51bWJlcigpKSxcbiAgICAgICAgICAgICAgJ2hvbGlkYXktdGV4dCc6IGRheS5pc0hvbGlkYXkgfHwgZGF5LmlzV2Vla09mZlxuICAgICAgICAgICAgfVwiID5cbiAgICAgICAgICAgICAge3sgZGF5LmRhdGUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJ3ZWVrT2Zmc19ob2xpZGF5c19jb250YWluZXJcIj5cbiAgICA8c3Bhbj5XZWVrbHkgb2ZmczogPHNwYW4gKm5nRm9yPVwibGV0IHdlZWtPZmYgb2YgZGF0YSgpLndlZWtPZmZzOyBsZXQgbGFzdCA9IGxhc3RcIj57e3dlZWtPZmZ9fSA8c3BhbiAqbmdJZj1cIiFsYXN0XCI+LDwvc3Bhbj48L3NwYW4+PC9zcGFuPlxuICAgIDxzcGFuID5Ib2xpZGF5cyA8c3BhbiBjbGFzcz1cImNpcmN1bGFyLWRvdFwiIFtuZ1N0eWxlXT1cInsgZGlzcGxheTogJ2lubGluZS1ibG9jaycsICdtYXJnaW4tbGVmdCc6ICcxMHB4JyB9XCI+PC9zcGFuPjwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJkYXRlcmFuZ2VwaWNrZXJfX2Zvb3RlclwiPlxuICAgIDxzcGFuICpuZ0lmPVwiaXNTcGVjaWZpY1BpY2tlclNlbGVjdGVkKClcIj48c3Bhbj57e2lzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpICYmIGxvY2FsU2VsZWN0ZWREYXRlcygpWzBdPy5zZWxlY3RlZERhdGUgPyBsb2NhbFNlbGVjdGVkRGF0ZXMoKS5sZW5ndGggOiAobG9jYWxTZWxlY3RlZERhdGVzKCkubGVuZ3RoIC0xICYmIDApfX0gPC9zcGFuPmRheShzKSBzZWxlY3RlZDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cIiFpc1NwZWNpZmljUGlja2VyU2VsZWN0ZWQoKVwiPjxzcGFuPnt7ZGF0ZVJhbmdlTGVuZ3RoKCkgPiAwID8gZGF0ZVJhbmdlTGVuZ3RoKCkgOiAwIH19IDwvc3Bhbj5kYXkocykgc2VsZWN0ZWQ8L3NwYW4+XG4gICAgPGRpdiBjbGFzcz1cImZvb3Rlcl9hY3Rpb25fYnRuXCI+XG4gICAgICA8YnV0dG9uIG1pcy1idXR0b24gc2l6ZT1cIm1kXCIgdHlwZT1cIm5vbmVcIiAoY2xpY2spPVwiY2FuY2VsRGF0ZVBpY2tlcigpXCIgPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiAqbmdJZj1cImlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpXCIgbWlzLWJ1dHRvbiBzaXplPVwibWRcIiB0eXBlPVwicHJpbWFyeVwiIChjbGljayk9XCJhcHBseURhdGVzKClcIiBbZGlzYWJsZWRdPVwiIWlzRGF0ZXNWYWxpZCgpXCIgPkFwcGx5PC9idXR0b24+XG4gICAgICA8YnV0dG9uICpuZ0lmPVwiIWlzU3BlY2lmaWNQaWNrZXJTZWxlY3RlZCgpXCIgbWlzLWJ1dHRvbiBzaXplPVwibWRcIiB0eXBlPVwicHJpbWFyeVwiIChjbGljayk9XCJhcHBseURhdGVzUmFuZ2UoKVwiIFtkaXNhYmxlZF09XCIhaXNEYXRlc1ZhbGlkKCkgfHwgKGRhdGVSYW5nZUxlbmd0aCgpID09PSAwKVwiID5BcHBseTwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwic2luZ2xlLWRhdGVwaWNrZXItY29udGFpbmVyXCIgW25nU3R5bGVdPVwieydkaXNwbGF5JzogIXNpbmdsZURhdGVQaWNrZXJTZWxlY3RlZCgpID8gJ25vbmUnIDogJ2Jsb2NrJ31cIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBtaXNUekRwXG4gICAgICAgIG1pc0lucHV0XG4gICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgY2xhc3M9XCJkYXRlLWlucHV0XCJcbiAgICAgICAgW2RwQ29uZmlnXT1cImRhdGEoKS5kcENvbmZpZ1wiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0XCJcbiAgICAgICAgKGRhdGVDaGFuZ2UpPVwib25TaW5nbGVEYXRlQ2hhbmdlKCRldmVudClcIlxuICAgICAgICBbc2VsZWN0ZWREYXRlXT1cInNpbmdsZURhdGVTZWxlY3RlZFZhbHVlKClcIlxuICAgICAgICBwb3NpdGlvblg9XCJjZW50ZXJcIlxuICAgICAgICBwb3NpdGlvblk9XCJ0b3BcIlxuICAgICAgICBvZmZzZXRYID0gNzFcbiAgICAgICAgb2Zmc2V0WSA9IC0xXG4gICAgICAgIFt2YWx1ZV09XCJzaW5nbGVEYXRlU2VsZWN0ZWRWYWx1ZSgpXCJcbiAgICAgICAgW2Rpc2FibGVCb3hTaGFkb3ddPVwidHJ1ZVwiXG4gICAgICAgIFtkaXNhYmxlT3ZlckxheV09XCJ0cnVlXCJcbiAgICAgICAgW29wZW5FbGVtZW50XT1cIm9wZW5FbGVtZW50KClcIlxuICAgICAgICAjc2luZ2xlRGF0ZVBpY2tlckVsZW1lbnRcbiAgICAgIC8+XG4gIDwvZGl2PlxuXG48L2Rpdj5cblxuXG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, computed, EventEmitter, Component, HostBinding, Output, effect, Directive, NgModule } from '@angular/core';
2
+ import { input, computed, EventEmitter, Component, Output, effect, Directive, HostBinding, NgModule } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
 
@@ -62,22 +62,17 @@ class ButtonComponent {
62
62
  this.showLeftIcon = computed(() => this.showIcon() && this.iconPosition() === 'Left');
63
63
  this.showRightIcon = computed(() => this.showIcon() && this.iconPosition() === 'Right');
64
64
  this.showSpinner = computed(() => this.showLoader());
65
- // Computed disabled state
66
- this.isDisabled = computed(() => this.disabled() || this.showLoader());
67
- this.hostDisabled = this.isDisabled();
68
65
  // Output
69
66
  this.click = new EventEmitter();
70
67
  }
71
68
  ngOnInit() { }
72
69
  onClick(event) {
73
- if (!this.isDisabled()) {
70
+ if (!this.disabled() && !this.showLoader()) {
74
71
  this.click.emit(event);
75
72
  }
76
73
  }
77
74
  static { this.ɵfac = function ButtonComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ButtonComponent)(); }; }
78
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ButtonComponent, selectors: [["mis-button"]], hostVars: 1, hostBindings: function ButtonComponent_HostBindings(rf, ctx) { if (rf & 2) {
79
- i0.ɵɵhostProperty("disabled", ctx.hostDisabled);
80
- } }, inputs: { name: [1, "name"], type: [1, "type"], size: [1, "size"], width: [1, "width"], showIcon: [1, "showIcon"], iconUrl: [1, "iconUrl"], iconPosition: [1, "iconPosition"], disabled: [1, "disabled"], disableLeftBorderRadius: [1, "disableLeftBorderRadius"], disableRightBorderRadius: [1, "disableRightBorderRadius"], showLoader: [1, "showLoader"] }, outputs: { click: "click" }, decls: 6, vars: 6, consts: [[3, "click", "ngClass", "ngStyle"], ["class", "loader", 4, "ngIf"], ["id", "left-icon", 4, "ngIf"], [1, "button-text"], ["id", "right-icon", 4, "ngIf"], [1, "loader"], [1, "spinner"], ["id", "left-icon"], ["alt", "", 3, "src"], ["id", "right-icon"]], template: function ButtonComponent_Template(rf, ctx) { if (rf & 1) {
75
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ButtonComponent, selectors: [["mis-button"]], inputs: { name: [1, "name"], type: [1, "type"], size: [1, "size"], width: [1, "width"], showIcon: [1, "showIcon"], iconUrl: [1, "iconUrl"], iconPosition: [1, "iconPosition"], disabled: [1, "disabled"], disableLeftBorderRadius: [1, "disableLeftBorderRadius"], disableRightBorderRadius: [1, "disableRightBorderRadius"], showLoader: [1, "showLoader"] }, outputs: { click: "click" }, decls: 6, vars: 7, consts: [[3, "click", "disabled", "ngClass", "ngStyle"], ["class", "loader", 4, "ngIf"], ["id", "left-icon", 4, "ngIf"], [1, "button-text"], ["id", "right-icon", 4, "ngIf"], [1, "loader"], [1, "spinner"], ["id", "left-icon"], ["alt", "", 3, "src"], ["id", "right-icon"]], template: function ButtonComponent_Template(rf, ctx) { if (rf & 1) {
81
76
  i0.ɵɵelementStart(0, "button", 0);
82
77
  i0.ɵɵlistener("click", function ButtonComponent_Template_button_click_0_listener($event) { return ctx.onClick($event); });
83
78
  i0.ɵɵtemplate(1, ButtonComponent_div_1_Template, 2, 0, "div", 1)(2, ButtonComponent_span_2_Template, 2, 1, "span", 2);
@@ -87,7 +82,7 @@ class ButtonComponent {
87
82
  i0.ɵɵtemplate(5, ButtonComponent_span_5_Template, 2, 1, "span", 4);
88
83
  i0.ɵɵelementEnd();
89
84
  } if (rf & 2) {
90
- i0.ɵɵproperty("ngClass", ctx.classes())("ngStyle", ctx.styles());
85
+ i0.ɵɵproperty("disabled", ctx.disabled() || ctx.showLoader())("ngClass", ctx.classes())("ngStyle", ctx.styles());
91
86
  i0.ɵɵadvance();
92
87
  i0.ɵɵproperty("ngIf", ctx.showSpinner());
93
88
  i0.ɵɵadvance();
@@ -100,11 +95,8 @@ class ButtonComponent {
100
95
  }
101
96
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ButtonComponent, [{
102
97
  type: Component,
103
- args: [{ selector: "mis-button", template: "<button\n (click)=\"onClick($event)\"\n [ngClass]=\"classes()\"\n [ngStyle]=\"styles()\"\n>\n <!-- Loader -->\n <div class=\"loader\" *ngIf=\"showSpinner()\">\n <div class=\"spinner\"></div>\n </div>\n\n <!-- Left Icon -->\n <span id=\"left-icon\" *ngIf=\"showLeftIcon()\">\n <img [src]=\"iconUrl()\" alt=\"\" />\n </span>\n\n <!-- Button Text -->\n <span class=\"button-text\">{{ name() }}</span>\n\n <!-- Right Icon -->\n <span id=\"right-icon\" *ngIf=\"showRightIcon()\">\n <img [src]=\"iconUrl()\" alt=\"\" />\n </span>\n</button>\n", styles: [":root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}button{font-family:Lato,sans-serif!important;border:none;padding:0;margin:0;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-primary, #181F33);background-color:var(--bg-primary, #FFFFFF)}.solid{color:var(--bg-primary, #FFFFFF);background:var(--brand-primary, #0937B2)}.solid:hover:enabled{background:var(--brand-primary-dark, #062A99)}.solid:active:enabled{background:var(--brand-primary-darker, #041F80)}.solid:disabled{color:var(--text-tertiary, #929DAB);background:var(--bg-tertiary, #F5F5F5)}.outline{border:1px solid var(--brand-primary, #0937B2);color:var(--brand-primary, #0937B2);background:var(--bg-primary, #FFFFFF)}.outline:hover:enabled{background:var(--brand-primary-hover, #F0F3FA)}.outline:active:enabled{background:var(--brand-primary-active, #DAE1F3)}.outline:disabled{color:var(--text-tertiary, #929DAB);border:1px solid var(--text-tertiary, #929DAB)}.text{color:var(--text-primary, #181F33);background:var(--bg-primary, #FFFFFF)}.text:hover:enabled{background:var(--brand-primary-hover, #F0F3FA)}.text:active:enabled{background:var(--brand-primary-active, #DAE1F3)}.text:disabled{color:var(--text-tertiary, #929DAB)}.large{height:56px;padding:16px;border-radius:10px;font-style:normal;font-weight:700;font-size:16px;line-height:24px;letter-spacing:.5px}.medium{height:44px;padding:10px 16px;border-radius:8px;font-style:normal;font-weight:400;font-size:16px;line-height:24px;letter-spacing:.2px}.small{height:32px;padding:6px 16px;border-radius:6px;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.25px}.large-mobile{height:44px;padding:12px;border-radius:8px;font-style:normal;font-weight:700;font-size:14px;line-height:20px;letter-spacing:.1px}.small-mobile{height:32px;padding:6px 12px;border-radius:8px;font-style:normal;font-weight:700;font-size:14px;line-height:20px;letter-spacing:.1px}span{display:flex;justify-content:center;align-items:center}#left-icon{margin-right:8px}#right-icon{margin-left:8px}.loader{display:flex;justify-content:center;align-items:center}.spinner{width:16px;height:16px;border:2px solid transparent;color:var(--brand-primary, #0937B2);border-top:2px solid currentColor;border-radius:50%;animation:spin 1s linear infinite}button.loading .button-text,button.loading #left-icon,button.loading #right-icon{visibility:hidden}button.loading .loader{visibility:visible;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}button.loading{position:relative}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
104
- }], () => [], { hostDisabled: [{
105
- type: HostBinding,
106
- args: ['disabled']
107
- }], click: [{
98
+ args: [{ selector: "mis-button", template: "<button\n [disabled]=\"disabled() || showLoader()\"\n (click)=\"onClick($event)\"\n [ngClass]=\"classes()\"\n [ngStyle]=\"styles()\"\n>\n <!-- Loader -->\n <div class=\"loader\" *ngIf=\"showSpinner()\">\n <div class=\"spinner\"></div>\n </div>\n\n <!-- Left Icon -->\n <span id=\"left-icon\" *ngIf=\"showLeftIcon()\">\n <img [src]=\"iconUrl()\" alt=\"\" />\n </span>\n\n <!-- Button Text -->\n <span class=\"button-text\">{{ name() }}</span>\n\n <!-- Right Icon -->\n <span id=\"right-icon\" *ngIf=\"showRightIcon()\">\n <img [src]=\"iconUrl()\" alt=\"\" />\n </span>\n</button>\n", styles: [":root{--pmry-200: #99BAF7;--pmry-100: #CBDDFB;--pmry-500: #0937B2;--pmry-400: #3C68D0;--pmry-600: #062A99;--pmry-700: #041F80;--pmry-300: #638FE7;--pmry-800: #021567;--pmry-900: #010F55;--sec-d-purple: #40447F;--sec-maroon: #6B034E;--sec-mud-red: #B23600;--sec-orange: #ED711C;--sec-purple: #815FD5;--sec-teal: #10ADAE;--sec-yellow: #D4900C;--sec-green: #547F40;--sec-bright-green: #27D22E;--sec-dark-teal: #035F6B;--sec-chocolate: #7C2F33;--sec-rube-pink: #C13D6D;--sec-cerulean: #0087B2;--sem-error: #B00020;--sem-info: #0091FF;--sem-warning: #FF9D00;--sem-success: #38AF49;--grey-bg-1: #FAFAFA;--grey-bg: #F5F5F5;--grey-seperators: #E0E0E0;--grey-disabled: #C8CDD3;--grey-hover: #F5F7FC;--grey-pressed: #E6EBF7;--grey-row: #F5F7FC;--dec-light-yellow: #F4E7C3;--dec-light-purple: #DACFF9;--dec-light-green: #E4F5E9;--dec-light-green2: #F1FFF3;--dec-light-pink: #FAE1EA;--dec-: #F4CBC1;--dec-lt-orange: #FAEFED;--dec-light-blue: #CFECF9;--dec-row-selection: #F1FDF8;--dec-row-selection2: #F2FBFF;--dec-row-lines: #D3E1E9;--text-white: #FFFFFF;--text-muted: #6A737D;--text-black: #181F33;--MR-solid-blue2:#C8D5F6;--MR-solid-purple:#C9C3FB;--MR-solid-orange:#EEAC9F;--MR-solid-green:#ACDADA;--MR-solid-brown:#E8C8AF;--MR-solid-yellow:#FFEFC7;--MR-solid-blue:#BBE6FF;--MR-solid-pink:#FFC6F2;--tr-hover:#F0F3FA;--tr-pressed:#DAE1F3;--brand-primary: #0937B2;--brand-primary-light: #3C68D0;--brand-primary-dark: #062A99;--brand-primary-darker: #041F80;--brand-primary-lighter: #638FE7;--brand-primary-lightest: #CBDDFB;--brand-primary-hover: #F0F3FA;--brand-primary-active: #DAE1F3;--brand-secondary: #ED711C;--brand-secondary-light: #F09E65;--brand-secondary-dark: #B23600;--brand-secondary-lighter: #FFC6F2;--brand-accent: #10ADAE;--brand-accent-light: #16CBBC;--brand-accent-dark: #035F6B;--brand-accent-lighter: #ACDADA;--brand-success: #38AF49;--brand-success-light: #4CAF50;--brand-success-dark: #216531;--brand-success-lighter: #E4F5E9;--brand-success-lightest: #F1FFF3;--brand-error: #B00020;--brand-error-light: #F04E4E;--brand-error-dark: #A60060;--brand-error-lighter: #FAE1EA;--brand-error-lightest: #FDF2F2;--brand-warning: #FF9D00;--brand-warning-light: #D4900C;--brand-warning-dark: #624000;--brand-warning-lighter: #F4E7C3;--brand-warning-lightest: #FAEFED;--brand-info: #0091FF;--brand-info-light: #35A1FF;--brand-info-dark: #0087B2;--brand-info-lighter: #CFECF9;--text-primary: #181F33;--text-secondary: #6A737D;--text-tertiary: #929DAB;--text-disabled: #929DAB;--text-primary-87: rgba(24, 31, 51, .87);--text-primary-60: rgba(24, 31, 51, .6);--text-primary-38: rgba(24, 31, 51, .38);--text-primary-12: rgba(24, 31, 51, .12);--bg-primary: #FFFFFF;--bg-secondary: #FAFAFA;--bg-tertiary: #F5F5F5;--bg-overlay: rgba(0, 0, 0, .32);--bg-overlay-light: rgba(0, 0, 0, .12);--bg-overlay-lighter: rgba(0, 0, 0, .08);--bg-overlay-lightest: rgba(0, 0, 0, .04);--border-primary: #E0E0E0;--border-secondary: #D6DCE2;--border-tertiary: #C8CDD3;--border-light: #F1F4F8;--border-primary-12: rgba(0, 0, 0, .12);--border-primary-08: rgba(0, 0, 0, .08);--border-primary-06: rgba(0, 0, 0, .06);--shadow-primary: rgba(0, 0, 0, .12);--shadow-secondary: rgba(0, 0, 0, .08);--shadow-tertiary: rgba(0, 0, 0, .04);--shadow-light: rgba(0, 0, 0, .06);--status-available: #929DAB;--status-unavailable: #CCD3DA;--status-hotseat: #857BFF;--status-multiteam: #10ADAE;--status-selected: #10ADAE;--status-upcoming: #D4900C;--status-room: #38AF49;--status-room-booked: #B23600;--status-room-unavailable: #181F33;--team-color-1: #F8C52E;--team-color-2: #FA8E20;--team-color-3: #987CDD;--team-color-4: #16CBBC;--team-color-5: #E65010;--team-color-6: #A60060;--team-color-7: #ED323B;--team-color-8: #35A1FF;--team-color-9: #80D348}button{font-family:Lato,sans-serif!important;border:none;padding:0;margin:0;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--text-primary, #181F33);background-color:var(--bg-primary, #FFFFFF)}.solid{color:var(--bg-primary, #FFFFFF);background:var(--brand-primary, #0937B2)}.solid:hover:enabled{background:var(--brand-primary-dark, #062A99)}.solid:active:enabled{background:var(--brand-primary-darker, #041F80)}.solid:disabled{color:var(--text-tertiary, #929DAB);background:var(--bg-tertiary, #F5F5F5)}.outline{border:1px solid var(--brand-primary, #0937B2);color:var(--brand-primary, #0937B2);background:var(--bg-primary, #FFFFFF)}.outline:hover:enabled{background:var(--brand-primary-hover, #F0F3FA)}.outline:active:enabled{background:var(--brand-primary-active, #DAE1F3)}.outline:disabled{color:var(--text-tertiary, #929DAB);border:1px solid var(--text-tertiary, #929DAB)}.text{color:var(--text-primary, #181F33);background:var(--bg-primary, #FFFFFF)}.text:hover:enabled{background:var(--brand-primary-hover, #F0F3FA)}.text:active:enabled{background:var(--brand-primary-active, #DAE1F3)}.text:disabled{color:var(--text-tertiary, #929DAB)}.large{height:56px;padding:16px;border-radius:10px;font-style:normal;font-weight:700;font-size:16px;line-height:24px;letter-spacing:.5px}.medium{height:44px;padding:10px 16px;border-radius:8px;font-style:normal;font-weight:400;font-size:16px;line-height:24px;letter-spacing:.2px}.small{height:32px;padding:6px 16px;border-radius:6px;font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.25px}.large-mobile{height:44px;padding:12px;border-radius:8px;font-style:normal;font-weight:700;font-size:14px;line-height:20px;letter-spacing:.1px}.small-mobile{height:32px;padding:6px 12px;border-radius:8px;font-style:normal;font-weight:700;font-size:14px;line-height:20px;letter-spacing:.1px}span{display:flex;justify-content:center;align-items:center}#left-icon{margin-right:8px}#right-icon{margin-left:8px}.loader{display:flex;justify-content:center;align-items:center}.spinner{width:16px;height:16px;border:2px solid transparent;color:var(--brand-primary, #0937B2);border-top:2px solid currentColor;border-radius:50%;animation:spin 1s linear infinite}button.loading .button-text,button.loading #left-icon,button.loading #right-icon{visibility:hidden}button.loading .loader{visibility:visible;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}button.loading{position:relative}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}\n"] }]
99
+ }], () => [], { click: [{
108
100
  type: Output
109
101
  }] }); })();
110
102
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ButtonComponent, { className: "ButtonComponent" }); })();
@@ -1 +1 @@
1
- {"version":3,"file":"mis-crystal-design-system-button.mjs","sources":["../../../projects/mis-components/button/button.component.html","../../../projects/mis-components/button/button.component.ts","../../../projects/mis-components/button/button.directive.ts","../../../projects/mis-components/button/button.module.ts","../../../projects/mis-components/button/mis-crystal-design-system-button.ts"],"sourcesContent":["<button\n (click)=\"onClick($event)\"\n [ngClass]=\"classes()\"\n [ngStyle]=\"styles()\"\n>\n <!-- Loader -->\n <div class=\"loader\" *ngIf=\"showSpinner()\">\n <div class=\"spinner\"></div>\n </div>\n\n <!-- Left Icon -->\n <span id=\"left-icon\" *ngIf=\"showLeftIcon()\">\n <img [src]=\"iconUrl()\" alt=\"\" />\n </span>\n\n <!-- Button Text -->\n <span class=\"button-text\">{{ name() }}</span>\n\n <!-- Right Icon -->\n <span id=\"right-icon\" *ngIf=\"showRightIcon()\">\n <img [src]=\"iconUrl()\" alt=\"\" />\n </span>\n</button>\n","import { Component, OnInit, Output, EventEmitter, HostBinding, input, computed } from \"@angular/core\";\n\n@Component({\n selector: \"mis-button\",\n templateUrl: \"./button.component.html\",\n styleUrls: [\"./button.component.scss\"]\n})\nexport class ButtonComponent implements OnInit {\n // Inputs\n name = input<string>(\"Enabled\");\n type = input<\"Solid\" | \"Outline\" | \"Text\">(\"Solid\");\n size = input<\"Small\" | \"Medium\" | \"Large\" | \"Small-M\" | \"Large-M\">(\"Medium\");\n width = input<string>(\"\");\n showIcon = input<boolean>(false);\n iconUrl = input<string>(\"\");\n iconPosition = input<\"Left\" | \"Right\">(\"Left\");\n disabled = input<boolean>(false);\n disableLeftBorderRadius = input<boolean>(false);\n disableRightBorderRadius = input<boolean>(false);\n showLoader = input<boolean>(false);\n\n // Computed signals for template bindings\n readonly classes = computed(() => ({\n solid: this.type() === 'Solid',\n outline: this.type() === 'Outline',\n text: this.type() === 'Text',\n large: this.size() === 'Large',\n medium: this.size() === 'Medium',\n small: this.size() === 'Small',\n 'large-mobile': this.size() === 'Large-M',\n 'small-mobile': this.size() === 'Small-M',\n loading: this.showLoader()\n }));\n\n readonly styles = computed(() => ({\n 'border-top-left-radius': this.disableLeftBorderRadius() ? '0px' : '',\n 'border-bottom-left-radius': this.disableLeftBorderRadius() ? '0px' : '',\n 'border-top-right-radius': this.disableRightBorderRadius() ? '0px' : '',\n 'border-bottom-right-radius': this.disableRightBorderRadius() ? '0px' : '',\n width: this.width()\n }));\n\n readonly showLeftIcon = computed(() => this.showIcon() && this.iconPosition() === 'Left');\n readonly showRightIcon = computed(() => this.showIcon() && this.iconPosition() === 'Right');\n readonly showSpinner = computed(() => this.showLoader());\n\n // Computed disabled state\n readonly isDisabled = computed(() => this.disabled() || this.showLoader());\n @HostBinding('disabled') hostDisabled = this.isDisabled();\n\n // Output\n @Output() click = new EventEmitter<any>();\n\n constructor() {}\n\n ngOnInit() {}\n\n onClick(event: any) {\n if (!this.isDisabled()) {\n this.click.emit(event);\n }\n } \n}\n","import { Directive, ElementRef, HostBinding, Renderer2, input, effect } from \"@angular/core\";\n\n@Directive({\n selector: \"[mis-button]\"\n})\nexport class ButtonDirective {\n type = input<\"primary\" | \"outline\" | \"none\">(\"none\");\n size = input<\"sm\" | \"md\" | \"lg\">(\"md\");\n\n @HostBinding(\"class\") elementClass = \"mis-btn\";\n\n private previousTypeClass: string = \"\";\n private previousSizeClass: string = \"\";\n\n constructor(private el: ElementRef, private renderer: Renderer2) {\n // React to type changes\n effect(() => {\n const typeClass = this.typeClassMap[this.type()] || \"mis-none\";\n this.updateClass(typeClass, \"type\");\n this.previousTypeClass = typeClass;\n });\n\n // React to size changes\n effect(() => {\n const sizeClass = this.sizeClassMap[this.size()] || \"mis-btn-md\";\n this.updateClass(sizeClass, \"size\");\n this.previousSizeClass = sizeClass;\n });\n }\n\n private updateClass(newClass: string, kind: \"type\" | \"size\") {\n const prevClass = kind === \"type\" ? this.previousTypeClass : this.previousSizeClass;\n if (prevClass) {\n this.renderer.removeClass(this.el.nativeElement, prevClass);\n }\n this.renderer.addClass(this.el.nativeElement, newClass);\n }\n\n // Maps for easier maintenance\n private typeClassMap: Record<string, string> = {\n primary: \"mis-primary\",\n outline: \"mis-outline\",\n none: \"mis-none\",\n };\n\n private sizeClassMap: Record<string, string> = {\n lg: \"mis-btn-lg\",\n md: \"mis-btn-md\",\n sm: \"mis-btn-sm\",\n };\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { ButtonDirective } from \"./button.directive\";\nimport { ButtonComponent } from \"./button.component\";\n\n@NgModule({\n declarations: [ButtonComponent, ButtonDirective],\n imports: [CommonModule],\n exports: [ButtonComponent, ButtonDirective]\n})\nexport class ButtonModule {\n static forRoot(): ModuleWithProviders<ButtonModule> {\n return { ngModule: ButtonModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mis-crystal-design-system-button.mjs","sources":["../../../projects/mis-components/button/button.component.html","../../../projects/mis-components/button/button.component.ts","../../../projects/mis-components/button/button.directive.ts","../../../projects/mis-components/button/button.module.ts","../../../projects/mis-components/button/mis-crystal-design-system-button.ts"],"sourcesContent":["<button\n [disabled]=\"disabled() || showLoader()\"\n (click)=\"onClick($event)\"\n [ngClass]=\"classes()\"\n [ngStyle]=\"styles()\"\n>\n <!-- Loader -->\n <div class=\"loader\" *ngIf=\"showSpinner()\">\n <div class=\"spinner\"></div>\n </div>\n\n <!-- Left Icon -->\n <span id=\"left-icon\" *ngIf=\"showLeftIcon()\">\n <img [src]=\"iconUrl()\" alt=\"\" />\n </span>\n\n <!-- Button Text -->\n <span class=\"button-text\">{{ name() }}</span>\n\n <!-- Right Icon -->\n <span id=\"right-icon\" *ngIf=\"showRightIcon()\">\n <img [src]=\"iconUrl()\" alt=\"\" />\n </span>\n</button>\n","import { Component, OnInit, Output, EventEmitter, HostBinding, input, computed } from \"@angular/core\";\n\n@Component({\n selector: \"mis-button\",\n templateUrl: \"./button.component.html\",\n styleUrls: [\"./button.component.scss\"]\n})\nexport class ButtonComponent implements OnInit {\n // Inputs\n name = input<string>(\"Enabled\");\n type = input<\"Solid\" | \"Outline\" | \"Text\">(\"Solid\");\n size = input<\"Small\" | \"Medium\" | \"Large\" | \"Small-M\" | \"Large-M\">(\"Medium\");\n width = input<string>(\"\");\n showIcon = input<boolean>(false);\n iconUrl = input<string>(\"\");\n iconPosition = input<\"Left\" | \"Right\">(\"Left\");\n disabled = input<boolean>(false);\n disableLeftBorderRadius = input<boolean>(false);\n disableRightBorderRadius = input<boolean>(false);\n showLoader = input<boolean>(false);\n\n // Computed signals for template bindings\n readonly classes = computed(() => ({\n solid: this.type() === 'Solid',\n outline: this.type() === 'Outline',\n text: this.type() === 'Text',\n large: this.size() === 'Large',\n medium: this.size() === 'Medium',\n small: this.size() === 'Small',\n 'large-mobile': this.size() === 'Large-M',\n 'small-mobile': this.size() === 'Small-M',\n loading: this.showLoader()\n }));\n\n readonly styles = computed(() => ({\n 'border-top-left-radius': this.disableLeftBorderRadius() ? '0px' : '',\n 'border-bottom-left-radius': this.disableLeftBorderRadius() ? '0px' : '',\n 'border-top-right-radius': this.disableRightBorderRadius() ? '0px' : '',\n 'border-bottom-right-radius': this.disableRightBorderRadius() ? '0px' : '',\n width: this.width()\n }));\n\n readonly showLeftIcon = computed(() => this.showIcon() && this.iconPosition() === 'Left');\n readonly showRightIcon = computed(() => this.showIcon() && this.iconPosition() === 'Right');\n readonly showSpinner = computed(() => this.showLoader());\n\n\n // Output\n @Output() click = new EventEmitter<any>();\n\n constructor() {}\n\n ngOnInit() {}\n\n onClick(event: any) {\n if (!this.disabled() && !this.showLoader()) {\n this.click.emit(event);\n }\n } \n}\n","import { Directive, ElementRef, HostBinding, Renderer2, input, effect } from \"@angular/core\";\n\n@Directive({\n selector: \"[mis-button]\"\n})\nexport class ButtonDirective {\n type = input<\"primary\" | \"outline\" | \"none\">(\"none\");\n size = input<\"sm\" | \"md\" | \"lg\">(\"md\");\n\n @HostBinding(\"class\") elementClass = \"mis-btn\";\n\n private previousTypeClass: string = \"\";\n private previousSizeClass: string = \"\";\n\n constructor(private el: ElementRef, private renderer: Renderer2) {\n // React to type changes\n effect(() => {\n const typeClass = this.typeClassMap[this.type()] || \"mis-none\";\n this.updateClass(typeClass, \"type\");\n this.previousTypeClass = typeClass;\n });\n\n // React to size changes\n effect(() => {\n const sizeClass = this.sizeClassMap[this.size()] || \"mis-btn-md\";\n this.updateClass(sizeClass, \"size\");\n this.previousSizeClass = sizeClass;\n });\n }\n\n private updateClass(newClass: string, kind: \"type\" | \"size\") {\n const prevClass = kind === \"type\" ? this.previousTypeClass : this.previousSizeClass;\n if (prevClass) {\n this.renderer.removeClass(this.el.nativeElement, prevClass);\n }\n this.renderer.addClass(this.el.nativeElement, newClass);\n }\n\n // Maps for easier maintenance\n private typeClassMap: Record<string, string> = {\n primary: \"mis-primary\",\n outline: \"mis-outline\",\n none: \"mis-none\",\n };\n\n private sizeClassMap: Record<string, string> = {\n lg: \"mis-btn-lg\",\n md: \"mis-btn-md\",\n sm: \"mis-btn-sm\",\n };\n}\n","import { NgModule, ModuleWithProviders } from \"@angular/core\";\nimport { CommonModule } from \"@angular/common\";\nimport { ButtonDirective } from \"./button.directive\";\nimport { ButtonComponent } from \"./button.component\";\n\n@NgModule({\n declarations: [ButtonComponent, ButtonDirective],\n imports: [CommonModule],\n exports: [ButtonComponent, ButtonDirective]\n})\nexport class ButtonModule {\n static forRoot(): ModuleWithProviders<ButtonModule> {\n return { ngModule: ButtonModule, providers: [] };\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -961,7 +961,7 @@ class TzDatepickerDirective {
961
961
  this.openElement = input(false);
962
962
  // Signal-based output
963
963
  this.dateChange = output();
964
- this.isOpen = false;
964
+ this.isOpen = signal(false);
965
965
  // Effect to watch openElement signal changes
966
966
  effect(() => {
967
967
  const openElement = this.openElement();
@@ -971,11 +971,43 @@ class TzDatepickerDirective {
971
971
  else {
972
972
  this.close();
973
973
  }
974
+ }, { allowSignalWrites: true });
975
+ // Effect to sync selectedDate with input value
976
+ effect(() => {
977
+ const date = this.selectedDate();
978
+ const element = this.element.nativeElement;
979
+ // Clear the value if date is empty/null/undefined
980
+ if (!date) {
981
+ element.value = '';
982
+ if (this.control?.control) {
983
+ this.control.control.setValue('', { emitEvent: false });
984
+ }
985
+ return;
986
+ }
987
+ // Set the value and trigger input event to ensure mis-input updates
988
+ element.value = date;
989
+ element.dispatchEvent(new Event('input', { bubbles: true }));
990
+ if (this.control?.control) {
991
+ this.control.control.setValue(date, { emitEvent: false });
992
+ }
974
993
  });
975
994
  }
976
- ngOnInit() { }
995
+ ngOnInit() {
996
+ // Handle initial value
997
+ const element = this.element.nativeElement;
998
+ const initialValue = element.value || this.selectedDate();
999
+ if (initialValue) {
1000
+ // Set initial value and trigger input event
1001
+ element.value = initialValue;
1002
+ element.dispatchEvent(new Event('input', { bubbles: true }));
1003
+ // Update control if available
1004
+ if (this.control?.control) {
1005
+ this.control.control.setValue(initialValue, { emitEvent: false });
1006
+ }
1007
+ }
1008
+ }
977
1009
  toggleDatePicker() {
978
- if (this.isOpen) {
1010
+ if (this.isOpen()) {
979
1011
  this.close();
980
1012
  }
981
1013
  else {
@@ -983,7 +1015,7 @@ class TzDatepickerDirective {
983
1015
  }
984
1016
  }
985
1017
  toggleDatePickerOnEnter() {
986
- if (this.isOpen) {
1018
+ if (this.isOpen()) {
987
1019
  this.close();
988
1020
  }
989
1021
  else {
@@ -991,7 +1023,7 @@ class TzDatepickerDirective {
991
1023
  }
992
1024
  }
993
1025
  closeOnEsc() {
994
- if (this.isOpen) {
1026
+ if (this.isOpen()) {
995
1027
  this.close();
996
1028
  }
997
1029
  }
@@ -1003,7 +1035,7 @@ class TzDatepickerDirective {
1003
1035
  showApplyButton: false,
1004
1036
  ...this.dpConfig()
1005
1037
  };
1006
- this.isOpen = true;
1038
+ this.isOpen.set(true);
1007
1039
  const positionStrategy = this.overlay
1008
1040
  .position()
1009
1041
  .flexibleConnectedTo(this.element)
@@ -1050,12 +1082,19 @@ class TzDatepickerDirective {
1050
1082
  this.close();
1051
1083
  return;
1052
1084
  }
1085
+ const element = this.element.nativeElement;
1086
+ // Update value and trigger input event
1087
+ element.value = date;
1088
+ element.dispatchEvent(new Event('input', { bubbles: true }));
1089
+ // Update control if available
1090
+ if (this.control?.control) {
1091
+ this.control.control.setValue(date, { emitEvent: false });
1092
+ }
1053
1093
  this.dateChange.emit(date);
1054
- this.control?.control.patchValue(date);
1055
1094
  this.close();
1056
1095
  }
1057
1096
  close() {
1058
- this.isOpen = false;
1097
+ this.isOpen.set(false);
1059
1098
  this.overlayRef?.detach();
1060
1099
  this.overlayRef?.dispose();
1061
1100
  }