{"version":3,"file":"acontplus-ng-customer.mjs","sources":["../tmp-esm2022/lib/application/use-cases/customer-use-case.js","../tmp-esm2022/lib/application/use-cases/customer-external-use-case.js","../tmp-esm2022/lib/infrastructure/constants/customer.constants.js","../tmp-esm2022/lib/infrastructure/mappers/company-search-mapper.js","../tmp-esm2022/lib/infrastructure/mappers/customer-create-update-mapper.js","../tmp-esm2022/lib/infrastructure/mappers/customer-form-data-mapper.js","../tmp-esm2022/lib/infrastructure/mappers/customer-get-by-id-mapper.js","../tmp-esm2022/lib/infrastructure/mappers/customer-list-mapper.js","../tmp-esm2022/lib/infrastructure/repositories/customer-external-http-repository.js","../tmp-esm2022/lib/infrastructure/repositories/customer-http-repository.js","../tmp-esm2022/lib/ui/components/customer-add-edit/customer-add-edit-dialog.js","../tmp-esm2022/lib/ui/components/customer-card/customer-card.js","../tmp-esm2022/acontplus-ng-customer.js"],"sourcesContent":["export class CustomerUseCase {\n    repo;\n    constructor(repo) {\n        this.repo = repo;\n    }\n    getAll(params) {\n        return this.repo.getAll(params);\n    }\n    getFormData() {\n        return this.repo.getFormData();\n    }\n    getById(id) {\n        return this.repo.getById(id);\n    }\n    checkExistence(identificationNumber) {\n        return this.repo.checkExistence(identificationNumber);\n    }\n    create(params) {\n        return this.repo.create(params);\n    }\n    update(params) {\n        return this.repo.update(params);\n    }\n    updateState(id) {\n        return this.repo.updateState(id);\n    }\n    search(filter) {\n        return this.repo.search(filter);\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItdXNlLWNhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jdXN0b21lci9zcmMvbGliL2FwcGxpY2F0aW9uL3VzZS1jYXNlcy9jdXN0b21lci11c2UtY2FzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLE9BQU8sZUFBZTtJQUNOO0lBQXBCLFlBQW9CLElBQXdCO1FBQXhCLFNBQUksR0FBSixJQUFJLENBQW9CO0lBQUcsQ0FBQztJQUVoRCxNQUFNLENBQUMsTUFBVztRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFDRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxPQUFPLENBQUMsRUFBVTtRQUNoQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxjQUFjLENBQUMsb0JBQTRCO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQsV0FBVyxDQUFDLEVBQVU7UUFDcEIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQXNCO1FBQzNCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VzdG9tZXJSZXBvc2l0b3J5IH0gZnJvbSAnLi4vLi4vZG9tYWluJztcbmltcG9ydCB7IEN1c3RvbWVyU2VhcmNoIH0gZnJvbSAnLi4vLi4vZG9tYWluL21vZGVscy9jdXN0b21lci1zZWFyY2gnO1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJVc2VDYXNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZXBvOiBDdXN0b21lclJlcG9zaXRvcnkpIHt9XG5cbiAgZ2V0QWxsKHBhcmFtczogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5nZXRBbGwocGFyYW1zKTtcbiAgfVxuICBnZXRGb3JtRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmdldEZvcm1EYXRhKCk7XG4gIH1cblxuICBnZXRCeUlkKGlkOiBudW1iZXIpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvLmdldEJ5SWQoaWQpO1xuICB9XG5cbiAgY2hlY2tFeGlzdGVuY2UoaWRlbnRpZmljYXRpb25OdW1iZXI6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnJlcG8uY2hlY2tFeGlzdGVuY2UoaWRlbnRpZmljYXRpb25OdW1iZXIpO1xuICB9XG5cbiAgY3JlYXRlKHBhcmFtczogYW55KSB7XG4gICAgcmV0dXJuIHRoaXMucmVwby5jcmVhdGUocGFyYW1zKTtcbiAgfVxuXG4gIHVwZGF0ZShwYXJhbXM6IGFueSkge1xuICAgIHJldHVybiB0aGlzLnJlcG8udXBkYXRlKHBhcmFtcyk7XG4gIH1cblxuICB1cGRhdGVTdGF0ZShpZDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwby51cGRhdGVTdGF0ZShpZCk7XG4gIH1cblxuICBzZWFyY2goZmlsdGVyOiBDdXN0b21lclNlYXJjaCkge1xuICAgIHJldHVybiB0aGlzLnJlcG8uc2VhcmNoKGZpbHRlcik7XG4gIH1cbn1cbiJdfQ==","import { IdentificationNumberVo } from '@acontplus/core';\nexport class CustomerExternalUseCase {\n    repo;\n    constructor(repo) {\n        this.repo = repo;\n    }\n    getById(identification) {\n        const idNumber = new IdentificationNumberVo(identification);\n        return this.repo.getById(idNumber);\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZXh0ZXJuYWwtdXNlLWNhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jdXN0b21lci9zcmMvbGliL2FwcGxpY2F0aW9uL3VzZS1jYXNlcy9jdXN0b21lci1leHRlcm5hbC11c2UtY2FzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV6RCxNQUFNLE9BQU8sdUJBQXVCO0lBQ2Q7SUFBcEIsWUFBb0IsSUFBZ0M7UUFBaEMsU0FBSSxHQUFKLElBQUksQ0FBNEI7SUFBRyxDQUFDO0lBRXhELE9BQU8sQ0FBQyxjQUFzQjtRQUM1QixNQUFNLFFBQVEsR0FBRyxJQUFJLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzVELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ3VzdG9tZXJFeHRlcm5hbFJlcG9zaXRvcnkgfSBmcm9tICcuLi8uLi9kb21haW4vcmVwb3NpdG9yaWVzJztcbmltcG9ydCB7IElkZW50aWZpY2F0aW9uTnVtYmVyVm8gfSBmcm9tICdAYWNvbnRwbHVzL2NvcmUnO1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJFeHRlcm5hbFVzZUNhc2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlcG86IEN1c3RvbWVyRXh0ZXJuYWxSZXBvc2l0b3J5KSB7fVxuXG4gIGdldEJ5SWQoaWRlbnRpZmljYXRpb246IHN0cmluZykge1xuICAgIGNvbnN0IGlkTnVtYmVyID0gbmV3IElkZW50aWZpY2F0aW9uTnVtYmVyVm8oaWRlbnRpZmljYXRpb24pO1xuICAgIHJldHVybiB0aGlzLnJlcG8uZ2V0QnlJZChpZE51bWJlcik7XG4gIH1cbn1cbiJdfQ==","export const CUSTOMER_API = {\n    BILLING: 'customers',\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXIuY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY3VzdG9tZXIvc3JjL2xpYi9pbmZyYXN0cnVjdHVyZS9jb25zdGFudHMvY3VzdG9tZXIuY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRztJQUMxQixPQUFPLEVBQUUsV0FBVztDQUNyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IENVU1RPTUVSX0FQSSA9IHtcbiAgQklMTElORzogJ2N1c3RvbWVycycsXG59O1xuIl19","export class CompanySearchMapper {\n    static toJson(params) {\n        return JSON.stringify({\n            textSearch: params.search,\n        });\n    }\n    static fromJson(response) {\n        let customers = [];\n        if (response && response.code === '1') {\n            const results = JSON.parse(response.payload) || [];\n            customers = results.map((item) => ({\n                id: item.idCliente,\n                identificationTypeId: item.idTipoIdentificacion,\n                creditTimeId: item.idTiempoCredito,\n                customerId: item.customerId,\n                status: item.estado,\n                email: item.correo,\n                phone: item.telefono,\n                address: item.direccion,\n                licensePlate: item.placa,\n                creditDays: item.diasCredito,\n                sriValidation: item.validationSri,\n                businessName: item.nombreFiscal,\n                tradeName: item.nombreComercial,\n                identificationNumber: item.numeroIdentificacion,\n                identificationType: item.tipoIdentificacion,\n                sriCode: item.codigoSri,\n                companyRuc: item.rucEmpresa,\n                companyId: item.companyId,\n                name: item.nombreFiscal,\n            }));\n        }\n        return customers;\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGFueS1zZWFyY2gtbWFwcGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY3VzdG9tZXIvc3JjL2xpYi9pbmZyYXN0cnVjdHVyZS9tYXBwZXJzL2NvbXBhbnktc2VhcmNoLW1hcHBlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBc0I7UUFDbEMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3BCLFVBQVUsRUFBRSxNQUFNLENBQUMsTUFBTTtTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFhO1FBQzNCLElBQUksU0FBUyxHQUFVLEVBQUUsQ0FBQztRQUUxQixJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQWlCLENBQUMsSUFBSSxFQUFFLENBQUM7WUFFN0QsU0FBUyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ3RDLEVBQUUsRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDbEIsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtnQkFDL0MsWUFBWSxFQUFFLElBQUksQ0FBQyxlQUFlO2dCQUNsQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7Z0JBQzNCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNO2dCQUNsQixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVE7Z0JBQ3BCLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDdkIsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUN4QixVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVc7Z0JBQzVCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTtnQkFDakMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUMvQixTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWU7Z0JBQy9CLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0I7Z0JBQy9DLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7Z0JBQzNDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUztnQkFDdkIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO2dCQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7Z0JBQ3pCLElBQUksRUFBRSxJQUFJLENBQUMsWUFBWTthQUN4QixDQUFDLENBQUMsQ0FBQztRQUNOLENBQUM7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDdXN0b21lclNlYXJjaCB9IGZyb20gJy4uLy4uL2RvbWFpbi9tb2RlbHMvY3VzdG9tZXItc2VhcmNoJztcblxuZXhwb3J0IGNsYXNzIENvbXBhbnlTZWFyY2hNYXBwZXIge1xuICBzdGF0aWMgdG9Kc29uKHBhcmFtczogQ3VzdG9tZXJTZWFyY2gpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgdGV4dFNlYXJjaDogcGFyYW1zLnNlYXJjaCxcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSnNvbihyZXNwb25zZTogYW55KSB7XG4gICAgbGV0IGN1c3RvbWVyczogYW55W10gPSBbXTtcblxuICAgIGlmIChyZXNwb25zZSAmJiByZXNwb25zZS5jb2RlID09PSAnMScpIHtcbiAgICAgIGNvbnN0IHJlc3VsdHMgPSBKU09OLnBhcnNlKHJlc3BvbnNlLnBheWxvYWQgYXMgc3RyaW5nKSB8fCBbXTtcblxuICAgICAgY3VzdG9tZXJzID0gcmVzdWx0cy5tYXAoKGl0ZW06IGFueSkgPT4gKHtcbiAgICAgICAgaWQ6IGl0ZW0uaWRDbGllbnRlLFxuICAgICAgICBpZGVudGlmaWNhdGlvblR5cGVJZDogaXRlbS5pZFRpcG9JZGVudGlmaWNhY2lvbixcbiAgICAgICAgY3JlZGl0VGltZUlkOiBpdGVtLmlkVGllbXBvQ3JlZGl0byxcbiAgICAgICAgY3VzdG9tZXJJZDogaXRlbS5jdXN0b21lcklkLFxuICAgICAgICBzdGF0dXM6IGl0ZW0uZXN0YWRvLFxuICAgICAgICBlbWFpbDogaXRlbS5jb3JyZW8sXG4gICAgICAgIHBob25lOiBpdGVtLnRlbGVmb25vLFxuICAgICAgICBhZGRyZXNzOiBpdGVtLmRpcmVjY2lvbixcbiAgICAgICAgbGljZW5zZVBsYXRlOiBpdGVtLnBsYWNhLFxuICAgICAgICBjcmVkaXREYXlzOiBpdGVtLmRpYXNDcmVkaXRvLFxuICAgICAgICBzcmlWYWxpZGF0aW9uOiBpdGVtLnZhbGlkYXRpb25TcmksXG4gICAgICAgIGJ1c2luZXNzTmFtZTogaXRlbS5ub21icmVGaXNjYWwsXG4gICAgICAgIHRyYWRlTmFtZTogaXRlbS5ub21icmVDb21lcmNpYWwsXG4gICAgICAgIGlkZW50aWZpY2F0aW9uTnVtYmVyOiBpdGVtLm51bWVyb0lkZW50aWZpY2FjaW9uLFxuICAgICAgICBpZGVudGlmaWNhdGlvblR5cGU6IGl0ZW0udGlwb0lkZW50aWZpY2FjaW9uLFxuICAgICAgICBzcmlDb2RlOiBpdGVtLmNvZGlnb1NyaSxcbiAgICAgICAgY29tcGFueVJ1YzogaXRlbS5ydWNFbXByZXNhLFxuICAgICAgICBjb21wYW55SWQ6IGl0ZW0uY29tcGFueUlkLFxuICAgICAgICBuYW1lOiBpdGVtLm5vbWJyZUZpc2NhbCxcbiAgICAgIH0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3VzdG9tZXJzO1xuICB9XG59XG4iXX0=","import { DateFormatter, getValidId, isValidField } from '@acontplus/utils';\nexport class CustomerCreateUpdateMapper {\n    static toJson(param) {\n        return {\n            idCliente: getValidId(param.idCliente),\n            idEmpleado: getValidId(param.idEmpleado),\n            idTipoIdentificacion: param.idTipoIdentificacion,\n            idTipoClienteProveedor: getValidId(param.idTipoClienteProveedor),\n            idTipoEntidad: getValidId(param.idTipoEntidad),\n            idCiudad: getValidId(param.idCiudad),\n            idSubContribuyente: getValidId(param.idSubContribuyente),\n            idTiempoCredito: getValidId(param.idTiempoCredito),\n            idEmpresa: getValidId(param.idEmpresa),\n            idCargo: getValidId(param.idCargo),\n            numeroIdentificacion: param.numeroIdentificacion,\n            nombreFiscal: param.nombreFiscal,\n            nombreComercial: param.nombreComercial,\n            direccion: isValidField(param.direccion),\n            telefono: isValidField(param.telefono),\n            correo: isValidField(param.correo),\n            placa: isValidField(param.placa),\n            montoCredito: isValidField(param.montoCredito),\n            nota: isValidField(param.nota),\n            validationSri: param.validationSri,\n            idFormaPagoSri: getValidId(param.idFormaPagoSri),\n            estado: param.estado ?? true,\n            infoCrediticia: param.dataInfoCred && JSON.stringify(param.dataInfoCred),\n            configValorBruto: param.configValorBruto ?? null,\n            birthDate: DateFormatter.isValid(param.birthDate)\n                ? DateFormatter.toUTCString(param.birthDate)\n                : null,\n        };\n    }\n    static fromJson(response) {\n        if (!response)\n            return response;\n        const result = {\n            id: 0,\n        };\n        if (response.code === '1' && typeof response.payload === 'string') {\n            try {\n                const parsed = JSON.parse(response.payload);\n                if (Array.isArray(parsed) && parsed.length > 0) {\n                    const { idCliente } = parsed[0];\n                    result.id = idCliente;\n                }\n            }\n            catch (error) {\n                console.error('Error parsing payload JSON:', error);\n            }\n        }\n        return result;\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItY3JlYXRlLXVwZGF0ZS1tYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jdXN0b21lci9zcmMvbGliL2luZnJhc3RydWN0dXJlL21hcHBlcnMvY3VzdG9tZXItY3JlYXRlLXVwZGF0ZS1tYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFM0UsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQVU7UUFDdEIsT0FBTztZQUNMLFNBQVMsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLFNBQW1CLENBQUM7WUFDaEQsVUFBVSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBb0IsQ0FBQztZQUNsRCxvQkFBb0IsRUFBRSxLQUFLLENBQUMsb0JBQW9CO1lBQ2hELHNCQUFzQixFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUM7WUFDaEUsYUFBYSxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO1lBQzlDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUNwQyxrQkFBa0IsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDO1lBQ3hELGVBQWUsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztZQUNsRCxTQUFTLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDdEMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ2xDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxvQkFBb0I7WUFDaEQsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLGVBQWUsRUFBRSxLQUFLLENBQUMsZUFBZTtZQUN0QyxTQUFTLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDeEMsUUFBUSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1lBQ3RDLE1BQU0sRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQztZQUNsQyxLQUFLLEVBQUUsWUFBWSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDaEMsWUFBWSxFQUFFLFlBQVksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQzlDLElBQUksRUFBRSxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUM5QixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7WUFDbEMsY0FBYyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQ2hELE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUk7WUFDNUIsY0FBYyxFQUFFLEtBQUssQ0FBQyxZQUFZLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQ3hFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJO1lBQ2hELFNBQVMsRUFBRSxhQUFhLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQy9DLENBQUMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBQzVDLENBQUMsQ0FBQyxJQUFJO1NBQ1QsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQWE7UUFDM0IsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLFFBQVEsQ0FBQztRQUMvQixNQUFNLE1BQU0sR0FBRztZQUNiLEVBQUUsRUFBRSxDQUFDO1NBQ04sQ0FBQztRQUVGLElBQUksUUFBUSxDQUFDLElBQUksS0FBSyxHQUFHLElBQUksT0FBTyxRQUFRLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQztnQkFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDNUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQy9DLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ2hDLE1BQU0sQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFDO2dCQUN4QixDQUFDO1lBQ0gsQ0FBQztZQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7Z0JBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUN0RCxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGVGb3JtYXR0ZXIsIGdldFZhbGlkSWQsIGlzVmFsaWRGaWVsZCB9IGZyb20gJ0BhY29udHBsdXMvdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJDcmVhdGVVcGRhdGVNYXBwZXIge1xuICBzdGF0aWMgdG9Kc29uKHBhcmFtOiBhbnkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaWRDbGllbnRlOiBnZXRWYWxpZElkKHBhcmFtLmlkQ2xpZW50ZSBhcyBudW1iZXIpLFxuICAgICAgaWRFbXBsZWFkbzogZ2V0VmFsaWRJZChwYXJhbS5pZEVtcGxlYWRvIGFzIG51bWJlciksXG4gICAgICBpZFRpcG9JZGVudGlmaWNhY2lvbjogcGFyYW0uaWRUaXBvSWRlbnRpZmljYWNpb24sXG4gICAgICBpZFRpcG9DbGllbnRlUHJvdmVlZG9yOiBnZXRWYWxpZElkKHBhcmFtLmlkVGlwb0NsaWVudGVQcm92ZWVkb3IpLFxuICAgICAgaWRUaXBvRW50aWRhZDogZ2V0VmFsaWRJZChwYXJhbS5pZFRpcG9FbnRpZGFkKSxcbiAgICAgIGlkQ2l1ZGFkOiBnZXRWYWxpZElkKHBhcmFtLmlkQ2l1ZGFkKSxcbiAgICAgIGlkU3ViQ29udHJpYnV5ZW50ZTogZ2V0VmFsaWRJZChwYXJhbS5pZFN1YkNvbnRyaWJ1eWVudGUpLFxuICAgICAgaWRUaWVtcG9DcmVkaXRvOiBnZXRWYWxpZElkKHBhcmFtLmlkVGllbXBvQ3JlZGl0byksXG4gICAgICBpZEVtcHJlc2E6IGdldFZhbGlkSWQocGFyYW0uaWRFbXByZXNhKSxcbiAgICAgIGlkQ2FyZ286IGdldFZhbGlkSWQocGFyYW0uaWRDYXJnbyksXG4gICAgICBudW1lcm9JZGVudGlmaWNhY2lvbjogcGFyYW0ubnVtZXJvSWRlbnRpZmljYWNpb24sXG4gICAgICBub21icmVGaXNjYWw6IHBhcmFtLm5vbWJyZUZpc2NhbCxcbiAgICAgIG5vbWJyZUNvbWVyY2lhbDogcGFyYW0ubm9tYnJlQ29tZXJjaWFsLFxuICAgICAgZGlyZWNjaW9uOiBpc1ZhbGlkRmllbGQocGFyYW0uZGlyZWNjaW9uKSxcbiAgICAgIHRlbGVmb25vOiBpc1ZhbGlkRmllbGQocGFyYW0udGVsZWZvbm8pLFxuICAgICAgY29ycmVvOiBpc1ZhbGlkRmllbGQocGFyYW0uY29ycmVvKSxcbiAgICAgIHBsYWNhOiBpc1ZhbGlkRmllbGQocGFyYW0ucGxhY2EpLFxuICAgICAgbW9udG9DcmVkaXRvOiBpc1ZhbGlkRmllbGQocGFyYW0ubW9udG9DcmVkaXRvKSxcbiAgICAgIG5vdGE6IGlzVmFsaWRGaWVsZChwYXJhbS5ub3RhKSxcbiAgICAgIHZhbGlkYXRpb25Tcmk6IHBhcmFtLnZhbGlkYXRpb25TcmksXG4gICAgICBpZEZvcm1hUGFnb1NyaTogZ2V0VmFsaWRJZChwYXJhbS5pZEZvcm1hUGFnb1NyaSksXG4gICAgICBlc3RhZG86IHBhcmFtLmVzdGFkbyA/PyB0cnVlLFxuICAgICAgaW5mb0NyZWRpdGljaWE6IHBhcmFtLmRhdGFJbmZvQ3JlZCAmJiBKU09OLnN0cmluZ2lmeShwYXJhbS5kYXRhSW5mb0NyZWQpLFxuICAgICAgY29uZmlnVmFsb3JCcnV0bzogcGFyYW0uY29uZmlnVmFsb3JCcnV0byA/PyBudWxsLFxuICAgICAgYmlydGhEYXRlOiBEYXRlRm9ybWF0dGVyLmlzVmFsaWQocGFyYW0uYmlydGhEYXRlKVxuICAgICAgICA/IERhdGVGb3JtYXR0ZXIudG9VVENTdHJpbmcocGFyYW0uYmlydGhEYXRlKVxuICAgICAgICA6IG51bGwsXG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSnNvbihyZXNwb25zZTogYW55KTogYW55IHtcbiAgICBpZiAoIXJlc3BvbnNlKSByZXR1cm4gcmVzcG9uc2U7XG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgaWQ6IDAsXG4gICAgfTtcblxuICAgIGlmIChyZXNwb25zZS5jb2RlID09PSAnMScgJiYgdHlwZW9mIHJlc3BvbnNlLnBheWxvYWQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKHJlc3BvbnNlLnBheWxvYWQpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJzZWQpICYmIHBhcnNlZC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgY29uc3QgeyBpZENsaWVudGUgfSA9IHBhcnNlZFswXTtcbiAgICAgICAgICByZXN1bHQuaWQgPSBpZENsaWVudGU7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgcGF5bG9hZCBKU09OOicsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG59XG4iXX0=","export class CustomerFormDataMapper {\n    static toJson() {\n        return JSON.stringify({\n            tipo: 2,\n        });\n    }\n    static fromJson(response) {\n        const result = {};\n        if (response.code === '1') {\n            const mainData = JSON.parse(response.payload);\n            result.tipoIdentificacion = mainData[0];\n            result.tipoContribuyentes = mainData[1];\n            result.tiempoCreditos = mainData[2] || [];\n            const ciudades = mainData[3];\n            result.ciudades = ciudades.reduce((acc, ciudade) => {\n                const dataExists = acc.find((c) => c.idProvincia === ciudade.idProvincia);\n                if (!dataExists) {\n                    acc.push({\n                        idProvincia: ciudade.idProvincia,\n                        nombre: ciudade.provincia,\n                        ciudades: [\n                            {\n                                idCiudad: ciudade.idCiudad,\n                                nombre: ciudade.ciudad,\n                            },\n                        ],\n                    });\n                }\n                else {\n                    dataExists.ciudades.push({\n                        idCiudad: ciudade.idCiudad,\n                        nombre: ciudade.ciudad,\n                    });\n                }\n                return acc;\n            }, []);\n            result.tiposCliente = mainData[4] || [];\n            result.empresas = mainData[5] || [];\n            result.cargos = mainData[6] || [];\n            result.formasPagoSri = mainData[7] || [];\n            result.housingTypes = mainData[8] || [];\n            result.maritalStatuses = mainData[9] || [];\n            result.employees = mainData[10] || [];\n        }\n        return result;\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZm9ybS1kYXRhLW1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWN1c3RvbWVyL3NyYy9saWIvaW5mcmFzdHJ1Y3R1cmUvbWFwcGVycy9jdXN0b21lci1mb3JtLWRhdGEtbWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxzQkFBc0I7SUFDakMsTUFBTSxDQUFDLE1BQU07UUFDWCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDcEIsSUFBSSxFQUFFLENBQUM7U0FDUixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFhO1FBQzNCLE1BQU0sTUFBTSxHQUFHLEVBQVMsQ0FBQztRQUN6QixJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDMUIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBaUIsQ0FBQyxDQUFDO1lBRXhELE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEMsTUFBTSxDQUFDLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxNQUFNLENBQUMsY0FBYyxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUMsTUFBTSxRQUFRLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTdCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxPQUFZLEVBQUUsRUFBRTtnQkFDM0QsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsS0FBSyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7Z0JBQy9FLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztvQkFDaEIsR0FBRyxDQUFDLElBQUksQ0FBQzt3QkFDUCxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVc7d0JBQ2hDLE1BQU0sRUFBRSxPQUFPLENBQUMsU0FBUzt3QkFDekIsUUFBUSxFQUFFOzRCQUNSO2dDQUNFLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtnQ0FDMUIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNOzZCQUN2Qjt5QkFDRjtxQkFDRixDQUFDLENBQUM7Z0JBQ0wsQ0FBQztxQkFBTSxDQUFDO29CQUNOLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO3dCQUN2QixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7d0JBQzFCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtxQkFDdkIsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQ0QsT0FBTyxHQUFHLENBQUM7WUFDYixDQUFDLEVBQUUsRUFBUyxDQUFDLENBQUM7WUFFZCxNQUFNLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDeEMsTUFBTSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQyxNQUFNLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDekMsTUFBTSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3hDLE1BQU0sQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQyxNQUFNLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEMsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBDdXN0b21lckZvcm1EYXRhTWFwcGVyIHtcbiAgc3RhdGljIHRvSnNvbigpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgdGlwbzogMixcbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSnNvbihyZXNwb25zZTogYW55KSB7XG4gICAgY29uc3QgcmVzdWx0ID0ge30gYXMgYW55O1xuICAgIGlmIChyZXNwb25zZS5jb2RlID09PSAnMScpIHtcbiAgICAgIGNvbnN0IG1haW5EYXRhID0gSlNPTi5wYXJzZShyZXNwb25zZS5wYXlsb2FkIGFzIHN0cmluZyk7XG5cbiAgICAgIHJlc3VsdC50aXBvSWRlbnRpZmljYWNpb24gPSBtYWluRGF0YVswXTtcbiAgICAgIHJlc3VsdC50aXBvQ29udHJpYnV5ZW50ZXMgPSBtYWluRGF0YVsxXTtcbiAgICAgIHJlc3VsdC50aWVtcG9DcmVkaXRvcyA9IG1haW5EYXRhWzJdIHx8IFtdO1xuICAgICAgY29uc3QgY2l1ZGFkZXMgPSBtYWluRGF0YVszXTtcblxuICAgICAgcmVzdWx0LmNpdWRhZGVzID0gY2l1ZGFkZXMucmVkdWNlKChhY2M6IGFueSwgY2l1ZGFkZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGFFeGlzdHMgPSBhY2MuZmluZCgoYzogYW55KSA9PiBjLmlkUHJvdmluY2lhID09PSBjaXVkYWRlLmlkUHJvdmluY2lhKTtcbiAgICAgICAgaWYgKCFkYXRhRXhpc3RzKSB7XG4gICAgICAgICAgYWNjLnB1c2goe1xuICAgICAgICAgICAgaWRQcm92aW5jaWE6IGNpdWRhZGUuaWRQcm92aW5jaWEsXG4gICAgICAgICAgICBub21icmU6IGNpdWRhZGUucHJvdmluY2lhLFxuICAgICAgICAgICAgY2l1ZGFkZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkQ2l1ZGFkOiBjaXVkYWRlLmlkQ2l1ZGFkLFxuICAgICAgICAgICAgICAgIG5vbWJyZTogY2l1ZGFkZS5jaXVkYWQsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRhdGFFeGlzdHMuY2l1ZGFkZXMucHVzaCh7XG4gICAgICAgICAgICBpZENpdWRhZDogY2l1ZGFkZS5pZENpdWRhZCxcbiAgICAgICAgICAgIG5vbWJyZTogY2l1ZGFkZS5jaXVkYWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH0sIFtdIGFzIGFueSk7XG5cbiAgICAgIHJlc3VsdC50aXBvc0NsaWVudGUgPSBtYWluRGF0YVs0XSB8fCBbXTtcbiAgICAgIHJlc3VsdC5lbXByZXNhcyA9IG1haW5EYXRhWzVdIHx8IFtdO1xuICAgICAgcmVzdWx0LmNhcmdvcyA9IG1haW5EYXRhWzZdIHx8IFtdO1xuICAgICAgcmVzdWx0LmZvcm1hc1BhZ29TcmkgPSBtYWluRGF0YVs3XSB8fCBbXTtcbiAgICAgIHJlc3VsdC5ob3VzaW5nVHlwZXMgPSBtYWluRGF0YVs4XSB8fCBbXTtcbiAgICAgIHJlc3VsdC5tYXJpdGFsU3RhdHVzZXMgPSBtYWluRGF0YVs5XSB8fCBbXTtcbiAgICAgIHJlc3VsdC5lbXBsb3llZXMgPSBtYWluRGF0YVsxMF0gfHwgW107XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==","import { SEPARADORES_REGEX } from '@acontplus/core';\nimport { parseJSONSafe } from '@acontplus/utils';\nexport class CustomerGetByIdMapper {\n    static fromJson(response) {\n        if (response.code !== '1' || !response.payload) {\n            return {};\n        }\n        const data = JSON.parse(response.payload)[0];\n        return {\n            idCliente: data.idCliente,\n            idTipoClienteProveedor: data.idTipoClienteProveedor,\n            idTipoEntidad: data.idTipoEntidad,\n            idSubContribuyente: data.idSubContribuyente,\n            idTiempoCredito: data.idTiempoCredito,\n            idTipoIdentificacion: data.idTipoIdentificacion,\n            idCiudad: data.idCiudad,\n            numeroIdentificacion: data.numeroIdentificacion,\n            identificacionComprador: data.numeroIdentificacion,\n            razonSocialComprador: data.nombreFiscal,\n            nombreFiscal: data.nombreFiscal,\n            montoCredito: data.montoCredito,\n            nombreComercial: data.nombreComercial,\n            direccion: data.direccion,\n            telefono: data.telefono,\n            correo: data.correo,\n            estado: data.estado,\n            idEmpleado: data.idEmpleado,\n            diasCredito: data.diasCredito,\n            empleado: data.empleado,\n            idEmpresa: data.idEmpresa,\n            idCargo: data.idCargo,\n            placa: data.placa,\n            validationSri: data.validationSri,\n            codigoSri: data.codigoSri,\n            correos: data.correo ? data.correo.split(SEPARADORES_REGEX) : [],\n            telefonos: data.telefono ? data.telefono.split(SEPARADORES_REGEX) : [],\n            placas: data.placa ? data.placa.split(SEPARADORES_REGEX) : [],\n            idFormaPagoSri: data.idFormaPagoSri,\n            dataInfoCred: parseJSONSafe(data.infoCrediticia, {}),\n            nota: data.nota?.trim() ?? '',\n            configValorBruto: data.configValorBruto ?? false,\n        };\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZ2V0LWJ5LWlkLW1hcHBlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWN1c3RvbWVyL3NyYy9saWIvaW5mcmFzdHJ1Y3R1cmUvbWFwcGVycy9jdXN0b21lci1nZXQtYnktaWQtbWFwcGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBYTtRQUMzQixJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQy9DLE9BQU8sRUFBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUU3QyxPQUFPO1lBQ0wsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLHNCQUFzQixFQUFFLElBQUksQ0FBQyxzQkFBc0I7WUFDbkQsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7WUFDM0MsZUFBZSxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ3JDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0I7WUFDL0MsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLG9CQUFvQixFQUFFLElBQUksQ0FBQyxvQkFBb0I7WUFDL0MsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLG9CQUFvQjtZQUNsRCxvQkFBb0IsRUFBRSxJQUFJLENBQUMsWUFBWTtZQUN2QyxZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDL0IsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVztZQUM3QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTO1lBQ3pCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7WUFDakIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2pDLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUztZQUN6QixPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoRSxTQUFTLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN0RSxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM3RCxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDbkMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztZQUNwRCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFO1lBQzdCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxLQUFLO1NBQ2pELENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTRVBBUkFET1JFU19SRUdFWCB9IGZyb20gJ0BhY29udHBsdXMvY29yZSc7XG5pbXBvcnQgeyBwYXJzZUpTT05TYWZlIH0gZnJvbSAnQGFjb250cGx1cy91dGlscyc7XG5cbmV4cG9ydCBjbGFzcyBDdXN0b21lckdldEJ5SWRNYXBwZXIge1xuICBzdGF0aWMgZnJvbUpzb24ocmVzcG9uc2U6IGFueSkge1xuICAgIGlmIChyZXNwb25zZS5jb2RlICE9PSAnMScgfHwgIXJlc3BvbnNlLnBheWxvYWQpIHtcbiAgICAgIHJldHVybiB7fSBhcyBhbnk7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UocmVzcG9uc2UucGF5bG9hZClbMF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgaWRDbGllbnRlOiBkYXRhLmlkQ2xpZW50ZSxcbiAgICAgIGlkVGlwb0NsaWVudGVQcm92ZWVkb3I6IGRhdGEuaWRUaXBvQ2xpZW50ZVByb3ZlZWRvcixcbiAgICAgIGlkVGlwb0VudGlkYWQ6IGRhdGEuaWRUaXBvRW50aWRhZCxcbiAgICAgIGlkU3ViQ29udHJpYnV5ZW50ZTogZGF0YS5pZFN1YkNvbnRyaWJ1eWVudGUsXG4gICAgICBpZFRpZW1wb0NyZWRpdG86IGRhdGEuaWRUaWVtcG9DcmVkaXRvLFxuICAgICAgaWRUaXBvSWRlbnRpZmljYWNpb246IGRhdGEuaWRUaXBvSWRlbnRpZmljYWNpb24sXG4gICAgICBpZENpdWRhZDogZGF0YS5pZENpdWRhZCxcbiAgICAgIG51bWVyb0lkZW50aWZpY2FjaW9uOiBkYXRhLm51bWVyb0lkZW50aWZpY2FjaW9uLFxuICAgICAgaWRlbnRpZmljYWNpb25Db21wcmFkb3I6IGRhdGEubnVtZXJvSWRlbnRpZmljYWNpb24sXG4gICAgICByYXpvblNvY2lhbENvbXByYWRvcjogZGF0YS5ub21icmVGaXNjYWwsXG4gICAgICBub21icmVGaXNjYWw6IGRhdGEubm9tYnJlRmlzY2FsLFxuICAgICAgbW9udG9DcmVkaXRvOiBkYXRhLm1vbnRvQ3JlZGl0byxcbiAgICAgIG5vbWJyZUNvbWVyY2lhbDogZGF0YS5ub21icmVDb21lcmNpYWwsXG4gICAgICBkaXJlY2Npb246IGRhdGEuZGlyZWNjaW9uLFxuICAgICAgdGVsZWZvbm86IGRhdGEudGVsZWZvbm8sXG4gICAgICBjb3JyZW86IGRhdGEuY29ycmVvLFxuICAgICAgZXN0YWRvOiBkYXRhLmVzdGFkbyxcbiAgICAgIGlkRW1wbGVhZG86IGRhdGEuaWRFbXBsZWFkbyxcbiAgICAgIGRpYXNDcmVkaXRvOiBkYXRhLmRpYXNDcmVkaXRvLFxuICAgICAgZW1wbGVhZG86IGRhdGEuZW1wbGVhZG8sXG4gICAgICBpZEVtcHJlc2E6IGRhdGEuaWRFbXByZXNhLFxuICAgICAgaWRDYXJnbzogZGF0YS5pZENhcmdvLFxuICAgICAgcGxhY2E6IGRhdGEucGxhY2EsXG4gICAgICB2YWxpZGF0aW9uU3JpOiBkYXRhLnZhbGlkYXRpb25TcmksXG4gICAgICBjb2RpZ29Tcmk6IGRhdGEuY29kaWdvU3JpLFxuICAgICAgY29ycmVvczogZGF0YS5jb3JyZW8gPyBkYXRhLmNvcnJlby5zcGxpdChTRVBBUkFET1JFU19SRUdFWCkgOiBbXSxcbiAgICAgIHRlbGVmb25vczogZGF0YS50ZWxlZm9ubyA/IGRhdGEudGVsZWZvbm8uc3BsaXQoU0VQQVJBRE9SRVNfUkVHRVgpIDogW10sXG4gICAgICBwbGFjYXM6IGRhdGEucGxhY2EgPyBkYXRhLnBsYWNhLnNwbGl0KFNFUEFSQURPUkVTX1JFR0VYKSA6IFtdLFxuICAgICAgaWRGb3JtYVBhZ29Tcmk6IGRhdGEuaWRGb3JtYVBhZ29TcmksXG4gICAgICBkYXRhSW5mb0NyZWQ6IHBhcnNlSlNPTlNhZmUoZGF0YS5pbmZvQ3JlZGl0aWNpYSwge30pLFxuICAgICAgbm90YTogZGF0YS5ub3RhPy50cmltKCkgPz8gJycsXG4gICAgICBjb25maWdWYWxvckJydXRvOiBkYXRhLmNvbmZpZ1ZhbG9yQnJ1dG8gPz8gZmFsc2UsXG4gICAgfTtcbiAgfVxufVxuIl19","export class ListCustomerMapper {\n    static toJson(params) {\n        return JSON.stringify({\n            ...params,\n            type: 1,\n            tipo: 1, // remove after\n            pageIndex: params.pageIndex,\n            pageSize: params.pageSize,\n        });\n    }\n    static fromJson(response) {\n        // Initialize with backend-aligned shape (PageIndex is commonly 1-based server-side)\n        const result = {\n            items: [],\n            pageIndex: 1,\n            pageSize: 0,\n            totalCount: 0,\n            totalPages: 0,\n            hasPreviousPage: false,\n            hasNextPage: false,\n            metadata: {},\n        };\n        // Parse payload (backend sends JSON string in payload)\n        const parsed = typeof response?.payload === 'string' ? JSON.parse(response.payload) : response?.payload;\n        const dataArray = Array.isArray(parsed)\n            ? (parsed[0] ?? [])\n            : Array.isArray(parsed?.items)\n                ? parsed.items\n                : [];\n        // Map each item to UI-friendly fields, preserving source values\n        result.items = dataArray.map((item, index) => ({\n            index: index + 1,\n            id: item.idCliente,\n            identificationTypeId: item.idTipoIdentificacion,\n            identification: item.numeroIdentificacion,\n            businessName: item.nombreFiscal,\n            tradeName: item.nombreComercial,\n            address: item.direccion,\n            phone: item.telefono,\n            email: item.correo,\n            finalConsumer: item.consumidorFinal,\n            sriValidation: item.validacionSri ?? item.validationSri,\n            sriValidationName: (item.validationSri ?? item.validacionSri) ? 'SI' : 'NO',\n            identificationType: item.tipoIdentificacion,\n            status: item.estado,\n            statusName: item.estado ? 'Activo' : 'Inactivo',\n            isFinalConsumer: item.codTipoIdentificacion === 'CF',\n            totalRecords: item.totalRecords ?? item.TotalCount,\n        }));\n        // Flexible pagination extraction (prefer explicit backend values)\n        const pageIndex = response?.PageIndex ?? response?.pageIndex ?? 1;\n        const pageSize = response?.PageSize ?? response?.pageSize ?? result.items.length;\n        const totalCountFromItem = result.items.length > 0 ? result.items[0].totalRecords : undefined;\n        const totalCount = response?.TotalCount ?? response?.totalCount ?? totalCountFromItem ?? result.items.length;\n        const metadata = response?.Metadata ?? response?.metadata ?? {};\n        result.pageIndex = Number.isFinite(pageIndex) ? pageIndex : 1;\n        result.pageSize = Number.isFinite(pageSize) ? pageSize : result.items.length;\n        result.totalCount = Number.isFinite(totalCount) ? totalCount : result.items.length;\n        result.totalPages = result.pageSize > 0 ? Math.ceil(result.totalCount / result.pageSize) : 0;\n        // Backend semantics show HasPreviousPage as PageIndex > 1\n        result.hasPreviousPage = result.pageIndex > 1;\n        result.hasNextPage = result.pageIndex < result.totalPages;\n        result.metadata = metadata;\n        return result;\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItbGlzdC1tYXBwZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jdXN0b21lci9zcmMvbGliL2luZnJhc3RydWN0dXJlL21hcHBlcnMvY3VzdG9tZXItbGlzdC1tYXBwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsTUFBTSxDQUFDLE1BQVc7UUFDdkIsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3BCLEdBQUcsTUFBTTtZQUNULElBQUksRUFBRSxDQUFDO1lBQ1AsSUFBSSxFQUFFLENBQUMsRUFBRSxlQUFlO1lBQ3hCLFNBQVMsRUFBRSxNQUFNLENBQUMsU0FBUztZQUMzQixRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBYTtRQUMzQixvRkFBb0Y7UUFDcEYsTUFBTSxNQUFNLEdBQVE7WUFDbEIsS0FBSyxFQUFFLEVBQVc7WUFDbEIsU0FBUyxFQUFFLENBQUM7WUFDWixRQUFRLEVBQUUsQ0FBQztZQUNYLFVBQVUsRUFBRSxDQUFDO1lBQ2IsVUFBVSxFQUFFLENBQUM7WUFDYixlQUFlLEVBQUUsS0FBSztZQUN0QixXQUFXLEVBQUUsS0FBSztZQUNsQixRQUFRLEVBQUUsRUFBeUI7U0FDcEMsQ0FBQztRQUVGLHVEQUF1RDtRQUN2RCxNQUFNLE1BQU0sR0FDVixPQUFPLFFBQVEsRUFBRSxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQztRQUMzRixNQUFNLFNBQVMsR0FBVSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQztZQUM1QyxDQUFDLENBQUMsQ0FBQyxN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bkYsTUFBTSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdGLDBEQUEwRDtRQUMxRCxNQUFNLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQzFELE1BQU0sQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBRTNCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBMaXN0Q3VzdG9tZXJNYXBwZXIge1xuICBzdGF0aWMgdG9Kc29uKHBhcmFtczogYW55KSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgIC4uLnBhcmFtcyxcbiAgICAgIHR5cGU6IDEsXG4gICAgICB0aXBvOiAxLCAvLyByZW1vdmUgYWZ0ZXJcbiAgICAgIHBhZ2VJbmRleDogcGFyYW1zLnBhZ2VJbmRleCxcbiAgICAgIHBhZ2VTaXplOiBwYXJhbXMucGFnZVNpemUsXG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZnJvbUpzb24ocmVzcG9uc2U6IGFueSkge1xuICAgIC8vIEluaXRpYWxpemUgd2l0aCBiYWNrZW5kLWFsaWduZWQgc2hhcGUgKFBhZ2VJbmRleCBpcyBjb21tb25seSAxLWJhc2VkIHNlcnZlci1zaWRlKVxuICAgIGNvbnN0IHJlc3VsdDogYW55ID0ge1xuICAgICAgaXRlbXM6IFtdIGFzIGFueVtdLFxuICAgICAgcGFnZUluZGV4OiAxLFxuICAgICAgcGFnZVNpemU6IDAsXG4gICAgICB0b3RhbENvdW50OiAwLFxuICAgICAgdG90YWxQYWdlczogMCxcbiAgICAgIGhhc1ByZXZpb3VzUGFnZTogZmFsc2UsXG4gICAgICBoYXNOZXh0UGFnZTogZmFsc2UsXG4gICAgICBtZXRhZGF0YToge30gYXMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgICB9O1xuXG4gICAgLy8gUGFyc2UgcGF5bG9hZCAoYmFja2VuZCBzZW5kcyBKU09OIHN0cmluZyBpbiBwYXlsb2FkKVxuICAgIGNvbnN0IHBhcnNlZCA9XG4gICAgICB0eXBlb2YgcmVzcG9uc2U/LnBheWxvYWQgPT09ICdzdHJpbmcnID8gSlNPTi5wYXJzZShyZXNwb25zZS5wYXlsb2FkKSA6IHJlc3BvbnNlPy5wYXlsb2FkO1xuICAgIGNvbnN0IGRhdGFBcnJheTogYW55W10gPSBBcnJheS5pc0FycmF5KHBhcnNlZClcbiAgICAgID8gKHBhcnNlZFswXSA/PyBbXSlcbiAgICAgIDogQXJyYXkuaXNBcnJheShwYXJzZWQ/Lml0ZW1zKVxuICAgICAgICA/IHBhcnNlZC5pdGVtc1xuICAgICAgICA6IFtdO1xuXG4gICAgLy8gTWFwIGVhY2ggaXRlbSB0byBVSS1mcmllbmRseSBmaWVsZHMsIHByZXNlcnZpbmcgc291cmNlIHZhbHVlc1xuICAgIHJlc3VsdC5pdGVtcyA9IGRhdGFBcnJheS5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4gKHtcbiAgICAgIGluZGV4OiBpbmRleCArIDEsXG4gICAgICBpZDogaXRlbS5pZENsaWVudGUsXG4gICAgICBpZGVudGlmaWNhdGlvblR5cGVJZDogaXRlbS5pZFRpcG9JZGVudGlmaWNhY2lvbixcbiAgICAgIGlkZW50aWZpY2F0aW9uOiBpdGVtLm51bWVyb0lkZW50aWZpY2FjaW9uLFxuICAgICAgYnVzaW5lc3NOYW1lOiBpdGVtLm5vbWJyZUZpc2NhbCxcbiAgICAgIHRyYWRlTmFtZTogaXRlbS5ub21icmVDb21lcmNpYWwsXG4gICAgICBhZGRyZXNzOiBpdGVtLmRpcmVjY2lvbixcbiAgICAgIHBob25lOiBpdGVtLnRlbGVmb25vLFxuICAgICAgZW1haWw6IGl0ZW0uY29ycmVvLFxuICAgICAgZmluYWxDb25zdW1lcjogaXRlbS5jb25zdW1pZG9yRmluYWwsXG4gICAgICBzcmlWYWxpZGF0aW9uOiBpdGVtLnZhbGlkYWNpb25TcmkgPz8gaXRlbS52YWxpZGF0aW9uU3JpLFxuICAgICAgc3JpVmFsaWRhdGlvbk5hbWU6IChpdGVtLnZhbGlkYXRpb25TcmkgPz8gaXRlbS52YWxpZGFjaW9uU3JpKSA/ICdTSScgOiAnTk8nLFxuICAgICAgaWRlbnRpZmljYXRpb25UeXBlOiBpdGVtLnRpcG9JZGVudGlmaWNhY2lvbixcbiAgICAgIHN0YXR1czogaXRlbS5lc3RhZG8sXG4gICAgICBzdGF0dXNOYW1lOiBpdGVtLmVzdGFkbyA/ICdBY3Rpdm8nIDogJ0luYWN0aXZvJyxcbiAgICAgIGlzRmluYWxDb25zdW1lcjogaXRlbS5jb2RUaXBvSWRlbnRpZmljYWNpb24gPT09ICdDRicsXG4gICAgICB0b3RhbFJlY29yZHM6IGl0ZW0udG90YWxSZWNvcmRzID8/IGl0ZW0uVG90YWxDb3VudCxcbiAgICB9KSk7XG5cbiAgICAvLyBGbGV4aWJsZSBwYWdpbmF0aW9uIGV4dHJhY3Rpb24gKHByZWZlciBleHBsaWNpdCBiYWNrZW5kIHZhbHVlcylcbiAgICBjb25zdCBwYWdlSW5kZXggPSByZXNwb25zZT8uUGFnZUluZGV4ID8/IHJlc3BvbnNlPy5wYWdlSW5kZXggPz8gMTtcbiAgICBjb25zdCBwYWdlU2l6ZSA9IHJlc3BvbnNlPy5QYWdlU2l6ZSA/PyByZXNwb25zZT8ucGFnZVNpemUgPz8gcmVzdWx0Lml0ZW1zLmxlbmd0aDtcbiAgICBjb25zdCB0b3RhbENvdW50RnJvbUl0ZW0gPSByZXN1bHQuaXRlbXMubGVuZ3RoID4gMCA/IHJlc3VsdC5pdGVtc1swXS50b3RhbFJlY29yZHMgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdG90YWxDb3VudCA9XG4gICAgICByZXNwb25zZT8uVG90YWxDb3VudCA/PyByZXNwb25zZT8udG90YWxDb3VudCA/PyB0b3RhbENvdW50RnJvbUl0ZW0gPz8gcmVzdWx0Lml0ZW1zLmxlbmd0aDtcbiAgICBjb25zdCBtZXRhZGF0YSA9IHJlc3BvbnNlPy5NZXRhZGF0YSA/PyByZXNwb25zZT8ubWV0YWRhdGEgPz8ge307XG5cbiAgICByZXN1bHQucGFnZUluZGV4ID0gTnVtYmVyLmlzRmluaXRlKHBhZ2VJbmRleCkgPyBwYWdlSW5kZXggOiAxO1xuICAgIHJlc3VsdC5wYWdlU2l6ZSA9IE51bWJlci5pc0Zpbml0ZShwYWdlU2l6ZSkgPyBwYWdlU2l6ZSA6IHJlc3VsdC5pdGVtcy5sZW5ndGg7XG4gICAgcmVzdWx0LnRvdGFsQ291bnQgPSBOdW1iZXIuaXNGaW5pdGUodG90YWxDb3VudCkgPyB0b3RhbENvdW50IDogcmVzdWx0Lml0ZW1zLmxlbmd0aDtcbiAgICByZXN1bHQudG90YWxQYWdlcyA9IHJlc3VsdC5wYWdlU2l6ZSA+IDAgPyBNYXRoLmNlaWwocmVzdWx0LnRvdGFsQ291bnQgLyByZXN1bHQucGFnZVNpemUpIDogMDtcbiAgICAvLyBCYWNrZW5kIHNlbWFudGljcyBzaG93IEhhc1ByZXZpb3VzUGFnZSBhcyBQYWdlSW5kZXggPiAxXG4gICAgcmVzdWx0Lmhhc1ByZXZpb3VzUGFnZSA9IHJlc3VsdC5wYWdlSW5kZXggPiAxO1xuICAgIHJlc3VsdC5oYXNOZXh0UGFnZSA9IHJlc3VsdC5wYWdlSW5kZXggPCByZXN1bHQudG90YWxQYWdlcztcbiAgICByZXN1bHQubWV0YWRhdGEgPSBtZXRhZGF0YTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==","import { HttpClientFactory } from '@acontplus/core';\nimport { CUSTOMER_API } from '../constants/customer.constants';\nexport class CustomerExternalHttpRepository {\n    get http() {\n        return HttpClientFactory.getClient(); // siempre toma el último cliente configurado\n    }\n    get url() {\n        return `${CUSTOMER_API.BILLING}/Consultas/`;\n    }\n    getById(identification) {\n        const id = identification.getId();\n        let endpoint = '';\n        if (identification.isValidRuc()) {\n            endpoint = `GetRucSRI?Ruc=${id}`;\n        }\n        else if (identification.isValidCedula()) {\n            endpoint = `GetCedulaSri?Ruc=${id}`;\n        }\n        else {\n            throw new Error('Número de identificación inválido para SRI');\n        }\n        return this.http.get(`${this.url}${endpoint}`).then(response => {\n            const idCard = response.numeroRuc ? response.numeroRuc : response.identificacion;\n            const businessName = response.razonSocial ? response.razonSocial : response.nombreCompleto;\n            const data = {\n                phone: response.telefono,\n                email: response.email,\n                idCard,\n                businessName,\n                address: response.direccion,\n            };\n            return {\n                status: response.error ? 'warning' : 'success',\n                code: response.error ? 'EXTERNAL_API_ERROR' : 'SUCCESS',\n                data,\n                message: response.error ?? 'External API call completed',\n                timestamp: new Date().toISOString(),\n            };\n        });\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItZXh0ZXJuYWwtaHR0cC1yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY3VzdG9tZXIvc3JjL2xpYi9pbmZyYXN0cnVjdHVyZS9yZXBvc2l0b3JpZXMvY3VzdG9tZXItZXh0ZXJuYWwtaHR0cC1yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZSxpQkFBaUIsRUFBMEIsTUFBTSxpQkFBaUIsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHL0QsTUFBTSxPQUFPLDhCQUE4QjtJQUN6QyxJQUFZLElBQUk7UUFDZCxPQUFPLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsNkNBQTZDO0lBQ3JGLENBQUM7SUFFRCxJQUFZLEdBQUc7UUFDYixPQUFPLEdBQUcsWUFBWSxDQUFDLE9BQU8sYUFBYSxDQUFDO0lBQzlDLENBQUM7SUFFRCxPQUFPLENBQUMsY0FBc0M7UUFDNUMsTUFBTSxFQUFFLEdBQUcsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBRWxDLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNsQixJQUFJLGNBQWMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ2hDLFFBQVEsR0FBRyxpQkFBaUIsRUFBRSxFQUFFLENBQUM7UUFDbkMsQ0FBQzthQUFNLElBQUksY0FBYyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUM7WUFDMUMsUUFBUSxHQUFHLG9CQUFvQixFQUFFLEVBQUUsQ0FBQztRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBTSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDbEUsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztZQUNqRixNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsY0FBYyxDQUFDO1lBQzNGLE1BQU0sSUFBSSxHQUFxQjtnQkFDN0IsS0FBSyxFQUFFLFFBQVEsQ0FBQyxRQUFRO2dCQUN4QixLQUFLLEVBQUUsUUFBUSxDQUFDLEtBQUs7Z0JBQ3JCLE1BQU07Z0JBQ04sWUFBWTtnQkFDWixPQUFPLEVBQUUsUUFBUSxDQUFDLFNBQVM7YUFDNUIsQ0FBQztZQUNGLE9BQU87Z0JBQ0wsTUFBTSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDOUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUN2RCxJQUFJO2dCQUNKLE9BQU8sRUFBRSxRQUFRLENBQUMsS0FBSyxJQUFJLDZCQUE2QjtnQkFDeEQsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO2FBQ2hCLENBQUM7UUFDeEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcGlSZXNwb25zZSwgSHR0cENsaWVudEZhY3RvcnksIElkZW50aWZpY2F0aW9uTnVtYmVyVm8gfSBmcm9tICdAYWNvbnRwbHVzL2NvcmUnO1xuaW1wb3J0IHsgQ1VTVE9NRVJfQVBJIH0gZnJvbSAnLi4vY29uc3RhbnRzL2N1c3RvbWVyLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBDdXN0b21lckV4dGVybmFsUmVwb3NpdG9yeSB9IGZyb20gJy4uLy4uL2RvbWFpbic7XG5pbXBvcnQgeyBDdXN0b21lckV4dGVybmFsIH0gZnJvbSAnLi4vLi4vZG9tYWluL21vZGVscy9jdXN0b21lci1leHRlcm5hbCc7XG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJFeHRlcm5hbEh0dHBSZXBvc2l0b3J5IGltcGxlbWVudHMgQ3VzdG9tZXJFeHRlcm5hbFJlcG9zaXRvcnkge1xuICBwcml2YXRlIGdldCBodHRwKCkge1xuICAgIHJldHVybiBIdHRwQ2xpZW50RmFjdG9yeS5nZXRDbGllbnQoKTsgLy8gc2llbXByZSB0b21hIGVsIMO6bHRpbW8gY2xpZW50ZSBjb25maWd1cmFkb1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgdXJsKCkge1xuICAgIHJldHVybiBgJHtDVVNUT01FUl9BUEkuQklMTElOR30vQ29uc3VsdGFzL2A7XG4gIH1cblxuICBnZXRCeUlkKGlkZW50aWZpY2F0aW9uOiBJZGVudGlmaWNhdGlvbk51bWJlclZvKTogUHJvbWlzZTxBcGlSZXNwb25zZTxDdXN0b21lckV4dGVybmFsPj4ge1xuICAgIGNvbnN0IGlkID0gaWRlbnRpZmljYXRpb24uZ2V0SWQoKTtcblxuICAgIGxldCBlbmRwb2ludCA9ICcnO1xuICAgIGlmIChpZGVudGlmaWNhdGlvbi5pc1ZhbGlkUnVjKCkpIHtcbiAgICAgIGVuZHBvaW50ID0gYEdldFJ1Y1NSST9SdWM9JHtpZH1gO1xuICAgIH0gZWxzZSBpZiAoaWRlbnRpZmljYXRpb24uaXNWYWxpZENlZHVsYSgpKSB7XG4gICAgICBlbmRwb2ludCA9IGBHZXRDZWR1bGFTcmk/UnVjPSR7aWR9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdOw7ptZXJvIGRlIGlkZW50aWZpY2FjacOzbiBpbnbDoWxpZG8gcGFyYSBTUkknKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMudXJsfSR7ZW5kcG9pbnR9YCkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICBjb25zdCBpZENhcmQgPSByZXNwb25zZS5udW1lcm9SdWMgPyByZXNwb25zZS5udW1lcm9SdWMgOiByZXNwb25zZS5pZGVudGlmaWNhY2lvbjtcbiAgICAgIGNvbnN0IGJ1c2luZXNzTmFtZSA9IHJlc3BvbnNlLnJhem9uU29jaWFsID8gcmVzcG9uc2UucmF6b25Tb2NpYWwgOiByZXNwb25zZS5ub21icmVDb21wbGV0bztcbiAgICAgIGNvbnN0IGRhdGE6IEN1c3RvbWVyRXh0ZXJuYWwgPSB7XG4gICAgICAgIHBob25lOiByZXNwb25zZS50ZWxlZm9ubyxcbiAgICAgICAgZW1haWw6IHJlc3BvbnNlLmVtYWlsLFxuICAgICAgICBpZENhcmQsXG4gICAgICAgIGJ1c2luZXNzTmFtZSxcbiAgICAgICAgYWRkcmVzczogcmVzcG9uc2UuZGlyZWNjaW9uLFxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1czogcmVzcG9uc2UuZXJyb3IgPyAnd2FybmluZycgOiAnc3VjY2VzcycsXG4gICAgICAgIGNvZGU6IHJlc3BvbnNlLmVycm9yID8gJ0VYVEVSTkFMX0FQSV9FUlJPUicgOiAnU1VDQ0VTUycsXG4gICAgICAgIGRhdGEsXG4gICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLmVycm9yID8/ICdFeHRlcm5hbCBBUEkgY2FsbCBjb21wbGV0ZWQnLFxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH0gYXMgQXBpUmVzcG9uc2U8YW55PjtcbiAgICB9KTtcbiAgfVxufVxuIl19","import { CustomerFormDataMapper } from '../mappers/customer-form-data-mapper';\nimport { ListCustomerMapper } from '../mappers/customer-list-mapper';\nimport { CustomerGetByIdMapper } from '../mappers/customer-get-by-id-mapper';\nimport { CustomerCreateUpdateMapper } from '../mappers/customer-create-update-mapper';\nimport { CompanySearchMapper } from '../mappers/company-search-mapper';\nimport { HttpClientFactory } from '@acontplus/core';\nimport { CUSTOMER_API } from '../constants/customer.constants';\nexport class CustomerHttpRepository {\n    get http() {\n        return HttpClientFactory.getClient(); // siempre toma el último cliente configurado\n    }\n    get url() {\n        return `${CUSTOMER_API.BILLING}/CompanyCustomer/`;\n    }\n    checkExistence(identificationNumber) {\n        const searchPayload = JSON.stringify({\n            textSearch: identificationNumber,\n            tipo: 3,\n        });\n        return this.http.get(`${this.url}?json=${searchPayload}`).then(response => {\n            const result = {\n                status: 'warning',\n                code: response.code ?? 'UNKNOWN_ERROR',\n                data: null,\n                message: response.message ?? 'Unknown error occurred',\n                timestamp: new Date().toISOString(),\n            };\n            if (response.code === '1' && response.payload) {\n                const parsedData = JSON.parse(response.payload);\n                if (Array.isArray(parsedData) && parsedData.length > 0 && Array.isArray(parsedData[0])) {\n                    const [customer] = parsedData[0];\n                    if (customer) {\n                        result.status = 'success';\n                        result.data = customer;\n                    }\n                }\n            }\n            return result;\n        });\n    }\n    getFormData() {\n        const json = CustomerFormDataMapper.toJson();\n        return this.http.get(`${this.url}?json=${json}`).then((response) => {\n            const data = CustomerFormDataMapper.fromJson(response);\n            return {\n                status: 'success',\n                code: response.code ?? 'SUCCESS',\n                data,\n                timestamp: new Date().toISOString(),\n            };\n        });\n    }\n    getAll(obj) {\n        const json = ListCustomerMapper.toJson(obj);\n        return this.http.get(`${this.url}?json=${json}`).then((response) => {\n            const data = ListCustomerMapper.fromJson(response);\n            return {\n                status: 'success',\n                code: response.code ?? 'SUCCESS',\n                data,\n                timestamp: new Date().toISOString(),\n            };\n        });\n    }\n    create(dto) {\n        return this.http\n            .post(this.url, { data: CustomerCreateUpdateMapper.toJson(dto.data) })\n            .then(response => {\n            console.log(response);\n            const data = CustomerCreateUpdateMapper.fromJson(response);\n            return {\n                status: response.code === '1' ? 'success' : 'warning',\n                code: response.code ?? 'OPERATION_FAILED',\n                data,\n                message: response.message ?? 'Operation completed with issues',\n                timestamp: new Date().toISOString(),\n            };\n        });\n    }\n    update(dto) {\n        return this.http\n            .put(`${this.url}${dto.id}`, {\n            data: CustomerCreateUpdateMapper.toJson(dto.data),\n        })\n            .then(response => {\n            console.log(response);\n            return {\n                status: response.code === '1' ? 'success' : 'warning',\n                code: response.code ?? 'OPERATION_FAILED',\n                message: response.message ?? 'Operation completed with issues',\n                timestamp: new Date().toISOString(),\n            };\n        });\n    }\n    updateState(id) {\n        return this.http.delete(`${this.url}${id}`).then(response => {\n            return {\n                status: response.code === '1' ? 'success' : 'warning',\n                code: response.code,\n                message: response.message,\n                timestamp: new Date().toISOString(),\n            };\n        });\n    }\n    getById(id) {\n        return this.http.get(`${this.url}GetId/${id}`).then(response => {\n            const data = CustomerGetByIdMapper.fromJson(response);\n            return {\n                status: response.code === '1' ? 'success' : 'warning',\n                code: response.code ?? 'OPERATION_FAILED',\n                data,\n                message: response.message ?? 'Operation completed with issues',\n                timestamp: new Date().toISOString(),\n            };\n        });\n    }\n    search(params) {\n        const json = CompanySearchMapper.toJson(params);\n        return this.http.get(`${this.url}Search?json=${json}`).then(response => {\n            const data = CompanySearchMapper.fromJson(response);\n            return {\n                status: response.code === '1' ? 'success' : 'warning',\n                code: response.code,\n                data,\n                message: response.message,\n                timestamp: new Date().toISOString(),\n            };\n        });\n    }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItaHR0cC1yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY3VzdG9tZXIvc3JjL2xpYi9pbmZyYXN0cnVjdHVyZS9yZXBvc2l0b3JpZXMvY3VzdG9tZXItaHR0cC1yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXJFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXRGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBZSxpQkFBaUIsRUFBZSxNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUUvRCxNQUFNLE9BQU8sc0JBQXNCO0lBQ2pDLElBQVksSUFBSTtRQUNkLE9BQU8saUJBQWlCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyw2Q0FBNkM7SUFDckYsQ0FBQztJQUVELElBQVksR0FBRztRQUNiLE9BQU8sR0FBRyxZQUFZLENBQUMsT0FBTyxtQkFBbUIsQ0FBQztJQUNwRCxDQUFDO0lBRUQsY0FBYyxDQUFDLG9CQUE0QjtRQUN6QyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ25DLFVBQVUsRUFBRSxvQkFBb0I7WUFDaEMsSUFBSSxFQUFFLENBQUM7U0FDUixDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsU0FBUyxhQUFhLEVBQUUsQ0FBQyxDQUFDLElBQUks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QWMsR0FBRyxJQUFJLENBQUMsR0FBRyxlQUFlLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2xGLE1BQU0sSUFBSSxHQUFHLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNwRCxPQUFPO2dCQUNMLE1BQU0sRUFBRSxRQUFRLENBQUMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUNyRCxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7Z0JBQ25CLElBQUk7Z0JBQ0osT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPO2dCQUN6QixTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7YUFDaEIsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEN1c3RvbWVyRm9ybURhdGFNYXBwZXIgfSBmcm9tICcuLi9tYXBwZXJzL2N1c3RvbWVyLWZvcm0tZGF0YS1tYXBwZXInO1xuaW1wb3J0IHsgTGlzdEN1c3RvbWVyTWFwcGVyIH0gZnJvbSAnLi4vbWFwcGVycy9jdXN0b21lci1saXN0LW1hcHBlcic7XG5pbXBvcnQgeyBDdXN0b21lclJlcG9zaXRvcnkgfSBmcm9tICcuLi8uLi9kb21haW4nO1xuaW1wb3J0IHsgQ3VzdG9tZXJHZXRCeUlkTWFwcGVyIH0gZnJvbSAnLi4vbWFwcGVycy9jdXN0b21lci1nZXQtYnktaWQtbWFwcGVyJztcbmltcG9ydCB7IEN1c3RvbWVyQ3JlYXRlVXBkYXRlTWFwcGVyIH0gZnJvbSAnLi4vbWFwcGVycy9jdXN0b21lci1jcmVhdGUtdXBkYXRlLW1hcHBlcic7XG5pbXBvcnQgeyBDdXN0b21lclNlYXJjaCB9IGZyb20gJy4uLy4uL2RvbWFpbi9tb2RlbHMvY3VzdG9tZXItc2VhcmNoJztcbmltcG9ydCB7IENvbXBhbnlTZWFyY2hNYXBwZXIgfSBmcm9tICcuLi9tYXBwZXJzL2NvbXBhbnktc2VhcmNoLW1hcHBlcic7XG5pbXBvcnQgeyBBcGlSZXNwb25zZSwgSHR0cENsaWVudEZhY3RvcnksIFBhZ2VkUmVzdWx0IH0gZnJvbSAnQGFjb250cGx1cy9jb3JlJztcbmltcG9ydCB7IENVU1RPTUVSX0FQSSB9IGZyb20gJy4uL2NvbnN0YW50cy9jdXN0b21lci5jb25zdGFudHMnO1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJIdHRwUmVwb3NpdG9yeSBpbXBsZW1lbnRzIEN1c3RvbWVyUmVwb3NpdG9yeSB7XG4gIHByaXZhdGUgZ2V0IGh0dHAoKSB7XG4gICAgcmV0dXJuIEh0dHBDbGllbnRGYWN0b3J5LmdldENsaWVudCgpOyAvLyBzaWVtcHJlIHRvbWEgZWwgw7psdGltbyBjbGllbnRlIGNvbmZpZ3VyYWRvXG4gIH1cblxuICBwcml2YXRlIGdldCB1cmwoKSB7XG4gICAgcmV0dXJuIGAke0NVU1RPTUVSX0FQSS5CSUxMSU5HfS9Db21wYW55Q3VzdG9tZXIvYDtcbiAgfVxuXG4gIGNoZWNrRXhpc3RlbmNlKGlkZW50aWZpY2F0aW9uTnVtYmVyOiBzdHJpbmcpOiBQcm9taXNlPEFwaVJlc3BvbnNlPGFueT4+IHtcbiAgICBjb25zdCBzZWFyY2hQYXlsb2FkID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgdGV4dFNlYXJjaDogaWRlbnRpZmljYXRpb25OdW1iZXIsXG4gICAgICB0aXBvOiAzLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy51cmx9P2pzb249JHtzZWFyY2hQYXlsb2FkfWApLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgY29uc3QgcmVzdWx0OiBBcGlSZXNwb25zZTxhbnk+ID0ge1xuICAgICAgICBzdGF0dXM6ICd3YXJuaW5nJyxcbiAgICAgICAgY29kZTogcmVzcG9uc2UuY29kZSA/PyAnVU5LTk9XTl9FUlJPUicsXG4gICAgICAgIGRhdGE6IG51bGwgYXMgYW55LFxuICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5tZXNzYWdlID8/ICdVbmtub3duIGVycm9yIG9jY3VycmVkJyxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9O1xuICAgICAgaWYgKHJlc3BvbnNlLmNvZGUgPT09ICcxJyAmJiByZXNwb25zZS5wYXlsb2FkKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZERhdGEgPSBKU09OLnBhcnNlKHJlc3BvbnNlLnBheWxvYWQpO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJzZWREYXRhKSAmJiBwYXJzZWREYXRhLmxlbmd0aCA+IDAgJiYgQXJyYXkuaXNBcnJheShwYXJzZWREYXRhWzBdKSkge1xuICAgICAgICAgIGNvbnN0IFtjdXN0b21lcl0gPSBwYXJzZWREYXRhWzBdO1xuICAgICAgICAgIGlmIChjdXN0b21lcikge1xuICAgICAgICAgICAgcmVzdWx0LnN0YXR1cyA9ICdzdWNjZXNzJztcbiAgICAgICAgICAgIHJlc3VsdC5kYXRhID0gY3VzdG9tZXI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0Rm9ybURhdGEoKTogUHJvbWlzZTxBcGlSZXNwb25zZTxhbnk+PiB7XG4gICAgY29uc3QganNvbiA9IEN1c3RvbWVyRm9ybURhdGFNYXBwZXIudG9Kc29uKCk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8YW55PihgJHt0aGlzLnVybH0/anNvbj0ke2pzb259YCkudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IEN1c3RvbWVyRm9ybURhdGFNYXBwZXIuZnJvbUpzb24ocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiAnc3VjY2VzcycsXG4gICAgICAgIGNvZGU6IHJlc3BvbnNlLmNvZGUgPz8gJ1NVQ0NFU1MnLFxuICAgICAgICBkYXRhLFxuICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgIH0gYXMgQXBpUmVzcG9uc2U8YW55PjtcbiAgICB9KTtcbiAgfVxuXG4gIGdldEFsbDxUPihvYmo6IFQpOiBQcm9taXNlPEFwaVJlc3BvbnNlPFBhZ2VkUmVzdWx0PGFueT4+PiB7XG4gICAgY29uc3QganNvbiA9IExpc3RDdXN0b21lck1hcHBlci50b0pzb24ob2JqKTtcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxhbnk+KGAke3RoaXMudXJsfT9qc29uPSR7anNvbn1gKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gTGlzdEN1c3RvbWVyTWFwcGVyLmZyb21Kc29uKHJlc3BvbnNlKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN0YXR1czogJ3N1Y2Nlc3MnLFxuICAgICAgICBjb2RlOiByZXNwb25zZS5jb2RlID8/ICdTVUNDRVNTJyxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9IGFzIEFwaVJlc3BvbnNlPFBhZ2VkUmVzdWx0PGFueT4+O1xuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlKGR0bzogYW55KTogUHJvbWlzZTxBcGlSZXNwb25zZTxhbnk+PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLnBvc3Q8QXBpUmVzcG9uc2U+KHRoaXMudXJsLCB7IGRhdGE6IEN1c3RvbWVyQ3JlYXRlVXBkYXRlTWFwcGVyLnRvSnNvbihkdG8uZGF0YSkgfSlcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xuICAgICAgICBjb25zdCBkYXRhID0gQ3VzdG9tZXJDcmVhdGVVcGRhdGVNYXBwZXIuZnJvbUpzb24ocmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN0YXR1czogcmVzcG9uc2UuY29kZSA9PT0gJzEnID8gJ3N1Y2Nlc3MnIDogJ3dhcm5pbmcnLFxuICAgICAgICAgIGNvZGU6IHJlc3BvbnNlLmNvZGUgPz8gJ09QRVJBVElPTl9GQUlMRUQnLFxuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgbWVzc2FnZTogcmVzcG9uc2UubWVzc2FnZSA/PyAnT3BlcmF0aW9uIGNvbXBsZXRlZCB3aXRoIGlzc3VlcycsXG4gICAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH0gYXMgQXBpUmVzcG9uc2U8YW55PjtcbiAgICAgIH0pO1xuICB9XG4gIHVwZGF0ZShkdG86IGFueSk6IFByb21pc2U8QXBpUmVzcG9uc2U8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHBcbiAgICAgIC5wdXQ8QXBpUmVzcG9uc2U+KGAke3RoaXMudXJsfSR7ZHRvLmlkfWAsIHtcbiAgICAgICAgZGF0YTogQ3VzdG9tZXJDcmVhdGVVcGRhdGVNYXBwZXIudG9Kc29uKGR0by5kYXRhKSxcbiAgICAgIH0pXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKHJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLmNvZGUgPT09ICcxJyA/ICdzdWNjZXNzJyA6ICd3YXJuaW5nJyxcbiAgICAgICAgICBjb2RlOiByZXNwb25zZS5jb2RlID8/ICdPUEVSQVRJT05fRkFJTEVEJyxcbiAgICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5tZXNzYWdlID8/ICdPcGVyYXRpb24gY29tcGxldGVkIHdpdGggaXNzdWVzJyxcbiAgICAgICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfSBhcyBBcGlSZXNwb25zZTxhbnk+O1xuICAgICAgfSk7XG4gIH1cbiAgdXBkYXRlU3RhdGUoaWQ6IG51bWJlcik6IFByb21pc2U8QXBpUmVzcG9uc2U8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPEFwaVJlc3BvbnNlPihgJHt0aGlzLnVybH0ke2lkfWApLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiByZXNwb25zZS5jb2RlID09PSAnMScgPyAnc3VjY2VzcycgOiAnd2FybmluZycsXG4gICAgICAgIGNvZGU6IHJlc3BvbnNlLmNvZGUsXG4gICAgICAgIG1lc3NhZ2U6IHJlc3BvbnNlLm1lc3NhZ2UsXG4gICAgICAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgfSBhcyBBcGlSZXNwb25zZTxhbnk+O1xuICAgIH0pO1xuICB9XG4gIGdldEJ5SWQoaWQ6IG51bWJlcik6IFByb21pc2U8QXBpUmVzcG9uc2U8YW55Pj4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PGFueT4oYCR7dGhpcy51cmx9R2V0SWQvJHtpZH1gKS50aGVuKHJlc3BvbnNlID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBDdXN0b21lckdldEJ5SWRNYXBwZXIuZnJvbUpzb24ocmVzcG9uc2UpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3RhdHVzOiByZXNwb25zZS5jb2RlID09PSAnMScgPyAnc3VjY2VzcycgOiAnd2FybmluZycsXG4gICAgICAgIGNvZGU6IHJlc3BvbnNlLmNvZGUgPz8gJ09QRVJBVElPTl9GQUlMRUQnLFxuICAgICAgICBkYXRhLFxuICAgICAgICBtZXNzYWdlOiByZXNwb25zZS5tZXNzYWdlID8/ICdPcGVyYXRpb24gY29tcGxldGVkIHdpdGggaXNzdWVzJyxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9IGFzIEFwaVJlc3BvbnNlPGFueT47XG4gICAgfSk7XG4gIH1cblxuICBzZWFyY2gocGFyYW1zOiBDdXN0b21lclNlYXJjaCk6IFByb21pc2U8QXBpUmVzcG9uc2U8YW55Pj4ge1xuICAgIGNvbnN0IGpzb24gPSBDb21wYW55U2VhcmNoTWFwcGVyLnRvSnNvbihwYXJhbXMpO1xuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PEFwaVJlc3BvbnNlPihgJHt0aGlzLnVybH1TZWFyY2g/anNvbj0ke2pzb259YCkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gQ29tcGFueVNlYXJjaE1hcHBlci5mcm9tSnNvbihyZXNwb25zZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdGF0dXM6IHJlc3BvbnNlLmNvZGUgPT09ICcxJyA/ICdzdWNjZXNzJyA6ICd3YXJuaW5nJyxcbiAgICAgICAgY29kZTogcmVzcG9uc2UuY29kZSxcbiAgICAgICAgZGF0YSxcbiAgICAgICAgbWVzc2FnZTogcmVzcG9uc2UubWVzc2FnZSxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICB9IGFzIEFwaVJlc3BvbnNlPGFueT47XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==","import { ChangeDetectionStrategy, Component, inject, signal } from '@angular/core';\nimport { forkJoin, from } from 'rxjs';\nimport { NotificationService } from '@acontplus/ng-notifications';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogRef, } from '@angular/material/dialog';\nimport { DynamicCard, InputChip, Button, ToUpperCase } from '@acontplus/ng-components';\nimport { MatButtonModule } from '@angular/material/button';\nimport { FormControl, FormGroup, ReactiveFormsModule, Validators, } from '@angular/forms';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatCheckbox } from '@angular/material/checkbox';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatTooltip } from '@angular/material/tooltip';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { provideNativeDateAdapter } from '@angular/material/core';\nimport { SEPARADORES_REGEX, SEPARATOR_KEY_CODE, SRI_DOCUMENT_TYPE, isSuccessResponse, } from '@acontplus/core';\nimport { CustomerUseCase } from '../../../application/use-cases/customer-use-case';\nimport { CustomerExternalUseCase } from '../../../application/use-cases/customer-external-use-case';\nimport { CustomerHttpRepository } from '../../../infrastructure/repositories/customer-http-repository';\nimport { CustomerExternalHttpRepository } from '../../../infrastructure/repositories/customer-external-http-repository';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/forms\";\nimport * as i2 from \"@angular/material/tabs\";\nimport * as i3 from \"@angular/material/form-field\";\nimport * as i4 from \"@angular/material/input\";\nimport * as i5 from \"@angular/material/select\";\nimport * as i6 from \"@angular/material/slide-toggle\";\nimport * as i7 from \"@angular/material/datepicker\";\nexport class CustomerAddEditComponent {\n    dialogRef = inject((MatDialogRef));\n    customerUseCase = inject(CustomerUseCase);\n    customerExternalUseCase = inject(CustomerExternalUseCase);\n    btnText = signal('Guardar', ...(ngDevMode ? [{ debugName: \"btnText\" }] : []));\n    paramsOptions = inject(MAT_DIALOG_DATA);\n    params = this.paramsOptions.data;\n    notificationService = inject(NotificationService);\n    title = 'Nuevo Cliente';\n    loading = false;\n    emails = [];\n    telephones = [];\n    tiemposCredito = signal([], ...(ngDevMode ? [{ debugName: \"tiemposCredito\" }] : []));\n    tipoContribuyentes = signal([], ...(ngDevMode ? [{ debugName: \"tipoContribuyentes\" }] : []));\n    tiposCliente = signal([], ...(ngDevMode ? [{ debugName: \"tiposCliente\" }] : []));\n    tiposIdentificacion = signal([], ...(ngDevMode ? [{ debugName: \"tiposIdentificacion\" }] : []));\n    formasPagoSri = signal([], ...(ngDevMode ? [{ debugName: \"formasPagoSri\" }] : []));\n    placas = signal([], ...(ngDevMode ? [{ debugName: \"placas\" }] : []));\n    ciudades = signal([], ...(ngDevMode ? [{ debugName: \"ciudades\" }] : []));\n    cargos = signal([], ...(ngDevMode ? [{ debugName: \"cargos\" }] : []));\n    empresas = signal([], ...(ngDevMode ? [{ debugName: \"empresas\" }] : []));\n    employees = signal([], ...(ngDevMode ? [{ debugName: \"employees\" }] : []));\n    maritalStatuses = signal([], ...(ngDevMode ? [{ debugName: \"maritalStatuses\" }] : []));\n    housingTypes = signal([], ...(ngDevMode ? [{ debugName: \"housingTypes\" }] : []));\n    showRefresh = signal(true, ...(ngDevMode ? [{ debugName: \"showRefresh\" }] : []));\n    endsWith001Validator(control) {\n        const value = control.value;\n        if (value && value.length >= 3) {\n            if (!value.endsWith('001')) {\n                return { endsWith001: true };\n            }\n        }\n        return null;\n    }\n    customerForm = new FormGroup({\n        direccion: new FormControl('', Validators.required),\n        idCargo: new FormControl(0),\n        idCliente: new FormControl(0),\n        idEmpresa: new FormControl(0),\n        idFormaPagoSri: new FormControl(0),\n        idTipoClienteProveedor: new FormControl(0),\n        idTipoIdentificacion: new FormControl(0, Validators.required),\n        idSubContribuyente: new FormControl(0),\n        idTiempoCredito: new FormControl(0),\n        idCiudad: new FormControl(0),\n        idEmpleado: new FormControl(0),\n        nombreFiscal: new FormControl('', Validators.required),\n        nombreComercial: new FormControl(''),\n        numeroIdentificacion: new FormControl({ value: '', disabled: false }, [\n            Validators.required,\n            Validators.minLength(13),\n            Validators.maxLength(13),\n            this.endsWith001Validator,\n        ]),\n        correo: new FormControl(''),\n        telefono: new FormControl(''),\n        placa: new FormControl(''),\n        nota: new FormControl(''),\n        estado: new FormControl(false),\n        birthDate: new FormControl(null),\n        validationSri: new FormControl(false),\n        configValorBruto: new FormControl(false),\n        dataInfoCred: new FormGroup({\n            maritalStatusId: new FormControl(null),\n            conyugeNombre: new FormControl(null),\n            conyugeTel: new FormControl(null),\n            refFamNombre: new FormControl(null),\n            refFamTel: new FormControl(null),\n            housingTypeId: new FormControl(null),\n            dirVivienda: new FormControl(null),\n            refDomicilio: new FormControl(null),\n            sector: new FormControl(null),\n            barrio: new FormControl(null),\n            calle: new FormControl(null),\n        }),\n    });\n    getCustomer(codigo, id) {\n        this.customerForm.patchValue({\n            validationSri: false,\n        });\n        from(this.customerUseCase.checkExistence(id)).subscribe(response => {\n            if (isSuccessResponse(response) && response.data) {\n                alert('El cliente ya se encuentra registrado en su empresa');\n                this.notificationService.toastr.show({\n                    type: 'warning',\n                    message: 'El cliente ya se encuentra registrado en su empresa',\n                });\n                this.customerForm.patchValue({ numeroIdentificacion: null });\n                return;\n            }\n            if (codigo === SRI_DOCUMENT_TYPE.PASSPORT) {\n                this.customerForm.patchValue({\n                    validationSri: true,\n                });\n                return;\n            }\n            from(this.customerExternalUseCase.getById(id)).subscribe(secondResponse => {\n                if (!isSuccessResponse(secondResponse) || !secondResponse.data) {\n                    this.notificationService.toastr.show({\n                        type: 'info',\n                        message: '  No se encontró información en el SRI',\n                    });\n                    return;\n                }\n                const { phone, email, idCard, // numeroRuc\n                businessName, // razonSocial\n                address, // direccion\n                 } = secondResponse.data;\n                if (phone && typeof phone === 'string') {\n                    this.telephones = phone.split(SEPARADORES_REGEX) || [];\n                }\n                if (email && typeof email === 'string') {\n                    this.emails = email.split(SEPARADORES_REGEX) || [];\n                }\n                if (idCard) {\n                    this.customerForm.patchValue({\n                        numeroIdentificacion: idCard,\n                        nombreFiscal: businessName,\n                        validationSri: true,\n                        direccion: address,\n                        nombreComercial: businessName,\n                    });\n                }\n            });\n        });\n    }\n    getLoadData() {\n        if (this.isUpdate()) {\n            return forkJoin([\n                from(this.customerUseCase.getFormData()),\n                from(this.customerUseCase.getById(this.params.id)),\n            ]);\n        }\n        return from(this.customerUseCase.getFormData());\n    }\n    ngOnInit() {\n        try {\n            this.getLoadData().subscribe(response => {\n                let mainDataForm = {};\n                let dataCompanyCustomer = {};\n                if (Array.isArray(response)) {\n                    mainDataForm = response[0].data;\n                    dataCompanyCustomer = response[1];\n                }\n                else {\n                    mainDataForm = response.data;\n                }\n                this.tiposIdentificacion.set(mainDataForm.tipoIdentificacion);\n                this.tiemposCredito.set(mainDataForm.tiempoCreditos);\n                this.tipoContribuyentes.set(mainDataForm.tipoContribuyentes);\n                this.formasPagoSri.set(mainDataForm.formasPagoSri);\n                this.tiposCliente.set(mainDataForm.tiposCliente);\n                this.ciudades.set(mainDataForm.ciudades);\n                this.cargos.set(mainDataForm.cargos);\n                this.empresas.set(mainDataForm.empresas);\n                this.employees.set(mainDataForm.employees);\n                this.maritalStatuses.set(mainDataForm.maritalStatuses);\n                this.housingTypes.set(mainDataForm.housingTypes);\n                if (this.isDataOfSri()) {\n                    const { codigoSri, numeroIdentificacion } = this.params;\n                    const dataIdentificacion = this.tiposIdentificacion().find((ti) => ti.codigoSri === codigoSri);\n                    if (dataIdentificacion) {\n                        const idTipoIdentificacionCtrl = this.customerForm.get('idTipoIdentificacion');\n                        idTipoIdentificacionCtrl?.setValue(dataIdentificacion.idTipoIdentificacion);\n                        const numeroIdentificacionCtrl = this.customerForm.get('numeroIdentificacion');\n                        numeroIdentificacionCtrl?.setValue(numeroIdentificacion);\n                        const idTiempoCreditoCtrl = this.customerForm.get('idTiempoCredito');\n                        idTiempoCreditoCtrl?.setValue(this.tiemposCredito().length > 0\n                            ? this.tiemposCredito()[0].idTiempoCredito\n                            : 0);\n                        this.updateFormControlNumeroIdentificacion(dataIdentificacion.codigoSri);\n                        this.onKeyDownGovernmentId();\n                    }\n                    return;\n                }\n                if (this.isCreate()) {\n                    const dataIdentificacion = this.tiposIdentificacion().find((ti) => ti.codigoSri === SRI_DOCUMENT_TYPE.RUC);\n                    if (dataIdentificacion) {\n                        const idTipoIdentificacionCtrl = this.customerForm.get('idTipoIdentificacion');\n                        idTipoIdentificacionCtrl?.setValue(dataIdentificacion.idTipoIdentificacion);\n                        this.setIdentificationTypeChange(dataIdentificacion.codigoSri);\n                    }\n                    const idTiempoCreditoCtrl = this.customerForm.get('idTiempoCredito');\n                    idTiempoCreditoCtrl?.setValue(this.tiemposCredito().length > 0\n                        ? this.tiemposCredito()[0].idTiempoCredito\n                        : 0);\n                }\n                else {\n                    this.title = 'Editar Cliente';\n                    this.btnText.set('Actualizar');\n                    this.emails = dataCompanyCustomer.correos;\n                    this.telephones = dataCompanyCustomer.telefonos;\n                    this.placas.set(dataCompanyCustomer.placas);\n                    const { dataInfoCred, ...rest } = dataCompanyCustomer;\n                    this.customerForm.patchValue(rest);\n                    if (dataInfoCred) {\n                        this.customerForm.get('dataInfoCred')?.patchValue(dataInfoCred);\n                    }\n                    this.updateFormControlNumeroIdentificacion(rest.codigoSri);\n                }\n            });\n        }\n        catch {\n            // Handle error appropriately\n        }\n    }\n    identificationTypeChange(event) {\n        const dt = this.tiposIdentificacion().find(item => item.idTipoIdentificacion === Number(event.value));\n        this.setIdentificationTypeChange(dt.codigoSri);\n    }\n    updateFormControlNumeroIdentificacion(codigoSri) {\n        const idNumberControl = this.customerForm.get('numeroIdentificacion');\n        this.showRefresh.set(false);\n        if ([SRI_DOCUMENT_TYPE.RUC, SRI_DOCUMENT_TYPE.CEDULA].includes(codigoSri)) {\n            let lengthValidator;\n            this.showRefresh.set(true);\n            if (codigoSri === SRI_DOCUMENT_TYPE.CEDULA) {\n                lengthValidator = [Validators.minLength(10), Validators.maxLength(10)];\n            }\n            else if (codigoSri === SRI_DOCUMENT_TYPE.RUC) {\n                lengthValidator = [\n                    Validators.minLength(13),\n                    Validators.maxLength(13),\n                    this.endsWith001Validator,\n                ];\n            }\n            if (lengthValidator) {\n                idNumberControl?.setValidators([\n                    Validators.required,\n                    Validators.pattern(/^\\d+$/), // Solo números\n                    ...lengthValidator,\n                ]);\n            }\n        }\n        else {\n            idNumberControl?.setValidators([Validators.required]);\n        }\n        idNumberControl?.updateValueAndValidity();\n    }\n    setIdentificationTypeChange(codigoSri) {\n        const idNumberControl = this.customerForm.get('numeroIdentificacion');\n        idNumberControl?.reset();\n        idNumberControl?.clearValidators();\n        this.updateFormControlNumeroIdentificacion(codigoSri);\n    }\n    get numeroIdentificacionControl() {\n        return this.customerForm.get('numeroIdentificacion');\n    }\n    get birthDateCtrl() {\n        return this.customerForm.get('birthDate');\n    }\n    onKeyDownGovernmentId($event) {\n        if ($event) {\n            $event.preventDefault();\n        }\n        if (this.numeroIdentificacionControl?.invalid)\n            return;\n        const idTipoIdentificacion = this.customerForm.get('idTipoIdentificacion')?.value;\n        const numeroIdentificacion = this.customerForm.get('numeroIdentificacion')?.value;\n        const codigoSri = this.tiposIdentificacion().find((x) => x.idTipoIdentificacion == idTipoIdentificacion).codigoSri;\n        if (numeroIdentificacion) {\n            this.getCustomer(codigoSri, numeroIdentificacion);\n        }\n    }\n    isDataOfSri = () => this.params.dataOfSri;\n    isCreate = () => !(this.params.id > 0);\n    isUpdate = () => this.params.id > 0;\n    onSave() {\n        this.customerForm.patchValue({\n            telefono: this.telephones.length > 0 ? this.telephones.join(SEPARATOR_KEY_CODE.SLASH) : null,\n        });\n        this.customerForm.patchValue({\n            correo: this.emails.length > 0 ? this.emails.join(SEPARATOR_KEY_CODE.SLASH) : null,\n        });\n        this.customerForm.patchValue({\n            placa: this.placas().length > 0 ? this.placas().join(SEPARATOR_KEY_CODE.SLASH) : null,\n        });\n        const dataForm = {\n            ...this.customerForm.value,\n        };\n        if (this.customerForm.invalid) {\n            this.notificationService.toastr.show({\n                type: 'warning',\n                message: 'Ingrese todos datos requeridos',\n            });\n            return;\n        }\n        if (this.isUpdate()) {\n            const sendParams = {\n                id: this.params.id,\n                data: dataForm,\n            };\n            from(this.customerUseCase.update(sendParams)).subscribe(response => {\n                this.notificationService.toastr.show({\n                    type: isSuccessResponse(response) ? 'success' : 'warning',\n                    message: `${response.message}`,\n                });\n                if (isSuccessResponse(response)) {\n                    this.dialogRef.close({\n                        id: this.params.id,\n                    });\n                }\n            });\n        }\n        if (this.isCreate()) {\n            from(this.customerUseCase.create(dataForm)).subscribe(response => {\n                this.notificationService.toastr.show({\n                    type: isSuccessResponse(response) ? 'success' : 'warning',\n                    message: `${response.message}`,\n                });\n                if (isSuccessResponse(response)) {\n                    this.dialogRef.close(response.data);\n                }\n            });\n        }\n    }\n    close() {\n        this.dialogRef.close();\n    }\n    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: CustomerAddEditComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: CustomerAddEditComponent, isStandalone: true, selector: \"acp-customer-add-edit\", providers: [\n            provideNativeDateAdapter(),\n            {\n                provide: CustomerUseCase,\n                useFactory: () => new CustomerUseCase(new CustomerHttpRepository()),\n            },\n            {\n                provide: CustomerExternalUseCase,\n                useFactory: () => new CustomerExternalUseCase(new CustomerExternalHttpRepository()),\n            },\n        ], ngImport: i0, template: \"<mat-dialog-content>\\n  <form\\n    (ngSubmit)=\\\"onSave()\\\"\\n    id=\\\"formCompanyCustomer\\\"\\n    [formGroup]=\\\"customerForm\\\"\\n    autocomplete=\\\"off\\\"\\n  >\\n    <mat-tab-group>\\n      <mat-tab label=\\\"DATOS PRINCIPALES\\\">\\n        <div class=\\\"d-grid gap-2 mx-3 mt-2\\\">\\n          <div\\n            class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n          >\\n            <div class=\\\"col\\\">\\n              <mat-form-field class=\\\"w-100\\\">\\n                <mat-label>Tipo Identificaci\\u00F3n: </mat-label>\\n                <mat-select\\n                  formControlName=\\\"idTipoIdentificacion\\\"\\n                  (selectionChange)=\\\"identificationTypeChange($event)\\\"\\n                >\\n                  @for (item of tiposIdentificacion(); track $index) {\\n                  <mat-option [value]=\\\"item.idTipoIdentificacion\\\"\\n                    >{{ item.descripcion }}</mat-option\\n                  >\\n                  }\\n                </mat-select>\\n              </mat-form-field>\\n            </div>\\n            <div class=\\\"col\\\">\\n              <mat-form-field class=\\\"w-100\\\">\\n                <mat-label>N\\u00FAmero de Identificaci\\u00F3n</mat-label>\\n                <input\\n                  type=\\\"text\\\"\\n                  matInput\\n                  (keydown.enter)=\\\"onKeyDownGovernmentId($event)\\\"\\n                  formControlName=\\\"numeroIdentificacion\\\"\\n                />\\n                @if ( numeroIdentificacionControl?.invalid && (numeroIdentificacionControl?.dirty ||\\n                numeroIdentificacionControl?.touched) ) { @if\\n                (numeroIdentificacionControl?.hasError('required')) {\\n                <mat-error> El n\\u00FAmero de identificaci\\u00F3n es obligatorio. </mat-error>\\n                } @if (numeroIdentificacionControl?.hasError('minlength')) {\\n                <mat-error>\\n                  Debe tener al menos {{\\n                  numeroIdentificacionControl?.errors?.['minlength'].requiredLength }} d\\u00EDgitos.\\n                </mat-error>\\n                } @if (numeroIdentificacionControl?.hasError('maxlength')) {\\n                <mat-error>\\n                  No puede tener m\\u00E1s de {{\\n                  numeroIdentificacionControl?.errors?.['maxlength'].requiredLength }} d\\u00EDgitos.\\n                </mat-error>\\n                } @if (numeroIdentificacionControl?.hasError('pattern')) {\\n                <mat-error> Solo se permiten caracteres num\\u00E9ricos. </mat-error>\\n                } @if (numeroIdentificacionControl?.hasError('endsWith001')) {\\n                <mat-error> Los \\u00FAltimos tres d\\u00EDgitos deben ser 001. </mat-error>\\n                } } @if (showRefresh()) {\\n                <ng-container matSuffix>\\n                  <acp-button\\n                    type=\\\"button\\\"\\n                    matStyle=\\\"icon\\\"\\n                    icon=\\\"refresh\\\"\\n                    (handleClick)=\\\"onKeyDownGovernmentId($event)\\\"\\n                  />\\n                </ng-container>\\n                }\\n              </mat-form-field>\\n            </div>\\n          </div>\\n\\n          <div\\n            class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n          >\\n            <div class=\\\"col\\\">\\n              <mat-form-field class=\\\"w-100\\\">\\n                <mat-label>Nombre Fiscal:</mat-label>\\n                <input\\n                  matInput\\n                  autocomplete=\\\"off\\\"\\n                  formControlName=\\\"nombreFiscal\\\"\\n                  id=\\\"nombreComercial\\\"\\n                  placeholder=\\\"Ej: TECNOMEGA\\\"\\n                  acpToUpperCase\\n                />\\n              </mat-form-field>\\n            </div>\\n            <div class=\\\"col\\\">\\n              <mat-form-field class=\\\"w-100\\\">\\n                <mat-label>Nombre Comercial:</mat-label>\\n                <input\\n                  matInput\\n                  autocomplete=\\\"off\\\"\\n                  formControlName=\\\"nombreComercial\\\"\\n                  placeholder=\\\"Ej: TECNOMEGA\\\"\\n                  acpToUpperCase\\n                  type=\\\"text\\\"\\n                />\\n              </mat-form-field>\\n            </div>\\n          </div>\\n\\n          <div>\\n            <mat-form-field class=\\\"w-100\\\">\\n              <mat-label>Direcci\\u00F3n:</mat-label>\\n              <input\\n                matInput\\n                formControlName=\\\"direccion\\\"\\n                placeholder=\\\"AV. 09 DE OCTUBRE...\\\"\\n                acpToUpperCase\\n              />\\n            </mat-form-field>\\n          </div>\\n\\n          <div\\n            class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n          >\\n            <div class=\\\"col\\\">\\n              <acp-input-chip [chips]=\\\"emails\\\" [labelText]=\\\"'Correo'\\\" />\\n            </div>\\n            <div class=\\\"col\\\">\\n              <acp-input-chip [chips]=\\\"telephones\\\" [labelText]=\\\"'Tel\\u00E9fono'\\\" />\\n            </div>\\n          </div>\\n\\n          @if (isUpdate()) {\\n          <div class=\\\"vstack gap-2 mt-2\\\">\\n            <span>Estado</span>\\n            <mat-slide-toggle formControlName=\\\"estado\\\">\\n              {{ customerForm.value.estado ? 'Activo' : 'Inactivo' }}\\n            </mat-slide-toggle>\\n          </div>\\n          }\\n        </div>\\n      </mat-tab>\\n      <mat-tab label=\\\"DATOS ADICIONALES\\\">\\n        <div class=\\\"d-grid gap-2 mx-3 mt-2\\\">\\n          <div\\n            class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n          >\\n            <div class=\\\"col\\\">\\n              <acp-dynamic-card title=\\\"Informaci\\u00F3n B\\u00E1sica\\\" [isHeaderVisible]=\\\"true\\\">\\n                <div\\n                  class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-2\\\"\\n                >\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Tipo Contribuyente: </mat-label>\\n                      <mat-select formControlName=\\\"idSubContribuyente\\\">\\n                        @for (item of tipoContribuyentes(); track $index) {\\n                        <mat-option [value]=\\\"item.idSubContribuyente\\\">\\n                          {{ item.descripcion }}\\n                        </mat-option>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Tiempo Cr\\u00E9dito: </mat-label>\\n                      <mat-select formControlName=\\\"idTiempoCredito\\\">\\n                        @for (item of tiemposCredito(); track $index) {\\n                        <mat-option [value]=\\\"item.idTiempoCredito\\\">\\n                          {{ item.descripcion }}\\n                        </mat-option>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Ciudad</mat-label>\\n                      <mat-select formControlName=\\\"idCiudad\\\">\\n                        <mat-option [value]=\\\"0\\\">-- Ninguno --</mat-option>\\n                        @for (group of ciudades(); track $index) {\\n                        <mat-optgroup [label]=\\\"group.nombre\\\">\\n                          @for (item of group.ciudades; track $index) {\\n                          <mat-option [value]=\\\"item.idCiudad\\\">{{ item.nombre }}</mat-option>\\n                          }\\n                        </mat-optgroup>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Tipo Cliente: </mat-label>\\n                      <mat-select formControlName=\\\"idTipoClienteProveedor\\\">\\n                        <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n                        @for (item of tiposCliente(); track $index) {\\n                        <mat-option [value]=\\\"item.idTipoClienteProveedor\\\">\\n                          {{ item.descripcion }}\\n                        </mat-option>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Empresa: </mat-label>\\n                      <mat-select formControlName=\\\"idEmpresa\\\">\\n                        <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n                        @for (item of empresas(); track $index) {\\n                        <mat-option [value]=\\\"item.idEmpresa\\\"> {{ item.descripcion }} </mat-option>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Fecha Nacimiento</mat-label>\\n                      <input matInput [matDatepicker]=\\\"birthDate\\\" formControlName=\\\"birthDate\\\" />\\n                      <mat-hint>MM/DD/YYYY</mat-hint>\\n                      <mat-datepicker-toggle matIconSuffix [for]=\\\"birthDate\\\" />\\n                      <mat-datepicker #birthDate />\\n                      @if (birthDateCtrl?.invalid && birthDateCtrl?.touched) {\\n                      <mat-error> Fecha inv\\u00E1lida </mat-error>\\n                      }\\n                    </mat-form-field>\\n                  </div>\\n                </div>\\n              </acp-dynamic-card>\\n            </div>\\n            <div class=\\\"col\\\">\\n              <acp-dynamic-card title=\\\"Informaci\\u00F3n Laboral\\\" [isHeaderVisible]=\\\"true\\\">\\n                <div\\n                  class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n                >\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Empleado: </mat-label>\\n                      <mat-select formControlName=\\\"idEmpleado\\\">\\n                        <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n                        @for (item of employees(); track $index) {\\n                        <mat-option [value]=\\\"item.idEmpleado\\\">\\n                          {{ item.nombreCompleto }}\\n                        </mat-option>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Cargo: </mat-label>\\n                      <mat-select formControlName=\\\"idCargo\\\">\\n                        <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n                        @for (item of cargos(); track $index) {\\n                        <mat-option [value]=\\\"item.idCargo\\\"> {{ item.descripcion }} </mat-option>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n\\n                  <div class=\\\"col w-100\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Observaci\\u00F3n</mat-label>\\n                      <textarea matInput placeholder=\\\"...\\\" formControlName=\\\"nota\\\"></textarea>\\n                    </mat-form-field>\\n                  </div>\\n                </div>\\n              </acp-dynamic-card>\\n            </div>\\n          </div>\\n          <div\\n            class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n          >\\n            <div class=\\\"col\\\">\\n              <acp-dynamic-card title=\\\"Configuraci\\u00F3n Financiera\\\" [isHeaderVisible]=\\\"true\\\">\\n                <div\\n                  class=\\\"row row-cols-xxl-1 row-cols-xl-1 row-cols-lg-1 row-cols-md-1 row-cols-sm-1 row-cols-1 g-2 mt-2\\\"\\n                >\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Forma de pago: </mat-label>\\n                      <mat-select formControlName=\\\"idFormaPagoSri\\\">\\n                        <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n                        @for (item of formasPagoSri(); track $index) {\\n                        <mat-option [value]=\\\"item.idFormaPagoSri\\\">\\n                          {{ item.descripcion }}\\n                        </mat-option>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n\\n                  <div class=\\\"col\\\">\\n                    <acp-input-chip labelText=\\\"Placa\\\" [chips]=\\\"placas()\\\" />\\n                  </div>\\n\\n                  <div class=\\\"col w-100\\\">\\n                    <mat-checkbox formControlName=\\\"configValorBruto\\\"\\n                      >Activar configuraci\\u00F3n de valor bruto\\n                      <mat-icon\\n                        matTooltip=\\\"valor total de un bien o servicio sin incluir impuestos, deducciones o descuentos (uso dentro del reporte)\\\"\\n                        >info</mat-icon\\n                      ></mat-checkbox\\n                    >\\n                  </div>\\n                </div>\\n              </acp-dynamic-card>\\n            </div>\\n            <div class=\\\"col\\\"></div>\\n          </div>\\n        </div>\\n      </mat-tab>\\n      <mat-tab label=\\\"INFORMACI\\u00D3N CREDITICIA\\\">\\n        <div class=\\\"d-grid gap-2 mx-3 mt-2\\\">\\n          <div\\n            class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n          >\\n            <div class=\\\"col\\\">\\n              <acp-dynamic-card title=\\\"Informaci\\u00F3n Personal\\\" [isHeaderVisible]=\\\"true\\\">\\n                <div\\n                  formGroupName=\\\"dataInfoCred\\\"\\n                  class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-1 row-cols-1 g-2 mt-2\\\"\\n                >\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Estado Civil: </mat-label>\\n                      <mat-select formControlName=\\\"maritalStatusId\\\">\\n                        <mat-option [value]=\\\"0\\\">Seleccionar...</mat-option>\\n\\n                        @for (item of maritalStatuses(); track $index) {\\n                        <mat-option [value]=\\\"item.id\\\"> {{ item.name }} </mat-option>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Esposo(a):</mat-label>\\n                      <input\\n                        matInput\\n                        formControlName=\\\"conyugeNombre\\\"\\n                        placeholder=\\\"Nombre del c\\u00F3nyuge\\\"\\n                      />\\n                    </mat-form-field>\\n                  </div>\\n\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Tel\\u00E9fono Personal:</mat-label>\\n                      <input matInput formControlName=\\\"conyugeTel\\\" placeholder=\\\"09xxxxxxxx\\\" />\\n                    </mat-form-field>\\n                  </div>\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Tel\\u00E9fono Referencia:</mat-label>\\n                      <input matInput formControlName=\\\"refFamTel\\\" placeholder=\\\"09xxxxxxxx\\\" />\\n                    </mat-form-field>\\n                  </div>\\n                  <div class=\\\"col w-100\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Referencia Familiar:</mat-label>\\n                      <input\\n                        matInput\\n                        formControlName=\\\"refFamNombre\\\"\\n                        placeholder=\\\"Nombre de referencia familiar\\\"\\n                      />\\n                    </mat-form-field>\\n                  </div>\\n                </div>\\n              </acp-dynamic-card>\\n            </div>\\n            <div class=\\\"col\\\">\\n              <acp-dynamic-card title=\\\"Informaci\\u00F3n de Vivienda\\\" [isHeaderVisible]=\\\"true\\\">\\n                <div\\n                  formGroupName=\\\"dataInfoCred\\\"\\n                  class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-1 row-cols-1 g-2 mt-2\\\"\\n                >\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Tipo de Vivienda: </mat-label>\\n                      <mat-select formControlName=\\\"housingTypeId\\\">\\n                        <mat-option [value]=\\\"0\\\">Seleccionar...</mat-option>\\n\\n                        @for (item of housingTypes(); track $index) {\\n                        <mat-option [value]=\\\"item.id\\\"> {{ item.name }} </mat-option>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Sector:</mat-label>\\n                      <input matInput formControlName=\\\"sector\\\" placeholder=\\\"Nombre del sector\\\" />\\n                    </mat-form-field>\\n                  </div>\\n\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Barrio:</mat-label>\\n                      <input matInput formControlName=\\\"barrio\\\" placeholder=\\\"Nombre del barrio\\\" />\\n                    </mat-form-field>\\n                  </div>\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Calle:</mat-label>\\n                      <input matInput formControlName=\\\"calle\\\" placeholder=\\\"Nombre de la calle\\\" />\\n                    </mat-form-field>\\n                  </div>\\n                  <div class=\\\"col w-100\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Direcci\\u00F3n Completa</mat-label>\\n                      <textarea\\n                        matInput\\n                        formControlName=\\\"dirVivienda\\\"\\n                        placeholder=\\\"Direcci\\u00F3n completa de la vivienda (Sector, Barrio y Calle)\\\"\\n                      ></textarea>\\n                    </mat-form-field>\\n                  </div>\\n                  <div class=\\\"col w-100\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Descripci\\u00F3n del Punto de Referencia:</mat-label>\\n                      <textarea\\n                        matInput\\n                        formControlName=\\\"refDomicilio\\\"\\n                        placeholder=\\\"Descripci\\u00F3n detallada del punto de referencia\\\"\\n                      ></textarea>\\n                    </mat-form-field>\\n                  </div>\\n                </div>\\n              </acp-dynamic-card>\\n            </div>\\n          </div>\\n        </div>\\n      </mat-tab>\\n    </mat-tab-group>\\n  </form>\\n</mat-dialog-content>\\n<mat-dialog-actions>\\n  <div class=\\\"hstack gap-2\\\">\\n    <acp-button type=\\\"submit\\\" variant=\\\"success\\\" form=\\\"formCompanyCustomer\\\" [text]=\\\"btnText()\\\" />\\n    <acp-button type=\\\"button\\\" variant=\\\"dark\\\" text=\\\"Cerrar\\\" (handleClick)=\\\"close()\\\" />\\n  </div>\\n</mat-dialog-actions>\\n\", styles: [\"\"], dependencies: [{ kind: \"directive\", type: MatDialogContent, selector: \"[mat-dialog-content], mat-dialog-content, [matDialogContent]\" }, { kind: \"directive\", type: MatDialogActions, selector: \"[mat-dialog-actions], mat-dialog-actions, [matDialogActions]\", inputs: [\"align\"] }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"ngmodule\", type: ReactiveFormsModule }, { kind: \"directive\", type: i1.ɵNgNoValidate, selector: \"form:not([ngNoForm]):not([ngNativeValidate])\" }, { kind: \"directive\", type: i1.DefaultValueAccessor, selector: \"input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]\" }, { kind: \"directive\", type: i1.NgControlStatus, selector: \"[formControlName],[ngModel],[formControl]\" }, { kind: \"directive\", type: i1.NgControlStatusGroup, selector: \"[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]\" }, { kind: \"directive\", type: i1.FormGroupDirective, selector: \"[formGroup]\", inputs: [\"formGroup\"], outputs: [\"ngSubmit\"], exportAs: [\"ngForm\"] }, { kind: \"directive\", type: i1.FormControlName, selector: \"[formControlName]\", inputs: [\"formControlName\", \"disabled\", \"ngModel\"], outputs: [\"ngModelChange\"] }, { kind: \"directive\", type: i1.FormGroupName, selector: \"[formGroupName]\", inputs: [\"formGroupName\"] }, { kind: \"ngmodule\", type: MatTabsModule }, { kind: \"component\", type: i2.MatTab, selector: \"mat-tab\", inputs: [\"disabled\", \"label\", \"aria-label\", \"aria-labelledby\", \"labelClass\", \"bodyClass\", \"id\"], exportAs: [\"matTab\"] }, { kind: \"component\", type: i2.MatTabGroup, selector: \"mat-tab-group\", inputs: [\"color\", \"fitInkBarToContent\", \"mat-stretch-tabs\", \"mat-align-tabs\", \"dynamicHeight\", \"selectedIndex\", \"headerPosition\", \"animationDuration\", \"contentTabIndex\", \"disablePagination\", \"disableRipple\", \"preserveContent\", \"backgroundColor\", \"aria-label\", \"aria-labelledby\"], outputs: [\"selectedIndexChange\", \"focusChange\", \"animationDone\", \"selectedTabChange\"], exportAs: [\"matTabGroup\"] }, { kind: \"ngmodule\", type: MatFormFieldModule }, { kind: \"component\", type: i3.MatFormField, selector: \"mat-form-field\", inputs: [\"hideRequiredMarker\", \"color\", \"floatLabel\", \"appearance\", \"subscriptSizing\", \"hintLabel\"], exportAs: [\"matFormField\"] }, { kind: \"directive\", type: i3.MatLabel, selector: \"mat-label\" }, { kind: \"directive\", type: i3.MatHint, selector: \"mat-hint\", inputs: [\"align\", \"id\"] }, { kind: \"directive\", type: i3.MatError, selector: \"mat-error, [matError]\", inputs: [\"id\"] }, { kind: \"directive\", type: i3.MatSuffix, selector: \"[matSuffix], [matIconSuffix], [matTextSuffix]\", inputs: [\"matTextSuffix\"] }, { kind: \"ngmodule\", type: MatInputModule }, { kind: \"directive\", type: i4.MatInput, selector: \"input[matInput], textarea[matInput], select[matNativeControl],      input[matNativeControl], textarea[matNativeControl]\", inputs: [\"disabled\", \"id\", \"placeholder\", \"name\", \"required\", \"type\", \"errorStateMatcher\", \"aria-describedby\", \"value\", \"readonly\", \"disabledInteractive\"], exportAs: [\"matInput\"] }, { kind: \"ngmodule\", type: MatSelectModule }, { kind: \"component\", type: i5.MatSelect, selector: \"mat-select\", inputs: [\"aria-describedby\", \"panelClass\", \"disabled\", \"disableRipple\", \"tabIndex\", \"hideSingleSelectionIndicator\", \"placeholder\", \"required\", \"multiple\", \"disableOptionCentering\", \"compareWith\", \"value\", \"aria-label\", \"aria-labelledby\", \"errorStateMatcher\", \"typeaheadDebounceInterval\", \"sortComparator\", \"id\", \"panelWidth\", \"canSelectNullableOptions\"], outputs: [\"openedChange\", \"opened\", \"closed\", \"selectionChange\", \"valueChange\"], exportAs: [\"matSelect\"] }, { kind: \"component\", type: i5.MatOption, selector: \"mat-option\", inputs: [\"value\", \"id\", \"disabled\"], outputs: [\"onSelectionChange\"], exportAs: [\"matOption\"] }, { kind: \"component\", type: i5.MatOptgroup, selector: \"mat-optgroup\", inputs: [\"label\", \"disabled\"], exportAs: [\"matOptgroup\"] }, { kind: \"ngmodule\", type: MatSlideToggleModule }, { kind: \"component\", type: i6.MatSlideToggle, selector: \"mat-slide-toggle\", inputs: [\"name\", \"id\", \"labelPosition\", \"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"required\", \"color\", \"disabled\", \"disableRipple\", \"tabIndex\", \"checked\", \"hideIcon\", \"disabledInteractive\"], outputs: [\"change\", \"toggleChange\"], exportAs: [\"matSlideToggle\"] }, { kind: \"component\", type: InputChip, selector: \"acp-input-chip\", inputs: [\"chips\", \"labelText\", \"placelholder\"] }, { kind: \"directive\", type: ToUpperCase, selector: \"[acpToUpperCase]\" }, { kind: \"component\", type: MatCheckbox, selector: \"mat-checkbox\", inputs: [\"aria-label\", \"aria-labelledby\", \"aria-describedby\", \"aria-expanded\", \"aria-controls\", \"aria-owns\", \"id\", \"required\", \"labelPosition\", \"name\", \"value\", \"disableRipple\", \"tabIndex\", \"color\", \"disabledInteractive\", \"checked\", \"disabled\", \"indeterminate\"], outputs: [\"change\", \"indeterminateChange\"], exportAs: [\"matCheckbox\"] }, { kind: \"component\", type: MatIcon, selector: \"mat-icon\", inputs: [\"color\", \"inline\", \"svgIcon\", \"fontSet\", \"fontIcon\"], exportAs: [\"matIcon\"] }, { kind: \"directive\", type: MatTooltip, selector: \"[matTooltip]\", inputs: [\"matTooltipPosition\", \"matTooltipPositionAtOrigin\", \"matTooltipDisabled\", \"matTooltipShowDelay\", \"matTooltipHideDelay\", \"matTooltipTouchGestures\", \"matTooltip\", \"matTooltipClass\"], exportAs: [\"matTooltip\"] }, { kind: \"ngmodule\", type: MatDatepickerModule }, { kind: \"component\", type: i7.MatDatepicker, selector: \"mat-datepicker\", exportAs: [\"matDatepicker\"] }, { kind: \"directive\", type: i7.MatDatepickerInput, selector: \"input[matDatepicker]\", inputs: [\"matDatepicker\", \"min\", \"max\", \"matDatepickerFilter\"], exportAs: [\"matDatepickerInput\"] }, { kind: \"component\", type: i7.MatDatepickerToggle, selector: \"mat-datepicker-toggle\", inputs: [\"for\", \"tabIndex\", \"aria-label\", \"disabled\", \"disableRipple\"], exportAs: [\"matDatepickerToggle\"] }, { kind: \"component\", type: Button, selector: \"acp-button\", inputs: [\"variant\", \"text\", \"icon\", \"disabled\", \"type\", \"matStyle\", \"customClass\", \"extended\", \"title\", \"ariaLabel\", \"name\", \"id\", \"form\", \"tabIndex\", \"testId\"], outputs: [\"handleClick\"] }, { kind: \"component\", type: DynamicCard, selector: \"acp-dynamic-card\", inputs: [\"cardTitle\", \"cardSubtitle\", \"avatarImageUrl\", \"isHeaderVisible\", \"contentPadding\", \"hasDivider\", \"areActionsVisible\", \"primaryButtonText\", \"secondaryButtonText\", \"primaryButtonIcon\", \"secondaryButtonIcon\", \"buttonsPosition\"], outputs: [\"primaryButtonClicked\", \"secondaryButtonClicked\", \"cardClicked\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: CustomerAddEditComponent, decorators: [{\n            type: Component,\n            args: [{ selector: 'acp-customer-add-edit', imports: [\n                        MatDialogContent,\n                        MatDialogActions,\n                        MatButtonModule,\n                        ReactiveFormsModule,\n                        MatTabsModule,\n                        MatFormFieldModule,\n                        MatInputModule,\n                        MatSelectModule,\n                        MatSlideToggleModule,\n                        InputChip,\n                        ToUpperCase,\n                        MatCheckbox,\n                        MatIcon,\n                        MatTooltip,\n                        MatDatepickerModule,\n                        Button,\n                        DynamicCard,\n                    ], providers: [\n                        provideNativeDateAdapter(),\n                        {\n                            provide: CustomerUseCase,\n                            useFactory: () => new CustomerUseCase(new CustomerHttpRepository()),\n                        },\n                        {\n                            provide: CustomerExternalUseCase,\n                            useFactory: () => new CustomerExternalUseCase(new CustomerExternalHttpRepository()),\n                        },\n                    ], changeDetection: ChangeDetectionStrategy.OnPush, template: \"<mat-dialog-content>\\n  <form\\n    (ngSubmit)=\\\"onSave()\\\"\\n    id=\\\"formCompanyCustomer\\\"\\n    [formGroup]=\\\"customerForm\\\"\\n    autocomplete=\\\"off\\\"\\n  >\\n    <mat-tab-group>\\n      <mat-tab label=\\\"DATOS PRINCIPALES\\\">\\n        <div class=\\\"d-grid gap-2 mx-3 mt-2\\\">\\n          <div\\n            class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n          >\\n            <div class=\\\"col\\\">\\n              <mat-form-field class=\\\"w-100\\\">\\n                <mat-label>Tipo Identificaci\\u00F3n: </mat-label>\\n                <mat-select\\n                  formControlName=\\\"idTipoIdentificacion\\\"\\n                  (selectionChange)=\\\"identificationTypeChange($event)\\\"\\n                >\\n                  @for (item of tiposIdentificacion(); track $index) {\\n                  <mat-option [value]=\\\"item.idTipoIdentificacion\\\"\\n                    >{{ item.descripcion }}</mat-option\\n                  >\\n                  }\\n                </mat-select>\\n              </mat-form-field>\\n            </div>\\n            <div class=\\\"col\\\">\\n              <mat-form-field class=\\\"w-100\\\">\\n                <mat-label>N\\u00FAmero de Identificaci\\u00F3n</mat-label>\\n                <input\\n                  type=\\\"text\\\"\\n                  matInput\\n                  (keydown.enter)=\\\"onKeyDownGovernmentId($event)\\\"\\n                  formControlName=\\\"numeroIdentificacion\\\"\\n                />\\n                @if ( numeroIdentificacionControl?.invalid && (numeroIdentificacionControl?.dirty ||\\n                numeroIdentificacionControl?.touched) ) { @if\\n                (numeroIdentificacionControl?.hasError('required')) {\\n                <mat-error> El n\\u00FAmero de identificaci\\u00F3n es obligatorio. </mat-error>\\n                } @if (numeroIdentificacionControl?.hasError('minlength')) {\\n                <mat-error>\\n                  Debe tener al menos {{\\n                  numeroIdentificacionControl?.errors?.['minlength'].requiredLength }} d\\u00EDgitos.\\n                </mat-error>\\n                } @if (numeroIdentificacionControl?.hasError('maxlength')) {\\n                <mat-error>\\n                  No puede tener m\\u00E1s de {{\\n                  numeroIdentificacionControl?.errors?.['maxlength'].requiredLength }} d\\u00EDgitos.\\n                </mat-error>\\n                } @if (numeroIdentificacionControl?.hasError('pattern')) {\\n                <mat-error> Solo se permiten caracteres num\\u00E9ricos. </mat-error>\\n                } @if (numeroIdentificacionControl?.hasError('endsWith001')) {\\n                <mat-error> Los \\u00FAltimos tres d\\u00EDgitos deben ser 001. </mat-error>\\n                } } @if (showRefresh()) {\\n                <ng-container matSuffix>\\n                  <acp-button\\n                    type=\\\"button\\\"\\n                    matStyle=\\\"icon\\\"\\n                    icon=\\\"refresh\\\"\\n                    (handleClick)=\\\"onKeyDownGovernmentId($event)\\\"\\n                  />\\n                </ng-container>\\n                }\\n              </mat-form-field>\\n            </div>\\n          </div>\\n\\n          <div\\n            class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n          >\\n            <div class=\\\"col\\\">\\n              <mat-form-field class=\\\"w-100\\\">\\n                <mat-label>Nombre Fiscal:</mat-label>\\n                <input\\n                  matInput\\n                  autocomplete=\\\"off\\\"\\n                  formControlName=\\\"nombreFiscal\\\"\\n                  id=\\\"nombreComercial\\\"\\n                  placeholder=\\\"Ej: TECNOMEGA\\\"\\n                  acpToUpperCase\\n                />\\n              </mat-form-field>\\n            </div>\\n            <div class=\\\"col\\\">\\n              <mat-form-field class=\\\"w-100\\\">\\n                <mat-label>Nombre Comercial:</mat-label>\\n                <input\\n                  matInput\\n                  autocomplete=\\\"off\\\"\\n                  formControlName=\\\"nombreComercial\\\"\\n                  placeholder=\\\"Ej: TECNOMEGA\\\"\\n                  acpToUpperCase\\n                  type=\\\"text\\\"\\n                />\\n              </mat-form-field>\\n            </div>\\n          </div>\\n\\n          <div>\\n            <mat-form-field class=\\\"w-100\\\">\\n              <mat-label>Direcci\\u00F3n:</mat-label>\\n              <input\\n                matInput\\n                formControlName=\\\"direccion\\\"\\n                placeholder=\\\"AV. 09 DE OCTUBRE...\\\"\\n                acpToUpperCase\\n              />\\n            </mat-form-field>\\n          </div>\\n\\n          <div\\n            class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n          >\\n            <div class=\\\"col\\\">\\n              <acp-input-chip [chips]=\\\"emails\\\" [labelText]=\\\"'Correo'\\\" />\\n            </div>\\n            <div class=\\\"col\\\">\\n              <acp-input-chip [chips]=\\\"telephones\\\" [labelText]=\\\"'Tel\\u00E9fono'\\\" />\\n            </div>\\n          </div>\\n\\n          @if (isUpdate()) {\\n          <div class=\\\"vstack gap-2 mt-2\\\">\\n            <span>Estado</span>\\n            <mat-slide-toggle formControlName=\\\"estado\\\">\\n              {{ customerForm.value.estado ? 'Activo' : 'Inactivo' }}\\n            </mat-slide-toggle>\\n          </div>\\n          }\\n        </div>\\n      </mat-tab>\\n      <mat-tab label=\\\"DATOS ADICIONALES\\\">\\n        <div class=\\\"d-grid gap-2 mx-3 mt-2\\\">\\n          <div\\n            class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n          >\\n            <div class=\\\"col\\\">\\n              <acp-dynamic-card title=\\\"Informaci\\u00F3n B\\u00E1sica\\\" [isHeaderVisible]=\\\"true\\\">\\n                <div\\n                  class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-2\\\"\\n                >\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Tipo Contribuyente: </mat-label>\\n                      <mat-select formControlName=\\\"idSubContribuyente\\\">\\n                        @for (item of tipoContribuyentes(); track $index) {\\n                        <mat-option [value]=\\\"item.idSubContribuyente\\\">\\n                          {{ item.descripcion }}\\n                        </mat-option>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Tiempo Cr\\u00E9dito: </mat-label>\\n                      <mat-select formControlName=\\\"idTiempoCredito\\\">\\n                        @for (item of tiemposCredito(); track $index) {\\n                        <mat-option [value]=\\\"item.idTiempoCredito\\\">\\n                          {{ item.descripcion }}\\n                        </mat-option>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Ciudad</mat-label>\\n                      <mat-select formControlName=\\\"idCiudad\\\">\\n                        <mat-option [value]=\\\"0\\\">-- Ninguno --</mat-option>\\n                        @for (group of ciudades(); track $index) {\\n                        <mat-optgroup [label]=\\\"group.nombre\\\">\\n                          @for (item of group.ciudades; track $index) {\\n                          <mat-option [value]=\\\"item.idCiudad\\\">{{ item.nombre }}</mat-option>\\n                          }\\n                        </mat-optgroup>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Tipo Cliente: </mat-label>\\n                      <mat-select formControlName=\\\"idTipoClienteProveedor\\\">\\n                        <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n                        @for (item of tiposCliente(); track $index) {\\n                        <mat-option [value]=\\\"item.idTipoClienteProveedor\\\">\\n                          {{ item.descripcion }}\\n                        </mat-option>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Empresa: </mat-label>\\n                      <mat-select formControlName=\\\"idEmpresa\\\">\\n                        <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n                        @for (item of empresas(); track $index) {\\n                        <mat-option [value]=\\\"item.idEmpresa\\\"> {{ item.descripcion }} </mat-option>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Fecha Nacimiento</mat-label>\\n                      <input matInput [matDatepicker]=\\\"birthDate\\\" formControlName=\\\"birthDate\\\" />\\n                      <mat-hint>MM/DD/YYYY</mat-hint>\\n                      <mat-datepicker-toggle matIconSuffix [for]=\\\"birthDate\\\" />\\n                      <mat-datepicker #birthDate />\\n                      @if (birthDateCtrl?.invalid && birthDateCtrl?.touched) {\\n                      <mat-error> Fecha inv\\u00E1lida </mat-error>\\n                      }\\n                    </mat-form-field>\\n                  </div>\\n                </div>\\n              </acp-dynamic-card>\\n            </div>\\n            <div class=\\\"col\\\">\\n              <acp-dynamic-card title=\\\"Informaci\\u00F3n Laboral\\\" [isHeaderVisible]=\\\"true\\\">\\n                <div\\n                  class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n                >\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Empleado: </mat-label>\\n                      <mat-select formControlName=\\\"idEmpleado\\\">\\n                        <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n                        @for (item of employees(); track $index) {\\n                        <mat-option [value]=\\\"item.idEmpleado\\\">\\n                          {{ item.nombreCompleto }}\\n                        </mat-option>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Cargo: </mat-label>\\n                      <mat-select formControlName=\\\"idCargo\\\">\\n                        <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n                        @for (item of cargos(); track $index) {\\n                        <mat-option [value]=\\\"item.idCargo\\\"> {{ item.descripcion }} </mat-option>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n\\n                  <div class=\\\"col w-100\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Observaci\\u00F3n</mat-label>\\n                      <textarea matInput placeholder=\\\"...\\\" formControlName=\\\"nota\\\"></textarea>\\n                    </mat-form-field>\\n                  </div>\\n                </div>\\n              </acp-dynamic-card>\\n            </div>\\n          </div>\\n          <div\\n            class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n          >\\n            <div class=\\\"col\\\">\\n              <acp-dynamic-card title=\\\"Configuraci\\u00F3n Financiera\\\" [isHeaderVisible]=\\\"true\\\">\\n                <div\\n                  class=\\\"row row-cols-xxl-1 row-cols-xl-1 row-cols-lg-1 row-cols-md-1 row-cols-sm-1 row-cols-1 g-2 mt-2\\\"\\n                >\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Forma de pago: </mat-label>\\n                      <mat-select formControlName=\\\"idFormaPagoSri\\\">\\n                        <mat-option [value]=\\\"0\\\">--Ninguno--</mat-option>\\n\\n                        @for (item of formasPagoSri(); track $index) {\\n                        <mat-option [value]=\\\"item.idFormaPagoSri\\\">\\n                          {{ item.descripcion }}\\n                        </mat-option>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n\\n                  <div class=\\\"col\\\">\\n                    <acp-input-chip labelText=\\\"Placa\\\" [chips]=\\\"placas()\\\" />\\n                  </div>\\n\\n                  <div class=\\\"col w-100\\\">\\n                    <mat-checkbox formControlName=\\\"configValorBruto\\\"\\n                      >Activar configuraci\\u00F3n de valor bruto\\n                      <mat-icon\\n                        matTooltip=\\\"valor total de un bien o servicio sin incluir impuestos, deducciones o descuentos (uso dentro del reporte)\\\"\\n                        >info</mat-icon\\n                      ></mat-checkbox\\n                    >\\n                  </div>\\n                </div>\\n              </acp-dynamic-card>\\n            </div>\\n            <div class=\\\"col\\\"></div>\\n          </div>\\n        </div>\\n      </mat-tab>\\n      <mat-tab label=\\\"INFORMACI\\u00D3N CREDITICIA\\\">\\n        <div class=\\\"d-grid gap-2 mx-3 mt-2\\\">\\n          <div\\n            class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-2 row-cols-1 g-1\\\"\\n          >\\n            <div class=\\\"col\\\">\\n              <acp-dynamic-card title=\\\"Informaci\\u00F3n Personal\\\" [isHeaderVisible]=\\\"true\\\">\\n                <div\\n                  formGroupName=\\\"dataInfoCred\\\"\\n                  class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-1 row-cols-1 g-2 mt-2\\\"\\n                >\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Estado Civil: </mat-label>\\n                      <mat-select formControlName=\\\"maritalStatusId\\\">\\n                        <mat-option [value]=\\\"0\\\">Seleccionar...</mat-option>\\n\\n                        @for (item of maritalStatuses(); track $index) {\\n                        <mat-option [value]=\\\"item.id\\\"> {{ item.name }} </mat-option>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Esposo(a):</mat-label>\\n                      <input\\n                        matInput\\n                        formControlName=\\\"conyugeNombre\\\"\\n                        placeholder=\\\"Nombre del c\\u00F3nyuge\\\"\\n                      />\\n                    </mat-form-field>\\n                  </div>\\n\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Tel\\u00E9fono Personal:</mat-label>\\n                      <input matInput formControlName=\\\"conyugeTel\\\" placeholder=\\\"09xxxxxxxx\\\" />\\n                    </mat-form-field>\\n                  </div>\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Tel\\u00E9fono Referencia:</mat-label>\\n                      <input matInput formControlName=\\\"refFamTel\\\" placeholder=\\\"09xxxxxxxx\\\" />\\n                    </mat-form-field>\\n                  </div>\\n                  <div class=\\\"col w-100\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Referencia Familiar:</mat-label>\\n                      <input\\n                        matInput\\n                        formControlName=\\\"refFamNombre\\\"\\n                        placeholder=\\\"Nombre de referencia familiar\\\"\\n                      />\\n                    </mat-form-field>\\n                  </div>\\n                </div>\\n              </acp-dynamic-card>\\n            </div>\\n            <div class=\\\"col\\\">\\n              <acp-dynamic-card title=\\\"Informaci\\u00F3n de Vivienda\\\" [isHeaderVisible]=\\\"true\\\">\\n                <div\\n                  formGroupName=\\\"dataInfoCred\\\"\\n                  class=\\\"row row-cols-xxl-2 row-cols-xl-2 row-cols-lg-2 row-cols-md-2 row-cols-sm-1 row-cols-1 g-2 mt-2\\\"\\n                >\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Tipo de Vivienda: </mat-label>\\n                      <mat-select formControlName=\\\"housingTypeId\\\">\\n                        <mat-option [value]=\\\"0\\\">Seleccionar...</mat-option>\\n\\n                        @for (item of housingTypes(); track $index) {\\n                        <mat-option [value]=\\\"item.id\\\"> {{ item.name }} </mat-option>\\n                        }\\n                      </mat-select>\\n                    </mat-form-field>\\n                  </div>\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Sector:</mat-label>\\n                      <input matInput formControlName=\\\"sector\\\" placeholder=\\\"Nombre del sector\\\" />\\n                    </mat-form-field>\\n                  </div>\\n\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Barrio:</mat-label>\\n                      <input matInput formControlName=\\\"barrio\\\" placeholder=\\\"Nombre del barrio\\\" />\\n                    </mat-form-field>\\n                  </div>\\n                  <div class=\\\"col\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Calle:</mat-label>\\n                      <input matInput formControlName=\\\"calle\\\" placeholder=\\\"Nombre de la calle\\\" />\\n                    </mat-form-field>\\n                  </div>\\n                  <div class=\\\"col w-100\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Direcci\\u00F3n Completa</mat-label>\\n                      <textarea\\n                        matInput\\n                        formControlName=\\\"dirVivienda\\\"\\n                        placeholder=\\\"Direcci\\u00F3n completa de la vivienda (Sector, Barrio y Calle)\\\"\\n                      ></textarea>\\n                    </mat-form-field>\\n                  </div>\\n                  <div class=\\\"col w-100\\\">\\n                    <mat-form-field class=\\\"w-100\\\">\\n                      <mat-label>Descripci\\u00F3n del Punto de Referencia:</mat-label>\\n                      <textarea\\n                        matInput\\n                        formControlName=\\\"refDomicilio\\\"\\n                        placeholder=\\\"Descripci\\u00F3n detallada del punto de referencia\\\"\\n                      ></textarea>\\n                    </mat-form-field>\\n                  </div>\\n                </div>\\n              </acp-dynamic-card>\\n            </div>\\n          </div>\\n        </div>\\n      </mat-tab>\\n    </mat-tab-group>\\n  </form>\\n</mat-dialog-content>\\n<mat-dialog-actions>\\n  <div class=\\\"hstack gap-2\\\">\\n    <acp-button type=\\\"submit\\\" variant=\\\"success\\\" form=\\\"formCompanyCustomer\\\" [text]=\\\"btnText()\\\" />\\n    <acp-button type=\\\"button\\\" variant=\\\"dark\\\" text=\\\"Cerrar\\\" (handleClick)=\\\"close()\\\" />\\n  </div>\\n</mat-dialog-actions>\\n\" }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItYWRkLWVkaXQtZGlhbG9nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY3VzdG9tZXIvc3JjL2xpYi91aS9jb21wb25lbnRzL2N1c3RvbWVyLWFkZC1lZGl0L2N1c3RvbWVyLWFkZC1lZGl0LWRpYWxvZy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWN1c3RvbWVyL3NyYy9saWIvdWkvY29tcG9uZW50cy9jdXN0b21lci1hZGQtZWRpdC9jdXN0b21lci1hZGQtZWRpdC1kaWFsb2cuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDbEUsT0FBTyxFQUNMLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLFlBQVksR0FDYixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUVMLFdBQVcsRUFDWCxTQUFTLEVBQ1QsbUJBQW1CLEVBRW5CLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENB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d0JBQ2xCLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixvQkFBb0I7d0JBQ3BCLFNBQVM7d0JBQ1QsV0FBVzt3QkFDWCxXQUFXO3dCQUNYLE9BQU87d0JBQ1AsVUFBVTt3QkFDVixtQkFBbUI7d0JBQ25CLE1BQU07d0JBQ04sV0FBVztxQkFDWixhQUdVO3dCQUNULHdCQUF3QixFQUFFO3dCQUMxQjs0QkFDRSxPQUFPLEVBQUUsZUFBZTs0QkFDeEIsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksZUFBZSxDQUFDLElBQUksc0JBQXNCLEVBQUUsQ0FBQzt5QkFDcEU7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLHVCQUF1Qjs0QkFDaEMsVUFBVSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksdUJBQXVCLENBQUMsSUFBSSw4QkFBOEIsRUFBRSxDQUFDO3lCQUNwRjtxQkFDRixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgc2lnbmFsLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZvcmtKb2luLCBmcm9tLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnQGFjb250cGx1cy9uZy1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7XG4gIE1BVF9ESUFMT0dfREFUQSxcbiAgTWF0RGlhbG9nQWN0aW9ucyxcbiAgTWF0RGlhbG9nQ29udGVudCxcbiAgTWF0RGlhbG9nUmVmLFxufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgRHluYW1pY0NhcmQsIElucHV0Q2hpcCwgQnV0dG9uLCBUb1VwcGVyQ2FzZSB9IGZyb20gJ0BhY29udHBsdXMvbmctY29tcG9uZW50cyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHtcbiAgQWJzdHJhY3RDb250cm9sLFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUdyb3VwLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICBWYWxpZGF0aW9uRXJyb3JzLFxuICBWYWxpZGF0b3JzLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNYXRUYWJzTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFicyc7XG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9mb3JtLWZpZWxkJztcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHsgTWF0U2VsZWN0Q2hhbmdlLCBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3ggfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRJY29uIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBNYXRUb29sdGlwIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XG5pbXBvcnQgeyBNYXREYXRlcGlja2VyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBwcm92aWRlTmF0aXZlRGF0ZUFkYXB0ZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jb3JlJztcbmltcG9ydCB7XG4gIFNFUEFSQURPUkVTX1JFR0VYLFxuICBTRVBBUkFUT1JfS0VZX0NPREUsXG4gIFNSSV9ET0NVTUVOVF9UWVBFLFxuICBpc1N1Y2Nlc3NSZXNwb25zZSxcbn0gZnJvbSAnQGFjb250cGx1cy9jb3JlJztcbmltcG9ydCB7IEN1c3RvbWVyVXNlQ2FzZSB9IGZyb20gJy4uLy4uLy4uL2FwcGxpY2F0aW9uL3VzZS1jYXNlcy9jdXN0b21lci11c2UtY2FzZSc7XG5pbXBvcnQgeyBDdXN0b21lckV4dGVybmFsVXNlQ2FzZSB9IGZyb20gJy4uLy4uLy4uL2FwcGxpY2F0aW9uL3VzZS1jYXNlcy9jdXN0b21lci1leHRlcm5hbC11c2UtY2FzZSc7XG5pbXBvcnQgeyBDdXN0b21lckh0dHBSZXBvc2l0b3J5IH0gZnJvbSAnLi4vLi4vLi4vaW5mcmFzdHJ1Y3R1cmUvcmVwb3NpdG9yaWVzL2N1c3RvbWVyLWh0dHAtcmVwb3NpdG9yeSc7XG5pbXBvcnQgeyBDdXN0b21lckV4dGVybmFsSHR0cFJlcG9zaXRvcnkgfSBmcm9tICcuLi8uLi8uLi9pbmZyYXN0cnVjdHVyZS9yZXBvc2l0b3JpZXMvY3VzdG9tZXItZXh0ZXJuYWwtaHR0cC1yZXBvc2l0b3J5JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNwLWN1c3RvbWVyLWFkZC1lZGl0JyxcbiAgaW1wb3J0czogW1xuICAgIE1hdERpYWxvZ0NvbnRlbnQsXG4gICAgTWF0RGlhbG9nQWN0aW9ucyxcbiAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRUYWJzTW9kdWxlLFxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcbiAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICBNYXRTZWxlY3RNb2R1bGUsXG4gICAgTWF0U2xpZGVUb2dnbGVNb2R1bGUsXG4gICAgSW5wdXRDaGlwLFxuICAgIFRvVXBwZXJDYXNlLFxuICAgIE1hdENoZWNrYm94LFxuICAgIE1hdEljb24sXG4gICAgTWF0VG9vbHRpcCxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIEJ1dHRvbixcbiAgICBEeW5hbWljQ2FyZCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2N1c3RvbWVyLWFkZC1lZGl0LWRpYWxvZy5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2N1c3RvbWVyLWFkZC1lZGl0LWRpYWxvZy5zY3NzJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgcHJvdmlkZU5hdGl2ZURhdGVBZGFwdGVyKCksXG4gICAge1xuICAgICAgcHJvdmlkZTogQ3VzdG9tZXJVc2VDYXNlLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4gbmV3IEN1c3RvbWVyVXNlQ2FzZShuZXcgQ3VzdG9tZXJIdHRwUmVwb3NpdG9yeSgpKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IEN1c3RvbWVyRXh0ZXJuYWxVc2VDYXNlLFxuICAgICAgdXNlRmFjdG9yeTogKCkgPT4gbmV3IEN1c3RvbWVyRXh0ZXJuYWxVc2VDYXNlKG5ldyBDdXN0b21lckV4dGVybmFsSHR0cFJlcG9zaXRvcnkoKSksXG4gICAgfSxcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIEN1c3RvbWVyQWRkRWRpdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nUmVmID0gaW5qZWN0KE1hdERpYWxvZ1JlZjxDdXN0b21lckFkZEVkaXRDb21wb25lbnQ+KTtcbiAgcHJpdmF0ZSByZWFkb25seSBjdXN0b21lclVzZUNhc2UgPSBpbmplY3QoQ3VzdG9tZXJVc2VDYXNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBjdXN0b21lckV4dGVybmFsVXNlQ2FzZSA9IGluamVjdChDdXN0b21lckV4dGVybmFsVXNlQ2FzZSk7XG4gIGJ0blRleHQgPSBzaWduYWwoJ0d1YXJkYXInKTtcblxuICByZWFkb25seSBwYXJhbXNPcHRpb25zID0gaW5qZWN0PHtcbiAgICBpZDogbnVtYmVyO1xuICAgIGRlc2NyaXBjaW9uOiBudWxsIHwgc3RyaW5nO1xuICAgIGRhdGFPZlNyaT86IGJvb2xlYW47XG4gICAgbnVtZXJvSWRlbnRpZmljYWNpb24/OiBzdHJpbmc7XG4gICAgY29kaWdvU3JpPzogc3RyaW5nO1xuICAgIGRhdGE6IGFueTtcbiAgfT4oTUFUX0RJQUxPR19EQVRBKTtcblxuICByZWFkb25seSBwYXJhbXMgPSB0aGlzLnBhcmFtc09wdGlvbnMuZGF0YTtcblxuICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2UgPSBpbmplY3QoTm90aWZpY2F0aW9uU2VydmljZSk7XG5cbiAgdGl0bGUgPSAnTnVldm8gQ2xpZW50ZSc7XG5cbiAgbG9hZGluZyA9IGZhbHNlO1xuXG4gIGVtYWlsczogc3RyaW5nW10gPSBbXTtcblxuICB0ZWxlcGhvbmVzOiBzdHJpbmdbXSA9IFtdO1xuICB0aWVtcG9zQ3JlZGl0byA9IHNpZ25hbDxhbnlbXT4oW10pO1xuICB0aXBvQ29udHJpYnV5ZW50ZXMgPSBzaWduYWw8YW55W10+KFtdKTtcbiAgdGlwb3NDbGllbnRlID0gc2lnbmFsPGFueVtdPihbXSk7XG4gIHRpcG9zSWRlbnRpZmljYWNpb24gPSBzaWduYWw8YW55W10+KFtdKTtcbiAgZm9ybWFzUGFnb1NyaSA9IHNpZ25hbDxhbnlbXT4oW10pO1xuICBwbGFjYXMgPSBzaWduYWw8YW55W10+KFtdKTtcbiAgY2l1ZGFkZXMgPSBzaWduYWw8YW55W10+KFtdKTtcbiAgY2FyZ29zID0gc2lnbmFsPGFueVtdPihbXSk7XG4gIGVtcHJlc2FzID0gc2lnbmFsPGFueVtdPihbXSk7XG4gIGVtcGxveWVlcyA9IHNpZ25hbDxhbnlbXT4oW10pO1xuXG4gIG1hcml0YWxTdGF0dXNlcyA9IHNpZ25hbDxhbnlbXT4oW10pO1xuICBob3VzaW5nVHlwZXMgPSBzaWduYWw8YW55W10+KFtdKTtcblxuICBzaG93UmVmcmVzaCA9IHNpZ25hbCh0cnVlKTtcblxuICBlbmRzV2l0aDAwMVZhbGlkYXRvcihjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCB7XG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5sZW5ndGggPj0gMykge1xuICAgICAgaWYgKCF2YWx1ZS5lbmRzV2l0aCgnMDAxJykpIHtcbiAgICAgICAgcmV0dXJuIHsgZW5kc1dpdGgwMDE6IHRydWUgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY3VzdG9tZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgZGlyZWNjaW9uOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgIGlkQ2FyZ286IG5ldyBGb3JtQ29udHJvbCgwKSxcbiAgICBpZENsaWVudGU6IG5ldyBGb3JtQ29udHJvbCgwKSxcbiAgICBpZEVtcHJlc2E6IG5ldyBGb3JtQ29udHJvbCgwKSxcbiAgICBpZEZvcm1hUGFnb1NyaTogbmV3IEZvcm1Db250cm9sPG51bWJlcj4oMCksXG4gICAgaWRUaXBvQ2xpZW50ZVByb3ZlZWRvcjogbmV3IEZvcm1Db250cm9sKDApLFxuICAgIGlkVGlwb0lkZW50aWZpY2FjaW9uOiBuZXcgRm9ybUNvbnRyb2woMCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgaWRTdWJDb250cmlidXllbnRlOiBuZXcgRm9ybUNvbnRyb2woMCksXG4gICAgaWRUaWVtcG9DcmVkaXRvOiBuZXcgRm9ybUNvbnRyb2woMCksXG4gICAgaWRDaXVkYWQ6IG5ldyBGb3JtQ29udHJvbCgwKSxcbiAgICBpZEVtcGxlYWRvOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgdW5kZWZpbmVkPigwKSxcbiAgICBub21icmVGaXNjYWw6IG5ldyBGb3JtQ29udHJvbCgnJywgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgbm9tYnJlQ29tZXJjaWFsOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICAgIG51bWVyb0lkZW50aWZpY2FjaW9uOiBuZXcgRm9ybUNvbnRyb2woeyB2YWx1ZTogJycsIGRpc2FibGVkOiBmYWxzZSB9LCBbXG4gICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTMpLFxuICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTMpLFxuICAgICAgdGhpcy5lbmRzV2l0aDAwMVZhbGlkYXRvcixcbiAgICBdKSxcbiAgICBjb3JyZW86IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgdGVsZWZvbm86IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgcGxhY2E6IG5ldyBGb3JtQ29udHJvbCgnJyksXG4gICAgbm90YTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAgICBlc3RhZG86IG5ldyBGb3JtQ29udHJvbChmYWxzZSksXG4gICAgYmlydGhEYXRlOiBuZXcgRm9ybUNvbnRyb2w8RGF0ZSB8IG51bGw+KG51bGwpLFxuICAgIHZhbGlkYXRpb25Tcmk6IG5ldyBGb3JtQ29udHJvbChmYWxzZSksXG4gICAgY29uZmlnVmFsb3JCcnV0bzogbmV3IEZvcm1Db250cm9sKGZhbHNlKSxcbiAgICBkYXRhSW5mb0NyZWQ6IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgbWFyaXRhbFN0YXR1c0lkOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCksXG4gICAgICBjb255dWdlTm9tYnJlOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgICBjb255dWdlVGVsOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgICByZWZGYW1Ob21icmU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKSxcbiAgICAgIHJlZkZhbVRlbDogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxuICAgICAgaG91c2luZ1R5cGVJZDogbmV3IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+KG51bGwpLFxuICAgICAgZGlyVml2aWVuZGE6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKSxcbiAgICAgIHJlZkRvbWljaWxpbzogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxuICAgICAgc2VjdG9yOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgICBiYXJyaW86IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKSxcbiAgICAgIGNhbGxlOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgfSksXG4gIH0pO1xuXG4gIGdldEN1c3RvbWVyKGNvZGlnbzogc3RyaW5nLCBpZDogc3RyaW5nKSB7XG4gICAgdGhpcy5jdXN0b21lckZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICB2YWxpZGF0aW9uU3JpOiBmYWxzZSxcbiAgICB9KTtcbiAgICBmcm9tKHRoaXMuY3VzdG9tZXJVc2VDYXNlLmNoZWNrRXhpc3RlbmNlKGlkKSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgIGlmIChpc1N1Y2Nlc3NSZXNwb25zZShyZXNwb25zZSkgJiYgcmVzcG9uc2UuZGF0YSkge1xuICAgICAgICBhbGVydCgnRWwgY2xpZW50ZSB5YSBzZSBlbmN1ZW50cmEgcmVnaXN0cmFkbyBlbiBzdSBlbXByZXNhJyk7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS50b2FzdHIuc2hvdyh7XG4gICAgICAgICAgdHlwZTogJ3dhcm5pbmcnLFxuICAgICAgICAgIG1lc3NhZ2U6ICdFbCBjbGllbnRlIHlhIHNlIGVuY3VlbnRyYSByZWdpc3RyYWRvIGVuIHN1IGVtcHJlc2EnLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5jdXN0b21lckZvcm0ucGF0Y2hWYWx1ZSh7IG51bWVyb0lkZW50aWZpY2FjaW9uOiBudWxsIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChjb2RpZ28gPT09IFNSSV9ET0NVTUVOVF9UWVBFLlBBU1NQT1JUKSB7XG4gICAgICAgIHRoaXMuY3VzdG9tZXJGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgIHZhbGlkYXRpb25Tcmk6IHRydWUsXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBmcm9tKHRoaXMuY3VzdG9tZXJFeHRlcm5hbFVzZUNhc2UuZ2V0QnlJZChpZCkpLnN1YnNjcmliZShzZWNvbmRSZXNwb25zZSA9PiB7XG4gICAgICAgIGlmICghaXNTdWNjZXNzUmVzcG9uc2Uoc2Vjb25kUmVzcG9uc2UpIHx8ICFzZWNvbmRSZXNwb25zZS5kYXRhKSB7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0ci5zaG93KHtcbiAgICAgICAgICAgIHR5cGU6ICdpbmZvJyxcbiAgICAgICAgICAgIG1lc3NhZ2U6ICcgIE5vIHNlIGVuY29udHLDsyBpbmZvcm1hY2nDs24gZW4gZWwgU1JJJyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHBob25lLFxuICAgICAgICAgIGVtYWlsLFxuICAgICAgICAgIGlkQ2FyZCwgLy8gbnVtZXJvUnVjXG4gICAgICAgICAgYnVzaW5lc3NOYW1lLCAvLyByYXpvblNvY2lhbFxuICAgICAgICAgIGFkZHJlc3MsIC8vIGRpcmVjY2lvblxuICAgICAgICB9ID0gc2Vjb25kUmVzcG9uc2UuZGF0YSBhcyBhbnk7XG5cbiAgICAgICAgaWYgKHBob25lICYmIHR5cGVvZiBwaG9uZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aGlzLnRlbGVwaG9uZXMgPSBwaG9uZS5zcGxpdChTRVBBUkFET1JFU19SRUdFWCkgfHwgW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVtYWlsICYmIHR5cGVvZiBlbWFpbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aGlzLmVtYWlscyA9IGVtYWlsLnNwbGl0KFNFUEFSQURPUkVTX1JFR0VYKSB8fCBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaWRDYXJkKSB7XG4gICAgICAgICAgdGhpcy5jdXN0b21lckZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICBudW1lcm9JZGVudGlmaWNhY2lvbjogaWRDYXJkLFxuICAgICAgICAgICAgbm9tYnJlRmlzY2FsOiBidXNpbmVzc05hbWUsXG4gICAgICAgICAgICB2YWxpZGF0aW9uU3JpOiB0cnVlLFxuICAgICAgICAgICAgZGlyZWNjaW9uOiBhZGRyZXNzLFxuICAgICAgICAgICAgbm9tYnJlQ29tZXJjaWFsOiBidXNpbmVzc05hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0TG9hZERhdGEoKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBpZiAodGhpcy5pc1VwZGF0ZSgpKSB7XG4gICAgICByZXR1cm4gZm9ya0pvaW4oW1xuICAgICAgICBmcm9tKHRoaXMuY3VzdG9tZXJVc2VDYXNlLmdldEZvcm1EYXRhKCkpLFxuICAgICAgICBmcm9tKHRoaXMuY3VzdG9tZXJVc2VDYXNlLmdldEJ5SWQodGhpcy5wYXJhbXMuaWQpKSxcbiAgICAgIF0pO1xuICAgIH1cbiAgICByZXR1cm4gZnJvbSh0aGlzLmN1c3RvbWVyVXNlQ2FzZS5nZXRGb3JtRGF0YSgpKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmdldExvYWREYXRhKCkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgbGV0IG1haW5EYXRhRm9ybSA9IHt9IGFzIGFueTtcbiAgICAgICAgbGV0IGRhdGFDb21wYW55Q3VzdG9tZXIgPSB7fSBhcyBhbnk7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3BvbnNlKSkge1xuICAgICAgICAgIG1haW5EYXRhRm9ybSA9IHJlc3BvbnNlWzBdLmRhdGE7XG4gICAgICAgICAgZGF0YUNvbXBhbnlDdXN0b21lciA9IHJlc3BvbnNlWzFdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG1haW5EYXRhRm9ybSA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnRpcG9zSWRlbnRpZmljYWNpb24uc2V0KG1haW5EYXRhRm9ybS50aXBvSWRlbnRpZmljYWNpb24pO1xuICAgICAgICB0aGlzLnRpZW1wb3NDcmVkaXRvLnNldChtYWluRGF0YUZvcm0udGllbXBvQ3JlZGl0b3MpO1xuICAgICAgICB0aGlzLnRpcG9Db250cmlidXllbnRlcy5zZXQobWFpbkRhdGFGb3JtLnRpcG9Db250cmlidXllbnRlcyk7XG4gICAgICAgIHRoaXMuZm9ybWFzUGFnb1NyaS5zZXQobWFpbkRhdGFGb3JtLmZvcm1hc1BhZ29TcmkpO1xuICAgICAgICB0aGlzLnRpcG9zQ2xpZW50ZS5zZXQobWFpbkRhdGFGb3JtLnRpcG9zQ2xpZW50ZSk7XG4gICAgICAgIHRoaXMuY2l1ZGFkZXMuc2V0KG1haW5EYXRhRm9ybS5jaXVkYWRlcyk7XG4gICAgICAgIHRoaXMuY2FyZ29zLnNldChtYWluRGF0YUZvcm0uY2FyZ29zKTtcbiAgICAgICAgdGhpcy5lbXByZXNhcy5zZXQobWFpbkRhdGFGb3JtLmVtcHJlc2FzKTtcbiAgICAgICAgdGhpcy5lbXBsb3llZXMuc2V0KG1haW5EYXRhRm9ybS5lbXBsb3llZXMpO1xuICAgICAgICB0aGlzLm1hcml0YWxTdGF0dXNlcy5zZXQobWFpbkRhdGFGb3JtLm1hcml0YWxTdGF0dXNlcyk7XG4gICAgICAgIHRoaXMuaG91c2luZ1R5cGVzLnNldChtYWluRGF0YUZvcm0uaG91c2luZ1R5cGVzKTtcblxuICAgICAgICBpZiAodGhpcy5pc0RhdGFPZlNyaSgpKSB7XG4gICAgICAgICAgY29uc3QgeyBjb2RpZ29TcmksIG51bWVyb0lkZW50aWZpY2FjaW9uIH0gPSB0aGlzLnBhcmFtcztcblxuICAgICAgICAgIGNvbnN0IGRhdGFJZGVudGlmaWNhY2lvbiA9IHRoaXMudGlwb3NJZGVudGlmaWNhY2lvbigpLmZpbmQoXG4gICAgICAgICAgICAodGk6IGFueSkgPT4gdGkuY29kaWdvU3JpID09PSBjb2RpZ29TcmksXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChkYXRhSWRlbnRpZmljYWNpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGlkVGlwb0lkZW50aWZpY2FjaW9uQ3RybCA9IHRoaXMuY3VzdG9tZXJGb3JtLmdldChcbiAgICAgICAgICAgICAgJ2lkVGlwb0lkZW50aWZpY2FjaW9uJyxcbiAgICAgICAgICAgICkgYXMgRm9ybUNvbnRyb2w8bnVtYmVyPiB8IG51bGw7XG4gICAgICAgICAgICBpZFRpcG9JZGVudGlmaWNhY2lvbkN0cmw/LnNldFZhbHVlKGRhdGFJZGVudGlmaWNhY2lvbi5pZFRpcG9JZGVudGlmaWNhY2lvbiBhcyBudW1iZXIpO1xuXG4gICAgICAgICAgICBjb25zdCBudW1lcm9JZGVudGlmaWNhY2lvbkN0cmwgPSB0aGlzLmN1c3RvbWVyRm9ybS5nZXQoXG4gICAgICAgICAgICAgICdudW1lcm9JZGVudGlmaWNhY2lvbicsXG4gICAgICAgICAgICApIGFzIEZvcm1Db250cm9sPHN0cmluZz4gfCBudWxsO1xuICAgICAgICAgICAgbnVtZXJvSWRlbnRpZmljYWNpb25DdHJsPy5zZXRWYWx1ZShudW1lcm9JZGVudGlmaWNhY2lvbiBhcyBzdHJpbmcpO1xuXG4gICAgICAgICAgICBjb25zdCBpZFRpZW1wb0NyZWRpdG9DdHJsID0gdGhpcy5jdXN0b21lckZvcm0uZ2V0KFxuICAgICAgICAgICAgICAnaWRUaWVtcG9DcmVkaXRvJyxcbiAgICAgICAgICAgICkgYXMgRm9ybUNvbnRyb2w8bnVtYmVyPiB8IG51bGw7XG4gICAgICAgICAgICBpZFRpZW1wb0NyZWRpdG9DdHJsPy5zZXRWYWx1ZShcbiAgICAgICAgICAgICAgdGhpcy50aWVtcG9zQ3JlZGl0bygpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgICA/ICh0aGlzLnRpZW1wb3NDcmVkaXRvKClbMF0uaWRUaWVtcG9DcmVkaXRvIGFzIG51bWJlcilcbiAgICAgICAgICAgICAgICA6IDAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy51cGRhdGVGb3JtQ29udHJvbE51bWVyb0lkZW50aWZpY2FjaW9uKGRhdGFJZGVudGlmaWNhY2lvbi5jb2RpZ29TcmkpO1xuXG4gICAgICAgICAgICB0aGlzLm9uS2V5RG93bkdvdmVybm1lbnRJZCgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzQ3JlYXRlKCkpIHtcbiAgICAgICAgICBjb25zdCBkYXRhSWRlbnRpZmljYWNpb24gPSB0aGlzLnRpcG9zSWRlbnRpZmljYWNpb24oKS5maW5kKFxuICAgICAgICAgICAgKHRpOiBhbnkpID0+IHRpLmNvZGlnb1NyaSA9PT0gU1JJX0RPQ1VNRU5UX1RZUEUuUlVDLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoZGF0YUlkZW50aWZpY2FjaW9uKSB7XG4gICAgICAgICAgICBjb25zdCBpZFRpcG9JZGVudGlmaWNhY2lvbkN0cmwgPSB0aGlzLmN1c3RvbWVyRm9ybS5nZXQoXG4gICAgICAgICAgICAgICdpZFRpcG9JZGVudGlmaWNhY2lvbicsXG4gICAgICAgICAgICApIGFzIEZvcm1Db250cm9sPG51bWJlcj4gfCBudWxsO1xuICAgICAgICAgICAgaWRUaXBvSWRlbnRpZmljYWNpb25DdHJsPy5zZXRWYWx1ZShkYXRhSWRlbnRpZmljYWNpb24uaWRUaXBvSWRlbnRpZmljYWNpb24gYXMgbnVtYmVyKTtcbiAgICAgICAgICAgIHRoaXMuc2V0SWRlbnRpZmljYXRpb25UeXBlQ2hhbmdlKGRhdGFJZGVudGlmaWNhY2lvbi5jb2RpZ29TcmkpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGlkVGllbXBvQ3JlZGl0b0N0cmwgPSB0aGlzLmN1c3RvbWVyRm9ybS5nZXQoXG4gICAgICAgICAgICAnaWRUaWVtcG9DcmVkaXRvJyxcbiAgICAgICAgICApIGFzIEZvcm1Db250cm9sPG51bWJlcj4gfCBudWxsO1xuICAgICAgICAgIGlkVGllbXBvQ3JlZGl0b0N0cmw/LnNldFZhbHVlKFxuICAgICAgICAgICAgdGhpcy50aWVtcG9zQ3JlZGl0bygpLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgPyAodGhpcy50aWVtcG9zQ3JlZGl0bygpWzBdLmlkVGllbXBvQ3JlZGl0byBhcyBudW1iZXIpXG4gICAgICAgICAgICAgIDogMCxcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudGl0bGUgPSAnRWRpdGFyIENsaWVudGUnO1xuICAgICAgICAgIHRoaXMuYnRuVGV4dC5zZXQoJ0FjdHVhbGl6YXInKTtcbiAgICAgICAgICB0aGlzLmVtYWlscyA9IGRhdGFDb21wYW55Q3VzdG9tZXIuY29ycmVvcztcbiAgICAgICAgICB0aGlzLnRlbGVwaG9uZXMgPSBkYXRhQ29tcGFueUN1c3RvbWVyLnRlbGVmb25vcztcbiAgICAgICAgICB0aGlzLnBsYWNhcy5zZXQoZGF0YUNvbXBhbnlDdXN0b21lci5wbGFjYXMpO1xuICAgICAgICAgIGNvbnN0IHsgZGF0YUluZm9DcmVkLCAuLi5yZXN0IH0gPSBkYXRhQ29tcGFueUN1c3RvbWVyO1xuICAgICAgICAgIHRoaXMuY3VzdG9tZXJGb3JtLnBhdGNoVmFsdWUocmVzdCk7XG4gICAgICAgICAgaWYgKGRhdGFJbmZvQ3JlZCkge1xuICAgICAgICAgICAgdGhpcy5jdXN0b21lckZvcm0uZ2V0KCdkYXRhSW5mb0NyZWQnKT8ucGF0Y2hWYWx1ZShkYXRhSW5mb0NyZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm1Db250cm9sTnVtZXJvSWRlbnRpZmljYWNpb24ocmVzdC5jb2RpZ29TcmkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIC8vIEhhbmRsZSBlcnJvciBhcHByb3ByaWF0ZWx5XG4gICAgfVxuICB9XG5cbiAgaWRlbnRpZmljYXRpb25UeXBlQ2hhbmdlKGV2ZW50OiBNYXRTZWxlY3RDaGFuZ2UpIHtcbiAgICBjb25zdCBkdCA9IHRoaXMudGlwb3NJZGVudGlmaWNhY2lvbigpLmZpbmQoXG4gICAgICBpdGVtID0+IGl0ZW0uaWRUaXBvSWRlbnRpZmljYWNpb24gPT09IE51bWJlcihldmVudC52YWx1ZSksXG4gICAgKTtcbiAgICB0aGlzLnNldElkZW50aWZpY2F0aW9uVHlwZUNoYW5nZShkdC5jb2RpZ29TcmkpO1xuICB9XG5cbiAgdXBkYXRlRm9ybUNvbnRyb2xOdW1lcm9JZGVudGlmaWNhY2lvbihcbiAgICBjb2RpZ29Tcmk6IFNSSV9ET0NVTUVOVF9UWVBFLlJVQyB8IFNSSV9ET0NVTUVOVF9UWVBFLkNFRFVMQSxcbiAgKTogdm9pZCB7XG4gICAgY29uc3QgaWROdW1iZXJDb250cm9sID0gdGhpcy5jdXN0b21lckZvcm0uZ2V0KCdudW1lcm9JZGVudGlmaWNhY2lvbicpO1xuXG4gICAgdGhpcy5zaG93UmVmcmVzaC5zZXQoZmFsc2UpO1xuXG4gICAgaWYgKFtTUklfRE9DVU1FTlRfVFlQRS5SVUMsIFNSSV9ET0NVTUVOVF9UWVBFLkNFRFVMQV0uaW5jbHVkZXMoY29kaWdvU3JpKSkge1xuICAgICAgbGV0IGxlbmd0aFZhbGlkYXRvcjtcbiAgICAgIHRoaXMuc2hvd1JlZnJlc2guc2V0KHRydWUpO1xuXG4gICAgICBpZiAoY29kaWdvU3JpID09PSBTUklfRE9DVU1FTlRfVFlQRS5DRURVTEEpIHtcbiAgICAgICAgbGVuZ3RoVmFsaWRhdG9yID0gW1ZhbGlkYXRvcnMubWluTGVuZ3RoKDEwKSwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoMTApXTtcbiAgICAgIH0gZWxzZSBpZiAoY29kaWdvU3JpID09PSBTUklfRE9DVU1FTlRfVFlQRS5SVUMpIHtcbiAgICAgICAgbGVuZ3RoVmFsaWRhdG9yID0gW1xuICAgICAgICAgIFZhbGlkYXRvcnMubWluTGVuZ3RoKDEzKSxcbiAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgxMyksXG4gICAgICAgICAgdGhpcy5lbmRzV2l0aDAwMVZhbGlkYXRvcixcbiAgICAgICAgXTtcbiAgICAgIH1cbiAgICAgIGlmIChsZW5ndGhWYWxpZGF0b3IpIHtcbiAgICAgICAgaWROdW1iZXJDb250cm9sPy5zZXRWYWxpZGF0b3JzKFtcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxuICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybigvXlxcZCskLyksIC8vIFNvbG8gbsO6bWVyb3NcbiAgICAgICAgICAuLi5sZW5ndGhWYWxpZGF0b3IsXG4gICAgICAgIF0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZE51bWJlckNvbnRyb2w/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICB9XG5cbiAgICBpZE51bWJlckNvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgfVxuXG4gIHNldElkZW50aWZpY2F0aW9uVHlwZUNoYW5nZShjb2RpZ29Tcmk6IFNSSV9ET0NVTUVOVF9UWVBFLlJVQyB8IFNSSV9ET0NVTUVOVF9UWVBFLkNFRFVMQSkge1xuICAgIGNvbnN0IGlkTnVtYmVyQ29udHJvbCA9IHRoaXMuY3VzdG9tZXJGb3JtLmdldCgnbnVtZXJvSWRlbnRpZmljYWNpb24nKTtcbiAgICBpZE51bWJlckNvbnRyb2w/LnJlc2V0KCk7XG4gICAgaWROdW1iZXJDb250cm9sPy5jbGVhclZhbGlkYXRvcnMoKTtcbiAgICB0aGlzLnVwZGF0ZUZvcm1Db250cm9sTnVtZXJvSWRlbnRpZmljYWNpb24oY29kaWdvU3JpKTtcbiAgfVxuXG4gIGdldCBudW1lcm9JZGVudGlmaWNhY2lvbkNvbnRyb2woKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VzdG9tZXJGb3JtLmdldCgnbnVtZXJvSWRlbnRpZmljYWNpb24nKTtcbiAgfVxuXG4gIGdldCBiaXJ0aERhdGVDdHJsKCkge1xuICAgIHJldHVybiB0aGlzLmN1c3RvbWVyRm9ybS5nZXQoJ2JpcnRoRGF0ZScpO1xuICB9XG5cbiAgb25LZXlEb3duR292ZXJubWVudElkKCRldmVudD86IGFueSkge1xuICAgIGlmICgkZXZlbnQpIHtcbiAgICAgICRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5udW1lcm9JZGVudGlmaWNhY2lvbkNvbnRyb2w/LmludmFsaWQpIHJldHVybjtcblxuICAgIGNvbnN0IGlkVGlwb0lkZW50aWZpY2FjaW9uID0gKFxuICAgICAgdGhpcy5jdXN0b21lckZvcm0uZ2V0KCdpZFRpcG9JZGVudGlmaWNhY2lvbicpIGFzIEZvcm1Db250cm9sPG51bWJlcj4gfCBudWxsXG4gICAgKT8udmFsdWUgYXMgbnVtYmVyO1xuICAgIGNvbnN0IG51bWVyb0lkZW50aWZpY2FjaW9uID0gKFxuICAgICAgdGhpcy5jdXN0b21lckZvcm0uZ2V0KCdudW1lcm9JZGVudGlmaWNhY2lvbicpIGFzIEZvcm1Db250cm9sPHN0cmluZz4gfCBudWxsXG4gICAgKT8udmFsdWUgYXMgc3RyaW5nO1xuXG4gICAgY29uc3QgY29kaWdvU3JpID0gdGhpcy50aXBvc0lkZW50aWZpY2FjaW9uKCkuZmluZChcbiAgICAgICh4OiBhbnkpID0+IHguaWRUaXBvSWRlbnRpZmljYWNpb24gPT0gaWRUaXBvSWRlbnRpZmljYWNpb24sXG4gICAgKS5jb2RpZ29Tcmk7XG5cbiAgICBpZiAobnVtZXJvSWRlbnRpZmljYWNpb24pIHtcbiAgICAgIHRoaXMuZ2V0Q3VzdG9tZXIoY29kaWdvU3JpLCBudW1lcm9JZGVudGlmaWNhY2lvbik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpc0RhdGFPZlNyaSA9ICgpID0+IHRoaXMucGFyYW1zLmRhdGFPZlNyaTtcbiAgcHJpdmF0ZSBpc0NyZWF0ZSA9ICgpID0+ICEodGhpcy5wYXJhbXMuaWQgPiAwKTtcbiAgaXNVcGRhdGUgPSAoKSA9PiB0aGlzLnBhcmFtcy5pZCA+IDA7XG5cbiAgb25TYXZlKCkge1xuICAgIHRoaXMuY3VzdG9tZXJGb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgdGVsZWZvbm86IHRoaXMudGVsZXBob25lcy5sZW5ndGggPiAwID8gdGhpcy50ZWxlcGhvbmVzLmpvaW4oU0VQQVJBVE9SX0tFWV9DT0RFLlNMQVNIKSA6IG51bGwsXG4gICAgfSk7XG5cbiAgICB0aGlzLmN1c3RvbWVyRm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgIGNvcnJlbzogdGhpcy5lbWFpbHMubGVuZ3RoID4gMCA/IHRoaXMuZW1haWxzLmpvaW4oU0VQQVJBVE9SX0tFWV9DT0RFLlNMQVNIKSA6IG51bGwsXG4gICAgfSk7XG4gICAgdGhpcy5jdXN0b21lckZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICBwbGFjYTogdGhpcy5wbGFjYXMoKS5sZW5ndGggPiAwID8gdGhpcy5wbGFjYXMoKS5qb2luKFNFUEFSQVRPUl9LRVlfQ09ERS5TTEFTSCkgOiBudWxsLFxuICAgIH0pO1xuICAgIGNvbnN0IGRhdGFGb3JtID0ge1xuICAgICAgLi4udGhpcy5jdXN0b21lckZvcm0udmFsdWUsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmN1c3RvbWVyRm9ybS5pbnZhbGlkKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RyLnNob3coe1xuICAgICAgICB0eXBlOiAnd2FybmluZycsXG4gICAgICAgIG1lc3NhZ2U6ICdJbmdyZXNlIHRvZG9zIGRhdG9zIHJlcXVlcmlkb3MnLFxuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNVcGRhdGUoKSkge1xuICAgICAgY29uc3Qgc2VuZFBhcmFtcyA9IHtcbiAgICAgICAgaWQ6IHRoaXMucGFyYW1zLmlkLFxuICAgICAgICBkYXRhOiBkYXRhRm9ybSxcbiAgICAgIH07XG4gICAgICBmcm9tKHRoaXMuY3VzdG9tZXJVc2VDYXNlLnVwZGF0ZShzZW5kUGFyYW1zKSkuc3Vic2NyaWJlKHJlc3BvbnNlID0+IHtcbiAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnRvYXN0ci5zaG93KHtcbiAgICAgICAgICB0eXBlOiBpc1N1Y2Nlc3NSZXNwb25zZShyZXNwb25zZSkgPyAnc3VjY2VzcycgOiAnd2FybmluZycsXG4gICAgICAgICAgbWVzc2FnZTogYCR7cmVzcG9uc2UubWVzc2FnZX1gLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGlzU3VjY2Vzc1Jlc3BvbnNlKHJlc3BvbnNlKSkge1xuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgICAgICAgIGlkOiB0aGlzLnBhcmFtcy5pZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNDcmVhdGUoKSkge1xuICAgICAgZnJvbSh0aGlzLmN1c3RvbWVyVXNlQ2FzZS5jcmVhdGUoZGF0YUZvcm0pKS5zdWJzY3JpYmUocmVzcG9uc2UgPT4ge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UudG9hc3RyLnNob3coe1xuICAgICAgICAgIHR5cGU6IGlzU3VjY2Vzc1Jlc3BvbnNlKHJlc3BvbnNlKSA/ICdzdWNjZXNzJyA6ICd3YXJuaW5nJyxcbiAgICAgICAgICBtZXNzYWdlOiBgJHtyZXNwb25zZS5tZXNzYWdlfWAsXG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaXNTdWNjZXNzUmVzcG9uc2UocmVzcG9uc2UpKSB7XG4gICAgICAgICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKCk7XG4gIH1cbn1cbiIsIjxtYXQtZGlhbG9nLWNvbnRlbnQ+XG4gIDxmb3JtXG4gICAgKG5nU3VibWl0KT1cIm9uU2F2ZSgpXCJcbiAgICBpZD1cImZvcm1Db21wYW55Q3VzdG9tZXJcIlxuICAgIFtmb3JtR3JvdXBdPVwiY3VzdG9tZXJGb3JtXCJcbiAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICA+XG4gICAgPG1hdC10YWItZ3JvdXA+XG4gICAgICA8bWF0LXRhYiBsYWJlbD1cIkRBVE9TIFBSSU5DSVBBTEVTXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWdyaWQgZ2FwLTIgbXgtMyBtdC0yXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJyb3cgcm93LWNvbHMteHhsLTIgcm93LWNvbHMteGwtMiByb3ctY29scy1sZy0yIHJvdy1jb2xzLW1kLTIgcm93LWNvbHMtc20tMiByb3ctY29scy0xIGctMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VGlwbyBJZGVudGlmaWNhY2nDs246IDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0XG4gICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpZFRpcG9JZGVudGlmaWNhY2lvblwiXG4gICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cImlkZW50aWZpY2F0aW9uVHlwZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIHRpcG9zSWRlbnRpZmljYWNpb24oKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbS5pZFRpcG9JZGVudGlmaWNhY2lvblwiXG4gICAgICAgICAgICAgICAgICAgID57eyBpdGVtLmRlc2NyaXBjaW9uIH19PC9tYXQtb3B0aW9uXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Ow7ptZXJvIGRlIElkZW50aWZpY2FjacOzbjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uS2V5RG93bkdvdmVybm1lbnRJZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm51bWVyb0lkZW50aWZpY2FjaW9uXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIEBpZiAoIG51bWVyb0lkZW50aWZpY2FjaW9uQ29udHJvbD8uaW52YWxpZCAmJiAobnVtZXJvSWRlbnRpZmljYWNpb25Db250cm9sPy5kaXJ0eSB8fFxuICAgICAgICAgICAgICAgIG51bWVyb0lkZW50aWZpY2FjaW9uQ29udHJvbD8udG91Y2hlZCkgKSB7IEBpZlxuICAgICAgICAgICAgICAgIChudW1lcm9JZGVudGlmaWNhY2lvbkNvbnRyb2w/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpKSB7XG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvcj4gRWwgbsO6bWVybyBkZSBpZGVudGlmaWNhY2nDs24gZXMgb2JsaWdhdG9yaW8uIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIH0gQGlmIChudW1lcm9JZGVudGlmaWNhY2lvbkNvbnRyb2w/Lmhhc0Vycm9yKCdtaW5sZW5ndGgnKSkge1xuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgICBEZWJlIHRlbmVyIGFsIG1lbm9zIHt7XG4gICAgICAgICAgICAgICAgICBudW1lcm9JZGVudGlmaWNhY2lvbkNvbnRyb2w/LmVycm9ycz8uWydtaW5sZW5ndGgnXS5yZXF1aXJlZExlbmd0aCB9fSBkw61naXRvcy5cbiAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICB9IEBpZiAobnVtZXJvSWRlbnRpZmljYWNpb25Db250cm9sPy5oYXNFcnJvcignbWF4bGVuZ3RoJykpIHtcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgTm8gcHVlZGUgdGVuZXIgbcOhcyBkZSB7e1xuICAgICAgICAgICAgICAgICAgbnVtZXJvSWRlbnRpZmljYWNpb25Db250cm9sPy5lcnJvcnM/LlsnbWF4bGVuZ3RoJ10ucmVxdWlyZWRMZW5ndGggfX0gZMOtZ2l0b3MuXG4gICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XG4gICAgICAgICAgICAgICAgfSBAaWYgKG51bWVyb0lkZW50aWZpY2FjaW9uQ29udHJvbD8uaGFzRXJyb3IoJ3BhdHRlcm4nKSkge1xuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+IFNvbG8gc2UgcGVybWl0ZW4gY2FyYWN0ZXJlcyBudW3DqXJpY29zLiA8L21hdC1lcnJvcj5cbiAgICAgICAgICAgICAgICB9IEBpZiAobnVtZXJvSWRlbnRpZmljYWNpb25Db250cm9sPy5oYXNFcnJvcignZW5kc1dpdGgwMDEnKSkge1xuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+IExvcyDDumx0aW1vcyB0cmVzIGTDrWdpdG9zIGRlYmVuIHNlciAwMDEuIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgIH0gfSBAaWYgKHNob3dSZWZyZXNoKCkpIHtcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyIG1hdFN1ZmZpeD5cbiAgICAgICAgICAgICAgICAgIDxhY3AtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBtYXRTdHlsZT1cImljb25cIlxuICAgICAgICAgICAgICAgICAgICBpY29uPVwicmVmcmVzaFwiXG4gICAgICAgICAgICAgICAgICAgIChoYW5kbGVDbGljayk9XCJvbktleURvd25Hb3Zlcm5tZW50SWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJyb3cgcm93LWNvbHMteHhsLTIgcm93LWNvbHMteGwtMiByb3ctY29scy1sZy0yIHJvdy1jb2xzLW1kLTIgcm93LWNvbHMtc20tMiByb3ctY29scy0xIGctMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+Tm9tYnJlIEZpc2NhbDo8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgIG1hdElucHV0XG4gICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibm9tYnJlRmlzY2FsXCJcbiAgICAgICAgICAgICAgICAgIGlkPVwibm9tYnJlQ29tZXJjaWFsXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRWo6IFRFQ05PTUVHQVwiXG4gICAgICAgICAgICAgICAgICBhY3BUb1VwcGVyQ2FzZVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPk5vbWJyZSBDb21lcmNpYWw6PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCJcbiAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5vbWJyZUNvbWVyY2lhbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVqOiBURUNOT01FR0FcIlxuICAgICAgICAgICAgICAgICAgYWNwVG9VcHBlckNhc2VcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgPG1hdC1sYWJlbD5EaXJlY2Npw7NuOjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRpcmVjY2lvblwiXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJBVi4gMDkgREUgT0NUVUJSRS4uLlwiXG4gICAgICAgICAgICAgICAgYWNwVG9VcHBlckNhc2VcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInJvdyByb3ctY29scy14eGwtMiByb3ctY29scy14bC0yIHJvdy1jb2xzLWxnLTIgcm93LWNvbHMtbWQtMiByb3ctY29scy1zbS0yIHJvdy1jb2xzLTEgZy0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgIDxhY3AtaW5wdXQtY2hpcCBbY2hpcHNdPVwiZW1haWxzXCIgW2xhYmVsVGV4dF09XCInQ29ycmVvJ1wiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgPGFjcC1pbnB1dC1jaGlwIFtjaGlwc109XCJ0ZWxlcGhvbmVzXCIgW2xhYmVsVGV4dF09XCInVGVsw6lmb25vJ1wiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIEBpZiAoaXNVcGRhdGUoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2c3RhY2sgZ2FwLTIgbXQtMlwiPlxuICAgICAgICAgICAgPHNwYW4+RXN0YWRvPC9zcGFuPlxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgZm9ybUNvbnRyb2xOYW1lPVwiZXN0YWRvXCI+XG4gICAgICAgICAgICAgIHt7IGN1c3RvbWVyRm9ybS52YWx1ZS5lc3RhZG8gPyAnQWN0aXZvJyA6ICdJbmFjdGl2bycgfX1cbiAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtdGFiPlxuICAgICAgPG1hdC10YWIgbGFiZWw9XCJEQVRPUyBBRElDSU9OQUxFU1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1ncmlkIGdhcC0yIG14LTMgbXQtMlwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXh4bC0yIHJvdy1jb2xzLXhsLTIgcm93LWNvbHMtbGctMiByb3ctY29scy1tZC0yIHJvdy1jb2xzLXNtLTIgcm93LWNvbHMtMSBnLTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgPGFjcC1keW5hbWljLWNhcmQgdGl0bGU9XCJJbmZvcm1hY2nDs24gQsOhc2ljYVwiIFtpc0hlYWRlclZpc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXh4bC0yIHJvdy1jb2xzLXhsLTIgcm93LWNvbHMtbGctMiByb3ctY29scy1tZC0yIHJvdy1jb2xzLXNtLTIgcm93LWNvbHMtMSBnLTJcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRpcG8gQ29udHJpYnV5ZW50ZTogPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaWRTdWJDb250cmlidXllbnRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIHRpcG9Db250cmlidXllbnRlcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtLmlkU3ViQ29udHJpYnV5ZW50ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmRlc2NyaXBjaW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRpZW1wbyBDcsOpZGl0bzogPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaWRUaWVtcG9DcmVkaXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIHRpZW1wb3NDcmVkaXRvKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIml0ZW0uaWRUaWVtcG9DcmVkaXRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uZGVzY3JpcGNpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+Q2l1ZGFkPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaWRDaXVkYWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCIwXCI+LS0gTmluZ3VubyAtLTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGdyb3VwIG9mIGNpdWRhZGVzKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRncm91cCBbbGFiZWxdPVwiZ3JvdXAubm9tYnJlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZ3JvdXAuY2l1ZGFkZXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbS5pZENpdWRhZFwiPnt7IGl0ZW0ubm9tYnJlIH19PC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRpcG8gQ2xpZW50ZTogPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaWRUaXBvQ2xpZW50ZVByb3ZlZWRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjBcIj4tLU5pbmd1bm8tLTwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgdGlwb3NDbGllbnRlKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIml0ZW0uaWRUaXBvQ2xpZW50ZVByb3ZlZWRvclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmRlc2NyaXBjaW9uIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkVtcHJlc2E6IDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImlkRW1wcmVzYVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjBcIj4tLU5pbmd1bm8tLTwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBlbXByZXNhcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtLmlkRW1wcmVzYVwiPiB7eyBpdGVtLmRlc2NyaXBjaW9uIH19IDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkZlY2hhIE5hY2ltaWVudG88L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW21hdERhdGVwaWNrZXJdPVwiYmlydGhEYXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwiYmlydGhEYXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQ+TU0vREQvWVlZWTwvbWF0LWhpbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRJY29uU3VmZml4IFtmb3JdPVwiYmlydGhEYXRlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI2JpcnRoRGF0ZSAvPlxuICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYmlydGhEYXRlQ3RybD8uaW52YWxpZCAmJiBiaXJ0aERhdGVDdHJsPy50b3VjaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj4gRmVjaGEgaW52w6FsaWRhIDwvbWF0LWVycm9yPlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FjcC1keW5hbWljLWNhcmQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgPGFjcC1keW5hbWljLWNhcmQgdGl0bGU9XCJJbmZvcm1hY2nDs24gTGFib3JhbFwiIFtpc0hlYWRlclZpc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXh4bC0yIHJvdy1jb2xzLXhsLTIgcm93LWNvbHMtbGctMiByb3ctY29scy1tZC0yIHJvdy1jb2xzLXNtLTIgcm93LWNvbHMtMSBnLTFcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkVtcGxlYWRvOiA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJpZEVtcGxlYWRvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiMFwiPi0tTmluZ3Vuby0tPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGVtcGxveWVlcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtLmlkRW1wbGVhZG9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5ub21icmVDb21wbGV0byB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5DYXJnbzogPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaWRDYXJnb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjBcIj4tLU5pbmd1bm8tLTwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBjYXJnb3MoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbS5pZENhcmdvXCI+IHt7IGl0ZW0uZGVzY3JpcGNpb24gfX0gPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5PYnNlcnZhY2nDs248L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCIuLi5cIiBmb3JtQ29udHJvbE5hbWU9XCJub3RhXCI+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FjcC1keW5hbWljLWNhcmQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInJvdyByb3ctY29scy14eGwtMiByb3ctY29scy14bC0yIHJvdy1jb2xzLWxnLTIgcm93LWNvbHMtbWQtMiByb3ctY29scy1zbS0yIHJvdy1jb2xzLTEgZy0xXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgIDxhY3AtZHluYW1pYy1jYXJkIHRpdGxlPVwiQ29uZmlndXJhY2nDs24gRmluYW5jaWVyYVwiIFtpc0hlYWRlclZpc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicm93IHJvdy1jb2xzLXh4bC0xIHJvdy1jb2xzLXhsLTEgcm93LWNvbHMtbGctMSByb3ctY29scy1tZC0xIHJvdy1jb2xzLXNtLTEgcm93LWNvbHMtMSBnLTIgbXQtMlwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+Rm9ybWEgZGUgcGFnbzogPC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiaWRGb3JtYVBhZ29TcmlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCIwXCI+LS1OaW5ndW5vLS08L21hdC1vcHRpb24+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZm9ybWFzUGFnb1NyaSgpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtLmlkRm9ybWFQYWdvU3JpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0uZGVzY3JpcGNpb24gfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8YWNwLWlucHV0LWNoaXAgbGFiZWxUZXh0PVwiUGxhY2FcIiBbY2hpcHNdPVwicGxhY2FzKClcIiAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgdy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJjb25maWdWYWxvckJydXRvXCJcbiAgICAgICAgICAgICAgICAgICAgICA+QWN0aXZhciBjb25maWd1cmFjacOzbiBkZSB2YWxvciBicnV0b1xuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0VG9vbHRpcD1cInZhbG9yIHRvdGFsIGRlIHVuIGJpZW4gbyBzZXJ2aWNpbyBzaW4gaW5jbHVpciBpbXB1ZXN0b3MsIGRlZHVjY2lvbmVzIG8gZGVzY3VlbnRvcyAodXNvIGRlbnRybyBkZWwgcmVwb3J0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPmluZm88L21hdC1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgPjwvbWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2FjcC1keW5hbWljLWNhcmQ+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC10YWI+XG4gICAgICA8bWF0LXRhYiBsYWJlbD1cIklORk9STUFDScOTTiBDUkVESVRJQ0lBXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWdyaWQgZ2FwLTIgbXgtMyBtdC0yXCI+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJyb3cgcm93LWNvbHMteHhsLTIgcm93LWNvbHMteGwtMiByb3ctY29scy1sZy0yIHJvdy1jb2xzLW1kLTIgcm93LWNvbHMtc20tMiByb3ctY29scy0xIGctMVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICA8YWNwLWR5bmFtaWMtY2FyZCB0aXRsZT1cIkluZm9ybWFjacOzbiBQZXJzb25hbFwiIFtpc0hlYWRlclZpc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cE5hbWU9XCJkYXRhSW5mb0NyZWRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgcm93LWNvbHMteHhsLTIgcm93LWNvbHMteGwtMiByb3ctY29scy1sZy0yIHJvdy1jb2xzLW1kLTIgcm93LWNvbHMtc20tMSByb3ctY29scy0xIGctMiBtdC0yXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Fc3RhZG8gQ2l2aWw6IDwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cIm1hcml0YWxTdGF0dXNJZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gW3ZhbHVlXT1cIjBcIj5TZWxlY2Npb25hci4uLjwvbWF0LW9wdGlvbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoaXRlbSBvZiBtYXJpdGFsU3RhdHVzZXMoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiaXRlbS5pZFwiPiB7eyBpdGVtLm5hbWUgfX0gPC9tYXQtb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+RXNwb3NvKGEpOjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvbnl1Z2VOb21icmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJOb21icmUgZGVsIGPDs255dWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRlbMOpZm9ubyBQZXJzb25hbDo8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiY29ueXVnZVRlbFwiIHBsYWNlaG9sZGVyPVwiMDl4eHh4eHh4eFwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRlbMOpZm9ubyBSZWZlcmVuY2lhOjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJyZWZGYW1UZWxcIiBwbGFjZWhvbGRlcj1cIjA5eHh4eHh4eHhcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5SZWZlcmVuY2lhIEZhbWlsaWFyOjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlZkZhbU5vbWJyZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIk5vbWJyZSBkZSByZWZlcmVuY2lhIGZhbWlsaWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYWNwLWR5bmFtaWMtY2FyZD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICA8YWNwLWR5bmFtaWMtY2FyZCB0aXRsZT1cIkluZm9ybWFjacOzbiBkZSBWaXZpZW5kYVwiIFtpc0hlYWRlclZpc2libGVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cE5hbWU9XCJkYXRhSW5mb0NyZWRcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyb3cgcm93LWNvbHMteHhsLTIgcm93LWNvbHMteGwtMiByb3ctY29scy1sZy0yIHJvdy1jb2xzLW1kLTIgcm93LWNvbHMtc20tMSByb3ctY29scy0xIGctMiBtdC0yXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5UaXBvIGRlIFZpdmllbmRhOiA8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJob3VzaW5nVHlwZUlkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiBbdmFsdWVdPVwiMFwiPlNlbGVjY2lvbmFyLi4uPC9tYXQtb3B0aW9uPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChpdGVtIG9mIGhvdXNpbmdUeXBlcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIFt2YWx1ZV09XCJpdGVtLmlkXCI+IHt7IGl0ZW0ubmFtZSB9fSA8L21hdC1vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5TZWN0b3I6PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cInNlY3RvclwiIHBsYWNlaG9sZGVyPVwiTm9tYnJlIGRlbCBzZWN0b3JcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkJhcnJpbzo8L21hdC1sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiYmFycmlvXCIgcGxhY2Vob2xkZXI9XCJOb21icmUgZGVsIGJhcnJpb1wiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIGNsYXNzPVwidy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkNhbGxlOjwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJjYWxsZVwiIHBsYWNlaG9sZGVyPVwiTm9tYnJlIGRlIGxhIGNhbGxlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbCB3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJ3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+RGlyZWNjacOzbiBDb21wbGV0YTwvbWF0LWxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRpclZpdmllbmRhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRGlyZWNjacOzbiBjb21wbGV0YSBkZSBsYSB2aXZpZW5kYSAoU2VjdG9yLCBCYXJyaW8geSBDYWxsZSlcIlxuICAgICAgICAgICAgICAgICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIHctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInctMTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5EZXNjcmlwY2nDs24gZGVsIFB1bnRvIGRlIFJlZmVyZW5jaWE6PC9tYXQtbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVmRG9taWNpbGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRGVzY3JpcGNpw7NuIGRldGFsbGFkYSBkZWwgcHVudG8gZGUgcmVmZXJlbmNpYVwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9hY3AtZHluYW1pYy1jYXJkPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9tYXQtdGFiPlxuICAgIDwvbWF0LXRhYi1ncm91cD5cbiAgPC9mb3JtPlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG48bWF0LWRpYWxvZy1hY3Rpb25zPlxuICA8ZGl2IGNsYXNzPVwiaHN0YWNrIGdhcC0yXCI+XG4gICAgPGFjcC1idXR0b24gdHlwZT1cInN1Ym1pdFwiIHZhcmlhbnQ9XCJzdWNjZXNzXCIgZm9ybT1cImZvcm1Db21wYW55Q3VzdG9tZXJcIiBbdGV4dF09XCJidG5UZXh0KClcIiAvPlxuICAgIDxhY3AtYnV0dG9uIHR5cGU9XCJidXR0b25cIiB2YXJpYW50PVwiZGFya1wiIHRleHQ9XCJDZXJyYXJcIiAoaGFuZGxlQ2xpY2spPVwiY2xvc2UoKVwiIC8+XG4gIDwvZGl2PlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4iXX0=","import { Component, computed, input, output } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatButtonModule } from '@angular/material/button';\nimport { Button } from '@acontplus/ng-components';\nimport * as i0 from \"@angular/core\";\nimport * as i1 from \"@angular/material/card\";\nimport * as i2 from \"@angular/material/chips\";\nexport class CustomerCard {\n    customer = input.required(...(ngDevMode ? [{ debugName: \"customer\" }] : []));\n    editCustomer = output();\n    deleteCustomer = output();\n    getLogoSliceBusinessName = computed(() => {\n        const name = this.customer()?.businessName || '';\n        return name.slice(0, 1);\n    }, ...(ngDevMode ? [{ debugName: \"getLogoSliceBusinessName\" }] : []));\n    onEditClick() {\n        // Emits the customer object to the parent component\n        this.editCustomer.emit(this.customer());\n    }\n    onDeleteClick() {\n        // Emits the customer object to the parent component\n        this.deleteCustomer.emit(this.customer());\n    }\n    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: CustomerCard, deps: [], target: i0.ɵɵFactoryTarget.Component });\n    static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.4\", type: CustomerCard, isStandalone: true, selector: \"acp-customer-card\", inputs: { customer: { classPropertyName: \"customer\", publicName: \"customer\", isSignal: true, isRequired: true, transformFunction: null } }, outputs: { editCustomer: \"editCustomer\", deleteCustomer: \"deleteCustomer\" }, ngImport: i0, template: \"<div class=\\\"acp-customer-card\\\">\\n  <mat-card class=\\\"acp-customer-card-content\\\">\\n    <!-- Header -->\\n    <div class=\\\"acp-card-header\\\">\\n      <div class=\\\"acp-avatar\\\" aria-label=\\\"Logo de cliente\\\">{{ getLogoSliceBusinessName() }}</div>\\n      <h5 class=\\\"acp-business-name\\\">{{ customer().businessName }}</h5>\\n      <p class=\\\"acp-trade-name\\\">{{ customer().tradeName }}</p>\\n    </div>\\n\\n    <!-- Card content -->\\n    <mat-card-content>\\n      <div class=\\\"acp-info\\\">\\n        <p><strong>ID:</strong> 1234567890 (RUC)</p>\\n        <p><strong>Email:</strong> {{ customer().email }}</p>\\n        <p><strong>Tel\\u00E9fono:</strong> {{ customer().phone }}</p>\\n        <p><strong>Direcci\\u00F3n:</strong>{{ customer().address }}</p>\\n\\n        <div class=\\\"acp-chips\\\">\\n          <mat-chip-set>\\n            <mat-chip color=\\\"primary\\\">{{ customer().statusName }}</mat-chip>\\n          </mat-chip-set>\\n        </div>\\n      </div>\\n    </mat-card-content>\\n\\n    <!-- Card actions -->\\n    @if (!customer().isFinalConsumer) {\\n    <mat-card-actions class=\\\"acp-actions gap-2\\\">\\n      <acp-button matStyle=\\\"icon\\\" icon=\\\"edit\\\" (handleClick)=\\\"onEditClick()\\\" />\\n      <acp-button matStyle=\\\"icon\\\" icon=\\\"delete\\\" variant=\\\"danger\\\" (handleClick)=\\\"onDeleteClick()\\\" />\\n    </mat-card-actions>\\n    }\\n  </mat-card>\\n</div>\\n\", styles: [\".acp-customer-card{display:block}.acp-customer-card .acp-customer-card-content{width:345px;border-radius:16px}.acp-customer-card .acp-card-header{display:flex;flex-direction:column;align-items:center;padding:16px;background-color:var(--mat-sys-primary-container, #e3f2fd);border-top-left-radius:16px;border-top-right-radius:16px}.acp-customer-card .acp-card-header .acp-business-name{text-align:center;font-size:14px;font-weight:500}.acp-customer-card .acp-card-header .acp-trade-name{text-align:center;font-size:12px;color:var(--mat-sys-on-surface-variant, #6c757d)}.acp-customer-card .acp-avatar{width:80px;height:80px;border-radius:50%;background-color:var(--mat-sys-primary, #1976d2);display:flex;justify-content:center;align-items:center;font-size:32px;color:var(--mat-sys-on-primary, white);margin-bottom:12px}.acp-customer-card .acp-info p{margin:4px 0}.acp-customer-card .acp-chips{margin-top:12px;display:flex;gap:8px}.acp-customer-card .acp-actions{justify-content:flex-end;padding:16px}\\n\"], dependencies: [{ kind: \"ngmodule\", type: MatCardModule }, { kind: \"component\", type: i1.MatCard, selector: \"mat-card\", inputs: [\"appearance\"], exportAs: [\"matCard\"] }, { kind: \"directive\", type: i1.MatCardActions, selector: \"mat-card-actions\", inputs: [\"align\"], exportAs: [\"matCardActions\"] }, { kind: \"directive\", type: i1.MatCardContent, selector: \"mat-card-content\" }, { kind: \"ngmodule\", type: MatDividerModule }, { kind: \"ngmodule\", type: MatChipsModule }, { kind: \"component\", type: i2.MatChip, selector: \"mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]\", inputs: [\"role\", \"id\", \"aria-label\", \"aria-description\", \"value\", \"color\", \"removable\", \"highlighted\", \"disableRipple\", \"disabled\"], outputs: [\"removed\", \"destroyed\"], exportAs: [\"matChip\"] }, { kind: \"component\", type: i2.MatChipSet, selector: \"mat-chip-set\", inputs: [\"disabled\", \"role\", \"tabIndex\"] }, { kind: \"ngmodule\", type: MatButtonModule }, { kind: \"component\", type: Button, selector: \"acp-button\", inputs: [\"variant\", \"text\", \"icon\", \"disabled\", \"type\", \"matStyle\", \"customClass\", \"extended\", \"title\", \"ariaLabel\", \"name\", \"id\", \"form\", \"tabIndex\", \"testId\"], outputs: [\"handleClick\"] }] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.4\", ngImport: i0, type: CustomerCard, decorators: [{\n            type: Component,\n            args: [{ selector: 'acp-customer-card', imports: [MatCardModule, MatDividerModule, MatChipsModule, MatButtonModule, Button], template: \"<div class=\\\"acp-customer-card\\\">\\n  <mat-card class=\\\"acp-customer-card-content\\\">\\n    <!-- Header -->\\n    <div class=\\\"acp-card-header\\\">\\n      <div class=\\\"acp-avatar\\\" aria-label=\\\"Logo de cliente\\\">{{ getLogoSliceBusinessName() }}</div>\\n      <h5 class=\\\"acp-business-name\\\">{{ customer().businessName }}</h5>\\n      <p class=\\\"acp-trade-name\\\">{{ customer().tradeName }}</p>\\n    </div>\\n\\n    <!-- Card content -->\\n    <mat-card-content>\\n      <div class=\\\"acp-info\\\">\\n        <p><strong>ID:</strong> 1234567890 (RUC)</p>\\n        <p><strong>Email:</strong> {{ customer().email }}</p>\\n        <p><strong>Tel\\u00E9fono:</strong> {{ customer().phone }}</p>\\n        <p><strong>Direcci\\u00F3n:</strong>{{ customer().address }}</p>\\n\\n        <div class=\\\"acp-chips\\\">\\n          <mat-chip-set>\\n            <mat-chip color=\\\"primary\\\">{{ customer().statusName }}</mat-chip>\\n          </mat-chip-set>\\n        </div>\\n      </div>\\n    </mat-card-content>\\n\\n    <!-- Card actions -->\\n    @if (!customer().isFinalConsumer) {\\n    <mat-card-actions class=\\\"acp-actions gap-2\\\">\\n      <acp-button matStyle=\\\"icon\\\" icon=\\\"edit\\\" (handleClick)=\\\"onEditClick()\\\" />\\n      <acp-button matStyle=\\\"icon\\\" icon=\\\"delete\\\" variant=\\\"danger\\\" (handleClick)=\\\"onDeleteClick()\\\" />\\n    </mat-card-actions>\\n    }\\n  </mat-card>\\n</div>\\n\", styles: [\".acp-customer-card{display:block}.acp-customer-card .acp-customer-card-content{width:345px;border-radius:16px}.acp-customer-card .acp-card-header{display:flex;flex-direction:column;align-items:center;padding:16px;background-color:var(--mat-sys-primary-container, #e3f2fd);border-top-left-radius:16px;border-top-right-radius:16px}.acp-customer-card .acp-card-header .acp-business-name{text-align:center;font-size:14px;font-weight:500}.acp-customer-card .acp-card-header .acp-trade-name{text-align:center;font-size:12px;color:var(--mat-sys-on-surface-variant, #6c757d)}.acp-customer-card .acp-avatar{width:80px;height:80px;border-radius:50%;background-color:var(--mat-sys-primary, #1976d2);display:flex;justify-content:center;align-items:center;font-size:32px;color:var(--mat-sys-on-primary, white);margin-bottom:12px}.acp-customer-card .acp-info p{margin:4px 0}.acp-customer-card .acp-chips{margin-top:12px;display:flex;gap:8px}.acp-customer-card .acp-actions{justify-content:flex-end;padding:16px}\\n\"] }]\n        }] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tZXItY2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL25nLWN1c3RvbWVyL3NyYy9saWIvdWkvY29tcG9uZW50cy9jdXN0b21lci1jYXJkL2N1c3RvbWVyLWNhcmQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9uZy1jdXN0b21lci9zcmMvbGliL3VpL2NvbXBvbmVudHMvY3VzdG9tZXItY2FyZC9jdXN0b21lci1jYXJkLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7Ozs7QUFTbEQsTUFBTSxPQUFPLFlBQVk7SUFDdkIsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLG1EQUF1QixDQUFDO0lBQ2pELFlBQVksR0FBRyxNQUFNLEVBQXVCLENBQUM7SUFDN0MsY0FBYyxHQUFHLE1BQU0sRUFBdUIsQ0FBQztJQUUvQyx3QkFBd0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxZQUFZLElBQUksRUFBRSxDQUFDO1FBQ2pELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUIsQ0FBQyxvRUFBQyxDQUFDO0lBRUgsV0FBVztRQUNULG9EQUFvRDtRQUNwRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsYUFBYTtRQUNYLG9EQUFvRDtRQUNwRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUM1QyxDQUFDO3VHQWxCVSxZQUFZOzJGQUFaLFlBQVksc1NDZHpCLCt6Q0FrQ0EsZ2lDRHhCWSxhQUFhLHlWQUFFLGdCQUFnQiw4QkFBRSxjQUFjLDBiQUFFLGVBQWUsK0JBQUUsTUFBTTs7MkZBSXZFLFlBQVk7a0JBTnhCLFNBQVM7K0JBQ0UsbUJBQW1CLFdBQ3BCLENBQUMsYUFBYSxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsTUFBTSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5wdXQsIG91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgTWF0RGl2aWRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpdmlkZXInO1xuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSAnQGFjb250cGx1cy9uZy1jb21wb25lbnRzJztcbmltcG9ydCB7IEN1c3RvbWVyTGlzdEl0ZW1EdG8gfSBmcm9tICcuLi8uLi8uLi9pbmZyYXN0cnVjdHVyZS9kdG9zL2N1c3RvbWVyLWR0byc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FjcC1jdXN0b21lci1jYXJkJyxcbiAgaW1wb3J0czogW01hdENhcmRNb2R1bGUsIE1hdERpdmlkZXJNb2R1bGUsIE1hdENoaXBzTW9kdWxlLCBNYXRCdXR0b25Nb2R1bGUsIEJ1dHRvbl0sXG4gIHRlbXBsYXRlVXJsOiAnLi9jdXN0b21lci1jYXJkLmh0bWwnLFxuICBzdHlsZVVybDogJy4vY3VzdG9tZXItY2FyZC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQ3VzdG9tZXJDYXJkIHtcbiAgY3VzdG9tZXIgPSBpbnB1dC5yZXF1aXJlZDxDdXN0b21lckxpc3RJdGVtRHRvPigpO1xuICBlZGl0Q3VzdG9tZXIgPSBvdXRwdXQ8Q3VzdG9tZXJMaXN0SXRlbUR0bz4oKTtcbiAgZGVsZXRlQ3VzdG9tZXIgPSBvdXRwdXQ8Q3VzdG9tZXJMaXN0SXRlbUR0bz4oKTtcblxuICBnZXRMb2dvU2xpY2VCdXNpbmVzc05hbWUgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgbmFtZSA9IHRoaXMuY3VzdG9tZXIoKT8uYnVzaW5lc3NOYW1lIHx8ICcnO1xuICAgIHJldHVybiBuYW1lLnNsaWNlKDAsIDEpO1xuICB9KTtcblxuICBvbkVkaXRDbGljaygpOiB2b2lkIHtcbiAgICAvLyBFbWl0cyB0aGUgY3VzdG9tZXIgb2JqZWN0IHRvIHRoZSBwYXJlbnQgY29tcG9uZW50XG4gICAgdGhpcy5lZGl0Q3VzdG9tZXIuZW1pdCh0aGlzLmN1c3RvbWVyKCkpO1xuICB9XG5cbiAgb25EZWxldGVDbGljaygpOiB2b2lkIHtcbiAgICAvLyBFbWl0cyB0aGUgY3VzdG9tZXIgb2JqZWN0IHRvIHRoZSBwYXJlbnQgY29tcG9uZW50XG4gICAgdGhpcy5kZWxldGVDdXN0b21lci5lbWl0KHRoaXMuY3VzdG9tZXIoKSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJhY3AtY3VzdG9tZXItY2FyZFwiPlxuICA8bWF0LWNhcmQgY2xhc3M9XCJhY3AtY3VzdG9tZXItY2FyZC1jb250ZW50XCI+XG4gICAgPCEtLSBIZWFkZXIgLS0+XG4gICAgPGRpdiBjbGFzcz1cImFjcC1jYXJkLWhlYWRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImFjcC1hdmF0YXJcIiBhcmlhLWxhYmVsPVwiTG9nbyBkZSBjbGllbnRlXCI+e3sgZ2V0TG9nb1NsaWNlQnVzaW5lc3NOYW1lKCkgfX08L2Rpdj5cbiAgICAgIDxoNSBjbGFzcz1cImFjcC1idXNpbmVzcy1uYW1lXCI+e3sgY3VzdG9tZXIoKS5idXNpbmVzc05hbWUgfX08L2g1PlxuICAgICAgPHAgY2xhc3M9XCJhY3AtdHJhZGUtbmFtZVwiPnt7IGN1c3RvbWVyKCkudHJhZGVOYW1lIH19PC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBDYXJkIGNvbnRlbnQgLS0+XG4gICAgPG1hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICA8ZGl2IGNsYXNzPVwiYWNwLWluZm9cIj5cbiAgICAgICAgPHA+PHN0cm9uZz5JRDo8L3N0cm9uZz4gMTIzNDU2Nzg5MCAoUlVDKTwvcD5cbiAgICAgICAgPHA+PHN0cm9uZz5FbWFpbDo8L3N0cm9uZz4ge3sgY3VzdG9tZXIoKS5lbWFpbCB9fTwvcD5cbiAgICAgICAgPHA+PHN0cm9uZz5UZWzDqWZvbm86PC9zdHJvbmc+IHt7IGN1c3RvbWVyKCkucGhvbmUgfX08L3A+XG4gICAgICAgIDxwPjxzdHJvbmc+RGlyZWNjacOzbjo8L3N0cm9uZz57eyBjdXN0b21lcigpLmFkZHJlc3MgfX08L3A+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImFjcC1jaGlwc1wiPlxuICAgICAgICAgIDxtYXQtY2hpcC1zZXQ+XG4gICAgICAgICAgICA8bWF0LWNoaXAgY29sb3I9XCJwcmltYXJ5XCI+e3sgY3VzdG9tZXIoKS5zdGF0dXNOYW1lIH19PC9tYXQtY2hpcD5cbiAgICAgICAgICA8L21hdC1jaGlwLXNldD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG5cbiAgICA8IS0tIENhcmQgYWN0aW9ucyAtLT5cbiAgICBAaWYgKCFjdXN0b21lcigpLmlzRmluYWxDb25zdW1lcikge1xuICAgIDxtYXQtY2FyZC1hY3Rpb25zIGNsYXNzPVwiYWNwLWFjdGlvbnMgZ2FwLTJcIj5cbiAgICAgIDxhY3AtYnV0dG9uIG1hdFN0eWxlPVwiaWNvblwiIGljb249XCJlZGl0XCIgKGhhbmRsZUNsaWNrKT1cIm9uRWRpdENsaWNrKClcIiAvPlxuICAgICAgPGFjcC1idXR0b24gbWF0U3R5bGU9XCJpY29uXCIgaWNvbj1cImRlbGV0ZVwiIHZhcmlhbnQ9XCJkYW5nZXJcIiAoaGFuZGxlQ2xpY2spPVwib25EZWxldGVDbGljaygpXCIgLz5cbiAgICA8L21hdC1jYXJkLWFjdGlvbnM+XG4gICAgfVxuICA8L21hdC1jYXJkPlxuPC9kaXY+XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvbnRwbHVzLW5nLWN1c3RvbWVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvbmctY3VzdG9tZXIvc3JjL2Fjb250cGx1cy1uZy1jdXN0b21lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHZW5lcmF0ZWQgYnVuZGxlIGluZGV4LiBEbyBub3QgZWRpdC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2luZGV4JztcbiJdfQ=="],"names":["i1","i2"],"mappings":"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"}