@materia/users
Version:
Signin/signup your users in your Materia application
243 lines • 26.7 kB
JavaScript
import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { FormBuilder, Validators } from '@angular/forms';
import { MatExpansionPanel } from '@angular/material/expansion';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common/http";
import * as i2 from "@angular/forms";
import * as i3 from "@angular/material/expansion";
import * as i4 from "@angular/flex-layout/flex";
import * as i5 from "@angular/material/form-field";
import * as i6 from "@angular/material/input";
import * as i7 from "@angular/material/select";
import * as i8 from "@angular/common";
import * as i9 from "@angular/material/button";
import * as i10 from "@angular/material/core";
const _c0 = ["signupPanel"];
const _c1 = ["changeEmailPanel"];
const _c2 = ["lostPasswordPanel"];
function EmailSettingsComponent_mat_option_11_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "mat-option", 20);
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
} if (rf & 2) {
const t_r6 = ctx.$implicit;
i0.ɵɵproperty("value", t_r6.id);
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate2("", t_r6.name, " (", t_r6.id, ")");
} }
function EmailSettingsComponent_mat_option_23_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "mat-option", 20);
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
} if (rf & 2) {
const t_r7 = ctx.$implicit;
i0.ɵɵproperty("value", t_r7.id);
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate2("", t_r7.name, " (", t_r7.id, ")");
} }
function EmailSettingsComponent_mat_option_35_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "mat-option", 20);
i0.ɵɵtext(1);
i0.ɵɵelementEnd();
} if (rf & 2) {
const t_r8 = ctx.$implicit;
i0.ɵɵproperty("value", t_r8.id);
i0.ɵɵadvance(1);
i0.ɵɵtextInterpolate2("", t_r8.name, " (", t_r8.id, ")");
} }
export class EmailSettingsComponent {
constructor(http, form) {
this.http = http;
this.form = form;
this.hide = new EventEmitter();
this.save = new EventEmitter();
}
ngOnInit() {
this.emailForm = this.form.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', '')
],
email_verification: [
this.getSettingsProperty('email_verification', false)
],
email_addon: [this.getSettingsProperty('email_addon', false)],
template_signup: [this.getSettingsProperty('template_signup', '')],
redirect_signup: [this.getSettingsProperty('redirect_signup', '')],
subject_signup: [this.getSettingsProperty('subject_signup', '')],
subject_lost_password: [this.getSettingsProperty('subject_lost_password', '')],
subject_change_email: [this.getSettingsProperty('subject_change_email', '')],
template_lost_password: [
this.getSettingsProperty('template_lost_password', '')
],
redirect_lost_password: [
this.getSettingsProperty('redirect_lost_password', '')
],
template_change_email: [
this.getSettingsProperty('template_change_email', '')
],
redirect_change_email: [
this.getSettingsProperty('redirect_change_email', '')
]
});
this.refreshTemplates();
}
refreshTemplates() {
if (this.settings.email_addon === '@materia/mailjet') {
this.http
.post(`${this.baseUrl}/entities/mailjet_template/queries/list`, { limit: 1000 })
.subscribe(data => {
this.templates = data.data
.filter(row => row.OwnerId !== 0)
.map(row => {
return {
name: row.Name,
id: row.ID
};
});
});
}
else if (this.settings.email_addon === '@materia/sendgrid') {
this.http
.post(`${this.baseUrl}/entities/sendgrid_template/queries/listTemplates`, {})
.subscribe(data => {
this.templates = data && data.data && data.data;
// TODO...
});
}
}
saveEmailSettings() {
if (this.emailForm.valid) {
this.save.emit(this.emailForm.value);
}
}
cancel() {
this.hide.emit();
}
getSettingsProperty(property, defaultValue) {
return (this.settings && this.settings[property]) || defaultValue;
}
}
EmailSettingsComponent.ɵfac = function EmailSettingsComponent_Factory(t) { return new (t || EmailSettingsComponent)(i0.ɵɵdirectiveInject(i1.HttpClient), i0.ɵɵdirectiveInject(i2.FormBuilder)); };
EmailSettingsComponent.ɵcmp = i0.ɵɵdefineComponent({ type: EmailSettingsComponent, selectors: [["materia-user-management-email-settings"]], viewQuery: function EmailSettingsComponent_Query(rf, ctx) { if (rf & 1) {
i0.ɵɵstaticViewQuery(_c0, true);
i0.ɵɵstaticViewQuery(_c1, true);
i0.ɵɵstaticViewQuery(_c2, true);
} if (rf & 2) {
var _t;
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.signupPanel = _t.first);
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.changeEmailPanel = _t.first);
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.lostPasswordPanel = _t.first);
} }, inputs: { settings: "settings", baseUrl: "baseUrl" }, outputs: { hide: "hide", save: "save" }, decls: 43, vars: 5, consts: [[3, "formGroup"], ["fxLayout", "column", 3, "expanded"], ["signupPanel", ""], ["fxLayout", "column", 1, "panel-content"], ["matInput", "", "placeholder", "Subject", "formControlName", "subject_signup"], ["placeholder", "Template", "formControlName", "template_signup"], [3, "value", 4, "ngFor", "ngForOf"], ["matInput", "", "placeholder", "Redirect URL", "formControlName", "redirect_signup"], ["changeEmailPanel", ""], ["matInput", "", "placeholder", "Subject", "formControlName", "subject_change_email"], ["placeholder", "Template", "formControlName", "template_change_email"], ["matInput", "", "placeholder", "Redirect URL", "formControlName", "redirect_change_email"], ["fxLayout", "column"], ["lostPasswordPanel", ""], ["matInput", "", "placeholder", "Subject", "formControlName", "subject_lost_password"], ["placeholder", "Template", "formControlName", "template_lost_password"], ["matInput", "", "placeholder", "Redirect URL", "formControlName", "redirect_lost_password"], [2, "margin", "16px 0", "text-align", "center"], ["mat-raised-button", "", "color", "primary", 2, "margin-right", "8px", 3, "click"], ["mat-raised-button", "", 3, "click"], [3, "value"]], template: function EmailSettingsComponent_Template(rf, ctx) { if (rf & 1) {
i0.ɵɵelementStart(0, "form", 0);
i0.ɵɵelementStart(1, "mat-accordion");
i0.ɵɵelementStart(2, "mat-expansion-panel", 1, 2);
i0.ɵɵelementStart(4, "mat-expansion-panel-header");
i0.ɵɵtext(5, " Signup ");
i0.ɵɵelementEnd();
i0.ɵɵelementStart(6, "div", 3);
i0.ɵɵelementStart(7, "mat-form-field");
i0.ɵɵelement(8, "input", 4);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(9, "mat-form-field");
i0.ɵɵelementStart(10, "mat-select", 5);
i0.ɵɵtemplate(11, EmailSettingsComponent_mat_option_11_Template, 2, 3, "mat-option", 6);
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementStart(12, "mat-form-field");
i0.ɵɵelement(13, "input", 7);
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementStart(14, "mat-expansion-panel", null, 8);
i0.ɵɵelementStart(16, "mat-expansion-panel-header");
i0.ɵɵtext(17, " Change email ");
i0.ɵɵelementEnd();
i0.ɵɵelementStart(18, "div", 3);
i0.ɵɵelementStart(19, "mat-form-field");
i0.ɵɵelement(20, "input", 9);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(21, "mat-form-field");
i0.ɵɵelementStart(22, "mat-select", 10);
i0.ɵɵtemplate(23, EmailSettingsComponent_mat_option_23_Template, 2, 3, "mat-option", 6);
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementStart(24, "mat-form-field");
i0.ɵɵelement(25, "input", 11);
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementStart(26, "mat-expansion-panel", 12, 13);
i0.ɵɵelementStart(28, "mat-expansion-panel-header");
i0.ɵɵtext(29, " Lost password ");
i0.ɵɵelementEnd();
i0.ɵɵelementStart(30, "div", 3);
i0.ɵɵelementStart(31, "mat-form-field");
i0.ɵɵelement(32, "input", 14);
i0.ɵɵelementEnd();
i0.ɵɵelementStart(33, "mat-form-field");
i0.ɵɵelementStart(34, "mat-select", 15);
i0.ɵɵtemplate(35, EmailSettingsComponent_mat_option_35_Template, 2, 3, "mat-option", 6);
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementStart(36, "mat-form-field");
i0.ɵɵelement(37, "input", 16);
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementStart(38, "div", 17);
i0.ɵɵelementStart(39, "button", 18);
i0.ɵɵlistener("click", function EmailSettingsComponent_Template_button_click_39_listener() { return ctx.saveEmailSettings(); });
i0.ɵɵtext(40, "Save");
i0.ɵɵelementEnd();
i0.ɵɵelementStart(41, "button", 19);
i0.ɵɵlistener("click", function EmailSettingsComponent_Template_button_click_41_listener() { return ctx.hide.emit(); });
i0.ɵɵtext(42, "Cancel");
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
i0.ɵɵelementEnd();
} if (rf & 2) {
i0.ɵɵproperty("formGroup", ctx.emailForm);
i0.ɵɵadvance(2);
i0.ɵɵproperty("expanded", true);
i0.ɵɵadvance(9);
i0.ɵɵproperty("ngForOf", ctx.templates);
i0.ɵɵadvance(12);
i0.ɵɵproperty("ngForOf", ctx.templates);
i0.ɵɵadvance(12);
i0.ɵɵproperty("ngForOf", ctx.templates);
} }, directives: [i2.ɵangular_packages_forms_forms_y, i2.NgControlStatusGroup, i2.FormGroupDirective, i3.MatAccordion, i3.MatExpansionPanel, i4.DefaultLayoutDirective, i3.MatExpansionPanelHeader, i5.MatFormField, i6.MatInput, i2.DefaultValueAccessor, i2.NgControlStatus, i2.FormControlName, i7.MatSelect, i8.NgForOf, i9.MatButton, i10.MatOption], styles: [".panel-content[_ngcontent-%COMP%]{margin:0 24px!important}"] });
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(EmailSettingsComponent, [{
type: Component,
args: [{
selector: 'materia-user-management-email-settings',
templateUrl: './email-settings.component.html',
styleUrls: ['./email-settings.component.scss']
}]
}], function () { return [{ type: i1.HttpClient }, { type: i2.FormBuilder }]; }, { settings: [{
type: Input
}], baseUrl: [{
type: Input
}], hide: [{
type: Output
}], save: [{
type: Output
}], signupPanel: [{
type: ViewChild,
args: ['signupPanel', { static: true }]
}], changeEmailPanel: [{
type: ViewChild,
args: ['changeEmailPanel', { static: true }]
}], lostPasswordPanel: [{
type: ViewChild,
args: ['lostPasswordPanel', { static: true }]
}] }); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtc2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQG1hdGVyaWEvdXNlcnMvIiwic291cmNlcyI6WyJlbWFpbHMtc2V0dGluZ3MvZW1haWwtc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiZW1haWxzLXNldHRpbmdzL2VtYWlsLXNldHRpbmdzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQWEsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3BFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0lDSTFELHNDQUF1RDtJQUFBLFlBQXVCO0lBQUEsaUJBQWE7OztJQUFuRCwrQkFBYztJQUFDLGVBQXVCO0lBQXZCLHdEQUF1Qjs7O0lBcUI5RSxzQ0FBdUQ7SUFBQSxZQUF1QjtJQUFBLGlCQUFhOzs7SUFBbkQsK0JBQWM7SUFBQyxlQUF1QjtJQUF2Qix3REFBdUI7OztJQW9COUUsc0NBQXVEO0lBQUEsWUFBdUI7SUFBQSxpQkFBYTs7O0lBQW5ELCtCQUFjO0lBQUMsZUFBdUI7SUFBdkIsd0RBQXVCOztBRHBDcEYsTUFBTSxPQUFPLHNCQUFzQjtJQWNqQyxZQUFvQixJQUFnQixFQUFVLElBQWlCO1FBQTNDLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFhO1FBVnJELFNBQUksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ2hDLFNBQUksR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBU3lCLENBQUM7SUFFbkUsUUFBUTtRQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcs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bURBQ0M7UUFBQSxnQ0FDRDtRQUFBLGlCQUE2QjtRQUM3QiwrQkFFQztRQUFBLHVDQUNDO1FBQUEsNkJBQ0Q7UUFBQSxpQkFBaUI7UUFDakIsdUNBQ0M7UUFBQSx1Q0FDQztRQUFBLHVGQUF1RDtRQUN4RCxpQkFBYTtRQUNkLGlCQUFpQjtRQUNqQix1Q0FDQztRQUFBLDZCQUNEO1FBQUEsaUJBQWlCO1FBQ2xCLGlCQUFNO1FBQ1AsaUJBQXNCO1FBQ3ZCLGlCQUFnQjtRQUNoQixnQ0FDQztRQUFBLG1DQUFrRztRQUF4RCxvR0FBUyx1QkFBbUIsSUFBQztRQUEyQixxQkFBSTtRQUFBLGlCQUFTO1FBQy9HLG1DQUFnRDtRQUF0QixvR0FBUyxlQUFXLElBQUM7UUFBQyx1QkFBTTtRQUFBLGlCQUFTO1FBQ2hFLGlCQUFNO1FBQ1AsaUJBQU87O1FBcEVELHlDQUF1QjtRQUVPLGVBQWlCO1FBQWpCLCtCQUFpQjtRQVluQyxlQUEyQjtRQUEzQix1Q0FBMkI7UUFxQjNCLGdCQUEyQjtRQUEzQix1Q0FBMkI7UUFvQjNCLGdCQUEyQjtRQUEzQix1Q0FBMkI7O2tERHBDaEMsc0JBQXNCO2NBTGxDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsd0NBQXdDO2dCQUNsRCxXQUFXLEVBQUUsaUNBQWlDO2dCQUM5QyxTQUFTLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQzthQUMvQzs7a0JBRUUsS0FBSzs7a0JBQ0wsS0FBSzs7a0JBRUwsTUFBTTs7a0JBQ04sTUFBTTs7a0JBRU4sU0FBUzttQkFBQyxhQUFhLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOztrQkFDekMsU0FBUzttQkFBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7O2tCQUM5QyxTQUFTO21CQUFDLG1CQUFtQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1CdWlsZGVyLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0RXhwYW5zaW9uUGFuZWwgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9leHBhbnNpb24nO1xuXG5pbXBvcnQgeyBVc2VyTWFuYWdlbWVudFNldHRpbmdzIH0gZnJvbSAnY2xpZW50L21vZGVscy91c2VyLXNldHRpbmcubW9kZWwnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXRlcmlhLXVzZXItbWFuYWdlbWVudC1lbWFpbC1zZXR0aW5ncycsXG4gIHRlbXBsYXRlVXJsOiAnLi9lbWFpbC1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VtYWlsLXNldHRpbmdzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRW1haWxTZXR0aW5nc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHNldHRpbmdzOiBVc2VyTWFuYWdlbWVudFNldHRpbmdzO1xuICBASW5wdXQoKSBiYXNlVXJsOiBzdHJpbmc7XG5cbiAgQE91dHB1dCgpIGhpZGUgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIEBPdXRwdXQoKSBzYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQFZpZXdDaGlsZCgnc2lnbnVwUGFuZWwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBzaWdudXBQYW5lbDogTWF0RXhwYW5zaW9uUGFuZWw7XG4gIEBWaWV3Q2hpbGQoJ2NoYW5nZUVtYWlsUGFuZWwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBjaGFuZ2VFbWFpbFBhbmVsOiBNYXRFeHBhbnNpb25QYW5lbDtcbiAgQFZpZXdDaGlsZCgnbG9zdFBhc3N3b3JkUGFuZWwnLCB7IHN0YXRpYzogdHJ1ZSB9KSBsb3N0UGFzc3dvcmRQYW5lbDogTWF0RXhwYW5zaW9uUGFuZWw7XG5cbiAgZW1haWxGb3JtOiBGb3JtR3JvdXA7XG4gIHRlbXBsYXRlczogQXJyYXk8eyBuYW1lOiBzdHJpbmc7IGlkOiBudW1iZXIgfT47XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGZvcm06IEZvcm1CdWlsZGVyKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZW1haWxGb3JtID0gdGhpcy5mb3JtLmdyb3VwKHtcbiAgICAgIG1ldGhvZDogW1xuICAgICAgICB0aGlzLmdldFNldHRpbmdzUHJvcGVydHkoJ21ldGhvZCcsICdzZXNzaW9uJyksXG4gICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcbiAgICAgIF0sXG4gICAgICB1c2VyX3Byb2ZpbGVfZW5hYmxlZDogW1xuICAgICAgICB0aGlzLmdldFNldHRpbmdzUHJvcGVydHkoJ3VzZXJfcHJvZmlsZV9lbmFibGVkJywgZmFsc2UpXG4gICAgICBdLFxuICAgICAgdXNlcl9wcm9maWxlX2VudGl0eTogW1xuICAgICAgICB0aGlzLmdldFNldHRpbmdzUHJvcGVydHkoJ3VzZXJfcHJvZmlsZV9lbnRpdHknLCAnJylcbiAgICAgIF0sXG4gICAgICBlbWFpbF92ZXJpZmljYXRpb246IFtcbiAgICAgICAgdGhpcy5nZXRTZXR0aW5nc1Byb3BlcnR5KCdlbWFpbF92ZXJpZmljYXRpb24nLCBmYWxzZSlcbiAgICAgIF0sXG4gICAgICBlbWFpbF9hZGRvbjogW3RoaXMuZ2V0U2V0dGluZ3NQcm9wZXJ0eSgnZW1haWxfYWRkb24nLCBmYWxzZSldLFxuICAgICAgdGVtcGxhdGVfc2lnbnVwOiBbdGhpcy5nZXRTZXR0aW5nc1Byb3BlcnR5KCd0ZW1wbGF0ZV9zaWdudXAnLCAnJyldLFxuICAgICAgcmVkaXJlY3Rfc2lnbnVwOiBbdGhpcy5nZXRTZXR0aW5nc1Byb3BlcnR5KCdyZWRpcmVjdF9zaWdudXAnLCAnJyldLFxuICAgICAgc3ViamVjdF9zaWdudXA6IFt0aGlzLmdldFNldHRpbmdzUHJvcGVydHkoJ3N1YmplY3Rfc2lnbnVwJywgJycpXSxcbiAgICAgIHN1YmplY3RfbG9zdF9wYXNzd29yZDogW3RoaXMuZ2V0U2V0dGluZ3NQcm9wZXJ0eSgnc3ViamVjdF9sb3N0X3Bhc3N3b3JkJywgJycpXSxcbiAgICAgIHN1YmplY3RfY2hhbmdlX2VtYWlsOiBbdGhpcy5nZXRTZXR0aW5nc1Byb3BlcnR5KCdzdWJqZWN0X2NoYW5nZV9lbWFpbCcsICcnKV0sXG4gICAgICB0ZW1wbGF0ZV9sb3N0X3Bhc3N3b3JkOiBbXG4gICAgICAgIHRoaXMuZ2V0U2V0dGluZ3NQcm9wZXJ0eSgndGVtcGxhdGVfbG9zdF9wYXNzd29yZCcsICcnKVxuICAgICAgXSxcbiAgICAgIHJlZGlyZWN0X2xvc3RfcGFzc3dvcmQ6IFtcbiAgICAgICAgdGhpcy5nZXRTZXR0aW5nc1Byb3BlcnR5KCdyZWRpcmVjdF9sb3N0X3Bhc3N3b3JkJywgJycpXG4gICAgICBdLFxuICAgICAgdGVtcGxhdGVfY2hhbmdlX2VtYWlsOiBbXG4gICAgICAgIHRoaXMuZ2V0U2V0dGluZ3NQcm9wZXJ0eSgndGVtcGxhdGVfY2hhbmdlX2VtYWlsJywgJycpXG4gICAgICBdLFxuICAgICAgcmVkaXJlY3RfY2hhbmdlX2VtYWlsOiBbXG4gICAgICAgIHRoaXMuZ2V0U2V0dGluZ3NQcm9wZXJ0eSgncmVkaXJlY3RfY2hhbmdlX2VtYWlsJywgJycpXG4gICAgICBdXG4gICAgfSk7XG5cbiAgICB0aGlzLnJlZnJlc2hUZW1wbGF0ZXMoKTtcbiAgfVxuXG4gIHJlZnJlc2hUZW1wbGF0ZXMoKSB7XG4gICAgaWYgKHRoaXMuc2V0dGluZ3MuZW1haWxfYWRkb24gPT09ICdAbWF0ZXJpYS9tYWlsamV0Jykge1xuICAgICAgdGhpcy5odHRwXG4gICAgICAgIC5wb3N0PGFueT4oYCR7dGhpcy5iYXNlVXJsfS9lbnRpdGllcy9tYWlsamV0X3RlbXBsYXRlL3F1ZXJpZXMvbGlzdGAsIHtsaW1pdDogMTAwMH0pXG4gICAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgdGhpcy50ZW1wbGF0ZXMgPSBkYXRhLmRhdGFcbiAgICAgICAgICAgIC5maWx0ZXIocm93ID0+IHJvdy5Pd25lcklkICE9PSAwKVxuICAgICAgICAgICAgLm1hcChyb3cgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIG5hbWU6IHJvdy5OYW1lLFxuICAgICAgICAgICAgICAgIGlkOiByb3cuSURcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2V0dGluZ3MuZW1haWxfYWRkb24gPT09ICdAbWF0ZXJpYS9zZW5kZ3JpZCcpIHtcbiAgICAgIHRoaXMuaHR0cFxuICAgICAgICAucG9zdDxhbnk+KFxuICAgICAgICAgIGAke3RoaXMuYmFzZVVybH0vZW50aXRpZXMvc2VuZGdyaWRfdGVtcGxhdGUvcXVlcmllcy9saXN0VGVtcGxhdGVzYCxcbiAgICAgICAgICB7fVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICAgICAgdGhpcy50ZW1wbGF0ZXMgPSBkYXRhICYmIGRhdGEuZGF0YSAmJiBkYXRhLmRhdGE7XG4gICAgICAgICAgLy8gVE9ETy4uLlxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBzYXZlRW1haWxTZXR0aW5ncygpIHtcbiAgICBpZiAodGhpcy5lbWFpbEZvcm0udmFsaWQpIHtcbiAgICAgIHRoaXMuc2F2ZS5lbWl0KHRoaXMuZW1haWxGb3JtLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBjYW5jZWwoKSB7XG4gICAgdGhpcy5oaWRlLmVtaXQoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U2V0dGluZ3NQcm9wZXJ0eShwcm9wZXJ0eSwgZGVmYXVsdFZhbHVlKSB7XG4gICAgcmV0dXJuICh0aGlzLnNldHRpbmdzICYmIHRoaXMuc2V0dGluZ3NbcHJvcGVydHldKSB8fCBkZWZhdWx0VmFsdWU7XG4gIH1cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwiZW1haWxGb3JtXCI+XG5cdDxtYXQtYWNjb3JkaW9uPlxuXHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsICNzaWdudXBQYW5lbCBbZXhwYW5kZWRdPVwidHJ1ZVwiIGZ4TGF5b3V0PVwiY29sdW1uXCI+XG5cdFx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG5cdFx0XHRcdFNpZ251cFxuXHRcdFx0PC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cblxuXHRcdFx0PGRpdiBjbGFzcz1cInBhbmVsLWNvbnRlbnRcIiBmeExheW91dD1cImNvbHVtblwiPlxuXHRcdFx0XHQ8bWF0LWZvcm0tZmllbGQ+XG5cdFx0XHRcdFx0PGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwiU3ViamVjdFwiIGZvcm1Db250cm9sTmFtZT1cInN1YmplY3Rfc2lnbnVwXCI+XG5cdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XG5cblx0XHRcdFx0PG1hdC1mb3JtLWZpZWxkPlxuXHRcdFx0XHRcdDxtYXQtc2VsZWN0IHBsYWNlaG9sZGVyPVwiVGVtcGxhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJ0ZW1wbGF0ZV9zaWdudXBcIj5cblx0XHRcdFx0XHRcdDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCB0IG9mIHRlbXBsYXRlc1wiIFt2YWx1ZV09XCJ0LmlkXCI+e3sgdC5uYW1lIH19ICh7e3QuaWR9fSk8L21hdC1vcHRpb24+XG5cdFx0XHRcdFx0PC9tYXQtc2VsZWN0PlxuXHRcdFx0XHQ8L21hdC1mb3JtLWZpZWxkPlxuXHRcdFx0XHQ8bWF0LWZvcm0tZmllbGQ+XG5cdFx0XHRcdFx0PGlucHV0IG1hdElucHV0IHBsYWNlaG9sZGVyPVwiUmVkaXJlY3QgVVJMXCIgZm9ybUNvbnRyb2xOYW1lPVwicmVkaXJlY3Rfc2lnbnVwXCI+XG5cdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWw+XG5cblx0XHQ8bWF0LWV4cGFuc2lvbi1wYW5lbCAjY2hhbmdlRW1haWxQYW5lbD5cblx0XHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cblx0XHRcdFx0Q2hhbmdlIGVtYWlsXG5cdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuXG5cdFx0XHQ8ZGl2IGNsYXNzPVwicGFuZWwtY29udGVudFwiIGZ4TGF5b3V0PVwiY29sdW1uXCI+XG5cdFx0XHRcdDxtYXQtZm9ybS1maWVsZD5cblx0XHRcdFx0XHQ8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJTdWJqZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwic3ViamVjdF9jaGFuZ2VfZW1haWxcIj5cblx0XHRcdFx0PC9tYXQtZm9ybS1maWVsZD5cblxuXHRcdFx0XHQ8bWF0LWZvcm0tZmllbGQ+XG5cdFx0XHRcdFx0PG1hdC1zZWxlY3QgcGxhY2Vob2xkZXI9XCJUZW1wbGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cInRlbXBsYXRlX2NoYW5nZV9lbWFpbFwiPlxuXHRcdFx0XHRcdFx0PG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHQgb2YgdGVtcGxhdGVzXCIgW3ZhbHVlXT1cInQuaWRcIj57eyB0Lm5hbWUgfX0gKHt7dC5pZH19KTwvbWF0LW9wdGlvbj5cblx0XHRcdFx0XHQ8L21hdC1zZWxlY3Q+XG5cdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XG5cdFx0XHRcdDxtYXQtZm9ybS1maWVsZD5cblx0XHRcdFx0XHQ8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJSZWRpcmVjdCBVUkxcIiBmb3JtQ29udHJvbE5hbWU9XCJyZWRpcmVjdF9jaGFuZ2VfZW1haWxcIj5cblx0XHRcdFx0PC9tYXQtZm9ybS1maWVsZD5cblx0XHRcdDwvZGl2PlxuXHRcdDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cblxuXHRcdDxtYXQtZXhwYW5zaW9uLXBhbmVsICNsb3N0UGFzc3dvcmRQYW5lbCBmeExheW91dD1cImNvbHVtblwiPlxuXHRcdFx0PG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuXHRcdFx0XHRMb3N0IHBhc3N3b3JkXG5cdFx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuXHRcdFx0PGRpdiBjbGFzcz1cInBhbmVsLWNvbnRlbnRcIiBmeExheW91dD1cImNvbHVtblwiPlxuXG5cdFx0XHRcdDxtYXQtZm9ybS1maWVsZD5cblx0XHRcdFx0XHQ8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJTdWJqZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwic3ViamVjdF9sb3N0X3Bhc3N3b3JkXCI+XG5cdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XG5cdFx0XHRcdDxtYXQtZm9ybS1maWVsZD5cblx0XHRcdFx0XHQ8bWF0LXNlbGVjdCBwbGFjZWhvbGRlcj1cIlRlbXBsYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwidGVtcGxhdGVfbG9zdF9wYXNzd29yZFwiPlxuXHRcdFx0XHRcdFx0PG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IHQgb2YgdGVtcGxhdGVzXCIgW3ZhbHVlXT1cInQuaWRcIj57eyB0Lm5hbWUgfX0gKHt7dC5pZH19KTwvbWF0LW9wdGlvbj5cblx0XHRcdFx0XHQ8L21hdC1zZWxlY3Q+XG5cdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XG5cdFx0XHRcdDxtYXQtZm9ybS1maWVsZD5cblx0XHRcdFx0XHQ8aW5wdXQgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJSZWRpcmVjdCBVUkxcIiBmb3JtQ29udHJvbE5hbWU9XCJyZWRpcmVjdF9sb3N0X3Bhc3N3b3JkXCI+XG5cdFx0XHRcdDwvbWF0LWZvcm0tZmllbGQ+XG5cdFx0XHQ8L2Rpdj5cblx0XHQ8L21hdC1leHBhbnNpb24tcGFuZWw+XG5cdDwvbWF0LWFjY29yZGlvbj5cblx0PGRpdiBzdHlsZT1cIm1hcmdpbjogMTZweCAwOyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+XG5cdFx0PGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwic2F2ZUVtYWlsU2V0dGluZ3MoKVwiIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiA4cHhcIj5TYXZlPC9idXR0b24+XG5cdFx0PGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiAoY2xpY2spPVwiaGlkZS5lbWl0KClcIj5DYW5jZWw8L2J1dHRvbj5cblx0PC9kaXY+XG48L2Zvcm0+Il19