@spartacus/storefront
Version:
Spartacus Storefront is a package that you can include in your application, which allows you to add default storefront features.
80 lines • 14.4 kB
JavaScript
import { Component, HostListener, } from '@angular/core';
import { GlobalMessageType, } from '@spartacus/core';
import { combineLatest, Subscription } from 'rxjs';
import { startWith } from 'rxjs/operators';
import * as i0 from "@angular/core";
import * as i1 from "@spartacus/core";
import * as i2 from "../../../layout/launch-dialog/services/launch-dialog.service";
import * as i3 from "../../../layout/a11y/keyboard-focus/focus.directive";
/**
* @deprecated since 4.2 - use order lib instead
*/
export class ReplenishmentOrderCancellationDialogComponent {
constructor(userReplenishmentOrderService, globalMessageService, launchDialogService, el) {
this.userReplenishmentOrderService = userReplenishmentOrderService;
this.globalMessageService = globalMessageService;
this.launchDialogService = launchDialogService;
this.el = el;
this.subscription = new Subscription();
this.focusConfig = {
trap: true,
block: true,
autofocus: 'button',
focusOnEscape: true,
};
}
handleClick(event) {
// Close on click outside the dialog window
if (event.target.tagName === this.el.nativeElement.tagName) {
this.close('Cross click');
}
}
ngOnInit() {
this.subscription.add(combineLatest([
this.userReplenishmentOrderService
.getReplenishmentOrderDetails()
.pipe(startWith(null)),
this.launchDialogService.data$,
]).subscribe(([replenishmentOrder, code]) => {
this.replenishmentOrderCode =
code || replenishmentOrder.replenishmentOrderCode;
}));
this.subscription.add(this.userReplenishmentOrderService
.getCancelReplenishmentOrderSuccess()
.subscribe((value) => this.onSuccess(value)));
}
onSuccess(value) {
if (value) {
this.launchDialogService.closeDialog('Successffully cancelled replenishment');
this.globalMessageService.add({
key: 'orderDetails.cancelReplenishment.cancelSuccess',
params: {
replenishmentOrderCode: this.replenishmentOrderCode,
},
}, GlobalMessageType.MSG_TYPE_CONFIRMATION);
}
this.userReplenishmentOrderService.clearCancelReplenishmentOrderProcessState();
}
close(reason) {
this.launchDialogService.closeDialog(reason);
}
cancelReplenishment() {
this.userReplenishmentOrderService.cancelReplenishmentOrder(this.replenishmentOrderCode);
}
ngOnDestroy() {
this.subscription.unsubscribe();
}
}
ReplenishmentOrderCancellationDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ReplenishmentOrderCancellationDialogComponent, deps: [{ token: i1.UserReplenishmentOrderService }, { token: i1.GlobalMessageService }, { token: i2.LaunchDialogService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
ReplenishmentOrderCancellationDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.0.5", type: ReplenishmentOrderCancellationDialogComponent, selector: "cx-replenishment-order-cancellation-dialog", host: { listeners: { "click": "handleClick($event)" } }, ngImport: i0, template: "<div\n [cxFocus]=\"focusConfig\"\n (esc)=\"close('Escape clicked')\"\n class=\"cx-cancel-replenishment-dialog-foreground\"\n>\n <div class=\"cx-cancel-replenishment-dialog-content\">\n <div class=\"cx-cancel-replenishment-dialog-header\">\n <h3>\n {{ 'orderDetails.cancelReplenishment.title' | cxTranslate }}\n </h3>\n </div>\n <div class=\"cx-cancel-replenishment-dialog-description\">\n {{ 'orderDetails.cancelReplenishment.description' | cxTranslate }}\n </div>\n\n <div class=\"cx-cancel-replenishment-dialog-body\">\n <div class=\"cx-cancel-replenishment-btns row\">\n <div class=\"col-md-6\">\n <button\n class=\"btn btn-block btn-action\"\n (click)=\"close('Close Replenishment Dialog')\"\n >\n {{ 'orderDetails.cancelReplenishment.reject' | cxTranslate }}\n </button>\n </div>\n <div class=\"col-md-6\">\n <button\n class=\"btn btn-block btn-primary\"\n (click)=\"cancelReplenishment()\"\n >\n {{ 'orderDetails.cancelReplenishment.accept' | cxTranslate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n</div>\n", directives: [{ type: i3.FocusDirective, selector: "[cxFocus]", inputs: ["cxFocus"] }], pipes: { "cxTranslate": i1.TranslatePipe } });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.0.5", ngImport: i0, type: ReplenishmentOrderCancellationDialogComponent, decorators: [{
type: Component,
args: [{
selector: 'cx-replenishment-order-cancellation-dialog',
templateUrl: './replenishment-order-cancellation-dialog.component.html',
}]
}], ctorParameters: function () { return [{ type: i1.UserReplenishmentOrderService }, { type: i1.GlobalMessageService }, { type: i2.LaunchDialogService }, { type: i0.ElementRef }]; }, propDecorators: { handleClick: [{
type: HostListener,
args: ['click', ['$event']]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwbGVuaXNobWVudC1vcmRlci1jYW5jZWxsYXRpb24tZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0b3JlZnJvbnRsaWIvc2hhcmVkL2NvbXBvbmVudHMvcmVwbGVuaXNobWVudC1vcmRlci1jYW5jZWxsYXRpb24tZGlhbG9nL3JlcGxlbmlzaG1lbnQtb3JkZXItY2FuY2VsbGF0aW9uLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdG9yZWZyb250bGliL3NoYXJlZC9jb21wb25lbnRzL3JlcGxlbmlzaG1lbnQtb3JkZXItY2FuY2VsbGF0aW9uLWRpYWxvZy9yZXBsZW5pc2htZW50LW9yZGVyLWNhbmNlbGxhdGlvbi1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEdBR2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLGlCQUFpQixHQUVsQixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7QUFJM0M7O0dBRUc7QUFLSCxNQUFNLE9BQU8sNkNBQTZDO0lBc0J4RCxZQUNZLDZCQUE0RCxFQUM1RCxvQkFBMEMsRUFDMUMsbUJBQXdDLEVBQ3hDLEVBQWM7UUFIZCxrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQStCO1FBQzVELHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4QyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBdkJsQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFJMUMsZ0JBQVcsR0FBZ0I7WUFDekIsSUFBSSxFQUFFLElBQUk7WUFDVixLQUFLLEVBQUUsSUFBSTtZQUNYLFNBQVMsRUFBRSxRQUFRO1lBQ25CLGFBQWEsRUFBRSxJQUFJO1NBQ3BCLENBQUM7SUFlQyxDQUFDO0lBWkosV0FBVyxDQUFDLEtBQWM7UUFDeEIsMkNBQTJDO1FBQzNDLElBQUssS0FBSyxDQUFDLE1BQWMsQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFO1lBQ25FLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBU0QsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNuQixhQUFhLENBQUM7WUFDWixJQUFJLENBQUMsNkJBQTZCO2lCQUMvQiw0QkFBNEIsRUFBRTtpQkFDOUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSztTQUMvQixDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQzFDLElBQUksQ0FBQyxzQkFBc0I7Z0JBQ3pCLElBQUksSUFBSSxrQkFBa0IsQ0FBQyxzQkFBc0IsQ0FBQztRQUN0RCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBRUYsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ25CLElBQUksQ0FBQyw2QkFBNkI7YUFDL0Isa0NBQWtDLEVBQUU7YUFDcEMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQy9DLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQWM7UUFDdEIsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUNsQyx1Q0FBdUMsQ0FDeEMsQ0FBQztZQUVGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQzNCO2dCQUNFLEdBQUcsRUFBRSxnREFBZ0Q7Z0JBQ3JELE1BQU0sRUFBRTtvQkFDTixzQkFBc0IsRUFBRSxJQUFJLENBQUMsc0JBQXNCO2lCQUNwRDthQUNGLEVBQ0QsaUJBQWlCLENBQUMscUJBQXFCLENBQ3hDLENBQUM7U0FDSDtRQUNELElBQUksQ0FBQyw2QkFBNkIsQ0FBQyx5Q0FBeUMsRUFBRSxDQUFDO0lBQ2pGLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBYztRQUNsQixJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsSUFBSSxDQUFDLDZCQUE2QixDQUFDLHdCQUF3QixDQUN6RCxJQUFJLENBQUMsc0JBQXNCLENBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbEMsQ0FBQzs7MElBaEZVLDZDQUE2Qzs4SEFBN0MsNkNBQTZDLDJJQ3hCMUQsMHNDQXFDQTsyRkRiYSw2Q0FBNkM7a0JBSnpELFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDRDQUE0QztvQkFDdEQsV0FBVyxFQUFFLDBEQUEwRDtpQkFDeEU7a05BZ0JDLFdBQVc7c0JBRFYsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgR2xvYmFsTWVzc2FnZVNlcnZpY2UsXG4gIEdsb2JhbE1lc3NhZ2VUeXBlLFxuICBVc2VyUmVwbGVuaXNobWVudE9yZGVyU2VydmljZSxcbn0gZnJvbSAnQHNwYXJ0YWN1cy9jb3JlJztcbmltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgc3RhcnRXaXRoIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgRm9jdXNDb25maWcgfSBmcm9tICcuLi8uLi8uLi9sYXlvdXQvYTExeS9rZXlib2FyZC1mb2N1cy9rZXlib2FyZC1mb2N1cy5tb2RlbCc7XG5pbXBvcnQgeyBMYXVuY2hEaWFsb2dTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vbGF5b3V0L2xhdW5jaC1kaWFsb2cvc2VydmljZXMvbGF1bmNoLWRpYWxvZy5zZXJ2aWNlJztcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCBzaW5jZSA0LjIgLSB1c2Ugb3JkZXIgbGliIGluc3RlYWRcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY3gtcmVwbGVuaXNobWVudC1vcmRlci1jYW5jZWxsYXRpb24tZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcGxlbmlzaG1lbnQtb3JkZXItY2FuY2VsbGF0aW9uLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIFJlcGxlbmlzaG1lbnRPcmRlckNhbmNlbGxhdGlvbkRpYWxvZ0NvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95XG57XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuXG4gIHJlcGxlbmlzaG1lbnRPcmRlckNvZGU6IHN0cmluZztcblxuICBmb2N1c0NvbmZpZzogRm9jdXNDb25maWcgPSB7XG4gICAgdHJhcDogdHJ1ZSxcbiAgICBibG9jazogdHJ1ZSxcbiAgICBhdXRvZm9jdXM6ICdidXR0b24nLFxuICAgIGZvY3VzT25Fc2NhcGU6IHRydWUsXG4gIH07XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICBoYW5kbGVDbGljayhldmVudDogVUlFdmVudCk6IHZvaWQge1xuICAgIC8vIENsb3NlIG9uIGNsaWNrIG91dHNpZGUgdGhlIGRpYWxvZyB3aW5kb3dcbiAgICBpZiAoKGV2ZW50LnRhcmdldCBhcyBhbnkpLnRhZ05hbWUgPT09IHRoaXMuZWwubmF0aXZlRWxlbWVudC50YWdOYW1lKSB7XG4gICAgICB0aGlzLmNsb3NlKCdDcm9zcyBjbGljaycpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB1c2VyUmVwbGVuaXNobWVudE9yZGVyU2VydmljZTogVXNlclJlcGxlbmlzaG1lbnRPcmRlclNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGdsb2JhbE1lc3NhZ2VTZXJ2aWNlOiBHbG9iYWxNZXNzYWdlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgbGF1bmNoRGlhbG9nU2VydmljZTogTGF1bmNoRGlhbG9nU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgZWw6IEVsZW1lbnRSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLnVzZXJSZXBsZW5pc2htZW50T3JkZXJTZXJ2aWNlXG4gICAgICAgICAgLmdldFJlcGxlbmlzaG1lbnRPcmRlckRldGFpbHMoKVxuICAgICAgICAgIC5waXBlKHN0YXJ0V2l0aChudWxsKSksXG4gICAgICAgIHRoaXMubGF1bmNoRGlhbG9nU2VydmljZS5kYXRhJCxcbiAgICAgIF0pLnN1YnNjcmliZSgoW3JlcGxlbmlzaG1lbnRPcmRlciwgY29kZV0pID0+IHtcbiAgICAgICAgdGhpcy5yZXBsZW5pc2htZW50T3JkZXJDb2RlID1cbiAgICAgICAgICBjb2RlIHx8IHJlcGxlbmlzaG1lbnRPcmRlci5yZXBsZW5pc2htZW50T3JkZXJDb2RlO1xuICAgICAgfSlcbiAgICApO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKFxuICAgICAgdGhpcy51c2VyUmVwbGVuaXNobWVudE9yZGVyU2VydmljZVxuICAgICAgICAuZ2V0Q2FuY2VsUmVwbGVuaXNobWVudE9yZGVyU3VjY2VzcygpXG4gICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlKSA9PiB0aGlzLm9uU3VjY2Vzcyh2YWx1ZSkpXG4gICAgKTtcbiAgfVxuXG4gIG9uU3VjY2Vzcyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgdGhpcy5sYXVuY2hEaWFsb2dTZXJ2aWNlLmNsb3NlRGlhbG9nKFxuICAgICAgICAnU3VjY2Vzc2ZmdWxseSBjYW5jZWxsZWQgcmVwbGVuaXNobWVudCdcbiAgICAgICk7XG5cbiAgICAgIHRoaXMuZ2xvYmFsTWVzc2FnZVNlcnZpY2UuYWRkKFxuICAgICAgICB7XG4gICAgICAgICAga2V5OiAnb3JkZXJEZXRhaWxzLmNhbmNlbFJlcGxlbmlzaG1lbnQuY2FuY2VsU3VjY2VzcycsXG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICByZXBsZW5pc2htZW50T3JkZXJDb2RlOiB0aGlzLnJlcGxlbmlzaG1lbnRPcmRlckNvZGUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgR2xvYmFsTWVzc2FnZVR5cGUuTVNHX1RZUEVfQ09ORklSTUFUSU9OXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnVzZXJSZXBsZW5pc2htZW50T3JkZXJTZXJ2aWNlLmNsZWFyQ2FuY2VsUmVwbGVuaXNobWVudE9yZGVyUHJvY2Vzc1N0YXRlKCk7XG4gIH1cblxuICBjbG9zZShyZWFzb246IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubGF1bmNoRGlhbG9nU2VydmljZS5jbG9zZURpYWxvZyhyZWFzb24pO1xuICB9XG5cbiAgY2FuY2VsUmVwbGVuaXNobWVudCgpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXJSZXBsZW5pc2htZW50T3JkZXJTZXJ2aWNlLmNhbmNlbFJlcGxlbmlzaG1lbnRPcmRlcihcbiAgICAgIHRoaXMucmVwbGVuaXNobWVudE9yZGVyQ29kZVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iLCI8ZGl2XG4gIFtjeEZvY3VzXT1cImZvY3VzQ29uZmlnXCJcbiAgKGVzYyk9XCJjbG9zZSgnRXNjYXBlIGNsaWNrZWQnKVwiXG4gIGNsYXNzPVwiY3gtY2FuY2VsLXJlcGxlbmlzaG1lbnQtZGlhbG9nLWZvcmVncm91bmRcIlxuPlxuICA8ZGl2IGNsYXNzPVwiY3gtY2FuY2VsLXJlcGxlbmlzaG1lbnQtZGlhbG9nLWNvbnRlbnRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3gtY2FuY2VsLXJlcGxlbmlzaG1lbnQtZGlhbG9nLWhlYWRlclwiPlxuICAgICAgPGgzPlxuICAgICAgICB7eyAnb3JkZXJEZXRhaWxzLmNhbmNlbFJlcGxlbmlzaG1lbnQudGl0bGUnIHwgY3hUcmFuc2xhdGUgfX1cbiAgICAgIDwvaDM+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImN4LWNhbmNlbC1yZXBsZW5pc2htZW50LWRpYWxvZy1kZXNjcmlwdGlvblwiPlxuICAgICAge3sgJ29yZGVyRGV0YWlscy5jYW5jZWxSZXBsZW5pc2htZW50LmRlc2NyaXB0aW9uJyB8IGN4VHJhbnNsYXRlIH19XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiY3gtY2FuY2VsLXJlcGxlbmlzaG1lbnQtZGlhbG9nLWJvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjeC1jYW5jZWwtcmVwbGVuaXNobWVudC1idG5zIHJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tYmxvY2sgYnRuLWFjdGlvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2xvc2UoJ0Nsb3NlIFJlcGxlbmlzaG1lbnQgRGlhbG9nJylcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7ICdvcmRlckRldGFpbHMuY2FuY2VsUmVwbGVuaXNobWVudC5yZWplY3QnIHwgY3hUcmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1ibG9jayBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiY2FuY2VsUmVwbGVuaXNobWVudCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyAnb3JkZXJEZXRhaWxzLmNhbmNlbFJlcGxlbmlzaG1lbnQuYWNjZXB0JyB8IGN4VHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=