@infordata-web/portal-common-component-lib
Version:
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 10.0.14.
139 lines • 32.5 kB
JavaScript
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { FormControl, FormGroup, Validators } from '@angular/forms';
import { Subscription } from 'rxjs';
import { debounceTime } from 'rxjs/operators';
export class IndirizzoPagamentoComponent {
constructor() {
this.selectedProvinciaEmitter = new EventEmitter();
this.selectedComuneEmitter = new EventEmitter();
this.indirizzoEmitter = new EventEmitter();
this.subscription = new Subscription();
// this.initIndirizzoForm();
// this.subscription.add(this.indirizzoForm.controls['isEstero'].valueChanges.subscribe(isEstero => {
// this.indirizzoForm.controls['civico'].setValidators(isEstero ? [] : [Validators.required]);
// this.indirizzoForm.controls['civico'].patchValue(null);
// this.indirizzoForm.controls['civico'].updateValueAndValidity();
// this.indirizzoForm.controls['provincia'].setValidators(isEstero ? [] : [Validators.required]);
// this.indirizzoForm.controls['provincia'].patchValue(null);
// this.indirizzoForm.controls['provincia'].updateValueAndValidity();
// this.indirizzoForm.controls['comune'].setValidators(isEstero ? [] : [Validators.required]);
// this.indirizzoForm.controls['comune'].patchValue(null);
// this.indirizzoForm.controls['comune'].updateValueAndValidity();
// this.indirizzoForm.controls['cap'].setValidators(isEstero ? [] : [Validators.required]);
// this.indirizzoForm.controls['cap'].patchValue(null);
// this.indirizzoForm.controls['cap'].updateValueAndValidity();
// this.indirizzoForm.controls['nazione'].setValidators(isEstero ? [Validators.required] : []);
// this.indirizzoForm.controls['nazione'].patchValue(null);
// this.indirizzoForm.controls['nazione'].updateValueAndValidity();
// }));
// this.subscription.add(this.indirizzoForm.controls['provincia'].valueChanges.subscribe(siglaProvincia => this.selectedProvinciaEmitter.emit(siglaProvincia)));
// this.subscription.add(this.indirizzoForm.controls['comune'].valueChanges.subscribe(codiceCatastale => this.selectedComuneEmitter.emit(codiceCatastale)));
}
set _disableForm(val) {
this.disableForm = val;
if (this.disableForm) {
this.indirizzoForm.disable();
}
else {
this.indirizzoForm.enable();
}
}
ngOnInit() {
this.initIndirizzoForm();
this.setFormControlsValue();
this.subscription.add(this.indirizzoForm.controls['isEstero'].valueChanges.subscribe(isEstero => {
this.indirizzoForm.controls['civico'].setValidators(isEstero ? [] : [Validators.required]);
this.indirizzoForm.controls['civico'].patchValue(null);
this.indirizzoForm.controls['civico'].updateValueAndValidity();
this.indirizzoForm.controls['provincia'].setValidators(isEstero ? [] : [Validators.required]);
this.indirizzoForm.controls['provincia'].patchValue(null);
this.indirizzoForm.controls['provincia'].updateValueAndValidity();
this.indirizzoForm.controls['comune'].setValidators(isEstero ? [] : [Validators.required]);
this.indirizzoForm.controls['comune'].patchValue(null);
this.indirizzoForm.controls['comune'].updateValueAndValidity();
this.indirizzoForm.controls['cap'].setValidators(isEstero ? [] : [Validators.required]);
this.indirizzoForm.controls['cap'].patchValue(null);
this.indirizzoForm.controls['cap'].updateValueAndValidity();
this.indirizzoForm.controls['nazione'].setValidators(isEstero ? [Validators.required] : []);
this.indirizzoForm.controls['nazione'].patchValue(null);
this.indirizzoForm.controls['nazione'].updateValueAndValidity();
}));
this.subscription.add(this.indirizzoForm.controls['provincia'].valueChanges.subscribe(siglaProvincia => this.selectedProvinciaEmitter.emit(siglaProvincia)));
this.subscription.add(this.indirizzoForm.controls['comune'].valueChanges.subscribe(codiceCatastale => this.selectedComuneEmitter.emit(codiceCatastale)));
this.indirizzoEmit();
}
ngOnDestroy() {
this.subscription.unsubscribe();
}
initIndirizzoForm() {
this.indirizzoForm = new FormGroup({
isEstero: new FormControl(null),
indirizzo: new FormControl(null, [Validators.required]),
nazione: new FormControl(null),
civico: new FormControl(null),
provincia: new FormControl(null),
comune: new FormControl(null),
cap: new FormControl(null),
});
}
onProvinciaChange(siglaProvincia) {
this.indirizzoForm.controls['comune'].patchValue(null);
this.indirizzoForm.controls['comune'].markAsTouched();
this.indirizzoForm.controls['cap'].patchValue(null);
this.indirizzoForm.controls['cap'].markAsTouched();
}
onComuneChange(codiceCatastale) {
this.indirizzoForm.controls['cap'].patchValue(null);
this.indirizzoForm.controls['cap'].markAsTouched();
}
indirizzoEmit() {
this.subscription.add(this.indirizzoForm.valueChanges.pipe(debounceTime(500)).subscribe((_) => {
const indirizzo = {
strada: {
civico: this.indirizzoForm.controls['civico'].value,
inidirizzo: this.indirizzoForm.controls['indirizzo'].value,
tipoToponimo: null
},
localita: {
cap: this.indirizzoForm.controls['cap'].value,
comune: this.indirizzoForm.controls['comune'].value,
nazione: this.indirizzoForm.controls['nazione'].value,
provincia: this.indirizzoForm.controls['provincia'].value
}
};
const isValid = this.indirizzoForm.valid;
this.indirizzoEmitter.emit({ indirizzo: indirizzo ? indirizzo : null, isValid: isValid });
}));
}
setFormControlsValue() {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
this.indirizzoForm.controls['isEstero'].setValue(this.indirizzo && ((_b = (_a = this.indirizzo) === null || _a === void 0 ? void 0 : _a.localita) === null || _b === void 0 ? void 0 : _b.comune.startsWith("Z")) ? true : false);
this.indirizzoForm.controls['indirizzo'].setValue(this.indirizzo ? this.indirizzo.strada.inidirizzo : null);
this.indirizzoForm.controls['nazione'].setValue(this.indirizzo ? (_d = (_c = this.indirizzo) === null || _c === void 0 ? void 0 : _c.localita) === null || _d === void 0 ? void 0 : _d.nazione : null);
this.indirizzoForm.controls['civico'].setValue(this.indirizzo ? this.indirizzo.strada.civico : null);
this.indirizzoForm.controls['provincia'].setValue(this.indirizzo && !((_f = (_e = this.indirizzo) === null || _e === void 0 ? void 0 : _e.localita) === null || _f === void 0 ? void 0 : _f.comune.startsWith("Z")) ? this.indirizzo.localita.provincia : null);
this.indirizzoForm.controls['comune'].setValue(this.indirizzo && !((_h = (_g = this.indirizzo) === null || _g === void 0 ? void 0 : _g.localita) === null || _h === void 0 ? void 0 : _h.comune.startsWith("Z")) ? this.indirizzo.localita.comune : null);
this.indirizzoForm.controls['cap'].setValue(this.indirizzo && !((_k = (_j = this.indirizzo) === null || _j === void 0 ? void 0 : _j.localita) === null || _k === void 0 ? void 0 : _k.comune.startsWith("Z")) ? this.indirizzo.localita.cap : null);
}
}
IndirizzoPagamentoComponent.decorators = [
{ type: Component, args: [{
selector: 'lib-indirizzo-pagamento',
template: "<form [formGroup]=\"indirizzoForm\" [ngxsForm]=\"ngxsFormPath\">\r\n\t<div class=\"row\">\r\n\t\t<div class=\"col-12\">\r\n\t\t\t<div class=\"row align-items-center\">\r\n\t\t\t\t<div class=\"col-12 col-md-4\">\r\n\t\t\t\t\t<mat-checkbox formControlName=\"isEstero\" color=\"primary\">\r\n\t\t\t\t\t\t<info-tip-label label=\"indirizzo-estero\"></info-tip-label>\r\n\t\t\t\t\t</mat-checkbox>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"row\">\r\n\t\t\t\t<div class=\"col-12 col-md-4\" *ngIf=\"indirizzoForm.controls['isEstero'].value\">\r\n\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t<mat-label>{{ 'required' | traduzione }}{{ 'nazione' | traduzione }}</mat-label>\r\n\t\t\t\t\t\t<mat-select formControlName=\"nazione\">\r\n\t\t\t\t\t\t\t<mat-option *ngFor=\"let nazione of nazioni\" [value]=\"nazione.codiceCatastale\">\r\n\t\t\t\t\t\t\t\t{{ nazione.denominazione }}\r\n\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t<mat-error *ngIf=\"indirizzoForm.controls['nazione'].invalid\">\r\n\t\t\t\t\t\t\t{{ 'validation-required' | traduzione }}\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-12\" [ngClass]=\"indirizzoForm.controls['isEstero'].value ? ' col-md-8': ' col-md-10'\">\r\n\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t<mat-label>{{ 'required' | traduzione }}{{'indirizzo' | traduzione }}</mat-label>\r\n\t\t\t\t\t\t<input [maxlength]=\"70\" formControlName=\"indirizzo\" matInput>\r\n\t\t\t\t\t\t<mat-error *ngIf=\"indirizzoForm.controls['indirizzo'].invalid\">\r\n\t\t\t\t\t\t\t{{ 'validation-required' | traduzione }}\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-12 col-md-2\" *ngIf=\"!indirizzoForm.controls['isEstero'].value\">\r\n\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t<mat-label>{{ 'required' | traduzione }}{{'civico' | traduzione }}</mat-label>\r\n\t\t\t\t\t\t<input [maxlength]=\"16\" formControlName=\"civico\" matInput>\r\n\t\t\t\t\t\t<mat-error *ngIf=\"indirizzoForm.controls['civico'].invalid\">\r\n\t\t\t\t\t\t\t{{ 'validation-required' | traduzione }}\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t\t<div class=\"row\" *ngIf=\"!indirizzoForm.controls['isEstero'].value\">\r\n\t\t\t\t<div class=\"col-12 col-md-5\">\r\n\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t<mat-label>{{ 'required' | traduzione }}{{ 'provincia' | traduzione }}</mat-label>\r\n\t\t\t\t\t\t<mat-select formControlName=\"provincia\" (valueChange)=\"onProvinciaChange($event)\">\r\n\t\t\t\t\t\t\t<mat-option *ngFor=\"let provincia of province\" [value]=\"provincia.sigla\">\r\n\t\t\t\t\t\t\t\t{{ provincia.denominazione }}\r\n\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t<mat-error *ngIf=\"indirizzoForm.controls['provincia'].invalid\">\r\n\t\t\t\t\t\t\t{{ 'validation-required' | traduzione }}\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-12 col-md-5\">\r\n\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t<mat-label>{{ 'required' | traduzione }}{{ 'comune' | traduzione }}</mat-label>\r\n\t\t\t\t\t\t<mat-select formControlName=\"comune\" (valueChange)=\"onComuneChange($event)\">\r\n\t\t\t\t\t\t\t<mat-option *ngFor=\"let comune of comuni\" [value]=\"comune.codiceCatastale\">\r\n\t\t\t\t\t\t\t\t{{ comune.denominazione }}\r\n\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t<mat-error *ngIf=\"indirizzoForm.controls['comune'].invalid\">\r\n\t\t\t\t\t\t\t{{ 'validation-required' | traduzione }}\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t\t<div class=\"col-12 col-md-2\">\r\n\t\t\t\t\t<mat-form-field>\r\n\t\t\t\t\t\t<mat-label>{{ 'required' | traduzione }}{{ 'cap' | traduzione }}</mat-label>\r\n\t\t\t\t\t\t<mat-select formControlName=\"cap\">\r\n\t\t\t\t\t\t\t<mat-option *ngFor=\"let cap of capOptions\" [value]=\"cap\">\r\n\t\t\t\t\t\t\t\t{{ cap }}\r\n\t\t\t\t\t\t\t</mat-option>\r\n\t\t\t\t\t\t</mat-select>\r\n\t\t\t\t\t\t<mat-error *ngIf=\"indirizzoForm.controls['cap'].invalid\">\r\n\t\t\t\t\t\t\t{{ 'validation-required' | traduzione }}\r\n\t\t\t\t\t\t</mat-error>\r\n\t\t\t\t\t</mat-form-field>\r\n\t\t\t\t</div>\r\n\t\t\t</div>\r\n\t\t</div>\r\n\t</div>\r\n</form>\r\n\r\n\r\n",
styles: [""]
},] }
];
IndirizzoPagamentoComponent.ctorParameters = () => [];
IndirizzoPagamentoComponent.propDecorators = {
ngxsFormPath: [{ type: Input }],
nazioni: [{ type: Input }],
province: [{ type: Input }],
comuni: [{ type: Input }],
capOptions: [{ type: Input }],
indirizzo: [{ type: Input }],
_disableForm: [{ type: Input, args: ['disableForm',] }],
selectedProvinciaEmitter: [{ type: Output }],
selectedComuneEmitter: [{ type: Output }],
indirizzoEmitter: [{ type: Output }]
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kaXJpenpvLXBhZ2FtZW50by5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiQzovUHJvZ2V0dGkvREFHL3NvcmdlbnRpL2dpdGxhYi1zb2Z0d2FyZWZhY3RvcnkvY29tbW9uLWNvbXBvbmVudC1saWIvcHJvamVjdHMvcG9ydGFsLWNvbW1vbi1jb21wb25lbnQtbGliL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9tb2RhbGl0YS1wYWdhbWVudG8vY29tcG9uZW50cy9pbmRpcml6em8tcGFnYW1lbnRvL2luZGlyaXp6by1wYWdhbWVudG8uY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxXQUFXLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFDbEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBUTVDLE1BQU0sT0FBTywyQkFBMkI7SUE2Q3ZDO1FBWkEsNkJBQXdCLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUd0RCwwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBR25ELHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFtRCxDQUFDO1FBSS9FLGlCQUFZLEdBQWlCLElBQUksWUFBWSxFQUFFLENBQUM7UUFHdkQsNEJBQTRCO1FBQzVCLHFHQUFxRztRQUNyRywrRkFBK0Y7UUFDL0YsMkRBQTJEO1FBQzNELG1FQUFtRTtRQUNuRSxrR0FBa0c7UUFDbEcsOERBQThEO1FBQzlELHNFQUFzRTtRQUN0RSwrRkFBK0Y7UUFDL0YsMkRBQTJEO1FBQzNELG1FQUFtRTtRQUNuRSw0RkFBNEY7UUFDNUYsd0RBQXdEO1FBQ3hELGdFQUFnRTtRQUNoRSxnR0FBZ0c7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QUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBQyxJQUFJLENBQUMsU0FBUywwQ0FBRSxRQUFRLDBDQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0csSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksY0FBQyxJQUFJLENBQUMsU0FBUywwQ0FBRSxRQUFRLDBDQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbEssSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksY0FBQyxJQUFJLENBQUMsU0FBUywwQ0FBRSxRQUFRLDBDQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDNUosSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksY0FBQyxJQUFJLENBQUMsU0FBUywwQ0FBRSxRQUFRLDBDQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkosQ0FBQzs7O1lBaEtELFNBQVMsU0FBQztnQkFDVixRQUFRLEVBQUUseUJBQXlCO2dCQUNuQyx1dklBQW1EOzthQUVuRDs7OzsyQkFHQyxLQUFLO3NCQUdMLEtBQUs7dUJBR0wsS0FBSztxQkFHTCxLQUFLO3lCQUdMLEtBQUs7d0JBR0wsS0FBSzsyQkFHTCxLQUFLLFNBQUMsYUFBYTt1Q0FZbkIsTUFBTTtvQ0FHTixNQUFNOytCQUdOLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7Rm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgVmFsaWRhdG9yc30gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1N1YnNjcmlwdGlvbn0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7ZGVib3VuY2VUaW1lfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7Q29tdW5lTW9kZWwsIEluZGlyaXp6b01vZGVsLCBMb2NhbGl0YU1vZGVsLCBOYXppb25lTW9kZWx9IGZyb20gJy4uLy4uL21vZGVscy9lc3RyZW1pLXBlcnNvbmEtZmlzaWNhLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnbGliLWluZGlyaXp6by1wYWdhbWVudG8nLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9pbmRpcml6em8tcGFnYW1lbnRvLmNvbXBvbmVudC5odG1sJyxcclxuXHRzdHlsZVVybHM6IFsnLi9pbmRpcml6em8tcGFnYW1lbnRvLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJbmRpcml6em9QYWdhbWVudG9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG5cdEBJbnB1dCgpXHJcbiAgbmd4c0Zvcm1QYXRoOiBzdHJpbmc7XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0bmF6aW9uaTogTmF6aW9uZU1vZGVsW107XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0cHJvdmluY2U6IExvY2FsaXRhTW9kZWxbXTtcclxuXHJcblx0QElucHV0KClcclxuXHRjb211bmk6IENvbXVuZU1vZGVsW107XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0Y2FwT3B0aW9uczogc3RyaW5nW107XHJcblxyXG5cdEBJbnB1dCgpXHJcblx0aW5kaXJpenpvOiBJbmRpcml6em9Nb2RlbDtcclxuXHJcblx0QElucHV0KCdkaXNhYmxlRm9ybScpXHJcblx0c2V0IF9kaXNhYmxlRm9ybSh2YWw6IGJvb2xlYW4pIHtcclxuXHQgIHRoaXMuZGlzYWJsZUZvcm0gPSB2YWw7XHJcblx0ICBpZiAodGhpcy5kaXNhYmxlRm9ybSkge1xyXG5cdFx0dGhpcy5pbmRpcml6em9Gb3JtLmRpc2FibGUoKTtcclxuXHQgIH0gZWxzZSB7XHJcblx0XHR0aGlzLmluZGlyaXp6b0Zvcm0uZW5hYmxlKCk7XHJcblx0ICB9XHJcblx0fVxyXG5cclxuXHRkaXNhYmxlRm9ybTogYm9vbGVhbjtcclxuXHJcblx0QE91dHB1dCgpXHJcblx0c2VsZWN0ZWRQcm92aW5jaWFFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcblxyXG5cdEBPdXRwdXQoKVxyXG5cdHNlbGVjdGVkQ29tdW5lRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG5cclxuXHRAT3V0cHV0KClcclxuXHRpbmRpcml6em9FbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjx7IGluZGlyaXp6bzogSW5kaXJpenpvTW9kZWwsIGlzVmFsaWQ6IGJvb2xlYW4gfT4oKTtcclxuXHJcblx0aW5kaXJpenpvRm9ybTogRm9ybUdyb3VwO1xyXG5cclxuXHRwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG5cclxuXHRjb25zdHJ1Y3RvcigpIHtcclxuXHRcdC8vIHRoaXMuaW5pdEluZGlyaXp6b0Zvcm0oKTtcclxuXHRcdC8vIHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2lzRXN0ZXJvJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShpc0VzdGVybyA9PiB7XHJcblx0XHQvLyBcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2l2aWNvJ10uc2V0VmFsaWRhdG9ycyhpc0VzdGVybyA/IFtdIDogW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuXHRcdC8vIFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydjaXZpY28nXS5wYXRjaFZhbHVlKG51bGwpO1xyXG5cdFx0Ly8gXHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2NpdmljbyddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdC8vIFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydwcm92aW5jaWEnXS5zZXRWYWxpZGF0b3JzKGlzRXN0ZXJvID8gW10gOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG5cdFx0Ly8gXHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ3Byb3ZpbmNpYSddLnBhdGNoVmFsdWUobnVsbCk7XHJcblx0XHQvLyBcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1sncHJvdmluY2lhJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0Ly8gXHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2NvbXVuZSddLnNldFZhbGlkYXRvcnMoaXNFc3Rlcm8gPyBbXSA6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcblx0XHQvLyBcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY29tdW5lJ10ucGF0Y2hWYWx1ZShudWxsKTtcclxuXHRcdC8vIFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydjb211bmUnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHQvLyBcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2FwJ10uc2V0VmFsaWRhdG9ycyhpc0VzdGVybyA/IFtdIDogW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuXHRcdC8vIFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydjYXAnXS5wYXRjaFZhbHVlKG51bGwpO1xyXG5cdFx0Ly8gXHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2NhcCddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdC8vIFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWyduYXppb25lJ10uc2V0VmFsaWRhdG9ycyhpc0VzdGVybyA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSA6IFtdKTtcclxuXHRcdC8vIFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWyduYXppb25lJ10ucGF0Y2hWYWx1ZShudWxsKTtcclxuXHRcdC8vIFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWyduYXppb25lJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0Ly8gfSkpO1xyXG5cdFx0Ly8gdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1sncHJvdmluY2lhJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShzaWdsYVByb3ZpbmNpYSA9PiB0aGlzLnNlbGVjdGVkUHJvdmluY2lhRW1pdHRlci5lbWl0KHNpZ2xhUHJvdmluY2lhKSkpO1xyXG5cdFx0Ly8gdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY29tdW5lJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShjb2RpY2VDYXRhc3RhbGUgPT4gdGhpcy5zZWxlY3RlZENvbXVuZUVtaXR0ZXIuZW1pdChjb2RpY2VDYXRhc3RhbGUpKSk7XHJcblx0fVxyXG5cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuaW5pdEluZGlyaXp6b0Zvcm0oKTtcclxuXHRcdHRoaXMuc2V0Rm9ybUNvbnRyb2xzVmFsdWUoKTtcclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2lzRXN0ZXJvJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShpc0VzdGVybyA9PiB7XHJcblx0XHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2l2aWNvJ10uc2V0VmFsaWRhdG9ycyhpc0VzdGVybyA/IFtdIDogW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuXHRcdFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydjaXZpY28nXS5wYXRjaFZhbHVlKG51bGwpO1xyXG5cdFx0XHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2NpdmljbyddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydwcm92aW5jaWEnXS5zZXRWYWxpZGF0b3JzKGlzRXN0ZXJvID8gW10gOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xyXG5cdFx0XHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ3Byb3ZpbmNpYSddLnBhdGNoVmFsdWUobnVsbCk7XHJcblx0XHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1sncHJvdmluY2lhJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0XHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2NvbXVuZSddLnNldFZhbGlkYXRvcnMoaXNFc3Rlcm8gPyBbXSA6IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSk7XHJcblx0XHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY29tdW5lJ10ucGF0Y2hWYWx1ZShudWxsKTtcclxuXHRcdFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydjb211bmUnXS51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcblx0XHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2FwJ10uc2V0VmFsaWRhdG9ycyhpc0VzdGVybyA/IFtdIDogW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcclxuXHRcdFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydjYXAnXS5wYXRjaFZhbHVlKG51bGwpO1xyXG5cdFx0XHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2NhcCddLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuXHRcdFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWyduYXppb25lJ10uc2V0VmFsaWRhdG9ycyhpc0VzdGVybyA/IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSA6IFtdKTtcclxuXHRcdFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWyduYXppb25lJ10ucGF0Y2hWYWx1ZShudWxsKTtcclxuXHRcdFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWyduYXppb25lJ10udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG5cdFx0fSkpO1xyXG5cdFx0dGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1sncHJvdmluY2lhJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShzaWdsYVByb3ZpbmNpYSA9PiB0aGlzLnNlbGVjdGVkUHJvdmluY2lhRW1pdHRlci5lbWl0KHNpZ2xhUHJvdmluY2lhKSkpO1xyXG5cdFx0dGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY29tdW5lJ10udmFsdWVDaGFuZ2VzLnN1YnNjcmliZShjb2RpY2VDYXRhc3RhbGUgPT4gdGhpcy5zZWxlY3RlZENvbXVuZUVtaXR0ZXIuZW1pdChjb2RpY2VDYXRhc3RhbGUpKSk7XHJcblxyXG5cdFx0dGhpcy5pbmRpcml6em9FbWl0KCk7XHJcblx0fVxyXG5cclxuXHRuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcblx0fVxyXG5cclxuXHRpbml0SW5kaXJpenpvRm9ybSgpOiB2b2lkIHtcclxuXHRcdHRoaXMuaW5kaXJpenpvRm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xyXG5cdFx0XHRpc0VzdGVybzogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG5cdFx0XHRpbmRpcml6em86IG5ldyBGb3JtQ29udHJvbChudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF0pLFxyXG5cdFx0XHRuYXppb25lOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcblx0XHRcdGNpdmljbzogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG5cdFx0XHRwcm92aW5jaWE6IG5ldyBGb3JtQ29udHJvbChudWxsKSxcclxuXHRcdFx0Y29tdW5lOiBuZXcgRm9ybUNvbnRyb2wobnVsbCksXHJcblx0XHRcdGNhcDogbmV3IEZvcm1Db250cm9sKG51bGwpLFxyXG5cdFx0fSk7XHJcblx0fVxyXG5cclxuXHRvblByb3ZpbmNpYUNoYW5nZShzaWdsYVByb3ZpbmNpYTogc3RyaW5nKTogdm9pZCB7XHJcblx0XHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2NvbXVuZSddLnBhdGNoVmFsdWUobnVsbCk7XHJcblx0XHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2NvbXVuZSddLm1hcmtBc1RvdWNoZWQoKTtcclxuXHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2FwJ10ucGF0Y2hWYWx1ZShudWxsKTtcclxuXHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2FwJ10ubWFya0FzVG91Y2hlZCgpO1xyXG5cdH1cclxuXHJcblx0b25Db211bmVDaGFuZ2UoY29kaWNlQ2F0YXN0YWxlOiBzdHJpbmcpOiB2b2lkIHtcclxuXHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2FwJ10ucGF0Y2hWYWx1ZShudWxsKTtcclxuXHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2FwJ10ubWFya0FzVG91Y2hlZCgpO1xyXG5cdH1cclxuXHJcblx0aW5kaXJpenpvRW1pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuc3Vic2NyaXB0aW9uLmFkZCh0aGlzLmluZGlyaXp6b0Zvcm0udmFsdWVDaGFuZ2VzLnBpcGUoXHJcblx0XHRcdFx0ZGVib3VuY2VUaW1lKDUwMCksXHJcblx0XHRcdFx0Ly8gZmlsdGVyKCgpID0+IHRoaXMuaW5kaXJpenpvRm9ybS52YWxpZCksXHJcblx0XHRcdCkuc3Vic2NyaWJlKChfKSA9PiB7XHJcblx0XHRcdFx0Y29uc3QgaW5kaXJpenpvOiBJbmRpcml6em9Nb2RlbCA9IHtcclxuXHRcdFx0XHRcdHN0cmFkYToge1xyXG5cdFx0XHRcdFx0XHRjaXZpY286IHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2l2aWNvJ10udmFsdWUsXHJcblx0XHRcdFx0XHRcdGluaWRpcml6em86IHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snaW5kaXJpenpvJ10udmFsdWUsXHJcblx0XHRcdFx0XHRcdHRpcG9Ub3BvbmltbzogbnVsbFxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGxvY2FsaXRhOiB7XHJcblx0XHRcdFx0XHRcdGNhcDogdGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydjYXAnXS52YWx1ZSxcclxuXHRcdFx0XHRcdFx0Y29tdW5lOiB0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2NvbXVuZSddLnZhbHVlLFxyXG5cdFx0XHRcdFx0XHRuYXppb25lOiB0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ25hemlvbmUnXS52YWx1ZSxcclxuXHRcdFx0XHRcdFx0cHJvdmluY2lhOiB0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ3Byb3ZpbmNpYSddLnZhbHVlXHJcblx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRjb25zdCBpc1ZhbGlkID0gdGhpcy5pbmRpcml6em9Gb3JtLnZhbGlkO1xyXG5cdFx0XHRcdHRoaXMuaW5kaXJpenpvRW1pdHRlci5lbWl0KHsgaW5kaXJpenpvOiBpbmRpcml6em8gPyBpbmRpcml6em8gOiBudWxsLCBpc1ZhbGlkOiBpc1ZhbGlkIH0pO1xyXG5cdFx0XHR9KVxyXG5cdFx0KTtcclxuXHR9XHJcblxyXG5cdHNldEZvcm1Db250cm9sc1ZhbHVlKCk6IHZvaWR7XHJcblx0XHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ2lzRXN0ZXJvJ10uc2V0VmFsdWUodGhpcy5pbmRpcml6em8gJiYgdGhpcy5pbmRpcml6em8/LmxvY2FsaXRhPy5jb211bmUuc3RhcnRzV2l0aChcIlpcIikgPyAgdHJ1ZSA6IGZhbHNlKTtcclxuXHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snaW5kaXJpenpvJ10uc2V0VmFsdWUodGhpcy5pbmRpcml6em8gPyB0aGlzLmluZGlyaXp6by5zdHJhZGEuaW5pZGlyaXp6byA6IG51bGwpO1xyXG5cdFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWyduYXppb25lJ10uc2V0VmFsdWUodGhpcy5pbmRpcml6em8gPyB0aGlzLmluZGlyaXp6bz8ubG9jYWxpdGE/Lm5hemlvbmUgOiBudWxsKTtcclxuXHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2l2aWNvJ10uc2V0VmFsdWUodGhpcy5pbmRpcml6em8gPyB0aGlzLmluZGlyaXp6by5zdHJhZGEuY2l2aWNvIDogbnVsbCk7XHJcblx0XHR0aGlzLmluZGlyaXp6b0Zvcm0uY29udHJvbHNbJ3Byb3ZpbmNpYSddLnNldFZhbHVlKHRoaXMuaW5kaXJpenpvICYmICF0aGlzLmluZGlyaXp6bz8ubG9jYWxpdGE/LmNvbXVuZS5zdGFydHNXaXRoKFwiWlwiKSA/IHRoaXMuaW5kaXJpenpvLmxvY2FsaXRhLnByb3ZpbmNpYSA6IG51bGwpO1xyXG5cdFx0dGhpcy5pbmRpcml6em9Gb3JtLmNvbnRyb2xzWydjb211bmUnXS5zZXRWYWx1ZSh0aGlzLmluZGlyaXp6byAmJiAhdGhpcy5pbmRpcml6em8/LmxvY2FsaXRhPy5jb211bmUuc3RhcnRzV2l0aChcIlpcIikgPyB0aGlzLmluZGlyaXp6by5sb2NhbGl0YS5jb211bmUgOiBudWxsKTtcclxuXHRcdHRoaXMuaW5kaXJpenpvRm9ybS5jb250cm9sc1snY2FwJ10uc2V0VmFsdWUodGhpcy5pbmRpcml6em8gJiYgIXRoaXMuaW5kaXJpenpvPy5sb2NhbGl0YT8uY29tdW5lLnN0YXJ0c1dpdGgoXCJaXCIpID8gdGhpcy5pbmRpcml6em8ubG9jYWxpdGEuY2FwIDogbnVsbCk7XHJcblx0fVxyXG59XHJcbiJdfQ==