moh-common-lib
Version:
A library of Angular components, services, and styles for B.C. Government Ministry of Health (MoH).
367 lines • 21.8 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { DefaultSubmitLabel } from '../services/container.service';
/**
* @record
*/
export function WizardProgressItem() { }
if (false) {
/** @type {?} */
WizardProgressItem.prototype.title;
/** @type {?} */
WizardProgressItem.prototype.route;
}
/**
* Container class contains the basic functionality for containers.
*
* @example
* Example of how to use Container
*
* export class RegistrationContainerComponent extends Container
* implements AfterViewInit, OnDestroy {
*
* constructor( private headerService: HeaderService,
* private pageStateService: PageStateService,
* protected containerService: ContainerService) {
* super( containerService );
* this.setProgressSteps(pages);
* this.pageStateService.setPages( pages, PRACTITIONER_REGISTRATION_PAGES );
* this.headerService.setTitle('Practitioner Assignment to Medical Services Plan Facility for Business Cost Premium');
* }
*
* ngAfterViewInit() {
* this.subscribeFormBar();
* }
*
* ngOnDestroy() {
* this.unsubscribeFormBar();
* }
* ...
* }
*
* html would be:
*
* <common-core-breadcrumb>
* <common-wizard-progress-bar center [progressSteps]="progressSteps"></common-wizard-progress-bar>
* </common-core-breadcrumb>
* <common-page-framework layout="blank">
* <router-outlet></router-outlet>
* </common-page-framework>
* <common-form-action-bar (btnClick)="continue()" <= function within Container
* [submitLabel]="submitLabel" <= variable within Container
* [isLoading]="isLoading" <= variable within Container
* [defaultColor]="useDefaultColor" <= variable within Container
* widthOption='extra-width-mobile-only'></common-form-action-bar>
*
* @export
*
*/
/**
* Base functionality for container that is used to display bread crumbs
*/
var /**
* Container class contains the basic functionality for containers.
*
* @example
* Example of how to use Container
*
* export class RegistrationContainerComponent extends Container
* implements AfterViewInit, OnDestroy {
*
* constructor( private headerService: HeaderService,
* private pageStateService: PageStateService,
* protected containerService: ContainerService) {
* super( containerService );
* this.setProgressSteps(pages);
* this.pageStateService.setPages( pages, PRACTITIONER_REGISTRATION_PAGES );
* this.headerService.setTitle('Practitioner Assignment to Medical Services Plan Facility for Business Cost Premium');
* }
*
* ngAfterViewInit() {
* this.subscribeFormBar();
* }
*
* ngOnDestroy() {
* this.unsubscribeFormBar();
* }
* ...
* }
*
* html would be:
*
* <common-core-breadcrumb>
* <common-wizard-progress-bar center [progressSteps]="progressSteps"></common-wizard-progress-bar>
* </common-core-breadcrumb>
* <common-page-framework layout="blank">
* <router-outlet></router-outlet>
* </common-page-framework>
* <common-form-action-bar (btnClick)="continue()" <= function within Container
* [submitLabel]="submitLabel" <= variable within Container
* [isLoading]="isLoading" <= variable within Container
* [defaultColor]="useDefaultColor" <= variable within Container
* widthOption='extra-width-mobile-only'></common-form-action-bar>
*
* @export
*
*/
/**
* Base functionality for container that is used to display bread crumbs
*/
Container = /** @class */ (function () {
function Container(containerService) {
this.containerService = containerService;
/**
* Observables for form bar
*/
this.useDefaultColor = true;
this.submitLabel = DefaultSubmitLabel;
this.isLoading = false;
}
/**
* Use when form bar is part of the container
*/
/**
* Use when form bar is part of the container
* @return {?}
*/
Container.prototype.continue = /**
* Use when form bar is part of the container
* @return {?}
*/
function () {
this.containerService.submitButtonClicked();
};
/**
* Converts a lower case string of a route in a user readable title. e.g.
* "personal-info" -> "Personal Info"
*/
/**
* Converts a lower case string of a route in a user readable title. e.g.
* "personal-info" -> "Personal Info"
* @param {?} routePath
* @return {?}
*/
Container.prototype.convertRouteToTitle = /**
* Converts a lower case string of a route in a user readable title. e.g.
* "personal-info" -> "Personal Info"
* @param {?} routePath
* @return {?}
*/
function (routePath) {
return routePath.split('-').map((/**
* @param {?} x
* @return {?}
*/
function (x) { return x[0].toUpperCase() + x.slice(1); })).join(' ');
};
/**
* @protected
* @param {?} pageRoutes
* @return {?}
*/
Container.prototype.setProgressSteps = /**
* @protected
* @param {?} pageRoutes
* @return {?}
*/
function (pageRoutes) {
var _this = this;
// Interface for wizard progress items
this.progressSteps = pageRoutes.map((/**
* @param {?} page
* @return {?}
*/
function (page) {
if (page.path !== '') {
return {
title: _this.convertRouteToTitle(page.path),
route: page.path
};
}
})).filter((/**
* @param {?} x
* @return {?}
*/
function (x) { return x; }));
};
/**
* Subscribe to form bar observables - Called in the AfterViewInit
* Use when form bar is part of the container
*/
/**
* Subscribe to form bar observables - Called in the AfterViewInit
* Use when form bar is part of the container
* @protected
* @return {?}
*/
Container.prototype.subscribeFormBar = /**
* Subscribe to form bar observables - Called in the AfterViewInit
* Use when form bar is part of the container
* @protected
* @return {?}
*/
function () {
var _this = this;
if (this.containerService) {
this._subscriptions = [
this.containerService.$useDefaultColor
.subscribe(((/**
* @param {?} defaultColor
* @return {?}
*/
function (defaultColor) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var _a;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
_a = this;
return [4 /*yield*/, defaultColor];
case 1:
_a.useDefaultColor = _b.sent();
return [2 /*return*/];
}
});
}); }))),
this.containerService.$submitLabel
.subscribe(((/**
* @param {?} label
* @return {?}
*/
function (label) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var _a;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
_a = this;
return [4 /*yield*/, label];
case 1:
_a.submitLabel = _b.sent();
return [2 /*return*/];
}
});
}); }))),
this.containerService.$isLoading
.subscribe(((/**
* @param {?} isLoading
* @return {?}
*/
function (isLoading) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
var _a;
return tslib_1.__generator(this, function (_b) {
switch (_b.label) {
case 0:
_a = this;
return [4 /*yield*/, isLoading];
case 1:
_a.isLoading = _b.sent();
return [2 /*return*/];
}
});
}); })))
];
}
};
/**
* Unsubscribe to form bar observables - Called in the onDestroy()
* Use when form bar is part of the container
*/
/**
* Unsubscribe to form bar observables - Called in the onDestroy()
* Use when form bar is part of the container
* @protected
* @return {?}
*/
Container.prototype.unsubscribeFormBar = /**
* Unsubscribe to form bar observables - Called in the onDestroy()
* Use when form bar is part of the container
* @protected
* @return {?}
*/
function () {
this._subscriptions.forEach((/**
* @param {?} x
* @return {?}
*/
function (x) { return x.unsubscribe(); }));
};
return Container;
}());
/**
* Container class contains the basic functionality for containers.
*
* @example
* Example of how to use Container
*
* export class RegistrationContainerComponent extends Container
* implements AfterViewInit, OnDestroy {
*
* constructor( private headerService: HeaderService,
* private pageStateService: PageStateService,
* protected containerService: ContainerService) {
* super( containerService );
* this.setProgressSteps(pages);
* this.pageStateService.setPages( pages, PRACTITIONER_REGISTRATION_PAGES );
* this.headerService.setTitle('Practitioner Assignment to Medical Services Plan Facility for Business Cost Premium');
* }
*
* ngAfterViewInit() {
* this.subscribeFormBar();
* }
*
* ngOnDestroy() {
* this.unsubscribeFormBar();
* }
* ...
* }
*
* html would be:
*
* <common-core-breadcrumb>
* <common-wizard-progress-bar center [progressSteps]="progressSteps"></common-wizard-progress-bar>
* </common-core-breadcrumb>
* <common-page-framework layout="blank">
* <router-outlet></router-outlet>
* </common-page-framework>
* <common-form-action-bar (btnClick)="continue()" <= function within Container
* [submitLabel]="submitLabel" <= variable within Container
* [isLoading]="isLoading" <= variable within Container
* [defaultColor]="useDefaultColor" <= variable within Container
* widthOption='extra-width-mobile-only'></common-form-action-bar>
*
* @export
*
*/
/**
* Base functionality for container that is used to display bread crumbs
*/
export { Container };
if (false) {
/**
* Route items for the stepper
* @type {?}
*/
Container.prototype.progressSteps;
/**
* Observables for form bar
* @type {?}
*/
Container.prototype.useDefaultColor;
/** @type {?} */
Container.prototype.submitLabel;
/** @type {?} */
Container.prototype.isLoading;
/**
* @type {?}
* @private
*/
Container.prototype._subscriptions;
/**
* @type {?}
* @protected
*/
Container.prototype.containerService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbW9oLWNvbW1vbi1saWIvIiwic291cmNlcyI6WyJsaWIvbW9kZWxzL2NvbnRhaW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLE9BQU8sRUFBb0Isa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7OztBQUdyRix3Q0FHQzs7O0lBRkMsbUNBQWM7O0lBQ2QsbUNBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0RoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQVlFLG1CQUF1QixnQkFBbUM7UUFBbkMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFtQjs7OztRQU4xRCxvQkFBZSxHQUFZLElBQUksQ0FBQztRQUNoQyxnQkFBVyxHQUFXLGtCQUFrQixDQUFDO1FBQ3pDLGNBQVMsR0FBWSxLQUFLLENBQUM7SUFLM0IsQ0FBQztJQUVEOztPQUVHOzs7OztJQUNILDRCQUFROzs7O0lBQVI7UUFDRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7OztPQUdHOzs7Ozs7O0lBQ0gsdUNBQW1COzs7Ozs7SUFBbkIsVUFBb0IsU0FBaUI7UUFDbkMsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUc7Ozs7UUFBQyxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUEvQixDQUErQixFQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7Ozs7OztJQUVTLG9DQUFnQjs7Ozs7SUFBMUIsVUFBNEIsVUFBbUI7UUFBL0MsaUJBVUM7UUFUQyxzQ0FBc0M7UUFDdEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsR0FBRzs7OztRQUFDLFVBQUEsSUFBSTtZQUN0QyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssRUFBRSxFQUFFO2dCQUNwQixPQUFPO29CQUNMLEtBQUssRUFBRSxLQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztvQkFDMUMsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJO2lCQUNqQixDQUFDO2FBQ0g7UUFDSCxDQUFDLEVBQUMsQ0FBQyxNQUFNOzs7O1FBQUMsVUFBQSxDQUFDLElBQUksT0FBQSxDQUFDLEVBQUQsQ0FBQyxFQUFDLENBQUM7SUFDcEIsQ0FBQztJQUVEOzs7T0FHRzs7Ozs7OztJQUNPLG9DQUFnQjs7Ozs7O0lBQTFCO1FBQUEsaUJBcUJDO1FBcEJDLElBQUssSUFBSSxDQUFDLGdCQUFnQixFQUFHO1lBRTNCLElBQUksQ0FBQyxjQUFjLEdBQUc7Z0JBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0I7cUJBQ3JDLFNBQVMsQ0FDUjs7OztnQkFBQyxVQUFPLFlBQVk7Ozs7O2dDQUNsQixLQUFBLElBQUksQ0FBQTtnQ0FBbUIscUJBQU0sWUFBWSxFQUFBOztnQ0FBekMsR0FBSyxlQUFlLEdBQUcsU0FBa0IsQ0FBQzs7OztxQkFDN0MsRUFBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZO3FCQUNqQyxTQUFTLENBQ1I7Ozs7Z0JBQUMsVUFBTyxLQUFLOzs7OztnQ0FDWCxLQUFBLElBQUksQ0FBQTtnQ0FBZSxxQkFBTSxLQUFLLEVBQUE7O2dDQUE5QixHQUFLLFdBQVcsR0FBRyxTQUFXLENBQUM7Ozs7cUJBQ2xDLEVBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsVUFBVTtxQkFDL0IsU0FBUyxDQUNSOzs7O2dCQUFDLFVBQU8sU0FBUzs7Ozs7Z0NBQ2YsS0FBQSxJQUFJLENBQUE7Z0NBQWEscUJBQU0sU0FBUyxFQUFBOztnQ0FBaEMsR0FBSyxTQUFTLEdBQUcsU0FBZSxDQUFDOzs7O3FCQUNwQyxFQUFDLENBQUM7YUFDSixDQUFDO1NBQ0g7SUFDSCxDQUFDO0lBRUQ7OztPQUdHOzs7Ozs7O0lBQ08sc0NBQWtCOzs7Ozs7SUFBNUI7UUFDRSxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU87Ozs7UUFBRSxVQUFBLENBQUMsSUFBSSxPQUFBLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBZixDQUFlLEVBQUUsQ0FBQztJQUN0RCxDQUFDO0lBQ0gsZ0JBQUM7QUFBRCxDQUFDLEFBNUVELElBNEVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBekVDLGtDQUFvQzs7Ozs7SUFHcEMsb0NBQWdDOztJQUNoQyxnQ0FBeUM7O0lBQ3pDLDhCQUEyQjs7Ozs7SUFFM0IsbUNBQXVDOzs7OztJQUUxQixxQ0FBNkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IENvbnRhaW5lclNlcnZpY2UsIERlZmF1bHRTdWJtaXRMYWJlbCB9IGZyb20gJy4uL3NlcnZpY2VzL2NvbnRhaW5lci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFdpemFyZFByb2dyZXNzSXRlbSB7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICByb3V0ZTogc3RyaW5nO1xyXG59XHJcblxyXG4vKipcclxuICogQ29udGFpbmVyIGNsYXNzIGNvbnRhaW5zIHRoZSBiYXNpYyBmdW5jdGlvbmFsaXR5IGZvciBjb250YWluZXJzLlxyXG4gKlxyXG4gKiBAZXhhbXBsZVxyXG4gKiAgRXhhbXBsZSBvZiBob3cgdG8gdXNlIENvbnRhaW5lclxyXG4gKlxyXG4gKiAgICAgIGV4cG9ydCBjbGFzcyBSZWdpc3RyYXRpb25Db250YWluZXJDb21wb25lbnQgZXh0ZW5kcyBDb250YWluZXJcclxuICogICAgICAgICAgICAgICAgICAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gKlxyXG4gKiAgICAgICAgY29uc3RydWN0b3IoIHByaXZhdGUgaGVhZGVyU2VydmljZTogSGVhZGVyU2VydmljZSxcclxuICogICAgICAgICAgICAgICAgICAgICBwcml2YXRlIHBhZ2VTdGF0ZVNlcnZpY2U6IFBhZ2VTdGF0ZVNlcnZpY2UsXHJcbiAqICAgICAgICAgICAgICAgICAgICAgcHJvdGVjdGVkICBjb250YWluZXJTZXJ2aWNlOiBDb250YWluZXJTZXJ2aWNlKSB7XHJcbiAqICAgICAgICAgIHN1cGVyKCBjb250YWluZXJTZXJ2aWNlICk7XHJcbiAqICAgICAgICAgIHRoaXMuc2V0UHJvZ3Jlc3NTdGVwcyhwYWdlcyk7XHJcbiAqICAgICAgICAgIHRoaXMucGFnZVN0YXRlU2VydmljZS5zZXRQYWdlcyggcGFnZXMsIFBSQUNUSVRJT05FUl9SRUdJU1RSQVRJT05fUEFHRVMgKTtcclxuICogICAgICAgICAgdGhpcy5oZWFkZXJTZXJ2aWNlLnNldFRpdGxlKCdQcmFjdGl0aW9uZXIgQXNzaWdubWVudCB0byBNZWRpY2FsIFNlcnZpY2VzIFBsYW4gRmFjaWxpdHkgZm9yIEJ1c2luZXNzIENvc3QgUHJlbWl1bScpO1xyXG4gKiAgICAgICAgfVxyXG4gKlxyXG4gKiAgICAgICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gKiAgICAgICAgICB0aGlzLnN1YnNjcmliZUZvcm1CYXIoKTtcclxuICogICAgICAgIH1cclxuICpcclxuICogICAgICAgIG5nT25EZXN0cm95KCkge1xyXG4gKiAgICAgICAgICB0aGlzLnVuc3Vic2NyaWJlRm9ybUJhcigpO1xyXG4gKiAgICAgICAgfVxyXG4gKiAgICAgICAgLi4uXHJcbiAqICAgICAgfVxyXG4gKlxyXG4gKiBodG1sIHdvdWxkIGJlOlxyXG4gKlxyXG4gKiAgICA8Y29tbW9uLWNvcmUtYnJlYWRjcnVtYj5cclxuICogICAgICA8Y29tbW9uLXdpemFyZC1wcm9ncmVzcy1iYXIgY2VudGVyIFtwcm9ncmVzc1N0ZXBzXT1cInByb2dyZXNzU3RlcHNcIj48L2NvbW1vbi13aXphcmQtcHJvZ3Jlc3MtYmFyPlxyXG4gKiAgICA8L2NvbW1vbi1jb3JlLWJyZWFkY3J1bWI+XHJcbiAqICAgIDxjb21tb24tcGFnZS1mcmFtZXdvcmsgbGF5b3V0PVwiYmxhbmtcIj5cclxuICogICAgICA8cm91dGVyLW91dGxldD48L3JvdXRlci1vdXRsZXQ+XHJcbiAqICAgIDwvY29tbW9uLXBhZ2UtZnJhbWV3b3JrPlxyXG4gKiAgICA8Y29tbW9uLWZvcm0tYWN0aW9uLWJhciAoYnRuQ2xpY2spPVwiY29udGludWUoKVwiICAgICAgICAgICAgPD0gZnVuY3Rpb24gd2l0aGluIENvbnRhaW5lclxyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3VibWl0TGFiZWxdPVwic3VibWl0TGFiZWxcIiAgICAgICAgPD0gdmFyaWFibGUgd2l0aGluIENvbnRhaW5lclxyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiICAgICAgICAgICAgPD0gdmFyaWFibGUgd2l0aGluIENvbnRhaW5lclxyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdENvbG9yXT1cInVzZURlZmF1bHRDb2xvclwiICAgPD0gdmFyaWFibGUgd2l0aGluIENvbnRhaW5lclxyXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aE9wdGlvbj0nZXh0cmEtd2lkdGgtbW9iaWxlLW9ubHknPjwvY29tbW9uLWZvcm0tYWN0aW9uLWJhcj5cclxuICpcclxuICogQGV4cG9ydFxyXG4gKlxyXG4gKi9cclxuXHJcbi8qKiBCYXNlIGZ1bmN0aW9uYWxpdHkgZm9yIGNvbnRhaW5lciB0aGF0IGlzIHVzZWQgdG8gZGlzcGxheSBicmVhZCBjcnVtYnMgKi9cclxuZXhwb3J0IGNsYXNzIENvbnRhaW5lciB7XHJcblxyXG4gIC8qKiBSb3V0ZSBpdGVtcyBmb3IgdGhlIHN0ZXBwZXIgKi9cclxuICBwcm9ncmVzc1N0ZXBzOiBXaXphcmRQcm9ncmVzc0l0ZW1bXTtcclxuXHJcbiAgLyoqIE9ic2VydmFibGVzIGZvciBmb3JtIGJhciAqL1xyXG4gIHVzZURlZmF1bHRDb2xvcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgc3VibWl0TGFiZWw6IHN0cmluZyA9IERlZmF1bHRTdWJtaXRMYWJlbDtcclxuICBpc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW107XHJcblxyXG4gIGNvbnN0cnVjdG9yKCBwcm90ZWN0ZWQgY29udGFpbmVyU2VydmljZT86IENvbnRhaW5lclNlcnZpY2UgKSB7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVc2Ugd2hlbiBmb3JtIGJhciBpcyBwYXJ0IG9mIHRoZSBjb250YWluZXJcclxuICAgKi9cclxuICBjb250aW51ZSgpIHtcclxuICAgIHRoaXMuY29udGFpbmVyU2VydmljZS5zdWJtaXRCdXR0b25DbGlja2VkKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDb252ZXJ0cyBhIGxvd2VyIGNhc2Ugc3RyaW5nIG9mIGEgcm91dGUgaW4gYSB1c2VyIHJlYWRhYmxlIHRpdGxlLiAgZS5nLlxyXG4gICAqIFwicGVyc29uYWwtaW5mb1wiIC0+IFwiUGVyc29uYWwgSW5mb1wiXHJcbiAgICovXHJcbiAgY29udmVydFJvdXRlVG9UaXRsZShyb3V0ZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gcm91dGVQYXRoLnNwbGl0KCctJykubWFwKHggPT4geFswXS50b1VwcGVyQ2FzZSgpICsgeC5zbGljZSgxKSkuam9pbignICcpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIHNldFByb2dyZXNzU3RlcHMoIHBhZ2VSb3V0ZXM6IFJvdXRlW10gKTogdm9pZCB7XHJcbiAgICAvLyBJbnRlcmZhY2UgZm9yIHdpemFyZCBwcm9ncmVzcyBpdGVtc1xyXG4gICAgdGhpcy5wcm9ncmVzc1N0ZXBzID0gcGFnZVJvdXRlcy5tYXAocGFnZSA9PiB7XHJcbiAgICAgIGlmIChwYWdlLnBhdGggIT09ICcnKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIHRpdGxlOiB0aGlzLmNvbnZlcnRSb3V0ZVRvVGl0bGUocGFnZS5wYXRoKSxcclxuICAgICAgICAgIHJvdXRlOiBwYWdlLnBhdGhcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9KS5maWx0ZXIoeCA9PiB4KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFN1YnNjcmliZSB0byBmb3JtIGJhciBvYnNlcnZhYmxlcyAtIENhbGxlZCBpbiB0aGUgQWZ0ZXJWaWV3SW5pdFxyXG4gICAqIFVzZSB3aGVuIGZvcm0gYmFyIGlzIHBhcnQgb2YgdGhlIGNvbnRhaW5lclxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBzdWJzY3JpYmVGb3JtQmFyKCkge1xyXG4gICAgaWYgKCB0aGlzLmNvbnRhaW5lclNlcnZpY2UgKSB7XHJcblxyXG4gICAgICB0aGlzLl9zdWJzY3JpcHRpb25zID0gW1xyXG4gICAgICAgIHRoaXMuY29udGFpbmVyU2VydmljZS4kdXNlRGVmYXVsdENvbG9yXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIChhc3luYyAoZGVmYXVsdENvbG9yKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXNlRGVmYXVsdENvbG9yID0gYXdhaXQgZGVmYXVsdENvbG9yO1xyXG4gICAgICAgIH0pKSxcclxuICAgICAgICB0aGlzLmNvbnRhaW5lclNlcnZpY2UuJHN1Ym1pdExhYmVsXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIChhc3luYyAobGFiZWwpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zdWJtaXRMYWJlbCA9IGF3YWl0IGxhYmVsO1xyXG4gICAgICAgIH0pKSxcclxuICAgICAgICB0aGlzLmNvbnRhaW5lclNlcnZpY2UuJGlzTG9hZGluZ1xyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAoYXN5bmMgKGlzTG9hZGluZykgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGF3YWl0IGlzTG9hZGluZztcclxuICAgICAgICB9KSlcclxuICAgICAgXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVuc3Vic2NyaWJlIHRvIGZvcm0gYmFyIG9ic2VydmFibGVzICAtIENhbGxlZCBpbiB0aGUgb25EZXN0cm95KClcclxuICAgKiBVc2Ugd2hlbiBmb3JtIGJhciBpcyBwYXJ0IG9mIHRoZSBjb250YWluZXJcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgdW5zdWJzY3JpYmVGb3JtQmFyKCkge1xyXG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5mb3JFYWNoKCB4ID0+IHgudW5zdWJzY3JpYmUoKSApO1xyXG4gIH1cclxufVxyXG4iXX0=