@infordata-web/portal-common-component-lib
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.0.14.
141 lines • 24.3 kB
JavaScript
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { Subject } from 'rxjs';
import { map, pluck } from 'rxjs/operators';
import { ComponentOutputStatus } from '../../normalizzazione/component-output-status';
import { ContattoDTO } from '../../models/contatto-dto';
import { DomicilioDTO } from '../../models/domicilio-dto';
import { ComponentReducer } from '../../utils/component-reducer';
import { DatiRichiedenteDTO } from '../../models/dati-richiedente-dto';
export class RichiedenteComponent {
constructor() {
this.nextStep = new EventEmitter();
this.salvaBozza = new EventEmitter();
this.changesPersonaFisica$ = new Subject();
this.changesResidenza$ = new Subject();
this.changesRecapito$ = new Subject();
this.changesDomicilio$ = new Subject();
//isFormValid: boolean;
this.direction = "only-forward";
this.isFinal = false;
this.isDomicilioElettoValid = false;
}
ngOnInit() {
//console.log('[DatiRichiedenteDTO]', this.datiRichiedente);
this.form = new FormGroup({});
let valid = true;
if (!this.datiRichiedente) {
this.initRichiedente();
valid = false;
}
const dichiarante$ = ComponentReducer.reducer4(this.changesPersonaFisica$, this.changesResidenza$, this.changesRecapito$, this.changesDomicilio$, (dich) => {
// console.log("[dich]", dich);
// console.log("[hasSelezionatoDomicilio]", dich.domicilio.hasSelezionatoDomicilio);
let isValid;
if (!dich.domicilio.hasSelezionatoDomicilio && dich.domicilio.hasSelezionatoDomicilio != undefined) {
isValid = dich.contatto != null;
}
else {
isValid = dich.domicilio != null;
}
//TODO
// this.isDomicilioElettoValid
// ? dich.domicilio != null // se il domicilio non è validato controlla se diverso da null se lo è torna false altrimenti true.
// : true // se già è validato torna true.
// return (
// dich.contatto != null || // basterebbe uno dei due diverso da null per tronare false
// this.isDomicilioElettoValid
// );
valid = isValid;
return isValid;
}, ComponentOutputStatus.of(valid, this.datiRichiedente) // normalizzazione componente dichiarante
);
dichiarante$.subscribe((dichiarante) => {
console.log("[RichiedenteComponent] datiRichiedente", dichiarante);
//TODO
//this.isFormValid = dichiarante.status;
if (dichiarante.output.domicilio.hasSelezionatoDomicilio == false) {
//TODO
// this.isDichiaranteValid = dichiarante.output.infoContatto.email != null || dichiarante.output.infoContatto.pec != null;
this.isDichiaranteValid = this.hasSelecteDichiarante(dichiarante);
}
else {
//TODO
// this.isDichiaranteValid = (dichiarante.output.infoContatto.email != null || dichiarante.output.infoContatto.pec != null) &&
// (dichiarante.output.domicilio.idDomicilioSelezionato != null) &&
// (dichiarante.output.domicilio.contatto.email != null || dichiarante.output.domicilio.contatto.pec != null);
this.isDichiaranteValid = this.hasSelecteDichiaranteAnd(dichiarante);
}
});
//TODO
//--------viene passato dall'input--------//
// this.personaFisica$ = this.personaFisicaService.getPersonaFisicaUtente$()
// .pipe(shareReplay());
this.datiPersonaFisica$ = this.personaFisica$
.pipe(pluck("datiPersonaFisica"));
this.residenza$ = this.personaFisica$
.pipe(pluck("residenza"));
this.recapiti$ = this.personaFisica$
.pipe(pluck("recapiti"), map(recapiti => recapiti || []));
this.domicili$ = this.personaFisica$
.pipe(pluck("domicili"));
}
recapitiReady(recapitiStatus) {
// console.log('[racapitiStatus]', recapitiStatus);
this.changesRecapito$.next(recapitiStatus.mapValue((contatto) => (dich) => {
return dich.contatto = contatto;
}));
}
domiciliReady(domiciliStatus) {
// console.log('[domiciliStatus]', domiciliStatus);
this.changesDomicilio$.next(domiciliStatus.mapValue((domicilio) => (dich) => {
dich.domicilio = domicilio;
//TODO: fix
// (this.isDomicilioElettoValid = domicilio.idDomicilioSelezionato != null);
}));
}
initRichiedente() {
this.datiRichiedente = new DatiRichiedenteDTO();
this.datiRichiedente.contatto = new ContattoDTO();
//TODO
this.datiRichiedente.domicilio = new DomicilioDTO();
this.datiRichiedente.domicilio.contatto = new ContattoDTO();
this.datiRichiedente.domicilio.idDomicilioSelezionato = null;
}
forward(_) {
this.nextStep.emit(this.datiRichiedente);
}
complete(_) { }
onSalvaBozza(_) {
this.salvaBozza.emit(this.datiRichiedente);
}
ngOnDestroy() {
if (this.domicilioElettoSub) {
this.domicilioElettoSub.unsubscribe();
}
}
hasSelecteDichiarante(dichiarante) {
return dichiarante.output.contatto.email != null || dichiarante.output.contatto.pec != null;
;
}
hasSelecteDichiaranteAnd(dichiarante) {
return this.hasSelecteDichiarante(dichiarante) &&
(dichiarante.output.domicilio.idDomicilioSelezionato != null) &&
(dichiarante.output.domicilio.contatto.email != null || dichiarante.output.domicilio.contatto.pec != null);
}
}
RichiedenteComponent.decorators = [
{ type: Component, args: [{
selector: 'lib-richiedente',
template: "<div class=\"mt-3 mb-5\" [formGroup]=\"form\">\r\n\t\t<lib-dati-anagrafici\r\n\t\t\t[datiPersonaFisica$]=\"datiPersonaFisica$\"\r\n\t\t>\r\n\t\t</lib-dati-anagrafici>\r\n\t<div class=\"mt-4\"></div>\r\n\t<lib-dati-residenza\r\n\t\t[residenza$]=\"residenza$\"\r\n\t>\r\n\t</lib-dati-residenza>\r\n\r\n\t<mat-expansion-panel class=\"panel mt-4\" [expanded]=\"true\">\r\n\t\t<mat-expansion-panel-header [collapsedHeight]=\"'48px'\" [expandedHeight]=\"'48px'\" class=\"custom-header\">\r\n\t\t\t<mat-panel-title>\r\n\t\t\t\t<!-- <h3>{{'recapiti' | traduzione}}</h3> -->\r\n\t\t\t\t<h3 class=\"mb-0 h5\"><info-tip-label label=\"recapiti\"></info-tip-label></h3>\r\n\t\t\t</mat-panel-title>\r\n\t\t</mat-expansion-panel-header>\r\n\t\t<lib-contatti\r\n\t\t\t[contatti]=\"datiRichiedente.contatto\"\r\n\t\t\t[recapiti$]=\"recapiti$\"\r\n\t\t\t(done)=\"recapitiReady($event)\"\r\n\t\t>\r\n\t\t</lib-contatti>\r\n\t</mat-expansion-panel>\r\n\t<div class=\"mt-4\"></div>\r\n\t<div *ngIf=\"(personaFisica$ | async)\">\r\n\t\t<lib-dati-domicilio\r\n\t\t\t[domicilio]=\"datiRichiedente.domicilio\"\r\n\t\t\t[domicili]=\"domicili$ | async\"\r\n\t\t\t[recapiti$]=\"recapiti$\"\r\n\t\t\t(done)=\"domiciliReady($event)\"\r\n\t\t>\r\n\t\t</lib-dati-domicilio>\r\n\t</div>\r\n\t<lib-stepper-navigator\r\n\t\t[form]=\"form\"\r\n\t\t[direction]=\"direction\"\r\n\t\t[isFinal]=\"isFinal\"\r\n\t\t[isContainerValid]=\"isDichiaranteValid\"\r\n\t\t(goForward)=\"forward($event)\"\r\n\t\t(salvaBozza)=\"onSalvaBozza($event)\"\r\n\t\t(complete)=\"complete($event)\"\r\n\t>\r\n\t</lib-stepper-navigator>\r\n</div>\r\n",
styles: [".mat-card{border-radius:0!important;border-top:5px solid #0a2644}.divider{background-color:#737373;height:1px;width:100%}.mat-form-field-appearance-fill .mat-form-field-flex{background-color:#fff!important}.mat-select-value{max-width:100%;width:100%!important}"]
},] }
];
RichiedenteComponent.ctorParameters = () => [];
RichiedenteComponent.propDecorators = {
datiRichiedente: [{ type: Input }],
personaFisica$: [{ type: Input }],
nextStep: [{ type: Output }],
salvaBozza: [{ type: Output }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmljaGllZGVudGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IkQ6L1Byb2dldHRpL0RBRy9zb3JnZW50aS9naXRsYWItdGVybmkvY29tbW9uLWNvbXBvbmVudC1saWIvcHJvamVjdHMvcG9ydGFsLWNvbW1vbi1jb21wb25lbnQtbGliL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9kZXBvc2l0aS9jb21wb25lbnRzL3JpY2hpZWRlbnRlL3JpY2hpZWRlbnRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFjLE9BQU8sRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDekQsT0FBTyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBWXZFLE1BQU0sT0FBTyxvQkFBb0I7SUFpRGhDO1FBdENBLGFBQVEsR0FBcUMsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFHcEYsZUFBVSxHQUFxQyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQU90RiwwQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFFaEMsQ0FBQztRQUVKLHNCQUFpQixHQUFHLElBQUksT0FBTyxFQUU1QixDQUFDO1FBRUoscUJBQWdCLEdBQUcsSUFBSSxPQUFP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QyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFFZixZQUFZLENBQUMsQ0FBQztRQUNiLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQsV0FBVztRQUNWLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzVCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUN0QztJQUNGLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxXQUFXO1FBQ3ZDLE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksSUFBSSxDQUFDO1FBQUEsQ0FBQztJQUM5RixDQUFDO0lBRU0sd0JBQXdCLENBQUMsV0FBVztRQUMxQyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUM7WUFDN0MsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxzQkFBc0IsSUFBSSxJQUFJLENBQUM7WUFDN0QsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDO0lBQzdHLENBQUM7OztZQTVMRCxTQUFTLFNBQUM7Z0JBQ1YsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsaWtEQUEyQzs7YUFFM0M7Ozs7OEJBS0MsS0FBSzs2QkFHTCxLQUFLO3VCQUdMLE1BQU07eUJBR04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHBsdWNrIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBDb21wb25lbnRPdXRwdXRTdGF0dXMgfSBmcm9tICcuLi8uLi9ub3JtYWxpenphemlvbmUvY29tcG9uZW50LW91dHB1dC1zdGF0dXMnO1xyXG5pbXBvcnQgeyBDb250YXR0b0RUTyB9IGZyb20gJy4uLy4uL21vZGVscy9jb250YXR0by1kdG8nO1xyXG5pbXBvcnQgeyBEb21pY2lsaW9EVE8gfSBmcm9tICcuLi8uLi9tb2RlbHMvZG9taWNpbGlvLWR0byc7XHJcbmltcG9ydCB7IENvbXBvbmVudFJlZHVjZXIgfSBmcm9tICcuLi8uLi91dGlscy9jb21wb25lbnQtcmVkdWNlcic7XHJcbmltcG9ydCB7IERhdGlSaWNoaWVkZW50ZURUTyB9IGZyb20gJy4uLy4uL21vZGVscy9kYXRpLXJpY2hpZWRlbnRlLWR0byc7XHJcbmltcG9ydCB7IFBlcnNvbmFGaXNpY2EgfSBmcm9tICcuLi8uLi9tb2RlbHMvcG9ydGFsZS9wZXJzb25hLWZpc2ljYS1tb2RlbCc7XHJcbmltcG9ydCB7IERhdGlQZXJzb25hRmlzaWNhIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BvcnRhbGUvZGF0aS1wZXJzb25hLWZpc2ljYSc7XHJcbmltcG9ydCB7IEluZGlyaXp6byB9IGZyb20gJy4uLy4uL21vZGVscy9wb3J0YWxlL2luZGlyaXp6byc7XHJcbmltcG9ydCB7IFJlY2FwaXRvIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3BvcnRhbGUvcmVjYXBpdG8nO1xyXG5pbXBvcnQgeyBEb21pY2lsaW8gfSBmcm9tICcuLi8uLi9tb2RlbHMvcG9ydGFsZS9kb21pY2lsaW8nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdsaWItcmljaGllZGVudGUnLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9yaWNoaWVkZW50ZS5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vcmljaGllZGVudGUuY29tcG9uZW50LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBSaWNoaWVkZW50ZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cdGZvcm06IEZvcm1Hcm91cDtcclxuXHJcblx0QElucHV0KClcclxuXHRkYXRpUmljaGllZGVudGU6IERhdGlSaWNoaWVkZW50ZURUTztcclxuXHJcblx0QElucHV0KClcclxuXHRwZXJzb25hRmlzaWNhJDogT2JzZXJ2YWJsZTxQZXJzb25hRmlzaWNhPjtcclxuXHJcblx0QE91dHB1dCgpXHJcblx0bmV4dFN0ZXA6IEV2ZW50RW1pdHRlcjxEYXRpUmljaGllZGVudGVEVE8+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRpUmljaGllZGVudGVEVE8+KCk7XHJcblxyXG5cdEBPdXRwdXQoKVxyXG5cdHNhbHZhQm96emE6IEV2ZW50RW1pdHRlcjxEYXRpUmljaGllZGVudGVEVE8+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRpUmljaGllZGVudGVEVE8+KCk7XHJcblxyXG5cdGRhdGlQZXJzb25hRmlzaWNhJDogT2JzZXJ2YWJsZTxEYXRpUGVyc29uYUZpc2ljYT47XHJcblx0cmVzaWRlbnphJDogT2JzZXJ2YWJsZTxJbmRpcml6em8+O1xyXG5cdHJlY2FwaXRpJDogT2JzZXJ2YWJsZTxBcnJheTxSZWNhcGl0bz4+O1xyXG5cdGRvbWljaWxpJDogT2JzZXJ2YWJsZTxBcnJheTxEb21pY2lsaW8+PjtcclxuXHJcblx0Y2hhbmdlc1BlcnNvbmFGaXNpY2EkID0gbmV3IFN1YmplY3Q8XHJcblx0XHRDb21wb25lbnRPdXRwdXRTdGF0dXM8KHZhbHVlOiBEYXRpUmljaGllZGVudGVEVE8pID0+IHZvaWQ+XHJcblx0PigpO1xyXG5cclxuXHRjaGFuZ2VzUmVzaWRlbnphJCA9IG5ldyBTdWJqZWN0PFxyXG5cdFx0Q29tcG9uZW50T3V0cHV0U3RhdHVzPCh2YWx1ZTogRGF0aVJpY2hpZWRlbnRlRFRPKSA9PiB2b2lkPlxyXG5cdD4oKTtcclxuXHJcblx0Y2hhbmdlc1JlY2FwaXRvJCA9IG5ldyBTdWJqZWN0PFxyXG5cdFx0Q29tcG9uZW50T3V0cHV0U3RhdHVzPCh2YWx1ZTogRGF0aVJpY2hpZWRlbnRlRFRPKSA9PiB2b2lkPlxyXG5cdD4oKTtcclxuXHJcblx0Y2hhbmdlc0RvbWljaWxpbyQgPSBuZXcgU3ViamVjdDxcclxuXHRcdENvbXBvbmVudE91dHB1dFN0YXR1czwodmFsdWU6IERhdGlSaWNoaWVkZW50ZURUTykgPT4gdm9pZD5cclxuXHQ+KCk7XHJcblxyXG5cdC8vaXNGb3JtVmFsaWQ6IGJvb2xlYW47XHJcblxyXG5cdGRpcmVjdGlvbjogc3RyaW5nID0gXCJvbmx5LWZvcndhcmRcIjtcclxuXHJcblx0aXNGaW5hbDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHRpc0RvbWljaWxpb0VsZXR0b1ZhbGlkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdGRvbWljaWxpb0VsZXR0b1N1YjogU3Vic2NyaXB0aW9uO1xyXG5cclxuXHRpc0RpY2hpYXJhbnRlVmFsaWQ6IGJvb2xlYW47XHJcblxyXG5cdGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG5cdG5nT25Jbml0KCk6IHZvaWQge1xyXG5cclxuXHRcdC8vY29uc29sZS5sb2coJ1tEYXRpUmljaGllZGVudGVEVE9dJywgdGhpcy5kYXRpUmljaGllZGVudGUpO1xyXG5cclxuXHRcdHRoaXMuZm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG5cdFx0bGV0IHZhbGlkID0gdHJ1ZTtcclxuXHJcblx0XHRpZiAoIXRoaXMuZGF0aVJpY2hpZWRlbnRlKSB7XHJcblx0XHRcdHRoaXMuaW5pdFJpY2hpZWRlbnRlKCk7XHJcblx0XHRcdHZhbGlkID0gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgZGljaGlhcmFudGUkID0gQ29tcG9uZW50UmVkdWNlci5yZWR1Y2VyNChcclxuXHRcdFx0dGhpcy5jaGFuZ2VzUGVyc29uYUZpc2ljYSQsXHJcblx0XHRcdHRoaXMuY2hhbmdlc1Jlc2lkZW56YSQsXHJcblx0XHRcdHRoaXMuY2hhbmdlc1JlY2FwaXRvJCxcclxuXHRcdFx0dGhpcy5jaGFuZ2VzRG9taWNpbGlvJCxcclxuXHRcdFx0KGRpY2gpID0+IHtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcIltkaWNoXVwiLCBkaWNoKTtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhcIltoYXNTZWxlemlvbmF0b0RvbWljaWxpb11cIiwgZGljaC5kb21pY2lsaW8uaGFzU2VsZXppb25hdG9Eb21pY2lsaW8pO1xyXG5cdFx0XHRcdGxldCBpc1ZhbGlkOiBib29sZWFuO1xyXG5cdFx0XHRcdGlmICghZGljaC5kb21pY2lsaW8uaGFzU2VsZXppb25hdG9Eb21pY2lsaW8gJiYgZGljaC5kb21pY2lsaW8uaGFzU2VsZXppb25hdG9Eb21pY2lsaW8gIT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdFx0XHRpc1ZhbGlkID0gZGljaC5jb250YXR0byAhPSBudWxsO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRpc1ZhbGlkID0gZGljaC5kb21pY2lsaW8gIT0gbnVsbDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly9UT0RPXHJcblx0XHRcdFx0Ly8gdGhpcy5pc0RvbWljaWxpb0VsZXR0b1ZhbGlkXHJcblx0XHRcdFx0Ly8gXHQ/IGRpY2guZG9taWNpbGlvICE9IG51bGwgLy8gc2UgaWwgZG9taWNpbGlvIG5vbiDDqCB2YWxpZGF0byBjb250cm9sbGEgc2UgZGl2ZXJzbyBkYSBudWxsIHNlIGxvIMOoIHRvcm5hIGZhbHNlIGFsdHJpbWVudGkgdHJ1ZS5cclxuXHRcdFx0XHQvLyBcdDogdHJ1ZSAvLyBzZSBnacOgIMOoIHZhbGlkYXRvIHRvcm5hIHRydWUuXHJcblx0XHRcdFx0Ly8gcmV0dXJuIChcclxuXHRcdFx0XHQvLyBcdGRpY2guY29udGF0dG8gIT0gbnVsbCB8fCAgLy8gYmFzdGVyZWJiZSB1bm8gZGVpIGR1ZSBkaXZlcnNvIGRhIG51bGwgcGVyIHRyb25hcmUgZmFsc2VcclxuXHRcdFx0XHQvLyBcdHRoaXMuaXNEb21pY2lsaW9FbGV0dG9WYWxpZFxyXG5cdFx0XHRcdC8vICk7XHJcblx0XHRcdFx0dmFsaWQgPSBpc1ZhbGlkXHJcblx0XHRcdFx0cmV0dXJuIGlzVmFsaWQ7XHJcblx0XHRcdH0sXHJcblx0XHRcdENvbXBvbmVudE91dHB1dFN0YXR1cy5vZih2YWxpZCwgdGhpcy5kYXRpUmljaGllZGVudGUpIC8vIG5vcm1hbGl6emF6aW9uZSBjb21wb25lbnRlIGRpY2hpYXJhbnRlXHJcblx0XHQpO1xyXG5cclxuXHRcdGRpY2hpYXJhbnRlJC5zdWJzY3JpYmUoKGRpY2hpYXJhbnRlKSA9PiB7XHJcblx0XHRcdGNvbnNvbGUubG9nKFwiW1JpY2hpZWRlbnRlQ29tcG9uZW50XSBkYXRpUmljaGllZGVudGVcIiwgZGljaGlhcmFudGUpO1xyXG5cdFx0XHQvL1RPRE9cclxuXHRcdFx0Ly90aGlzLmlzRm9ybVZhbGlkID0gZGljaGlhcmFudGUuc3RhdHVzO1xyXG5cdFx0XHRpZiAoZGljaGlhcmFudGUub3V0cHV0LmRvbWljaWxpby5oYXNTZWxlemlvbmF0b0RvbWljaWxpbyA9PSBmYWxzZSkge1xyXG5cdFx0XHRcdC8vVE9ET1xyXG5cdFx0XHRcdC8vIHRoaXMuaXNEaWNoaWFyYW50ZVZhbGlkID0gZGljaGlhcmFudGUub3V0cHV0LmluZm9Db250YXR0by5lbWFpbCAhPSBudWxsIHx8IGRpY2hpYXJhbnRlLm91dHB1dC5pbmZvQ29udGF0dG8ucGVjICE9IG51bGw7XHJcblx0XHRcdFx0dGhpcy5pc0RpY2hpYXJhbnRlVmFsaWQgPSB0aGlzLmhhc1NlbGVjdGVEaWNoaWFyYW50ZShkaWNoaWFyYW50ZSk7XHJcblx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0Ly9UT0RPXHJcblx0XHRcdFx0Ly8gdGhpcy5pc0RpY2hpYXJhbnRlVmFsaWQgPSAoZGljaGlhcmFudGUub3V0cHV0LmluZm9Db250YXR0by5lbWFpbCAhPSBudWxsIHx8IGRpY2hpYXJhbnRlLm91dHB1dC5pbmZvQ29udGF0dG8ucGVjICE9IG51bGwpICYmXHJcblx0XHRcdFx0Ly8gXHQoZGljaGlhcmFudGUub3V0cHV0LmRvbWljaWxpby5pZERvbWljaWxpb1NlbGV6aW9uYXRvICE9IG51bGwpICYmXHJcblx0XHRcdFx0Ly8gXHQoZGljaGlhcmFudGUub3V0cHV0LmRvbWljaWxpby5jb250YXR0by5lbWFpbCAhPSBudWxsIHx8IGRpY2hpYXJhbnRlLm91dHB1dC5kb21pY2lsaW8uY29udGF0dG8ucGVjICE9IG51bGwpO1xyXG5cdFx0XHRcdHRoaXMuaXNEaWNoaWFyYW50ZVZhbGlkID0gdGhpcy5oYXNTZWxlY3RlRGljaGlhcmFudGVBbmQoZGljaGlhcmFudGUpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHQvL1RPRE9cclxuXHRcdC8vLS0tLS0tLS12aWVuZSBwYXNzYXRvIGRhbGwnaW5wdXQtLS0tLS0tLS8vXHJcblx0XHQvLyB0aGlzLnBlcnNvbmFGaXNpY2EkID0gdGhpcy5wZXJzb25hRmlzaWNhU2VydmljZS5nZXRQZXJzb25hRmlzaWNhVXRlbnRlJCgpXHJcblx0XHQvLyAgIC5waXBlKHNoYXJlUmVwbGF5KCkpO1xyXG5cclxuXHRcdHRoaXMuZGF0aVBlcnNvbmFGaXNpY2EkID0gdGhpcy5wZXJzb25hRmlzaWNhJFxyXG5cdFx0XHQucGlwZShwbHVjayhcImRhdGlQZXJzb25hRmlzaWNhXCIpKTtcclxuXHJcblx0XHR0aGlzLnJlc2lkZW56YSQgPSB0aGlzLnBlcnNvbmFGaXNpY2EkXHJcblx0XHRcdC5waXBlKHBsdWNrKFwicmVzaWRlbnphXCIpKTtcclxuXHJcblx0XHR0aGlzLnJlY2FwaXRpJCA9IHRoaXMucGVyc29uYUZpc2ljYSRcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0cGx1Y2soXCJyZWNhcGl0aVwiKSxcclxuXHRcdFx0XHRtYXAocmVjYXBpdGkgPT4gcmVjYXBpdGkgfHwgW10pXHJcblx0XHRcdCk7XHJcblxyXG5cdFx0dGhpcy5kb21pY2lsaSQgPSB0aGlzLnBlcnNvbmFGaXNpY2EkXHJcblx0XHRcdC5waXBlKHBsdWNrKFwiZG9taWNpbGlcIikpO1xyXG5cclxuXHR9XHJcblxyXG5cdHB1YmxpYyByZWNhcGl0aVJlYWR5KHJlY2FwaXRpU3RhdHVzOiBDb21wb25lbnRPdXRwdXRTdGF0dXM8Q29udGF0dG9EVE8+KSB7XHJcblx0XHQvLyBjb25zb2xlLmxvZygnW3JhY2FwaXRpU3RhdHVzXScsIHJlY2FwaXRpU3RhdHVzKTtcclxuXHRcdHRoaXMuY2hhbmdlc1JlY2FwaXRvJC5uZXh0KFxyXG5cdFx0XHRyZWNhcGl0aVN0YXR1cy5tYXBWYWx1ZSgoY29udGF0dG8pID0+IChkaWNoOiBEYXRpUmljaGllZGVudGVEVE8pID0+IHtcclxuXHRcdFx0XHRyZXR1cm4gZGljaC5jb250YXR0byA9IGNvbnRhdHRvO1xyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHB1YmxpYyBkb21pY2lsaVJlYWR5KGRvbWljaWxpU3RhdHVzOiBDb21wb25lbnRPdXRwdXRTdGF0dXM8RG9taWNpbGlvRFRPPikge1xyXG5cdFx0Ly8gY29uc29sZS5sb2coJ1tkb21pY2lsaVN0YXR1c10nLCBkb21pY2lsaVN0YXR1cyk7XHJcblx0XHR0aGlzLmNoYW5nZXNEb21pY2lsaW8kLm5leHQoXHJcblx0XHRcdGRvbWljaWxpU3RhdHVzLm1hcFZhbHVlKChkb21pY2lsaW8pID0+IChkaWNoOiBEYXRpUmljaGllZGVudGVEVE8pID0+IHtcclxuXHRcdFx0XHRkaWNoLmRvbWljaWxpbyA9IGRvbWljaWxpbztcclxuXHRcdFx0XHQvL1RPRE86IGZpeFxyXG5cdFx0XHRcdC8vICh0aGlzLmlzRG9taWNpbGlvRWxldHRvVmFsaWQgPSBkb21pY2lsaW8uaWREb21pY2lsaW9TZWxlemlvbmF0byAhPSBudWxsKTtcclxuXHRcdFx0fSlcclxuXHRcdCk7XHJcblx0fVxyXG5cclxuXHRpbml0UmljaGllZGVudGUoKSB7XHJcblx0XHR0aGlzLmRhdGlSaWNoaWVkZW50ZSA9IG5ldyBEYXRpUmljaGllZGVudGVEVE8oKTtcclxuXHRcdHRoaXMuZGF0aVJpY2hpZWRlbnRlLmNvbnRhdHRvID0gbmV3IENvbnRhdHRvRFRPKCk7XHJcblx0XHQvL1RPRE9cclxuXHRcdHRoaXMuZGF0aVJpY2hpZWRlbnRlLmRvbWljaWxpbyA9IG5ldyBEb21pY2lsaW9EVE8oKTtcclxuXHRcdHRoaXMuZGF0aVJpY2hpZWRlbnRlLmRvbWljaWxpby5jb250YXR0byA9IG5ldyBDb250YXR0b0RUTygpO1xyXG5cdFx0dGhpcy5kYXRpUmljaGllZGVudGUuZG9taWNpbGlvLmlkRG9taWNpbGlvU2VsZXppb25hdG8gPSBudWxsO1xyXG5cdH1cclxuXHJcblx0Zm9yd2FyZChfKSB7XHJcblx0XHR0aGlzLm5leHRTdGVwLmVtaXQodGhpcy5kYXRpUmljaGllZGVudGUpO1xyXG5cdH1cclxuXHJcblx0Y29tcGxldGUoXykgeyB9XHJcblxyXG5cdG9uU2FsdmFCb3p6YShfKSB7XHJcblx0XHR0aGlzLnNhbHZhQm96emEuZW1pdCh0aGlzLmRhdGlSaWNoaWVkZW50ZSk7XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLmRvbWljaWxpb0VsZXR0b1N1Yikge1xyXG5cdFx0XHR0aGlzLmRvbWljaWxpb0VsZXR0b1N1Yi51bnN1YnNjcmliZSgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0cHVibGljIGhhc1NlbGVjdGVEaWNoaWFyYW50ZShkaWNoaWFyYW50ZSk6IGJvb2xlYW4ge1xyXG5cdFx0cmV0dXJuIGRpY2hpYXJhbnRlLm91dHB1dC5jb250YXR0by5lbWFpbCAhPSBudWxsIHx8IGRpY2hpYXJhbnRlLm91dHB1dC5jb250YXR0by5wZWMgIT0gbnVsbDs7XHJcblx0fVxyXG5cclxuXHRwdWJsaWMgaGFzU2VsZWN0ZURpY2hpYXJhbnRlQW5kKGRpY2hpYXJhbnRlKTogYm9vbGVhbiB7XHJcblx0XHRyZXR1cm4gdGhpcy5oYXNTZWxlY3RlRGljaGlhcmFudGUoZGljaGlhcmFudGUpICYmXHJcblx0XHRcdChkaWNoaWFyYW50ZS5vdXRwdXQuZG9taWNpbGlvLmlkRG9taWNpbGlvU2VsZXppb25hdG8gIT0gbnVsbCkgJiZcclxuXHRcdFx0KGRpY2hpYXJhbnRlLm91dHB1dC5kb21pY2lsaW8uY29udGF0dG8uZW1haWwgIT0gbnVsbCB8fCBkaWNoaWFyYW50ZS5vdXRwdXQuZG9taWNpbGlvLmNvbnRhdHRvLnBlYyAhPSBudWxsKTtcclxuXHR9XHJcbn1cclxuIl19