ng-easycommerce 0.0.572 → 0.0.574
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/assets/ec-i18n/ct.json +2 -0
- package/assets/ec-i18n/en.json +2 -0
- package/assets/ec-i18n/es.json +2 -0
- package/assets/ec-i18n/fr.json +2 -0
- package/assets/ec-i18n/gl.json +2 -0
- package/assets/ec-i18n/pr.json +2 -0
- package/bundles/ng-easycommerce.umd.js +126 -9
- package/bundles/ng-easycommerce.umd.js.map +1 -1
- package/bundles/ng-easycommerce.umd.min.js +1 -1
- package/bundles/ng-easycommerce.umd.min.js.map +1 -1
- package/esm2015/lib/ec-component/auth-ec/register-form-ec/register-form-ec.component.js +34 -4
- package/esm2015/lib/ec-component/cart-ec/cart-ec.component.js +52 -2
- package/esm2015/lib/ec-component/widgets-ec/bancard-catastro-ec/bancard-catastro-ec.component.js +5 -2
- package/esm5/lib/ec-component/auth-ec/register-form-ec/register-form-ec.component.js +35 -4
- package/esm5/lib/ec-component/cart-ec/cart-ec.component.js +86 -2
- package/esm5/lib/ec-component/widgets-ec/bancard-catastro-ec/bancard-catastro-ec.component.js +5 -2
- package/fesm2015/ng-easycommerce.js +87 -5
- package/fesm2015/ng-easycommerce.js.map +1 -1
- package/fesm5/ng-easycommerce.js +126 -9
- package/fesm5/ng-easycommerce.js.map +1 -1
- package/lib/ec-component/auth-ec/register-form-ec/register-form-ec.component.d.ts +5 -1
- package/lib/ec-component/cart-ec/cart-ec.component.d.ts +4 -1
- package/lib/ec-component/widgets-ec/bancard-catastro-ec/bancard-catastro-ec.component.d.ts +1 -0
- package/ng-easycommerce.metadata.json +1 -1
- package/package.json +1 -1
package/esm5/lib/ec-component/widgets-ec/bancard-catastro-ec/bancard-catastro-ec.component.js
CHANGED
|
@@ -265,6 +265,9 @@ var BancardCatastroEcComponent = /** @class */ (function (_super) {
|
|
|
265
265
|
}, 1000);
|
|
266
266
|
}
|
|
267
267
|
};
|
|
268
|
+
BancardCatastroEcComponent.prototype.openModal = function () {
|
|
269
|
+
this.infoPreview = true;
|
|
270
|
+
};
|
|
268
271
|
BancardCatastroEcComponent.prototype.closeModal = function () {
|
|
269
272
|
};
|
|
270
273
|
BancardCatastroEcComponent.ctorParameters = function () { return [
|
|
@@ -300,11 +303,11 @@ var BancardCatastroEcComponent = /** @class */ (function (_super) {
|
|
|
300
303
|
BancardCatastroEcComponent = __decorate([
|
|
301
304
|
Component({
|
|
302
305
|
selector: 'app-bancard-catastro-ec',
|
|
303
|
-
template: "<div *ngIf=\"!loading; else loadingView\">\r\n <div class=\"row my-3\">\r\n <ng-container *ngIf=\"registered_cards && registered_cards.length > 0; else notCards\">\r\n <ng-container *ngFor=\"let card of registered_cards; let x=index\">\r\n <div class=\"col-12 col-md-6\">\r\n <div class=\"card my-2\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-md-9\">\r\n <h5 class=\"card-title\">Terminada en {{card.card_masked_number.slice(-4)}}</h5>\r\n <!-- <h6 class=\"card-subtitle mb-2 text-muted\">Card subtitle</h6> -->\r\n <!-- <p class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.</p>\r\n -->\r\n <p class=\"card-text text-muted\">{{card.card_brand}}</p>\r\n <p class=\"card-text text-muted\">Vencimiento: {{card.expiration_date}}</p>\r\n </div>\r\n <div class=\"col-3 d-none d-md-flex\">\r\n <div class=\"d-flex flex-column justify-content-between align-items-center w-100\">\r\n <div class=\"d-flex justify-content-end w-100\">\r\n <a class=\"cursor-pointer text-primary\" (click)=\"deleteCard(card.card_id)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-trash3\"\r\n viewBox=\"0 0 16 16\">\r\n <path\r\n d=\"M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5ZM11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H2.506a.58.58 0 0 0-.01 0H1.5a.5.5 0 0 0 0 1h.538l.853 10.66A2 2 0 0 0 4.885 16h6.23a2 2 0 0 0 1.994-1.84l.853-10.66h.538a.5.5 0 0 0 0-1h-.995a.59.59 0 0 0-.01 0H11Zm1.958 1-.846 10.58a1 1 0 0 1-.997.92h-6.23a1 1 0 0 1-.997-.92L3.042 3.5h9.916Zm-7.487 1a.5.5 0 0 1 .528.47l.5 8.5a.5.5 0 0 1-.998.06L5 5.03a.5.5 0 0 1 .47-.53Zm5.058 0a.5.5 0 0 1 .47.53l-.5 8.5a.5.5 0 1 1-.998-.06l.5-8.5a.5.5 0 0 1 .528-.47ZM8 4.5a.5.5 0 0 1 .5.5v8.5a.5.5 0 0 1-1 0V5a.5.5 0 0 1 .5-.5Z\" />\r\n </svg>\r\n </a>\r\n </div>\r\n <img [src]=\"getCardImg(card.card_brand)\" class=\"img-card\" />\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer d-flex flex-row justify-content-end\">\r\n <ng-container *ngIf=\"!checkingPayment; else buttonLoading\">\r\n <button *ngIf=\"card.card_type == 'credit'; else debito\" class=\"btn comprar text-white\" data-bs-toggle=\"modal\"\r\n data-bs-target=\"#modalCuotas\" (click)=\"setCurrentCardID(card.card_id)\">Pagar</button>\r\n <ng-template #debito>\r\n <button class=\"btn comprar text-white\" (click)=\"toPay(card.card_id)\">Pagar</button>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #notCards>\r\n <div class=\"col-12 d-flex justify-content-center\">\r\n <h6>Usted no posee tarjetas registrada. Para continuar con este m\u00E9todo de pago por favor registre una\r\n tarjeta presionando el bot\u00F3n de <span class=\"text-decoration-underline fs-6\"> Nueva tarjeta</span>\r\n </h6>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <button class=\"btn comprar text-white\" data-bs-toggle=\"modal\" data-bs-target=\"#catastro\"\r\n (click)=\"getProcessId()\">Nueva Tarjeta</button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal\" tabindex=\"-1\" id=\"catastro\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <!-- <h5 class=\"modal-title\">Modal title</h5> -->\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"\r\n (click)=\"closeModal()\"></button>\r\n </div>\r\n <div class=\"modal-body d-flex flex-column justify-content-center align-items-center\">\r\n <ng-container *ngIf=\"infoPreview; else iframe\">\r\n <div class=\"alert alert-warning \" role=\"alert\">\r\n <p class=\"mb-0\">Estimado usuario,</p>\r\n <p> A continuaci\u00F3n usted pasar\u00E1 por \u00FAnica vez por un proceso de\r\n validaci\u00F3n con preguntas de seguridad. Para iniciar favor tener en\r\n cuenta las siguientes recomendaciones:</p>\r\n <ol class=\"list-group list-group-numbered\">\r\n <li class=\"list-group-item list-group-item-warning\">Verifique su n\u00FAmero de c\u00E9dula de\r\n identidad</li>\r\n <li class=\"list-group-item list-group-item-warning\">Tenga a mano sus tarjetas de cr\u00E9dito y\r\n d\u00E9bito activas</li>\r\n <li class=\"list-group-item list-group-item-warning\">Verifique el monto y lugar de sus\r\n \u00FAltimas compras en\r\n comercios o extracciones en cajeros</li>\r\n </ol>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <a class=\"cursor-pointer text-dark fs-xs\" (click)=\"skipInfoPreview()\">Saltar</a>\r\n </div>\r\n </ng-container>\r\n <ng-template #iframe>\r\n <iframe *ngIf=\"url; else loadingView\" [src]=\"url\" frameborder=\"0\" class=\"iframeStyle\"></iframe>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- Modal -->\r\n<div class=\"modal fade\" id=\"modalCuotas\" tabindex=\"-1\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-sm\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\">Elija el n\u00FAmero de cuotas</h5>\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <select class=\"form-select\" aria-label=\"Default select example\"\r\n (change)=\"setNumberOfPayments($event.target.value)\">\r\n <option selected disabled>Selecciones la cantidad de cuotas</option>\r\n <option value=\"1\">1 cuota</option>\r\n <option value=\"3\">3 cuotas</option>\r\n <option value=\"6\">6 cuotas</option>\r\n <option value=\"12\">12 cuotas</option>\r\n </select>\r\n </div>\r\n <div class=\"modal-footer\" *ngIf=\"canPay()\">\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"\r\n (click)=\"toPay(currentCardID)\">Pagar</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #loadingView>\r\n <div>\r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #buttonLoading>\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"> \r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </button>\r\n</ng-template>",
|
|
306
|
+
template: "<div *ngIf=\"!loading; else loadingView\">\r\n <div class=\"row my-3\">\r\n <ng-container *ngIf=\"registered_cards && registered_cards.length > 0; else notCards\">\r\n <ng-container *ngFor=\"let card of registered_cards; let x=index\">\r\n <div class=\"col-12 col-md-6\">\r\n <div class=\"card my-2\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-md-9\">\r\n <h5 class=\"card-title\">Terminada en {{card.card_masked_number.slice(-4)}}</h5>\r\n <!-- <h6 class=\"card-subtitle mb-2 text-muted\">Card subtitle</h6> -->\r\n <!-- <p class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.</p>\r\n -->\r\n <p class=\"card-text text-muted\">{{card.card_brand}}</p>\r\n <p class=\"card-text text-muted\">Vencimiento: {{card.expiration_date}}</p>\r\n </div>\r\n <div class=\"col-3 d-none d-md-flex\">\r\n <div class=\"d-flex flex-column justify-content-between align-items-center w-100\">\r\n <div class=\"d-flex justify-content-end w-100\">\r\n <a class=\"cursor-pointer text-primary\" (click)=\"deleteCard(card.card_id)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-trash3\"\r\n viewBox=\"0 0 16 16\">\r\n <path\r\n d=\"M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5ZM11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H2.506a.58.58 0 0 0-.01 0H1.5a.5.5 0 0 0 0 1h.538l.853 10.66A2 2 0 0 0 4.885 16h6.23a2 2 0 0 0 1.994-1.84l.853-10.66h.538a.5.5 0 0 0 0-1h-.995a.59.59 0 0 0-.01 0H11Zm1.958 1-.846 10.58a1 1 0 0 1-.997.92h-6.23a1 1 0 0 1-.997-.92L3.042 3.5h9.916Zm-7.487 1a.5.5 0 0 1 .528.47l.5 8.5a.5.5 0 0 1-.998.06L5 5.03a.5.5 0 0 1 .47-.53Zm5.058 0a.5.5 0 0 1 .47.53l-.5 8.5a.5.5 0 1 1-.998-.06l.5-8.5a.5.5 0 0 1 .528-.47ZM8 4.5a.5.5 0 0 1 .5.5v8.5a.5.5 0 0 1-1 0V5a.5.5 0 0 1 .5-.5Z\" />\r\n </svg>\r\n </a>\r\n </div>\r\n <img [src]=\"getCardImg(card.card_brand)\" class=\"img-card\" />\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer d-flex flex-row justify-content-end\">\r\n <ng-container *ngIf=\"!checkingPayment; else buttonLoading\">\r\n <button *ngIf=\"card.card_type == 'credit'; else debito\" class=\"btn comprar text-white\" data-bs-toggle=\"modal\"\r\n data-bs-target=\"#modalCuotas\" (click)=\"setCurrentCardID(card.card_id)\">Pagar</button>\r\n <ng-template #debito>\r\n <button class=\"btn comprar text-white\" (click)=\"toPay(card.card_id)\">Pagar</button>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #notCards>\r\n <div class=\"col-12 d-flex justify-content-center\">\r\n <h6>Usted no posee tarjetas registrada. Para continuar con este m\u00E9todo de pago por favor registre una\r\n tarjeta presionando el bot\u00F3n de <span class=\"text-decoration-underline fs-6\"> Nueva tarjeta</span>\r\n </h6>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <button class=\"btn comprar text-white\" data-bs-toggle=\"modal\" data-bs-target=\"#catastro\"\r\n (click)=\"getProcessId(); openModal()\">Nueva Tarjeta</button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal\" tabindex=\"-1\" id=\"catastro\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <!-- <h5 class=\"modal-title\">Modal title</h5> -->\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"\r\n (click)=\"closeModal()\"></button>\r\n </div>\r\n <div class=\"modal-body d-flex flex-column justify-content-center align-items-center\">\r\n <ng-container *ngIf=\"infoPreview; else iframe\">\r\n <div class=\"alert alert-warning \" role=\"alert\">\r\n <p class=\"mb-0\">Estimado usuario,</p>\r\n <p> A continuaci\u00F3n usted pasar\u00E1 por \u00FAnica vez por un proceso de\r\n validaci\u00F3n con preguntas de seguridad. Para iniciar favor tener en\r\n cuenta las siguientes recomendaciones:</p>\r\n <ol class=\"list-group list-group-numbered\">\r\n <li class=\"list-group-item list-group-item-warning\">Verifique su n\u00FAmero de c\u00E9dula de\r\n identidad</li>\r\n <li class=\"list-group-item list-group-item-warning\">Tenga a mano sus tarjetas de cr\u00E9dito y\r\n d\u00E9bito activas</li>\r\n <li class=\"list-group-item list-group-item-warning\">Verifique el monto y lugar de sus\r\n \u00FAltimas compras en\r\n comercios o extracciones en cajeros</li>\r\n </ol>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <a class=\"cursor-pointer text-dark fs-xs\" (click)=\"skipInfoPreview()\">Saltar</a>\r\n </div>\r\n </ng-container>\r\n <ng-template #iframe>\r\n <iframe *ngIf=\"url; else loadingView\" [src]=\"url\" frameborder=\"0\" class=\"iframeStyle\"></iframe>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- Modal -->\r\n<div class=\"modal fade\" id=\"modalCuotas\" tabindex=\"-1\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-sm\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\">Elija el n\u00FAmero de cuotas</h5>\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <select class=\"form-select\" aria-label=\"Default select example\"\r\n (change)=\"setNumberOfPayments($event.target.value)\">\r\n <option selected disabled>Selecciones la cantidad de cuotas</option>\r\n <option value=\"1\">1 cuota</option>\r\n <option value=\"3\">3 cuotas</option>\r\n <option value=\"6\">6 cuotas</option>\r\n <option value=\"12\">12 cuotas</option>\r\n </select>\r\n </div>\r\n <div class=\"modal-footer\" *ngIf=\"canPay()\">\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"\r\n (click)=\"toPay(currentCardID)\">Pagar</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #loadingView>\r\n <div>\r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #buttonLoading>\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"> \r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </button>\r\n</ng-template>",
|
|
304
307
|
styles: [".iframeStyle{min-height:520px!important;width:80%}.img-card{width:90px;height:90px}"]
|
|
305
308
|
})
|
|
306
309
|
], BancardCatastroEcComponent);
|
|
307
310
|
return BancardCatastroEcComponent;
|
|
308
311
|
}(ComponentHelper));
|
|
309
312
|
export { BancardCatastroEcComponent };
|
|
310
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuY2FyZC1jYXRhc3Ryby1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L3dpZGdldHMtZWMvYmFuY2FyZC1jYXRhc3Ryby1lYy9iYW5jYXJkLWNhdGFzdHJvLWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBTzVEO0lBQWdELDhDQUFlO0lBNEIzRCxvQ0FDYyxNQUFpQixFQUNqQixVQUE2QixFQUNoQyxXQUF3QixFQUN4QixTQUF1QixFQUNwQixNQUFvQixFQUN0QixFQUFxQixFQUNyQixRQUFtQjtRQVAvQixZQVNJLGlCQUFPLFNBRVY7UUFWYSxZQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGdCQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUNoQyxpQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixlQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3BCLFlBQU0sR0FBTixNQUFNLENBQWM7UUFDdEIsUUFBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsY0FB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Q0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMxRSxJQUFJLGNBQWMsRUFBRTt3QkFDaEIsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO3FCQUN6Qjt5QkFBTTt3QkFDSCxLQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO3FCQUNwRDtpQkFDSjtnQkFDRCxLQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLFVBQUcsS0FBSyxDQUFDLElBQUksMENBQUUsT0FBTyxDQUFBLENBQUMsQ0FBQTtnQkFDakQsaUVBQWlFO2dCQUNqRSw0Q0FBNEM7WUFDaEQsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1NBRVo7SUFDTCxDQUFDO0lBR0QsK0NBQVUsR0FBVjtJQUVBLENBQUM7O2dCQWxIcUIsU0FBUztnQkFDTCxpQkFBaUI7Z0JBQ25CLFdBQVc7Z0JBQ2IsWUFBWTtnQkFDWixZQUFZO2dCQUNsQixpQkFBaUI7Z0JBQ1gsU0FBUzs7SUFqQ3RCO1FBQVIsS0FBSyxFQUFFOzBFQUFvQjtJQUNuQjtRQUFSLEtBQUssRUFBRTs4REFBZTtJQUNkO1FBQVIsS0FBSyxFQUFFO29FQUFrQjtJQUNqQjtRQUFSLEtBQUssRUFBRTsrREFBUztJQUNSO1FBQVIsS0FBSyxFQUFFO2lFQUFrQjtJQUNoQjtRQUFULE1BQU0sRUFBRTs2REFBNEI7SUFDM0I7UUFBVCxNQUFNLEVBQUU7aUVBQXNDO0lBUnRDLDBCQUEwQjtRQUx0QyxTQUFTLENBQUM7WUFDUCxRQUFRLEVBQUUseUJBQXlCO1lBQ25DLGlwUkFBbUQ7O1NBRXRELENBQUM7T0FDVywwQkFBMEIsQ0FtUnRDO0lBQUQsaUNBQUM7Q0FBQSxBQW5SRCxDQUFnRCxlQUFlLEdBbVI5RDtTQW5SWSwwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBDaGFuZ2VEZXRlY3RvclJlZiwgT25EZXN0cm95LCBSZW5kZXJlcjIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XHJcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IENvbXBvbmVudEhlbHBlciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29tcG9uZW50LWhlbHBlcic7XHJcbmltcG9ydCB7IENvbnN0YW50cyB9IGZyb20gJy4uLy4uLy4uL2NvcmUuY29uc3RzJztcclxuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi91dGlscy90b2FzdC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdhcHAtYmFuY2FyZC1jYXRhc3Ryby1lYycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFuY2FyZC1jYXRhc3Ryby1lYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9iYW5jYXJkLWNhdGFzdHJvLWVjLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEJhbmNhcmRDYXRhc3Ryb0VjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG5cclxuICAgIEBJbnB1dCgpIHBheW1lbnRTZXJ2aWNlSW5zdDtcclxuICAgIEBJbnB1dCgpIG1ldGhvZCA9IG51bGw7XHJcbiAgICBASW5wdXQoKSB0b3RhbF9hbW91bnQgPSAwO1xyXG4gICAgQElucHV0KCkgYWxsRGF0YTtcclxuICAgIEBJbnB1dCgpIHVzZXJfZGF0YSA9IG51bGw7XHJcbiAgICBAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgY2FyZEFkZGVkID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpOyAgLy8gTnVldm8gZXZlbnRvIHBhcmEgbm90aWZpY2FyIGxhIHRhcmpldGEgYWdyZWdhZGFcclxuXHJcbiAgICBwdWJsaWMgbG9hZGluZzogQm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGNoZWNraW5nUGF5bWVudDogQm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIHJlZ2lzdGVyZWRfY2FyZHM6IGFueVtdID0gW107XHJcbiAgICBwdWJsaWMgcHJvY2Vzc19pZDogc3RyaW5nO1xyXG4gICAgcHVibGljIHVybDogYW55O1xyXG4gICAgcHVibGljIGluZm9QcmV2aWV3OiBib29sZWFuID0gdHJ1ZTtcclxuICAgIHB1YmxpYyBjYXJkTmFtZXM6IHN0cmluZ1tdID0gWyd2aXNhJywgJ21hc3RlcmNhcmQnLCAnYmFuY2FyZCddO1xyXG4gICAgcHVibGljIGN1cnJlbnRDYXJkSUQ6IG51bWJlciA9IC0xO1xyXG4gICAgcHJpdmF0ZSBzZW5kVG9QYXk6IGFueSA9IHtcclxuICAgICAgICBhbGlhc190b2tlbjogJycsXHJcbiAgICAgICAgbnVtYmVyX29mX3BheW1lbnRzOiAwXHJcbiAgICB9O1xyXG5cclxuICAgIHByaXZhdGUgdXNlckNhcmRzUmVjb3ZlcnlBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvYmFuY2FyZC8nICsgdGhpcy5jYXJ0U2VydmljZS5jYXJ0X3Rva2VuICsgJy9jYXRhc3Ryby11c2VyLWNhcmRzLXJlY292ZXJ5JztcclxuICAgIHByaXZhdGUgbmV3VXNlckNhcmRBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvYmFuY2FyZC8nICsgdGhpcy5jYXJ0U2VydmljZS5jYXJ0X3Rva2VuICsgJy9jYXRhc3Ryby1uZXctdXNlci1jYXJkJztcclxuICAgIHByaXZhdGUgdG9QYXlBcGkgPSAoKSA9PiAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvYmFuY2FyZC8nICsgdGhpcy5jYXJ0U2VydmljZS5jYXJ0X3Rva2VuICsgJy9jYXRhc3Ryby10b2tlbi1wYXltZW50JztcclxuICAgIHByaXZhdGUgZGVsZXRlQ2FyZEFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9iYW5jYXJkLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmNhcnRfdG9rZW4gKyAnL2NhdGFzdHJvLWRlbGV0ZS1jYXJkJztcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcm90ZWN0ZWQgY29uc3RzOiBDb25zdGFudHMsXHJcbiAgICAgICAgcHJvdGVjdGVkIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlLFxyXG4gICAgICAgIHB1YmxpYyBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIHNhbml0aXplcjogRG9tU2FuaXRpemVyLFxyXG4gICAgICAgIHByb3RlY3RlZCB0b2FzdHI6IFRvYXN0U2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIgXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgICAgIHRoaXMubG9hZENhcmRzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgLy8gQcOxYWRlIHVuIGxpc3RlbmVyIHBhcmEgcmVjaWJpciBtZW5zYWplcyBkZXNkZSBlbCBpZnJhbWVcclxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5oYW5kbGVNZXNzYWdlLmJpbmQodGhpcykpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIC8vIEVsaW1pbmEgZWwgbGlzdGVuZXIgY3VhbmRvIGVsIGNvbXBvbmVudGUgc2UgZGVzdHJ1eWVcclxuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5oYW5kbGVNZXNzYWdlLmJpbmQodGhpcykpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIG9idGllbmUgbGFzIHRhcmpldGFzIGFsbWFjZW5hZGFzIHBhcmEgZWwgdXN1YXJpby5cclxuICAgICAqL1xyXG4gICAgbG9hZENhcmRzID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5jb25uZWN0aW9uLmdldCh0aGlzLnVzZXJDYXJkc1JlY292ZXJ5QXBpKCkpLnRvUHJvbWlzZSgpLnRoZW4oXHJcbiAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMgPSByZXMucmVnaXN0ZXJlZF9jYXJkcztcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdyZWdpc3RlcmVkIGNhcmRzICcsIHRoaXMucmVnaXN0ZXJlZF9jYXJkcyk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyID0+IHsgXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpOyBcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlOyBcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gb2J0ZW5nbyBlbCBwcm9jZXNzIElEXHJcbiAgICAgKi9cclxuICAgIGdldFByb2Nlc3NJZCA9ICgpID0+IHtcclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMubmV3VXNlckNhcmRBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcclxuICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc19pZCA9IHJlcy5wcm9jZXNzX2lkO1xyXG4gICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NhdGFzdHJvX2RhdGEnLCBKU09OLnN0cmluZ2lmeShyZXMpKTtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5mb1ByZXZpZXcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0sIDUwMDApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRJRnJhbWVOZXdDYXJkKCk7XHJcbiAgICAgICAgICAgIH0sIFxyXG4gICAgICAgICAgICBlcnIgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gT2J0ZW5nbyBlbCBJRnJhbWUgZG9uZGUgc2UgbW9zdHJhcmEgZWwgZm9ybXVsYXJpbyBwYXJhIHJlZ2lzdHJhciB1bmEgbnVldmEgdGFyamV0YVxyXG4gICAgICovXHJcbiAgICBnZXRJRnJhbWVOZXdDYXJkID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy51cmwgPSB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoJ2Fzc2V0cy9iYW5jYXJkQ2F0YXN0cm8uaHRtbCcpO1xyXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIE1hbmVqYSBsb3MgbWVuc2FqZXMgcmVjaWJpZG9zIGRlc2RlIGVsIGlmcmFtZVxyXG4gICAgICovXHJcbiAgICBoYW5kbGVNZXNzYWdlKGV2ZW50OiBNZXNzYWdlRXZlbnQpIHtcclxuICAgICAgICBpZiAoZXZlbnQuZGF0YT8uc3RhdHVzID09PSBcInN1Y2Nlc3NcIikge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRDYXJkcygpO1xyXG4gICAgICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgLy8gQWdyZWdhIHVuIHRpbWVvdXQgYW50ZXMgZGUgY2VycmFyIGVsIG1vZGFsXHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNhdGFzdHJvXCIpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChtb2RhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb3RzdHJhcE1vZGFsID0gKHdpbmRvdyBhcyBhbnkpLmJvb3RzdHJhcC5Nb2RhbC5nZXRJbnN0YW5jZShtb2RhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJvb3RzdHJhcE1vZGFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvb3RzdHJhcE1vZGFsLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKG1vZGFsLCAnZGlzcGxheScsICdub25lJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIFJlY2FyZ2EgbGFzIHRhcmpldGFzIHBhcmEgbW9zdHJhciBsYSBudWV2YSB0YXJqZXRhIGVuIGxhIHZpc3RhXHJcbiAgICAgICAgICAgICAgICAvLyBGb3J6YXIgbGEgZGV0ZWNjacOzbiBkZSBjYW1iaW9zIGVuIEFuZ3VsYXJcclxuICAgICAgICAgICAgfSwgMjAwMCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChldmVudC5kYXRhPy5zdGF0dXMgPT09IFwiZXJyb3JcIikge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1vZGFsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJjYXRhc3Ryb1wiKTtcclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYgKG1vZGFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vdHN0cmFwTW9kYWwgPSAod2luZG93IGFzIGFueSkuYm9vdHN0cmFwLk1vZGFsLmdldEluc3RhbmNlKG1vZGFsKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYm9vdHN0cmFwTW9kYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9vdHN0cmFwTW9kYWwuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUobW9kYWwsICdkaXNwbGF5JywgJ25vbmUnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdFUlJPUiEgJyArIGV2ZW50LmRhdGE/Lm1lc3NhZ2UpXHJcbiAgICAgICAgICAgICAgICAvLyBSZWNhcmdhIGxhcyB0YXJqZXRhcyBwYXJhIG1vc3RyYXIgbGEgbnVldmEgdGFyamV0YSBlbiBsYSB2aXN0YVxyXG4gICAgICAgICAgICAgICAgLy8gRm9yemFyIGxhIGRldGVjY2nDs24gZGUgY2FtYmlvcyBlbiBBbmd1bGFyXHJcbiAgICAgICAgICAgIH0sIDEwMDApO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgXHJcbiAgICBjbG9zZU1vZGFsKCl7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gcGFyYSBzYWx0ZWFyIGVsIG1lbnNhamUgcHJldmlvLiBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBza2lwSW5mb1ByZXZpZXcgPSAoKSA9PiB0aGlzLmluZm9QcmV2aWV3ID0gZmFsc2VcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBwYXJhIG9idGVuZXIgbGEgaW1hZ2VuIGRlIGxhIHRhcmpldGEgZGVzZGUgbG9zIGFzc2V0c1xyXG4gICAgICogQHBhcmFtIG5hbWUgbm9tYnJlIGRlIGxhIHRhcmpldGFcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBnZXRDYXJkSW1nID0gKG5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGxldCB1cmxJbWcgPSAnYXNzZXRzL2ltYWdlcy8nO1xyXG4gICAgICAgIHRoaXMuY2FyZE5hbWVzLmZvckVhY2goZWxlbSA9PiB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coZWxlbSwgbmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKGVsZW0pLCB1cmxJbWcrZWxlbSsnLnBuZycgKVxyXG4gICAgICAgICAgICBuYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoZWxlbSkgPyB1cmxJbWcgPSB1cmxJbWcgKyBlbGVtICsgJy5wbmcnIDogbnVsbFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLy9jb25zb2xlLmxvZyh1cmxJbWcpXHJcbiAgICAgICAgcmV0dXJuIHVybEltZ1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIHBhcmEgZ3VhcmRhciBlbCBuw7ptZXJvIGRlIHBhZ29zXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgXHJcbiAgICAgKi9cclxuICAgIHNldE51bWJlck9mUGF5bWVudHMgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vY29uc29sZS5sb2codmFsdWUpXHJcbiAgICAgICAgdGhpcy5zZW5kVG9QYXkubnVtYmVyX29mX3BheW1lbnRzID0gcGFyc2VJbnQodmFsdWUpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gR3VhcmRhIGVsIElEIGRlIGxhIHRhcmpldGEgc2VsZWNjaW9uYWRhIHBhcmEgcGFnYXIuXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgc2V0Q3VycmVudENhcmRJRCA9ICh2YWx1ZTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50Q2FyZElEID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBjaGVxdWVhIHNpIGVsIHZhbG9yIGRlbCBuw7ptZXJvIGRlIHBhZ29zIGVsIG1heW9yIGEgMFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGNhblBheSA9ICgpID0+IHRoaXMuc2VuZFRvUGF5Lm51bWJlcl9vZl9wYXltZW50cyA+IDBcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBmdW5jaW9uIHBhcmEgcGFnYXIuIFxyXG4gICAgICogQHBhcmFtIGlkIGVsIElEIGRlIGxhIHRhcmpldGEuXHJcbiAgICAgKi9cclxuICAgIHRvUGF5ID0gKGlkOiBhbnkpID0+IHtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKCdjdXJyZW50Jyx0aGlzLmN1cnJlbnRDYXJkSUQpXHJcbiAgICAgICAgdGhpcy5jaGVja2luZ1BheW1lbnQgPSB0cnVlO1xyXG4gICAgICAgIGxldCBjYXJkID0gdGhpcy5yZWdpc3RlcmVkX2NhcmRzLmZpbmQoY2FyZCA9PiBjYXJkLmNhcmRfaWQgPT0gaWQpXHJcbiAgICAgICAgaWYgKGNhcmQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZW5kVG9QYXkuYWxpYXNfdG9rZW4gPSBjYXJkLmFsaWFzX3Rva2VuXHJcbiAgICAgICAgICAgIGNhcmQuY2FyZF90eXBlICE9ICdjcmVkaXQnID8gdGhpcy5zZW5kVG9QYXkubnVtYmVyX29mX3BheW1lbnRzID0gMSA6IG51bGxcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VuZFRvUGF5Lm51bWJlcl9vZl9wYXltZW50cyA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMudG9QYXlBcGkoKSwgdGhpcy5zZW5kVG9QYXkpLnRvUHJvbWlzZSgpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzUmVzcG9uc2UocmVzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNraW5nUGF5bWVudCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9PiB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzRXJyb3IoZXJyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja2luZ1BheW1lbnQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnTm8gc2UgaGEgZWxlZ2lkbyBlbCBuw7ptZXJvIGRlIGN1b3RhcycpXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzZSBoYSBlbGVnaWRvIGVsIG7Dum1lcm8gZGUgY3VvdGFzJylcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tpbmdQYXltZW50ID0gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tpbmdQYXltZW50ID0gZmFsc2VcclxuICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnTm8gc2UgZW5jb250cm8gbGEgdGFyamV0YScpXHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHNlIGVuY29udHJvIGxhIHRhcmpldGEnKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBlbGltaW5hIHVuYSB0YXJqZXRhLlxyXG4gICAgICogQHBhcmFtIGlkIGlkIGRlIGxhIHRhcmpldGEgYSBlbGltaW5hci5cclxuICAgICAqL1xyXG4gICAgZGVsZXRlQ2FyZCA9IChpZDogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGNhcmQgPSB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMuZmluZChjYXJkID0+IGNhcmQuY2FyZF9pZCA9PSBpZCk7XHJcbiAgICAgICAgaWYgKGNhcmQpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLnBvc3QodGhpcy5kZWxldGVDYXJkQXBpKCksIHsgYWxpYXNfdG9rZW46IGNhcmQuYWxpYXNfdG9rZW4gfSkudG9Qcm9taXNlKCkudGhlbihcclxuICAgICAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnTGEgdGFyamV0YSBzZSBoYSBlbGltaW5hZG8gY29uIMOpeGl0bycpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEVsaW1pbmEgbGEgdGFyamV0YSBkZSBgcmVnaXN0ZXJlZF9jYXJkc2AgeSBhY3R1YWxpemEgbGEgdmlzdGFcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMgPSB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMuZmlsdGVyKGMgPT4gYy5jYXJkX2lkICE9PSBpZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7IC8vIEZvcnphciBsYSBkZXRlY2Npw7NuIGRlIGNhbWJpb3NcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2UgZWxpbWluw7MnLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApLmNhdGNoKFxyXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdTZSBwcm9kdWpvIHVuIGVycm9yIGFsIGVsaW1pbmFyIGxhIHRhcmpldGEuIFBvciBmYXZvciBpbnRlbnRlIG3DoXMgdGFyZGUuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGFsIGVsaW1pbmFyJywgZXJyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gUHJvY2VzYSBsYXMgcmVzcHVlc3RhIGRlIHVuIHBhZ28gXHJcbiAgICAgKiBAcGFyYW0gcmVzcG9uc2UgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJvY2Vzc1Jlc3BvbnNlID0gKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gJ3JlamVjdGVkJykge1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdTRSBQVURPIEVGRUNUVUFSIExBIENPTVBSQScpO1xyXG4gICAgICAgICAgICB0aGlzLnJlYWR5LmVtaXQoJ3RydWUnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcihyZXNwb25zZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gcHJvY2VzYSBlbCBlcnJvciB0cmFzIHVuIGludGVudG8gZGUgcGFnb1xyXG4gICAgICogQHBhcmFtIHJlc3BvbnNlIFxyXG4gICAgICovXHJcbiAgICBwcm9jZXNzRXJyb3IgPSAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFUlJPUjogJywgcmVzcG9uc2UpXHJcbiAgICAgICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcclxuICAgICAgICAgICAgY2FzZSA1MDA6IHRoaXMudG9hc3RyLnNob3coJ1NlIHByb2R1am8gdW4gZXJyb3IgaW50ZXJuby4gVnVlbHZhIGEgaW50ZW50YXJsbyBtw6FzIHRhcmRlLicpOyBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn1cclxuIl19
|
|
313
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFuY2FyZC1jYXRhc3Ryby1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvZWMtY29tcG9uZW50L3dpZGdldHMtZWMvYmFuY2FyZC1jYXRhc3Ryby1lYy9iYW5jYXJkLWNhdGFzdHJvLWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBTzVEO0lBQWdELDhDQUFlO0lBNEIzRCxvQ0FDYyxNQUFpQixFQUNqQixVQUE2QixFQUNoQyxXQUF3QixFQUN4QixTQUF1QixFQUNwQixNQUFvQixFQUN0QixFQUFxQixFQUNyQixRQUFtQjtRQVAvQixZQVNJLGlCQUFPLFNBRVY7UUFWYSxZQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2pCLGdCQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUNoQyxpQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixlQUFTLEdBQVQsU0FBUyxDQUFjO1FBQ3BCLFlBQU0sR0FBTixNQUFNLENBQWM7UUFDdEIsUUFBRSxHQUFGLEVBQUUsQ0FBbUI7UUFDckIsY0FB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bXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIENoYW5nZURldGVjdG9yUmVmLCBPbkRlc3Ryb3ksIFJlbmRlcmVyMiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgQ29ubmVjdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9hcGkvY29ubmVjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50SGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyJztcclxuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vLi4vY29yZS5jb25zdHMnO1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NhcnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3RvYXN0LnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1iYW5jYXJkLWNhdGFzdHJvLWVjJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYW5jYXJkLWNhdGFzdHJvLWVjLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2JhbmNhcmQtY2F0YXN0cm8tZWMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmFuY2FyZENhdGFzdHJvRWNDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRIZWxwZXIgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgQElucHV0KCkgcGF5bWVudFNlcnZpY2VJbnN0O1xyXG4gICAgQElucHV0KCkgbWV0aG9kID0gbnVsbDtcclxuICAgIEBJbnB1dCgpIHRvdGFsX2Ftb3VudCA9IDA7XHJcbiAgICBASW5wdXQoKSBhbGxEYXRhO1xyXG4gICAgQElucHV0KCkgdXNlcl9kYXRhID0gbnVsbDtcclxuICAgIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBjYXJkQWRkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7ICAvLyBOdWV2byBldmVudG8gcGFyYSBub3RpZmljYXIgbGEgdGFyamV0YSBhZ3JlZ2FkYVxyXG5cclxuICAgIHB1YmxpYyBsb2FkaW5nOiBCb29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgY2hlY2tpbmdQYXltZW50OiBCb29sZWFuID0gZmFsc2U7XHJcbiAgICBwdWJsaWMgcmVnaXN0ZXJlZF9jYXJkczogYW55W10gPSBbXTtcclxuICAgIHB1YmxpYyBwcm9jZXNzX2lkOiBzdHJpbmc7XHJcbiAgICBwdWJsaWMgdXJsOiBhbnk7XHJcbiAgICBwdWJsaWMgaW5mb1ByZXZpZXc6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgcHVibGljIGNhcmROYW1lczogc3RyaW5nW10gPSBbJ3Zpc2EnLCAnbWFzdGVyY2FyZCcsICdiYW5jYXJkJ107XHJcbiAgICBwdWJsaWMgY3VycmVudENhcmRJRDogbnVtYmVyID0gLTE7XHJcbiAgICBwcml2YXRlIHNlbmRUb1BheTogYW55ID0ge1xyXG4gICAgICAgIGFsaWFzX3Rva2VuOiAnJyxcclxuICAgICAgICBudW1iZXJfb2ZfcGF5bWVudHM6IDBcclxuICAgIH07XHJcblxyXG4gICAgcHJpdmF0ZSB1c2VyQ2FyZHNSZWNvdmVyeUFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9iYW5jYXJkLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmNhcnRfdG9rZW4gKyAnL2NhdGFzdHJvLXVzZXItY2FyZHMtcmVjb3ZlcnknO1xyXG4gICAgcHJpdmF0ZSBuZXdVc2VyQ2FyZEFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9iYW5jYXJkLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmNhcnRfdG9rZW4gKyAnL2NhdGFzdHJvLW5ldy11c2VyLWNhcmQnO1xyXG4gICAgcHJpdmF0ZSB0b1BheUFwaSA9ICgpID0+ICdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9iYW5jYXJkLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmNhcnRfdG9rZW4gKyAnL2NhdGFzdHJvLXRva2VuLXBheW1lbnQnO1xyXG4gICAgcHJpdmF0ZSBkZWxldGVDYXJkQXBpID0gKCkgPT4gJ3Nob3AtYXBpLycgKyB0aGlzLmNvbnN0cy5nZXRDaGFubmVsKCkgKyAnL2JhbmNhcmQvJyArIHRoaXMuY2FydFNlcnZpY2UuY2FydF90b2tlbiArICcvY2F0YXN0cm8tZGVsZXRlLWNhcmQnO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByb3RlY3RlZCBjb25zdHM6IENvbnN0YW50cyxcclxuICAgICAgICBwcm90ZWN0ZWQgY29ubmVjdGlvbjogQ29ubmVjdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcclxuICAgICAgICBwdWJsaWMgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIsXHJcbiAgICAgICAgcHJvdGVjdGVkIHRvYXN0cjogVG9hc3RTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMiBcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5sb2FkQ2FyZHMoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICAvLyBBw7FhZGUgdW4gbGlzdGVuZXIgcGFyYSByZWNpYmlyIG1lbnNhamVzIGRlc2RlIGVsIGlmcmFtZVxyXG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmhhbmRsZU1lc3NhZ2UuYmluZCh0aGlzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICAgICAgLy8gRWxpbWluYSBlbCBsaXN0ZW5lciBjdWFuZG8gZWwgY29tcG9uZW50ZSBzZSBkZXN0cnV5ZVxyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmhhbmRsZU1lc3NhZ2UuYmluZCh0aGlzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gb2J0aWVuZSBsYXMgdGFyamV0YXMgYWxtYWNlbmFkYXMgcGFyYSBlbCB1c3VhcmlvLlxyXG4gICAgICovXHJcbiAgICBsb2FkQ2FyZHMgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24uZ2V0KHRoaXMudXNlckNhcmRzUmVjb3ZlcnlBcGkoKSkudG9Qcm9taXNlKCkudGhlbihcclxuICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJlZF9jYXJkcyA9IHJlcy5yZWdpc3RlcmVkX2NhcmRzO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3JlZ2lzdGVyZWQgY2FyZHMgJywgdGhpcy5yZWdpc3RlcmVkX2NhcmRzKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnIgPT4geyBcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7IFxyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7IFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBvYnRlbmdvIGVsIHByb2Nlc3MgSURcclxuICAgICAqL1xyXG4gICAgZ2V0UHJvY2Vzc0lkID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5nZXQodGhpcy5uZXdVc2VyQ2FyZEFwaSgpKS50b1Byb21pc2UoKS50aGVuKFxyXG4gICAgICAgICAgICByZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzX2lkID0gcmVzLnByb2Nlc3NfaWQ7XHJcbiAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnY2F0YXN0cm9fZGF0YScsIEpTT04uc3RyaW5naWZ5KHJlcykpO1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmZvUHJldmlldyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSwgNTAwMCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldElGcmFtZU5ld0NhcmQoKTtcclxuICAgICAgICAgICAgfSwgXHJcbiAgICAgICAgICAgIGVyciA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBPYnRlbmdvIGVsIElGcmFtZSBkb25kZSBzZSBtb3N0cmFyYSBlbCBmb3JtdWxhcmlvIHBhcmEgcmVnaXN0cmFyIHVuYSBudWV2YSB0YXJqZXRhXHJcbiAgICAgKi9cclxuICAgIGdldElGcmFtZU5ld0NhcmQgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCgnYXNzZXRzL2JhbmNhcmRDYXRhc3Ryby5odG1sJyk7XHJcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gTWFuZWphIGxvcyBtZW5zYWplcyByZWNpYmlkb3MgZGVzZGUgZWwgaWZyYW1lXHJcbiAgICAgKi9cclxuICAgIGhhbmRsZU1lc3NhZ2UoZXZlbnQ6IE1lc3NhZ2VFdmVudCkge1xyXG4gICAgICAgIGlmIChldmVudC5kYXRhPy5zdGF0dXMgPT09IFwic3VjY2Vzc1wiKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZENhcmRzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgICAgICAvLyBBZ3JlZ2EgdW4gdGltZW91dCBhbnRlcyBkZSBjZXJyYXIgZWwgbW9kYWxcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtb2RhbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiY2F0YXN0cm9cIik7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKG1vZGFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vdHN0cmFwTW9kYWwgPSAod2luZG93IGFzIGFueSkuYm9vdHN0cmFwLk1vZGFsLmdldEluc3RhbmNlKG1vZGFsKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAoYm9vdHN0cmFwTW9kYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9vdHN0cmFwTW9kYWwuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUobW9kYWwsICdkaXNwbGF5JywgJ25vbmUnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8gUmVjYXJnYSBsYXMgdGFyamV0YXMgcGFyYSBtb3N0cmFyIGxhIG51ZXZhIHRhcmpldGEgZW4gbGEgdmlzdGFcclxuICAgICAgICAgICAgICAgIC8vIEZvcnphciBsYSBkZXRlY2Npw7NuIGRlIGNhbWJpb3MgZW4gQW5ndWxhclxyXG4gICAgICAgICAgICB9LCAyMDAwKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGE/LnN0YXR1cyA9PT0gXCJlcnJvclwiKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbW9kYWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImNhdGFzdHJvXCIpO1xyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICBpZiAobW9kYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBib290c3RyYXBNb2RhbCA9ICh3aW5kb3cgYXMgYW55KS5ib290c3RyYXAuTW9kYWwuZ2V0SW5zdGFuY2UobW9kYWwpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChib290c3RyYXBNb2RhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBib290c3RyYXBNb2RhbC5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZShtb2RhbCwgJ2Rpc3BsYXknLCAnbm9uZScpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMudG9hc3RyLnNob3coJ0VSUk9SISAnICsgZXZlbnQuZGF0YT8ubWVzc2FnZSlcclxuICAgICAgICAgICAgICAgIC8vIFJlY2FyZ2EgbGFzIHRhcmpldGFzIHBhcmEgbW9zdHJhciBsYSBudWV2YSB0YXJqZXRhIGVuIGxhIHZpc3RhXHJcbiAgICAgICAgICAgICAgICAvLyBGb3J6YXIgbGEgZGV0ZWNjacOzbiBkZSBjYW1iaW9zIGVuIEFuZ3VsYXJcclxuICAgICAgICAgICAgfSwgMTAwMCk7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvcGVuTW9kYWwoKXtcclxuICAgICAgICB0aGlzLmluZm9QcmV2aWV3PXRydWU7XHJcbiAgICB9XHJcbiAgICBjbG9zZU1vZGFsKCl7XHJcbiAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gcGFyYSBzYWx0ZWFyIGVsIG1lbnNhamUgcHJldmlvLiBcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBza2lwSW5mb1ByZXZpZXcgPSAoKSA9PiB0aGlzLmluZm9QcmV2aWV3ID0gZmFsc2VcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBwYXJhIG9idGVuZXIgbGEgaW1hZ2VuIGRlIGxhIHRhcmpldGEgZGVzZGUgbG9zIGFzc2V0c1xyXG4gICAgICogQHBhcmFtIG5hbWUgbm9tYnJlIGRlIGxhIHRhcmpldGFcclxuICAgICAqIEByZXR1cm5zIFxyXG4gICAgICovXHJcbiAgICBnZXRDYXJkSW1nID0gKG5hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIGxldCB1cmxJbWcgPSAnYXNzZXRzL2ltYWdlcy8nO1xyXG4gICAgICAgIHRoaXMuY2FyZE5hbWVzLmZvckVhY2goZWxlbSA9PiB7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coZWxlbSwgbmFtZS50b0xvY2FsZUxvd2VyQ2FzZSgpLmluY2x1ZGVzKGVsZW0pLCB1cmxJbWcrZWxlbSsnLnBuZycgKVxyXG4gICAgICAgICAgICBuYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkuaW5jbHVkZXMoZWxlbSkgPyB1cmxJbWcgPSB1cmxJbWcgKyBlbGVtICsgJy5wbmcnIDogbnVsbFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLy9jb25zb2xlLmxvZyh1cmxJbWcpXHJcbiAgICAgICAgcmV0dXJuIHVybEltZ1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQGRlc2NyaXB0aW9uIHBhcmEgZ3VhcmRhciBlbCBuw7ptZXJvIGRlIHBhZ29zXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgXHJcbiAgICAgKi9cclxuICAgIHNldE51bWJlck9mUGF5bWVudHMgPSAodmFsdWU6IGFueSkgPT4ge1xyXG4gICAgICAgIC8vY29uc29sZS5sb2codmFsdWUpXHJcbiAgICAgICAgdGhpcy5zZW5kVG9QYXkubnVtYmVyX29mX3BheW1lbnRzID0gcGFyc2VJbnQodmFsdWUpXHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gR3VhcmRhIGVsIElEIGRlIGxhIHRhcmpldGEgc2VsZWNjaW9uYWRhIHBhcmEgcGFnYXIuXHJcbiAgICAgKiBAcGFyYW0gdmFsdWUgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgc2V0Q3VycmVudENhcmRJRCA9ICh2YWx1ZTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50Q2FyZElEID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuIHRydWVcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBjaGVxdWVhIHNpIGVsIHZhbG9yIGRlbCBuw7ptZXJvIGRlIHBhZ29zIGVsIG1heW9yIGEgMFxyXG4gICAgICogQHJldHVybnMgXHJcbiAgICAgKi9cclxuICAgIGNhblBheSA9ICgpID0+IHRoaXMuc2VuZFRvUGF5Lm51bWJlcl9vZl9wYXltZW50cyA+IDBcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBmdW5jaW9uIHBhcmEgcGFnYXIuIFxyXG4gICAgICogQHBhcmFtIGlkIGVsIElEIGRlIGxhIHRhcmpldGEuXHJcbiAgICAgKi9cclxuICAgIHRvUGF5ID0gKGlkOiBhbnkpID0+IHtcclxuICAgICAgICAvL2NvbnNvbGUubG9nKCdjdXJyZW50Jyx0aGlzLmN1cnJlbnRDYXJkSUQpXHJcbiAgICAgICAgdGhpcy5jaGVja2luZ1BheW1lbnQgPSB0cnVlO1xyXG4gICAgICAgIGxldCBjYXJkID0gdGhpcy5yZWdpc3RlcmVkX2NhcmRzLmZpbmQoY2FyZCA9PiBjYXJkLmNhcmRfaWQgPT0gaWQpXHJcbiAgICAgICAgaWYgKGNhcmQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZW5kVG9QYXkuYWxpYXNfdG9rZW4gPSBjYXJkLmFsaWFzX3Rva2VuXHJcbiAgICAgICAgICAgIGNhcmQuY2FyZF90eXBlICE9ICdjcmVkaXQnID8gdGhpcy5zZW5kVG9QYXkubnVtYmVyX29mX3BheW1lbnRzID0gMSA6IG51bGxcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VuZFRvUGF5Lm51bWJlcl9vZl9wYXltZW50cyA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdGlvbi5wb3N0KHRoaXMudG9QYXlBcGkoKSwgdGhpcy5zZW5kVG9QYXkpLnRvUHJvbWlzZSgpLnRoZW4oXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzUmVzcG9uc2UocmVzKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNraW5nUGF5bWVudCA9IGZhbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgfSkuY2F0Y2goXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9PiB7IFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzRXJyb3IoZXJyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jaGVja2luZ1BheW1lbnQgPSBmYWxzZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnTm8gc2UgaGEgZWxlZ2lkbyBlbCBuw7ptZXJvIGRlIGN1b3RhcycpXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzZSBoYSBlbGVnaWRvIGVsIG7Dum1lcm8gZGUgY3VvdGFzJylcclxuICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tpbmdQYXltZW50ID0gZmFsc2VcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2hlY2tpbmdQYXltZW50ID0gZmFsc2VcclxuICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnTm8gc2UgZW5jb250cm8gbGEgdGFyamV0YScpXHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHNlIGVuY29udHJvIGxhIHRhcmpldGEnKVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBkZXNjcmlwdGlvbiBlbGltaW5hIHVuYSB0YXJqZXRhLlxyXG4gICAgICogQHBhcmFtIGlkIGlkIGRlIGxhIHRhcmpldGEgYSBlbGltaW5hci5cclxuICAgICAqL1xyXG4gICAgZGVsZXRlQ2FyZCA9IChpZDogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGNhcmQgPSB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMuZmluZChjYXJkID0+IGNhcmQuY2FyZF9pZCA9PSBpZCk7XHJcbiAgICAgICAgaWYgKGNhcmQpIHtcclxuICAgICAgICAgICAgdGhpcy5jb25uZWN0aW9uLnBvc3QodGhpcy5kZWxldGVDYXJkQXBpKCksIHsgYWxpYXNfdG9rZW46IGNhcmQuYWxpYXNfdG9rZW4gfSkudG9Qcm9taXNlKCkudGhlbihcclxuICAgICAgICAgICAgICAgIHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2FzdHIuc2hvdygnTGEgdGFyamV0YSBzZSBoYSBlbGltaW5hZG8gY29uIMOpeGl0bycpO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEVsaW1pbmEgbGEgdGFyamV0YSBkZSBgcmVnaXN0ZXJlZF9jYXJkc2AgeSBhY3R1YWxpemEgbGEgdmlzdGFcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMgPSB0aGlzLnJlZ2lzdGVyZWRfY2FyZHMuZmlsdGVyKGMgPT4gYy5jYXJkX2lkICE9PSBpZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7IC8vIEZvcnphciBsYSBkZXRlY2Npw7NuIGRlIGNhbWJpb3NcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnU2UgZWxpbWluw7MnLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApLmNhdGNoKFxyXG4gICAgICAgICAgICAgICAgZXJyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvYXN0ci5zaG93KCdTZSBwcm9kdWpvIHVuIGVycm9yIGFsIGVsaW1pbmFyIGxhIHRhcmpldGEuIFBvciBmYXZvciBpbnRlbnRlIG3DoXMgdGFyZGUuJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGFsIGVsaW1pbmFyJywgZXJyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gUHJvY2VzYSBsYXMgcmVzcHVlc3RhIGRlIHVuIHBhZ28gXHJcbiAgICAgKiBAcGFyYW0gcmVzcG9uc2UgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHJvY2Vzc1Jlc3BvbnNlID0gKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyAhPT0gJ3JlamVjdGVkJykge1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdTRSBQVURPIEVGRUNUVUFSIExBIENPTVBSQScpO1xyXG4gICAgICAgICAgICB0aGlzLnJlYWR5LmVtaXQoJ3RydWUnKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcihyZXNwb25zZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gcHJvY2VzYSBlbCBlcnJvciB0cmFzIHVuIGludGVudG8gZGUgcGFnb1xyXG4gICAgICogQHBhcmFtIHJlc3BvbnNlIFxyXG4gICAgICovXHJcbiAgICBwcm9jZXNzRXJyb3IgPSAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdFUlJPUjogJywgcmVzcG9uc2UpXHJcbiAgICAgICAgc3dpdGNoIChyZXNwb25zZS5zdGF0dXMpIHtcclxuICAgICAgICAgICAgY2FzZSA1MDA6IHRoaXMudG9hc3RyLnNob3coJ1NlIHByb2R1am8gdW4gZXJyb3IgaW50ZXJuby4gVnVlbHZhIGEgaW50ZW50YXJsbyBtw6FzIHRhcmRlLicpOyBicmVhaztcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbn1cclxuIl19
|
|
@@ -6110,6 +6110,8 @@ let CartEcComponent = class CartEcComponent extends ComponentHelper {
|
|
|
6110
6110
|
this.promotions = [];
|
|
6111
6111
|
this.cargando = false;
|
|
6112
6112
|
this.channel = {};
|
|
6113
|
+
this.updateStock = false;
|
|
6114
|
+
this.exitUpdate = false;
|
|
6113
6115
|
this.toDecimal = (amount) => this.consts.toDecimal(amount);
|
|
6114
6116
|
this.actualizarCantidad = (item, cantidad, stock, id) => {
|
|
6115
6117
|
if (id) {
|
|
@@ -6356,7 +6358,55 @@ let CartEcComponent = class CartEcComponent extends ComponentHelper {
|
|
|
6356
6358
|
$('#' + id).modal('hide');
|
|
6357
6359
|
}
|
|
6358
6360
|
checkStock(item) {
|
|
6359
|
-
|
|
6361
|
+
for (const variant of item.product.variants) {
|
|
6362
|
+
if (item.variant_id === variant.code) {
|
|
6363
|
+
if (variant.stock === 0) {
|
|
6364
|
+
this.updateStock = true;
|
|
6365
|
+
return '0';
|
|
6366
|
+
}
|
|
6367
|
+
else if (item.quantity > variant.stock) {
|
|
6368
|
+
this.updateStock = true;
|
|
6369
|
+
return variant.stock;
|
|
6370
|
+
}
|
|
6371
|
+
}
|
|
6372
|
+
}
|
|
6373
|
+
return false; // Solo se ejecuta si no se cumple la condición
|
|
6374
|
+
}
|
|
6375
|
+
updateAllStock() {
|
|
6376
|
+
const items = [];
|
|
6377
|
+
// Define la suscripción antes de usarla
|
|
6378
|
+
this.cartService.cartItems.subscribe(res => {
|
|
6379
|
+
res.forEach(item => {
|
|
6380
|
+
for (const variant of item.product.variants) {
|
|
6381
|
+
if (item.variant_id === variant.code && !this.exitUpdate) {
|
|
6382
|
+
if (variant.stock === 0) {
|
|
6383
|
+
this.cartService.deleteCartItem(item, false); // Borra el artículo
|
|
6384
|
+
}
|
|
6385
|
+
else if (item.quantity > variant.stock) {
|
|
6386
|
+
items.push({
|
|
6387
|
+
productCode: item.product.id,
|
|
6388
|
+
quantity: variant.stock,
|
|
6389
|
+
variantCode: variant.code,
|
|
6390
|
+
});
|
|
6391
|
+
}
|
|
6392
|
+
else {
|
|
6393
|
+
items.push({
|
|
6394
|
+
productCode: item.product.id,
|
|
6395
|
+
quantity: item.quantity,
|
|
6396
|
+
variantCode: variant.code,
|
|
6397
|
+
});
|
|
6398
|
+
}
|
|
6399
|
+
}
|
|
6400
|
+
}
|
|
6401
|
+
});
|
|
6402
|
+
if (items.length > 0 && !this.exitUpdate) {
|
|
6403
|
+
// subscription.unsubscribe(); // Desuscríbete antes de actualizar
|
|
6404
|
+
this.cartService.addAllToCart(items); // Actualiza el carrito
|
|
6405
|
+
this.updateStock = false;
|
|
6406
|
+
this.exitUpdate = true;
|
|
6407
|
+
// this.updateAllStock(); // Vuelve a verificar el stock
|
|
6408
|
+
}
|
|
6409
|
+
});
|
|
6360
6410
|
}
|
|
6361
6411
|
createDiscountMessage(saleprice, price) {
|
|
6362
6412
|
if (isNaN(saleprice) || isNaN(price) || saleprice >= price || saleprice <= 0 || price <= 0) {
|
|
@@ -10711,13 +10761,14 @@ var __decorate$1m = (this && this.__decorate) || function (decorators, target, k
|
|
|
10711
10761
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
10712
10762
|
};
|
|
10713
10763
|
let RegisterFormEcComponent = class RegisterFormEcComponent extends ComponentHelper {
|
|
10714
|
-
constructor(authService, toastr, router, analyticsService, formBuilder) {
|
|
10764
|
+
constructor(authService, toastr, router, analyticsService, formBuilder, channelConfigService) {
|
|
10715
10765
|
super();
|
|
10716
10766
|
this.authService = authService;
|
|
10717
10767
|
this.toastr = toastr;
|
|
10718
10768
|
this.router = router;
|
|
10719
10769
|
this.analyticsService = analyticsService;
|
|
10720
10770
|
this.formBuilder = formBuilder;
|
|
10771
|
+
this.channelConfigService = channelConfigService;
|
|
10721
10772
|
this.isLogged = true;
|
|
10722
10773
|
this.darkMode = false;
|
|
10723
10774
|
this.redirect = true;
|
|
@@ -10734,6 +10785,8 @@ let RegisterFormEcComponent = class RegisterFormEcComponent extends ComponentHel
|
|
|
10734
10785
|
newsletter: false,
|
|
10735
10786
|
terms: false,
|
|
10736
10787
|
};
|
|
10788
|
+
this.isAccountVerificationRequired = false;
|
|
10789
|
+
this.isSendWelcomeEmail = false;
|
|
10737
10790
|
this.setProp = (prop, event) => {
|
|
10738
10791
|
this.registroUsuario[prop] = event.target.value;
|
|
10739
10792
|
};
|
|
@@ -10758,7 +10811,18 @@ let RegisterFormEcComponent = class RegisterFormEcComponent extends ComponentHel
|
|
|
10758
10811
|
if (this.registerForm.valid) {
|
|
10759
10812
|
this.authService.signUp(this.registerForm.value).toPromise().then(res => {
|
|
10760
10813
|
this.register_loading = false;
|
|
10761
|
-
|
|
10814
|
+
let messageKey;
|
|
10815
|
+
switch (true) {
|
|
10816
|
+
case this.isAccountVerificationRequired:
|
|
10817
|
+
messageKey = 'register-ok';
|
|
10818
|
+
break;
|
|
10819
|
+
case this.isSendWelcomeEmail:
|
|
10820
|
+
messageKey = 'register-welcome';
|
|
10821
|
+
break;
|
|
10822
|
+
default:
|
|
10823
|
+
messageKey = 'register-success';
|
|
10824
|
+
}
|
|
10825
|
+
this.toastr.show(messageKey);
|
|
10762
10826
|
this.analyticsService.callEvent('sign_up', {
|
|
10763
10827
|
firstName: this.registerForm.value.firstName,
|
|
10764
10828
|
lastName: this.registerForm.value.lastName,
|
|
@@ -10796,6 +10860,20 @@ let RegisterFormEcComponent = class RegisterFormEcComponent extends ComponentHel
|
|
|
10796
10860
|
newsletter: [false],
|
|
10797
10861
|
terms: ['', Validators.required],
|
|
10798
10862
|
});
|
|
10863
|
+
this.channelConfigService.channelConfig$.subscribe((config) => {
|
|
10864
|
+
if (config && config.isAccountVerificationRequired !== undefined) {
|
|
10865
|
+
this.isAccountVerificationRequired = config.isAccountVerificationRequired;
|
|
10866
|
+
}
|
|
10867
|
+
else {
|
|
10868
|
+
this.isAccountVerificationRequired = false;
|
|
10869
|
+
}
|
|
10870
|
+
if (config && config.isSendWelcomeEmail !== undefined) {
|
|
10871
|
+
this.isSendWelcomeEmail = config.isSendWelcomeEmail;
|
|
10872
|
+
}
|
|
10873
|
+
else {
|
|
10874
|
+
this.isSendWelcomeEmail = false;
|
|
10875
|
+
}
|
|
10876
|
+
});
|
|
10799
10877
|
this.ecOnInit();
|
|
10800
10878
|
}
|
|
10801
10879
|
};
|
|
@@ -10804,7 +10882,8 @@ RegisterFormEcComponent.ctorParameters = () => [
|
|
|
10804
10882
|
{ type: ToastService },
|
|
10805
10883
|
{ type: Router },
|
|
10806
10884
|
{ type: AnalyticsService },
|
|
10807
|
-
{ type: FormBuilder }
|
|
10885
|
+
{ type: FormBuilder },
|
|
10886
|
+
{ type: ChannelConfigService }
|
|
10808
10887
|
];
|
|
10809
10888
|
__decorate$1m([
|
|
10810
10889
|
Input()
|
|
@@ -14573,6 +14652,9 @@ let BancardCatastroEcComponent = class BancardCatastroEcComponent extends Compon
|
|
|
14573
14652
|
}, 1000);
|
|
14574
14653
|
}
|
|
14575
14654
|
}
|
|
14655
|
+
openModal() {
|
|
14656
|
+
this.infoPreview = true;
|
|
14657
|
+
}
|
|
14576
14658
|
closeModal() {
|
|
14577
14659
|
}
|
|
14578
14660
|
};
|
|
@@ -14609,7 +14691,7 @@ __decorate$1S([
|
|
|
14609
14691
|
BancardCatastroEcComponent = __decorate$1S([
|
|
14610
14692
|
Component({
|
|
14611
14693
|
selector: 'app-bancard-catastro-ec',
|
|
14612
|
-
template: "<div *ngIf=\"!loading; else loadingView\">\r\n <div class=\"row my-3\">\r\n <ng-container *ngIf=\"registered_cards && registered_cards.length > 0; else notCards\">\r\n <ng-container *ngFor=\"let card of registered_cards; let x=index\">\r\n <div class=\"col-12 col-md-6\">\r\n <div class=\"card my-2\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-md-9\">\r\n <h5 class=\"card-title\">Terminada en {{card.card_masked_number.slice(-4)}}</h5>\r\n <!-- <h6 class=\"card-subtitle mb-2 text-muted\">Card subtitle</h6> -->\r\n <!-- <p class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.</p>\r\n -->\r\n <p class=\"card-text text-muted\">{{card.card_brand}}</p>\r\n <p class=\"card-text text-muted\">Vencimiento: {{card.expiration_date}}</p>\r\n </div>\r\n <div class=\"col-3 d-none d-md-flex\">\r\n <div class=\"d-flex flex-column justify-content-between align-items-center w-100\">\r\n <div class=\"d-flex justify-content-end w-100\">\r\n <a class=\"cursor-pointer text-primary\" (click)=\"deleteCard(card.card_id)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-trash3\"\r\n viewBox=\"0 0 16 16\">\r\n <path\r\n d=\"M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5ZM11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H2.506a.58.58 0 0 0-.01 0H1.5a.5.5 0 0 0 0 1h.538l.853 10.66A2 2 0 0 0 4.885 16h6.23a2 2 0 0 0 1.994-1.84l.853-10.66h.538a.5.5 0 0 0 0-1h-.995a.59.59 0 0 0-.01 0H11Zm1.958 1-.846 10.58a1 1 0 0 1-.997.92h-6.23a1 1 0 0 1-.997-.92L3.042 3.5h9.916Zm-7.487 1a.5.5 0 0 1 .528.47l.5 8.5a.5.5 0 0 1-.998.06L5 5.03a.5.5 0 0 1 .47-.53Zm5.058 0a.5.5 0 0 1 .47.53l-.5 8.5a.5.5 0 1 1-.998-.06l.5-8.5a.5.5 0 0 1 .528-.47ZM8 4.5a.5.5 0 0 1 .5.5v8.5a.5.5 0 0 1-1 0V5a.5.5 0 0 1 .5-.5Z\" />\r\n </svg>\r\n </a>\r\n </div>\r\n <img [src]=\"getCardImg(card.card_brand)\" class=\"img-card\" />\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer d-flex flex-row justify-content-end\">\r\n <ng-container *ngIf=\"!checkingPayment; else buttonLoading\">\r\n <button *ngIf=\"card.card_type == 'credit'; else debito\" class=\"btn comprar text-white\" data-bs-toggle=\"modal\"\r\n data-bs-target=\"#modalCuotas\" (click)=\"setCurrentCardID(card.card_id)\">Pagar</button>\r\n <ng-template #debito>\r\n <button class=\"btn comprar text-white\" (click)=\"toPay(card.card_id)\">Pagar</button>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #notCards>\r\n <div class=\"col-12 d-flex justify-content-center\">\r\n <h6>Usted no posee tarjetas registrada. Para continuar con este m\u00E9todo de pago por favor registre una\r\n tarjeta presionando el bot\u00F3n de <span class=\"text-decoration-underline fs-6\"> Nueva tarjeta</span>\r\n </h6>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <button class=\"btn comprar text-white\" data-bs-toggle=\"modal\" data-bs-target=\"#catastro\"\r\n (click)=\"getProcessId()\">Nueva Tarjeta</button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal\" tabindex=\"-1\" id=\"catastro\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <!-- <h5 class=\"modal-title\">Modal title</h5> -->\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"\r\n (click)=\"closeModal()\"></button>\r\n </div>\r\n <div class=\"modal-body d-flex flex-column justify-content-center align-items-center\">\r\n <ng-container *ngIf=\"infoPreview; else iframe\">\r\n <div class=\"alert alert-warning \" role=\"alert\">\r\n <p class=\"mb-0\">Estimado usuario,</p>\r\n <p> A continuaci\u00F3n usted pasar\u00E1 por \u00FAnica vez por un proceso de\r\n validaci\u00F3n con preguntas de seguridad. Para iniciar favor tener en\r\n cuenta las siguientes recomendaciones:</p>\r\n <ol class=\"list-group list-group-numbered\">\r\n <li class=\"list-group-item list-group-item-warning\">Verifique su n\u00FAmero de c\u00E9dula de\r\n identidad</li>\r\n <li class=\"list-group-item list-group-item-warning\">Tenga a mano sus tarjetas de cr\u00E9dito y\r\n d\u00E9bito activas</li>\r\n <li class=\"list-group-item list-group-item-warning\">Verifique el monto y lugar de sus\r\n \u00FAltimas compras en\r\n comercios o extracciones en cajeros</li>\r\n </ol>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <a class=\"cursor-pointer text-dark fs-xs\" (click)=\"skipInfoPreview()\">Saltar</a>\r\n </div>\r\n </ng-container>\r\n <ng-template #iframe>\r\n <iframe *ngIf=\"url; else loadingView\" [src]=\"url\" frameborder=\"0\" class=\"iframeStyle\"></iframe>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- Modal -->\r\n<div class=\"modal fade\" id=\"modalCuotas\" tabindex=\"-1\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-sm\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\">Elija el n\u00FAmero de cuotas</h5>\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <select class=\"form-select\" aria-label=\"Default select example\"\r\n (change)=\"setNumberOfPayments($event.target.value)\">\r\n <option selected disabled>Selecciones la cantidad de cuotas</option>\r\n <option value=\"1\">1 cuota</option>\r\n <option value=\"3\">3 cuotas</option>\r\n <option value=\"6\">6 cuotas</option>\r\n <option value=\"12\">12 cuotas</option>\r\n </select>\r\n </div>\r\n <div class=\"modal-footer\" *ngIf=\"canPay()\">\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"\r\n (click)=\"toPay(currentCardID)\">Pagar</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #loadingView>\r\n <div>\r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #buttonLoading>\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"> \r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </button>\r\n</ng-template>",
|
|
14694
|
+
template: "<div *ngIf=\"!loading; else loadingView\">\r\n <div class=\"row my-3\">\r\n <ng-container *ngIf=\"registered_cards && registered_cards.length > 0; else notCards\">\r\n <ng-container *ngFor=\"let card of registered_cards; let x=index\">\r\n <div class=\"col-12 col-md-6\">\r\n <div class=\"card my-2\">\r\n <div class=\"card-body\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-md-9\">\r\n <h5 class=\"card-title\">Terminada en {{card.card_masked_number.slice(-4)}}</h5>\r\n <!-- <h6 class=\"card-subtitle mb-2 text-muted\">Card subtitle</h6> -->\r\n <!-- <p class=\"card-text\">Some quick example text to build on the card title and make up the bulk of the card's content.</p>\r\n -->\r\n <p class=\"card-text text-muted\">{{card.card_brand}}</p>\r\n <p class=\"card-text text-muted\">Vencimiento: {{card.expiration_date}}</p>\r\n </div>\r\n <div class=\"col-3 d-none d-md-flex\">\r\n <div class=\"d-flex flex-column justify-content-between align-items-center w-100\">\r\n <div class=\"d-flex justify-content-end w-100\">\r\n <a class=\"cursor-pointer text-primary\" (click)=\"deleteCard(card.card_id)\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" fill=\"currentColor\" class=\"bi bi-trash3\"\r\n viewBox=\"0 0 16 16\">\r\n <path\r\n d=\"M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5ZM11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H2.506a.58.58 0 0 0-.01 0H1.5a.5.5 0 0 0 0 1h.538l.853 10.66A2 2 0 0 0 4.885 16h6.23a2 2 0 0 0 1.994-1.84l.853-10.66h.538a.5.5 0 0 0 0-1h-.995a.59.59 0 0 0-.01 0H11Zm1.958 1-.846 10.58a1 1 0 0 1-.997.92h-6.23a1 1 0 0 1-.997-.92L3.042 3.5h9.916Zm-7.487 1a.5.5 0 0 1 .528.47l.5 8.5a.5.5 0 0 1-.998.06L5 5.03a.5.5 0 0 1 .47-.53Zm5.058 0a.5.5 0 0 1 .47.53l-.5 8.5a.5.5 0 1 1-.998-.06l.5-8.5a.5.5 0 0 1 .528-.47ZM8 4.5a.5.5 0 0 1 .5.5v8.5a.5.5 0 0 1-1 0V5a.5.5 0 0 1 .5-.5Z\" />\r\n </svg>\r\n </a>\r\n </div>\r\n <img [src]=\"getCardImg(card.card_brand)\" class=\"img-card\" />\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"card-footer d-flex flex-row justify-content-end\">\r\n <ng-container *ngIf=\"!checkingPayment; else buttonLoading\">\r\n <button *ngIf=\"card.card_type == 'credit'; else debito\" class=\"btn comprar text-white\" data-bs-toggle=\"modal\"\r\n data-bs-target=\"#modalCuotas\" (click)=\"setCurrentCardID(card.card_id)\">Pagar</button>\r\n <ng-template #debito>\r\n <button class=\"btn comprar text-white\" (click)=\"toPay(card.card_id)\">Pagar</button>\r\n </ng-template>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #notCards>\r\n <div class=\"col-12 d-flex justify-content-center\">\r\n <h6>Usted no posee tarjetas registrada. Para continuar con este m\u00E9todo de pago por favor registre una\r\n tarjeta presionando el bot\u00F3n de <span class=\"text-decoration-underline fs-6\"> Nueva tarjeta</span>\r\n </h6>\r\n </div>\r\n </ng-template>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <button class=\"btn comprar text-white\" data-bs-toggle=\"modal\" data-bs-target=\"#catastro\"\r\n (click)=\"getProcessId(); openModal()\">Nueva Tarjeta</button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"modal\" tabindex=\"-1\" id=\"catastro\">\r\n <div class=\"modal-dialog\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <!-- <h5 class=\"modal-title\">Modal title</h5> -->\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"\r\n (click)=\"closeModal()\"></button>\r\n </div>\r\n <div class=\"modal-body d-flex flex-column justify-content-center align-items-center\">\r\n <ng-container *ngIf=\"infoPreview; else iframe\">\r\n <div class=\"alert alert-warning \" role=\"alert\">\r\n <p class=\"mb-0\">Estimado usuario,</p>\r\n <p> A continuaci\u00F3n usted pasar\u00E1 por \u00FAnica vez por un proceso de\r\n validaci\u00F3n con preguntas de seguridad. Para iniciar favor tener en\r\n cuenta las siguientes recomendaciones:</p>\r\n <ol class=\"list-group list-group-numbered\">\r\n <li class=\"list-group-item list-group-item-warning\">Verifique su n\u00FAmero de c\u00E9dula de\r\n identidad</li>\r\n <li class=\"list-group-item list-group-item-warning\">Tenga a mano sus tarjetas de cr\u00E9dito y\r\n d\u00E9bito activas</li>\r\n <li class=\"list-group-item list-group-item-warning\">Verifique el monto y lugar de sus\r\n \u00FAltimas compras en\r\n comercios o extracciones en cajeros</li>\r\n </ol>\r\n </div>\r\n <div class=\"d-flex flex-row w-full justify-content-center\">\r\n <a class=\"cursor-pointer text-dark fs-xs\" (click)=\"skipInfoPreview()\">Saltar</a>\r\n </div>\r\n </ng-container>\r\n <ng-template #iframe>\r\n <iframe *ngIf=\"url; else loadingView\" [src]=\"url\" frameborder=\"0\" class=\"iframeStyle\"></iframe>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n\r\n<!-- Modal -->\r\n<div class=\"modal fade\" id=\"modalCuotas\" tabindex=\"-1\" aria-labelledby=\"exampleModalLabel\" aria-hidden=\"true\">\r\n <div class=\"modal-dialog modal-dialog-centered modal-sm\">\r\n <div class=\"modal-content\">\r\n <div class=\"modal-header\">\r\n <h5 class=\"modal-title\" id=\"exampleModalLabel\">Elija el n\u00FAmero de cuotas</h5>\r\n <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"></button>\r\n </div>\r\n <div class=\"modal-body\">\r\n <select class=\"form-select\" aria-label=\"Default select example\"\r\n (change)=\"setNumberOfPayments($event.target.value)\">\r\n <option selected disabled>Selecciones la cantidad de cuotas</option>\r\n <option value=\"1\">1 cuota</option>\r\n <option value=\"3\">3 cuotas</option>\r\n <option value=\"6\">6 cuotas</option>\r\n <option value=\"12\">12 cuotas</option>\r\n </select>\r\n </div>\r\n <div class=\"modal-footer\" *ngIf=\"canPay()\">\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"\r\n (click)=\"toPay(currentCardID)\">Pagar</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #loadingView>\r\n <div>\r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #buttonLoading>\r\n <button type=\"button\" class=\"btn comprar text-white\" data-bs-dismiss=\"modal\"> \r\n <app-loading-inline-ec></app-loading-inline-ec>\r\n </button>\r\n</ng-template>",
|
|
14613
14695
|
styles: [".iframeStyle{min-height:520px!important;width:80%}.img-card{width:90px;height:90px}"]
|
|
14614
14696
|
})
|
|
14615
14697
|
], BancardCatastroEcComponent);
|