@materia/users
Version:
Signin/signup your users in your Materia application
260 lines • 28.5 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { Component, Input, Output, EventEmitter } from '@angular/core';
import { FormGroup, Validators, FormBuilder } from '@angular/forms';
import { HttpClient } from '@angular/common/http';
import { AddonSetup } from '@materia/addons';
import * as i0 from "@angular/core";
import * as i1 from "@angular/forms";
import * as i2 from "@angular/common/http";
import * as i3 from "@angular/common";
import * as i4 from "@angular/material/dialog";
import * as i5 from "@angular/flex-layout/flex";
import * as i6 from "@angular/material/button";
import * as i7 from "@angular/material/icon";
import * as i8 from "@angular/material/radio";
import * as i9 from "@angular/material/checkbox";
import * as i10 from "@angular/material/form-field";
import * as i11 from "@angular/material/select";
import * as i12 from "@angular/material/core";
function UserManagementSetupComponent_form_0_mat_form_field_19_mat_option_2_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "mat-option", 18);
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
} if (rf & 2) {
var entity_r8 = ctx.$implicit;
i0.ɵɵproperty("value", entity_r8.name);
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate(entity_r8.name);
} }
function UserManagementSetupComponent_form_0_mat_form_field_19_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "mat-form-field");
i0.ɵɵelementStart(1, "mat-select", 16);
i0.ɵɵtemplate(2, UserManagementSetupComponent_form_0_mat_form_field_19_mat_option_2_Template, 2, 2, "mat-option", 17);
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
} if (rf & 2) {
var ctx_r1 = i0.ɵɵnextContext(2);
i0.ɵɵadvance(2);
i0.ɵɵproperty("ngForOf", ctx_r1.entities);
} }
function UserManagementSetupComponent_form_0_ng_template_20_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 19);
i0.ɵɵtext(1, " No entity found. You need an entity to add custom fields to your users. ");
i0.ɵɵelementEnd();
} }
function UserManagementSetupComponent_form_0_mat_form_field_25_mat_option_2_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "mat-option", 18);
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
} if (rf & 2) {
var addon_r10 = ctx.$implicit;
i0.ɵɵproperty("value", addon_r10.package);
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate(addon_r10.name);
} }
function UserManagementSetupComponent_form_0_mat_form_field_25_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "mat-form-field");
i0.ɵɵelementStart(1, "mat-select", 20);
i0.ɵɵtemplate(2, UserManagementSetupComponent_form_0_mat_form_field_25_mat_option_2_Template, 2, 2, "mat-option", 17);
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
} if (rf & 2) {
var ctx_r4 = i0.ɵɵnextContext(2);
i0.ɵɵadvance(2);
i0.ɵɵproperty("ngForOf", ctx_r4.emailAddons);
} }
function UserManagementSetupComponent_form_0_ng_template_26_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "div", 19);
i0.ɵɵtext(1, "You need ");
i0.ɵɵelementStart(2, "strong");
i0.ɵɵtext(3, "Mailjet");
i0.ɵɵelementEnd();
i0.ɵɵtext(4, " addon installed ");
i0.ɵɵelement(5, "br");
i0.ɵɵtext(6, "to send email from your Materia Application such as a signup email");
i0.ɵɵelementEnd();
} }
function UserManagementSetupComponent_form_0_Template(rf, ctx) { if (rf & 1) {
var _r12 = i0.ɵɵgetCurrentView();
i0.ɵɵelementStart(0, "form", 1);
i0.ɵɵelementStart(1, "h2", 2);
i0.ɵɵelementStart(2, "span", 3);
i0.ɵɵtext(3, "User Management - Setup");
i0.ɵɵelementEnd();
i0.ɵɵelementStart(4, "button", 4);
i0.ɵɵlistener("click", function UserManagementSetupComponent_form_0_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r12); var ctx_r11 = i0.ɵɵnextContext(); return ctx_r11.close(); });
i0.ɵɵelementStart(5, "mat-icon");
i0.ɵɵtext(6, "close");
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementStart(7, "mat-dialog-content");
i0.ɵɵelementStart(8, "div", 5);
i0.ɵɵelementStart(9, "h3");
i0.ɵɵtext(10, " Authentication method ");
i0.ɵɵelementEnd();
i0.ɵɵelementStart(11, "mat-radio-group", 6);
i0.ɵɵelementStart(12, "mat-radio-button", 7);
i0.ɵɵtext(13, "Token based authentication (mobile ready)");
i0.ɵɵelementEnd();
i0.ɵɵelementStart(14, "mat-radio-button", 8);
i0.ɵɵtext(15, "Session based authentication");
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementStart(16, "h3");
i0.ɵɵelementStart(17, "mat-checkbox", 9);
i0.ɵɵtext(18, "User profile");
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵtemplate(19, UserManagementSetupComponent_form_0_mat_form_field_19_Template, 3, 1, "mat-form-field", 10);
i0.ɵɵtemplate(20, UserManagementSetupComponent_form_0_ng_template_20_Template, 2, 0, "ng-template", null, 11, i0.ɵɵtemplateRefExtractor);
i0.ɵɵelementStart(22, "h3");
i0.ɵɵelementStart(23, "mat-checkbox", 12);
i0.ɵɵtext(24, "Emails enabled");
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵtemplate(25, UserManagementSetupComponent_form_0_mat_form_field_25_Template, 3, 1, "mat-form-field", 10);
i0.ɵɵtemplate(26, UserManagementSetupComponent_form_0_ng_template_26_Template, 7, 0, "ng-template", null, 13, i0.ɵɵtemplateRefExtractor);
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementStart(28, "mat-dialog-actions");
i0.ɵɵelementStart(29, "button", 14);
i0.ɵɵlistener("click", function UserManagementSetupComponent_form_0_Template_button_click_29_listener() { i0.ɵɵrestoreView(_r12); var ctx_r13 = i0.ɵɵnextContext(); return ctx_r13.finish(); });
i0.ɵɵtext(30, "Save");
i0.ɵɵelementEnd();
i0.ɵɵelementStart(31, "button", 15);
i0.ɵɵlistener("click", function UserManagementSetupComponent_form_0_Template_button_click_31_listener() { i0.ɵɵrestoreView(_r12); var ctx_r14 = i0.ɵɵnextContext(); return ctx_r14.close(); });
i0.ɵɵtext(32, "Cancel");
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
} if (rf & 2) {
var _r2 = i0.ɵɵreference(21);
var _r5 = i0.ɵɵreference(27);
var ctx_r0 = i0.ɵɵnextContext();
i0.ɵɵproperty("formGroup", ctx_r0.loginForm);
i0.ɵɵadvance(19);
i0.ɵɵproperty("ngIf", (ctx_r0.entities == null ? null : ctx_r0.entities.length) > 0)("ngIfElse", _r2);
i0.ɵɵadvance(6);
i0.ɵɵproperty("ngIf", ctx_r0.emailAddons && ctx_r0.emailAddons.length > 0)("ngIfElse", _r5);
} }
var UserManagementSetupComponent = /** @class */ (function () {
function UserManagementSetupComponent(fb, http) {
this.fb = fb;
this.http = http;
this.saveAndRestart = new EventEmitter();
this.cancel = new EventEmitter();
this.emailAddons = [];
}
UserManagementSetupComponent.prototype.getSettingsProperty = function (property, defaultValue) {
return (this.settings && this.settings[property]) || defaultValue;
};
UserManagementSetupComponent.prototype.ngOnInit = function () {
var _this = this;
this.http
.get(this.baseUrl + '/infos')
.toPromise()
.then(function (res) {
_this.loginForm = _this.fb.group({
method: [
_this.getSettingsProperty('method', 'session'),
Validators.required
],
user_profile_enabled: [
_this.getSettingsProperty('user_profile_enabled', false)
],
user_profile_entity: [
_this.getSettingsProperty('user_profile_entity', null)
],
email_verification: [
_this.getSettingsProperty('email_verification', false)
],
email_addon: [_this.getSettingsProperty('email_addon', false)],
});
_this.entities = res.entities.filter(function (entity) { return !entity.fromAddon; });
_this.emailAddons = res.addons.filter(function (addon) {
return addon.package === '@materia/sendgrid' ||
addon.package === '@materia/mailjet';
});
if (_this.emailAddons.length === 0) {
_this.loginForm.get('email_verification').disable();
_this.loginForm.get('email_addon').disable();
}
if (!_this.settings || !_this.settings.email_verification) {
_this.loginForm.get('email_addon').disable();
}
if (!_this.settings || !_this.settings.user_profile_enabled) {
_this.loginForm.get('user_profile_entity').disable();
}
if (_this.entities.length === 0) {
_this.loginForm.get('user_profile_enabled').setValue(false);
_this.loginForm.get('user_profile_entity').setValue(null);
_this.loginForm.get('user_profile_enabled').disable();
_this.loginForm.get('user_profile_entity').disable();
}
_this.loginForm
.get('user_profile_enabled')
.valueChanges.subscribe(function (val) {
if (val) {
_this.loginForm.get('user_profile_entity').enable();
}
else {
_this.loginForm.get('user_profile_entity').disable();
}
});
_this.loginForm.get('email_verification').valueChanges.subscribe(function (val) {
if (val) {
_this.loginForm.get('email_addon').enable();
}
else {
_this.loginForm.get('email_addon').disable();
}
});
});
};
UserManagementSetupComponent.prototype.finish = function () {
if (this.loginForm.valid) {
this.saveAndRestart.emit(this.loginForm.value);
}
};
UserManagementSetupComponent.prototype.close = function () {
this.cancel.emit();
};
UserManagementSetupComponent.ctorParameters = function () { return [
{ type: FormBuilder },
{ type: HttpClient }
]; };
UserManagementSetupComponent.ɵfac = function UserManagementSetupComponent_Factory(t) { return new (t || UserManagementSetupComponent)(i0.ɵɵdirectiveInject(i1.FormBuilder), i0.ɵɵdirectiveInject(i2.HttpClient)); };
UserManagementSetupComponent.ɵcmp = i0.ɵɵdefineComponent({ type: UserManagementSetupComponent, selectors: [["materia-user-management-setup"]], inputs: { app: "app", settings: "settings", baseUrl: "baseUrl", token: "token" }, outputs: { saveAndRestart: "saveAndRestart", cancel: "cancel" }, decls: 1, vars: 1, consts: [["style", "max-width: 400px", 3, "formGroup", 4, "ngIf"], [2, "max-width", "400px", 3, "formGroup"], ["mat-dialog-title", "", "fxLayout", "row"], ["fxFlex", "", 2, "position", "relative", "top", "3px", "left", "5px"], ["tabindex", "-1", "mat-icon-button", "", 3, "click"], ["fxLayout", "column"], ["formControlName", "method", "fxLayout", "column"], ["value", "token"], ["value", "session"], ["formControlName", "user_profile_enabled"], [4, "ngIf", "ngIfElse"], ["noEntities", ""], ["formControlName", "email_verification"], ["noEmailAddon", ""], ["mat-raised-button", "", "color", "primary", 3, "click"], ["mat-raised-button", "", 3, "click"], ["placeholder", "Select the user profile entity", "formControlName", "user_profile_entity"], [3, "value", 4, "ngFor", "ngForOf"], [3, "value"], [1, "warning"], ["placeholder", "Select your emailing addon", "formControlName", "email_addon"]], template: function UserManagementSetupComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵtemplate(0, UserManagementSetupComponent_form_0_Template, 33, 5, "form", 0);
} if (rf & 2) {
i0.ɵɵproperty("ngIf", ctx.loginForm);
} }, directives: [i3.NgIf, i1.ɵangular_packages_forms_forms_y, i1.NgControlStatusGroup, i1.FormGroupDirective, i4.MatDialogTitle, i5.DefaultLayoutDirective, i5.DefaultFlexDirective, i6.MatButton, i7.MatIcon, i4.MatDialogContent, i8.MatRadioGroup, i1.NgControlStatus, i1.FormControlName, i8.MatRadioButton, i9.MatCheckbox, i4.MatDialogActions, i10.MatFormField, i11.MatSelect, i3.NgForOf, i12.MatOption], styles: ["mat-form-field[_ngcontent-%COMP%]{width:100%;margin:0 5px}.mat-dialog-content[_ngcontent-%COMP%]{margin:0;padding:0 24px}.mat-dialog-actions[_ngcontent-%COMP%]{padding:12px 24px}h3[_ngcontent-%COMP%]{margin-top:16px;margin-bottom:8px}.warning[_ngcontent-%COMP%]{margin:16px 0;padding:8px;border:1px solid #f44336;color:#f44336}"] });
UserManagementSetupComponent = __decorate([
AddonSetup('@materia/users'),
__metadata("design:paramtypes", [FormBuilder, HttpClient])
], UserManagementSetupComponent);
return UserManagementSetupComponent;
}());
export { UserManagementSetupComponent };
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(UserManagementSetupComponent, [{
type: Component,
args: [{
selector: 'materia-user-management-setup',
templateUrl: './user-management-setup.component.html',
styleUrls: ['./user-management-setup.component.scss']
}]
}], function () { return [{ type: i1.FormBuilder }, { type: i2.HttpClient }]; }, { app: [{
type: Input
}], settings: [{
type: Input
}], baseUrl: [{
type: Input
}], token: [{
type: Input
}], saveAndRestart: [{
type: Output
}], cancel: [{
type: Output
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1tYW5hZ2VtZW50LXNldHVwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BtYXRlcmlhL3VzZXJzLyIsInNvdXJjZXMiOlsidXNlci1tYW5hZ2VtZW50LXNldHVwL3VzZXItbWFuYWdlbWVudC1zZXR1cC5jb21wb25lbnQudHMiLCJ1c2VyLW1hbmFnZW1lbnQtc2V0dXAvdXNlci1tYW5hZ2VtZW50LXNldHVwLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztJQ21CeEMsc0NBQWtFO0lBQUEsWUFBaUI7SUFBQSxpQkFBYTs7O0lBQXBELHNDQUFxQjtJQUFDLGVBQWlCO0lBQWpCLG9DQUFpQjs7O0lBRnJGLHNDQUNDO0lBQUEsc0NBQ0M7SUFBQSxxSEFBa0U7SUFDbkUsaUJBQWE7SUFDZCxpQkFBaUI7OztJQUZILGVBQStCO0lBQS9CLHlDQUErQjs7O0lBSTVDLCtCQUNDO0lBQUEseUZBQ0Q7SUFBQSxpQkFBTTs7O0lBU0wsc0NBQXNFO0lBQUEsWUFBZ0I7SUFBQSxpQkFBYTs7O0lBQXJELHlDQUF1QjtJQUFDLGVBQWdCO0lBQWhCLG9DQUFnQjs7O0lBRnhGLHNDQUNDO0lBQUEsc0NBQ0M7SUFBQSxxSEFBc0U7SUFDdkUsaUJBQWE7SUFDZCxpQkFBaUI7OztJQUZILGVBQWlDO0lBQWpDLDRDQUFpQzs7O0lBSzlDLCtCQUFxQjtJQUFBLHlCQUNwQjtJQUFBLDhCQUFRO0lBQUEsdUJBQU87SUFBQSxpQkFB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LFVBQVU7OzRHQWJsRCw0QkFBNEI7cUVBQTVCLDRCQUE0QjtZQ2R6QyxnRkFDQzs7WUFESyxvQ0FBaUI7O0lEY1YsNEJBQTRCO1FBTnhDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQzt5Q0FtQkgsV0FBVyxFQUFnQixVQUFVO09BYmxELDRCQUE0QixDQStGeEM7dUNBN0dEO0NBNkdDLElBQUE7U0EvRlksNEJBQTRCO2tEQUE1Qiw0QkFBNEI7Y0FMeEMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSwrQkFBK0I7Z0JBQ3pDLFdBQVcsRUFBRSx3Q0FBd0M7Z0JBQ3JELFNBQVMsRUFBRSxDQUFDLHdDQUF3QyxDQUFDO2FBQ3REOztrQkFFRSxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFDTCxLQUFLOztrQkFFTCxNQUFNOztrQkFDTixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBWYWxpZGF0b3JzLCBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBBZGRvblNldHVwIH0gZnJvbSAnQG1hdGVyaWEvYWRkb25zJztcbmltcG9ydCB7IElBcHAsIElFbnRpdHkgfSBmcm9tICdAbWF0ZXJpYS9pbnRlcmZhY2VzJztcblxuaW1wb3J0IHsgVXNlck1hbmFnZW1lbnRTZXR0aW5ncyB9IGZyb20gJy4uL21vZGVscy91c2VyLXNldHRpbmcubW9kZWwnO1xuXG5AQWRkb25TZXR1cCgnQG1hdGVyaWEvdXNlcnMnKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0ZXJpYS11c2VyLW1hbmFnZW1lbnQtc2V0dXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vdXNlci1tYW5hZ2VtZW50LXNldHVwLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdXNlci1tYW5hZ2VtZW50LXNldHVwLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgVXNlck1hbmFnZW1lbnRTZXR1cENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGFwcDogSUFwcDtcbiAgQElucHV0KCkgc2V0dGluZ3M6IFVzZXJNYW5hZ2VtZW50U2V0dGluZ3M7XG4gIEBJbnB1dCgpIGJhc2VVcmw6IHN0cmluZztcbiAgQElucHV0KCkgdG9rZW46IHN0cmluZztcblxuICBAT3V0cHV0KCkgc2F2ZUFuZFJlc3RhcnQgPSBuZXcgRXZlbnRFbWl0dGVyPFVzZXJNYW5hZ2VtZW50U2V0dGluZ3M+KCk7XG4gIEBPdXRwdXQoKSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG5cbiAgbG9naW5Gb3JtOiBGb3JtR3JvdXA7XG4gIGVudGl0aWVzOiBJRW50aXR5W107XG4gIGVtYWlsQWRkb25zID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cblxuICBwcml2YXRlIGdldFNldHRpbmdzUHJvcGVydHkocHJvcGVydHksIGRlZmF1bHRWYWx1ZSkge1xuICAgIHJldHVybiAodGhpcy5zZXR0aW5ncyAmJiB0aGlzLnNldHRpbmdzW3Byb3BlcnR5XSkgfHwgZGVmYXVsdFZhbHVlO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5odHRwXG4gICAgICAuZ2V0PGFueT4odGhpcy5iYXNlVXJsICsgJy9pbmZvcycpXG4gICAgICAudG9Qcm9taXNlKClcbiAgICAgIC50aGVuKHJlcyA9PiB7XG4gICAgICAgIHRoaXMubG9naW5Gb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICAgICAgbWV0aG9kOiBbXG4gICAgICAgICAgICB0aGlzLmdldFNldHRpbmdzUHJvcGVydHkoJ21ldGhvZCcsICdzZXNzaW9uJyksXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXG4gICAgICAgICAgXSxcbiAgICAgICAgICB1c2VyX3Byb2ZpbGVfZW5hYmxlZDogW1xuICAgICAgICAgICAgdGhpcy5nZXRTZXR0aW5nc1Byb3BlcnR5KCd1c2VyX3Byb2ZpbGVfZW5hYmxlZCcsIGZhbHNlKVxuICAgICAgICAgIF0sXG4gICAgICAgICAgdXNlcl9wcm9maWxlX2VudGl0eTogW1xuICAgICAgICAgICAgdGhpcy5nZXRTZXR0aW5nc1Byb3BlcnR5KCd1c2VyX3Byb2ZpbGVfZW50aXR5JywgbnVsbClcbiAgICAgICAgICBdLFxuICAgICAgICAgIGVtYWlsX3ZlcmlmaWNhdGlvbjogW1xuICAgICAgICAgICAgdGhpcy5nZXRTZXR0aW5nc1Byb3BlcnR5KCdlbWFpbF92ZXJpZmljYXRpb24nLCBmYWxzZSlcbiAgICAgICAgICBdLFxuICAgICAgICAgIGVtYWlsX2FkZG9uOiBbdGhpcy5nZXRTZXR0aW5nc1Byb3BlcnR5KCdlbWFpbF9hZGRvbicsIGZhbHNlKV0sXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVudGl0aWVzID0gcmVzLmVudGl0aWVzLmZpbHRlcigoZW50aXR5OiBJRW50aXR5KSA9PiAhIGVudGl0eS5mcm9tQWRkb24pO1xuICAgICAgICB0aGlzLmVtYWlsQWRkb25zID0gcmVzLmFkZG9ucy5maWx0ZXIoXG4gICAgICAgICAgYWRkb24gPT5cbiAgICAgICAgICAgIGFkZG9uLnBhY2thZ2UgPT09ICdAbWF0ZXJpYS9zZW5kZ3JpZCcgfHxcbiAgICAgICAgICAgIGFkZG9uLnBhY2thZ2UgPT09ICdAbWF0ZXJpYS9tYWlsamV0J1xuICAgICAgICApO1xuXG4gICAgICAgIGlmICh0aGlzLmVtYWlsQWRkb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMubG9naW5Gb3JtLmdldCgnZW1haWxfdmVyaWZpY2F0aW9uJykuZGlzYWJsZSgpO1xuICAgICAgICAgIHRoaXMubG9naW5Gb3JtLmdldCgnZW1haWxfYWRkb24nKS5kaXNhYmxlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoICEgdGhpcy5zZXR0aW5ncyB8fCAhIHRoaXMuc2V0dGluZ3MuZW1haWxfdmVyaWZpY2F0aW9uKSB7XG4gICAgICAgICAgdGhpcy5sb2dpbkZvcm0uZ2V0KCdlbWFpbF9hZGRvbicpLmRpc2FibGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggISB0aGlzLnNldHRpbmdzIHx8ICEgdGhpcy5zZXR0aW5ncy51c2VyX3Byb2ZpbGVfZW5hYmxlZCkge1xuICAgICAgICAgIHRoaXMubG9naW5Gb3JtLmdldCgndXNlcl9wcm9maWxlX2VudGl0eScpLmRpc2FibGUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmVudGl0aWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMubG9naW5Gb3JtLmdldCgndXNlcl9wcm9maWxlX2VuYWJsZWQnKS5zZXRWYWx1ZShmYWxzZSk7XG4gICAgICAgICAgdGhpcy5sb2dpbkZvcm0uZ2V0KCd1c2VyX3Byb2ZpbGVfZW50aXR5Jykuc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgdGhpcy5sb2dpbkZvcm0uZ2V0KCd1c2VyX3Byb2ZpbGVfZW5hYmxlZCcpLmRpc2FibGUoKTtcbiAgICAgICAgICB0aGlzLmxvZ2luRm9ybS5nZXQoJ3VzZXJfcHJvZmlsZV9lbnRpdHknKS5kaXNhYmxlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2dpbkZvcm1cbiAgICAgICAgICAuZ2V0KCd1c2VyX3Byb2ZpbGVfZW5hYmxlZCcpXG4gICAgICAgICAgLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsID0+IHtcbiAgICAgICAgICAgIGlmICh2YWwpIHtcbiAgICAgICAgICAgICAgdGhpcy5sb2dpbkZvcm0uZ2V0KCd1c2VyX3Byb2ZpbGVfZW50aXR5JykuZW5hYmxlKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmxvZ2luRm9ybS5nZXQoJ3VzZXJfcHJvZmlsZV9lbnRpdHknKS5kaXNhYmxlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5sb2dpbkZvcm0uZ2V0KCdlbWFpbF92ZXJpZmljYXRpb24nKS52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHZhbCA9PiB7XG4gICAgICAgICAgaWYgKHZhbCkge1xuICAgICAgICAgICAgdGhpcy5sb2dpbkZvcm0uZ2V0KCdlbWFpbF9hZGRvbicpLmVuYWJsZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmxvZ2luRm9ybS5nZXQoJ2VtYWlsX2FkZG9uJykuZGlzYWJsZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIGZpbmlzaCgpIHtcbiAgICBpZiAodGhpcy5sb2dpbkZvcm0udmFsaWQpIHtcbiAgICAgIHRoaXMuc2F2ZUFuZFJlc3RhcnQuZW1pdCh0aGlzLmxvZ2luRm9ybS52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICB9XG59XG4iLCI8Zm9ybSAqbmdJZj1cImxvZ2luRm9ybVwiIFtmb3JtR3JvdXBdPVwibG9naW5Gb3JtXCIgc3R5bGU9XCJtYXgtd2lkdGg6IDQwMHB4XCI+XG5cdDxoMiBtYXQtZGlhbG9nLXRpdGxlIGZ4TGF5b3V0PVwicm93XCI+XG5cdFx0PHNwYW4gZnhGbGV4IHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyB0b3A6IDNweDsgbGVmdDogNXB4O1wiPlVzZXIgTWFuYWdlbWVudCAtIFNldHVwPC9zcGFuPlxuXHRcdDxidXR0b24gKGNsaWNrKT1cImNsb3NlKClcIiB0YWJpbmRleD1cIi0xXCIgbWF0LWljb24tYnV0dG9uPlxuXHRcdFx0PG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cblx0XHQ8L2J1dHRvbj5cblx0PC9oMj5cblx0PG1hdC1kaWFsb2ctY29udGVudD5cblx0XHQ8ZGl2IGZ4TGF5b3V0PVwiY29sdW1uXCI+XG5cdFx0XHQ8aDM+XG5cdFx0XHRcdEF1dGhlbnRpY2F0aW9uIG1ldGhvZFxuXHRcdFx0PC9oMz5cblx0XHRcdDxtYXQtcmFkaW8tZ3JvdXAgZm9ybUNvbnRyb2xOYW1lPVwibWV0aG9kXCIgZnhMYXlvdXQ9XCJjb2x1bW5cIj5cblx0XHRcdFx0PG1hdC1yYWRpby1idXR0b24gdmFsdWU9XCJ0b2tlblwiPlRva2VuIGJhc2VkIGF1dGhlbnRpY2F0aW9uIChtb2JpbGUgcmVhZHkpPC9tYXQtcmFkaW8tYnV0dG9uPlxuXHRcdFx0XHQ8bWF0LXJhZGlvLWJ1dHRvbiB2YWx1ZT1cInNlc3Npb25cIj5TZXNzaW9uIGJhc2VkIGF1dGhlbnRpY2F0aW9uPC9tYXQtcmFkaW8tYnV0dG9uPlxuXHRcdFx0PC9tYXQtcmFkaW8tZ3JvdXA+XG5cdFx0XHRcblx0XHRcdDxoMz5cblx0XHRcdFx0PG1hdC1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJ1c2VyX3Byb2ZpbGVfZW5hYmxlZFwiPlVzZXIgcHJvZmlsZTwvbWF0LWNoZWNrYm94PlxuXHRcdFx0PC9oMz5cblx0XHRcdDxtYXQtZm9ybS1maWVsZCAqbmdJZj1cImVudGl0aWVzPy5sZW5ndGggPiAwOyBlbHNlIG5vRW50aXRpZXNcIj5cblx0XHRcdFx0PG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdGhlIHVzZXIgcHJvZmlsZSBlbnRpdHlcIiBmb3JtQ29udHJvbE5hbWU9XCJ1c2VyX3Byb2ZpbGVfZW50aXR5XCI+XG5cdFx0XHRcdFx0PG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGVudGl0eSBvZiBlbnRpdGllc1wiIFt2YWx1ZV09XCJlbnRpdHkubmFtZVwiPnt7IGVudGl0eS5uYW1lIH19PC9tYXQtb3B0aW9uPlxuXHRcdFx0XHQ8L21hdC1zZWxlY3Q+XG5cdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxuXHRcdFx0PG5nLXRlbXBsYXRlICNub0VudGl0aWVzPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwid2FybmluZ1wiPlxuXHRcdFx0XHRcdE5vIGVudGl0eSBmb3VuZC4gWW91IG5lZWQgYW4gZW50aXR5IHRvIGFkZCBjdXN0b20gZmllbGRzIHRvIHlvdXIgdXNlcnMuXG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9uZy10ZW1wbGF0ZT5cblx0XHRcblx0XHRcdDxoMz5cblx0XHRcdFx0PG1hdC1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbF92ZXJpZmljYXRpb25cIj5FbWFpbHMgZW5hYmxlZDwvbWF0LWNoZWNrYm94PlxuXHRcdFx0PC9oMz5cblxuXHRcdFx0PG1hdC1mb3JtLWZpZWxkICpuZ0lmPVwiZW1haWxBZGRvbnMgJiYgZW1haWxBZGRvbnMubGVuZ3RoID4gMDsgZWxzZSBub0VtYWlsQWRkb25cIj5cblx0XHRcdFx0PG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJTZWxlY3QgeW91ciBlbWFpbGluZyBhZGRvblwiIGZvcm1Db250cm9sTmFtZT1cImVtYWlsX2FkZG9uXCI+XG5cdFx0XHRcdFx0PG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IGFkZG9uIG9mIGVtYWlsQWRkb25zXCIgW3ZhbHVlXT1cImFkZG9uLnBhY2thZ2VcIj57eyBhZGRvbi5uYW1lIH19PC9tYXQtb3B0aW9uPlxuXHRcdFx0XHQ8L21hdC1zZWxlY3Q+XG5cdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxuXG5cdFx0XHQ8bmctdGVtcGxhdGUgI25vRW1haWxBZGRvbj5cblx0XHRcdFx0PGRpdiBjbGFzcz1cIndhcm5pbmdcIj5Zb3UgbmVlZFxuXHRcdFx0XHRcdDxzdHJvbmc+TWFpbGpldDwvc3Ryb25nPiBhZGRvbiBpbnN0YWxsZWRcblx0XHRcdFx0XHQ8YnI+dG8gc2VuZCBlbWFpbCBmcm9tIHlvdXIgTWF0ZXJpYSBBcHBsaWNhdGlvbiBzdWNoIGFzIGEgc2lnbnVwIGVtYWlsPC9kaXY+XG5cdFx0XHQ8L25nLXRlbXBsYXRlPlxuXHRcdDwvZGl2PlxuXHQ8L21hdC1kaWFsb2ctY29udGVudD5cblx0PG1hdC1kaWFsb2ctYWN0aW9ucz5cblx0XHQ8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJmaW5pc2goKVwiPlNhdmU8L2J1dHRvbj5cblx0XHQ8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIChjbGljayk9XCJjbG9zZSgpXCI+Q2FuY2VsPC9idXR0b24+XG5cdDwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuPC9mb3JtPiJdfQ==