ng-easycommerce-v18 0.3.15-beta.1 → 0.3.15
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 +90 -87
- package/assets/decidirFormEc.html +514 -514
- package/assets/ec-i18n/ct.json +281 -281
- package/assets/ec-i18n/en.json +0 -0
- package/assets/ec-i18n/es.json +429 -429
- package/assets/ec-i18n/fr.json +0 -0
- package/assets/ec-i18n/gl.json +281 -281
- package/assets/ec-i18n/pr.json +281 -281
- package/assets/images/cards-occasional.svg +21 -21
- package/assets/recaptcha/recaptcha-site-keys.json +3 -3
- package/assets/recaptcha/recaptcha-sites-prod.json +38 -38
- package/assets/recaptcha/recaptcha-sites.json +52 -52
- package/esm2022/lib/api/connection.service.mjs +1 -1
- package/esm2022/lib/classes/checkout/steps.mjs +1 -1
- package/esm2022/lib/classes/component-helper.mjs +1 -1
- package/esm2022/lib/classes/filters/attributes-filter.mjs +1 -1
- package/esm2022/lib/classes/filters/category-filter.mjs +1 -1
- package/esm2022/lib/classes/filters/dynamics-filter.mjs +1 -1
- package/esm2022/lib/classes/filters/filter-factory.mjs +1 -1
- package/esm2022/lib/classes/filters/filter.mjs +1 -1
- package/esm2022/lib/classes/filters/index.mjs +1 -1
- package/esm2022/lib/classes/filters/price_range-filter.mjs +1 -1
- package/esm2022/lib/classes/filters/sort-filter.mjs +1 -1
- package/esm2022/lib/classes/index.mjs +1 -1
- package/esm2022/lib/classes/user.mjs +1 -1
- package/esm2022/lib/constants/api.constants.service.mjs +1 -1
- package/esm2022/lib/constants/core.constants.service.mjs +1 -1
- package/esm2022/lib/constants/index.mjs +1 -1
- package/esm2022/lib/ec-components/abstractions-components/block-ec.component.mjs +1 -1
- package/esm2022/lib/ec-components/abstractions-components/index.mjs +1 -1
- package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +1 -1
- package/esm2022/lib/ec-components/account-ec/account-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/account-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/account-ec/order-ec/order-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/account-ec/orders-list-ec/orders-list-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/auth-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/confirm-account-ec/confirm-account-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/forgot-password-ec/forgot-password-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/auth-ec/register-wholesaler-form-ec/register-wholesaler-form-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-banner-box-ec/block-banner-box-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-banner-full-ec/block-banner-full-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-form-contact-ec/block-form-contact-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-html-ec/block-html-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-newsletter-ec/block-newsletter-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/blocks-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/blocks-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/breadcrumb-ec/breadcrumb-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/cart-ec/cart-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/cart-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/checkout-ec/checkout-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/dataform-ec/dataform-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/dataform-ec/input-ec/input-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/bank-transfer-ec/bank-transfer-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/index.mjs +1 -1
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.mjs +134 -138
- package/esm2022/lib/ec-components/checkout-ec/payment-ec/payment-methods/offline-ec/offline-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/shipment-ec/shipment-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/step-container-ec/step-container-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/checkout-ec/success-ec/success-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/collection-ec/collection-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/contact-ec/contact-ec.component.mjs +1 -1
- package/esm2022/lib/ec-components/coupon-ec/coupon-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/faqs-ec/faqs-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/filters-sort-ec/filters-sort-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/footer-ec/footer-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/home-ec/home-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/index.mjs +1 -1
- package/esm2022/lib/ec-components/price-range-filter/price-range-filter.component.mjs +3 -3
- package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +1 -1
- package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/related-products-ec/related-products-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/reviews-ec/reviews-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/reviews-form-ec/reviews-form-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/section-container-ec/section-container-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-email-ec/share-email-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-facebook-ec/share-facebook-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-pinterest-ec/share-pinterest-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-twitter-ec/share-twitter-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-buttons-ec/share-whatsapp-ec/share-whatsapp-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/share-ec/share-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/sidebar-ec/sidebar-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/stores-ec/stores-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/variants-ec/variants-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/decidir-ec/decidir-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/index.mjs +1 -1
- package/esm2022/lib/ec-components/widgets-ec/loading/index.mjs +1 -1
- package/esm2022/lib/ec-components/widgets-ec/loading/loading-full-ec/loading-full-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/loading/loading-inline-ec/loading-inline-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/loading/loading-section-ec/loading-section-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/price-ec/price-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/rating-ec/rating-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/re-captcha-ec/re-captcha-ec.component.mjs +3 -3
- package/esm2022/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.mjs +124 -177
- package/esm2022/lib/ec-directive/index.mjs +1 -1
- package/esm2022/lib/ec-directive/product-off.directive.mjs +1 -1
- package/esm2022/lib/ec-directive/product-stock.directive.mjs +1 -1
- package/esm2022/lib/ec-guards/auth.guard.mjs +1 -1
- package/esm2022/lib/ec-pipe/ec-currency-symbol.pipe.mjs +1 -1
- package/esm2022/lib/ec-pipe/ec-safe-html.pipe.mjs +1 -1
- package/esm2022/lib/ec-pipe/index.mjs +1 -1
- package/esm2022/lib/ec-services/addressing.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/analytics.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/doppler.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/facebook-pixel.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/gtm.service.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/index.mjs +1 -1
- package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +11 -11
- package/esm2022/lib/ec-services/auth.service.mjs +1 -1
- package/esm2022/lib/ec-services/auth.storage.service.mjs +1 -1
- package/esm2022/lib/ec-services/blocks-repository.service.mjs +1 -1
- package/esm2022/lib/ec-services/blocks.service.mjs +1 -1
- package/esm2022/lib/ec-services/cart.service.mjs +1 -1
- package/esm2022/lib/ec-services/channel.service.mjs +1 -1
- package/esm2022/lib/ec-services/checkout.service.mjs +1 -1
- package/esm2022/lib/ec-services/currency.service.mjs +1 -1
- package/esm2022/lib/ec-services/filters.service.mjs +1 -1
- package/esm2022/lib/ec-services/form.service.mjs +1 -1
- package/esm2022/lib/ec-services/index.mjs +1 -1
- package/esm2022/lib/ec-services/local-storage.service.mjs +1 -1
- package/esm2022/lib/ec-services/ngx-local-storage.service.mjs +1 -1
- package/esm2022/lib/ec-services/options.service.mjs +1 -1
- package/esm2022/lib/ec-services/order-utility.service.mjs +1 -1
- package/esm2022/lib/ec-services/orders.service.mjs +1 -1
- package/esm2022/lib/ec-services/pagination.service.mjs +1 -1
- package/esm2022/lib/ec-services/parameters.service.mjs +1 -1
- package/esm2022/lib/ec-services/payment.service.mjs +1 -1
- package/esm2022/lib/ec-services/product-detail.service.mjs +1 -1
- package/esm2022/lib/ec-services/products.service.mjs +1 -1
- package/esm2022/lib/ec-services/re-captcha.service.mjs +1 -1
- package/esm2022/lib/ec-services/reviews.service.mjs +1 -1
- package/esm2022/lib/ec-services/shipment.service.mjs +1 -1
- package/esm2022/lib/ec-services/stores.service.mjs +1 -1
- package/esm2022/lib/ec-services/test.service.mjs +1 -1
- package/esm2022/lib/ec-services/toast.service.mjs +1 -1
- package/esm2022/lib/interceptors/auth.interceptor.mjs +1 -1
- package/esm2022/lib/interfaces/analytics/event-key.mjs +1 -1
- package/esm2022/lib/interfaces/analytics/facebook-pixel-data.mjs +1 -1
- package/esm2022/lib/interfaces/analytics/gtm-config.mjs +1 -1
- package/esm2022/lib/interfaces/analytics/index.mjs +1 -1
- package/esm2022/lib/interfaces/blocks.mjs +1 -1
- package/esm2022/lib/interfaces/checkout.mjs +1 -1
- package/esm2022/lib/interfaces/connection.mjs +1 -1
- package/esm2022/lib/interfaces/coupon.mjs +1 -1
- package/esm2022/lib/interfaces/currency.mjs +1 -1
- package/esm2022/lib/interfaces/deserializable.mjs +1 -1
- package/esm2022/lib/interfaces/environment.mjs +1 -1
- package/esm2022/lib/interfaces/faqs.mjs +1 -1
- package/esm2022/lib/interfaces/filter.mjs +1 -1
- package/esm2022/lib/interfaces/index.mjs +1 -1
- package/esm2022/lib/interfaces/options.mjs +1 -1
- package/esm2022/lib/interfaces/pagination.mjs +1 -1
- package/esm2022/lib/interfaces/parameter.mjs +1 -1
- package/esm2022/lib/interfaces/product.mjs +1 -1
- package/esm2022/lib/interfaces/step.mjs +1 -1
- package/esm2022/lib/interfaces/storage.mjs +1 -1
- package/esm2022/lib/interfaces/store.mjs +1 -1
- package/esm2022/lib/interfaces/types/user.type.mjs +1 -1
- package/esm2022/lib/providers/provideEnvironment.mjs +1 -1
- package/esm2022/lib/stores/currency.store.mjs +1 -1
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/ng-easycommerce-v18.mjs +386 -443
- package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
- package/lib/ec-components/checkout-ec/payment-ec/payment-methods/mp-redirect-ec/mp-redirect-ec.component.d.ts +38 -20
- package/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.d.ts +24 -12
- package/package.json +1 -1
|
@@ -6,178 +6,174 @@ import * as i0 from "@angular/core";
|
|
|
6
6
|
export class MpRedirectEcComponent {
|
|
7
7
|
_paymentService = inject(PaymentService);
|
|
8
8
|
_toastService = inject(ToastService);
|
|
9
|
+
platformId = inject(PLATFORM_ID);
|
|
10
|
+
finished = false;
|
|
9
11
|
method = null;
|
|
10
12
|
total_amount = 0;
|
|
11
13
|
allData;
|
|
12
14
|
ready = new EventEmitter();
|
|
13
15
|
preference;
|
|
14
|
-
loading = false;
|
|
15
16
|
url;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
// Fases de UI
|
|
18
|
+
phase = 'idle';
|
|
19
|
+
get isIdle() { return this.phase === 'idle'; }
|
|
20
|
+
get isPaying() { return this.phase === 'paying'; }
|
|
21
|
+
get isFinalizing() { return this.phase === 'finalizing'; }
|
|
22
|
+
ventana = null;
|
|
23
|
+
windowRef;
|
|
24
|
+
sid = '';
|
|
25
|
+
bc;
|
|
26
|
+
pollTimer;
|
|
27
|
+
pollStartedAt = 0;
|
|
28
|
+
ngOnInit() {
|
|
24
29
|
if (isPlatformBrowser(this.platformId)) {
|
|
25
|
-
this.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
30
|
+
this.windowRef = window;
|
|
31
|
+
if ('BroadcastChannel' in window) {
|
|
32
|
+
this.bc = new BroadcastChannel('mp_payment');
|
|
33
|
+
this.bc.onmessage = (e) => this.onMpMessage(e?.data);
|
|
34
|
+
}
|
|
35
|
+
window.addEventListener('storage', this.onStorage);
|
|
36
|
+
window.addEventListener('message', this.onWindowMessage);
|
|
29
37
|
}
|
|
30
|
-
}
|
|
31
|
-
ngOnInit() {
|
|
32
38
|
this.getPreference();
|
|
33
39
|
}
|
|
34
|
-
|
|
35
|
-
if (isPlatformBrowser(this.platformId)
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
this.sessionId = `mp_session_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
43
|
-
if (isPlatformBrowser(this.platformId) && this.localStorage) {
|
|
44
|
-
this.localStorage.setItem('mp_session_id', this.sessionId);
|
|
45
|
-
}
|
|
40
|
+
ngOnDestroy() {
|
|
41
|
+
if (!isPlatformBrowser(this.platformId))
|
|
42
|
+
return;
|
|
43
|
+
this.bc?.close();
|
|
44
|
+
window.removeEventListener('storage', this.onStorage);
|
|
45
|
+
window.removeEventListener('message', this.onWindowMessage);
|
|
46
|
+
if (this.pollTimer)
|
|
47
|
+
clearInterval(this.pollTimer);
|
|
46
48
|
}
|
|
49
|
+
/** Cancela manualmente el pago y finaliza el flujo con estado "cancel". */
|
|
47
50
|
clickClose = () => {
|
|
48
|
-
|
|
49
|
-
|
|
51
|
+
if (this.finished)
|
|
52
|
+
return;
|
|
53
|
+
this.finishWithState('cancel');
|
|
50
54
|
};
|
|
55
|
+
/**
|
|
56
|
+
* Inicia el pago abriendo `init_point` en una ventana/pestaña nueva.
|
|
57
|
+
* Genera un SID y lo persiste para casar la respuesta del catch.
|
|
58
|
+
* Si el popup es bloqueado, hace fallback navegando en la misma pestaña.
|
|
59
|
+
*/
|
|
51
60
|
iniciar = () => {
|
|
52
|
-
this.
|
|
53
|
-
this.clearStorageState();
|
|
54
|
-
// Solo ejecutar en el browser
|
|
55
|
-
if (!isPlatformBrowser(this.platformId)) {
|
|
61
|
+
if (!isPlatformBrowser(this.platformId) || !this.windowRef || !this.url)
|
|
56
62
|
return;
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
if (this.
|
|
64
|
-
|
|
65
|
-
this.window.location.href = this.url;
|
|
66
|
-
}
|
|
67
|
-
else if (this.window) {
|
|
68
|
-
// En desktop, usar popup como antes
|
|
69
|
-
this.ventana = this.window.open(this.url);
|
|
70
|
-
this.callState();
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
callState = () => {
|
|
74
|
-
// Solo ejecutar en el browser
|
|
75
|
-
if (!isPlatformBrowser(this.platformId)) {
|
|
63
|
+
this.phase = 'paying';
|
|
64
|
+
this.sid = this.genSid();
|
|
65
|
+
const url = new URL(this.url);
|
|
66
|
+
localStorage.setItem('mp:sid', this.sid);
|
|
67
|
+
this.ventana = this.windowRef.open(this.url, '_blank');
|
|
68
|
+
// popup bloqueado → fallback a navegación en misma pestaña
|
|
69
|
+
if (!this.ventana || this.ventana.closed) {
|
|
70
|
+
this.windowRef.location.href = this.url;
|
|
76
71
|
return;
|
|
77
72
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
this.
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
console.log('Esta no es la pestaña principal, ignorando estado');
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
if (state) {
|
|
93
|
-
this.loading = false;
|
|
94
|
-
this.localStorage?.removeItem('state');
|
|
95
|
-
// Limpiar marcadores de mobile
|
|
96
|
-
if (this.isMobile && this.localStorage) {
|
|
97
|
-
this.localStorage.removeItem('mp_main_tab');
|
|
98
|
-
this.localStorage.removeItem('mp_payment_started');
|
|
99
|
-
}
|
|
100
|
-
if (state == 'success') {
|
|
101
|
-
this.ventana?.close();
|
|
102
|
-
this.ready.emit(true);
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
if (state == 'pending') {
|
|
106
|
-
this.ventana?.close();
|
|
107
|
-
this.ready.emit(true);
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
if (state == 'failure') {
|
|
111
|
-
this.ventana?.close();
|
|
112
|
-
this.processError('');
|
|
73
|
+
// polling de último recurso (hasta 10 minutos)
|
|
74
|
+
this.pollStartedAt = Date.now();
|
|
75
|
+
if (this.pollTimer)
|
|
76
|
+
clearInterval(this.pollTimer);
|
|
77
|
+
this.pollTimer = setInterval(() => {
|
|
78
|
+
if (Date.now() - this.pollStartedAt > 10 * 60 * 1000) {
|
|
79
|
+
clearInterval(this.pollTimer);
|
|
80
|
+
this.pollTimer = null;
|
|
81
|
+
this.phase = 'idle';
|
|
82
|
+
this.processError('Tiempo de espera agotado al procesar el pago.');
|
|
113
83
|
return;
|
|
114
84
|
}
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
85
|
+
this.checkLocalStorageOnce();
|
|
86
|
+
}, 1000);
|
|
87
|
+
};
|
|
88
|
+
onWindowMessage = (event) => {
|
|
89
|
+
const data = event?.data;
|
|
90
|
+
this.onMpMessage(data);
|
|
91
|
+
};
|
|
92
|
+
onStorage = (e) => {
|
|
93
|
+
if (!e.key || !this.sid)
|
|
122
94
|
return;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
setTimeout(() => {
|
|
127
|
-
this.callState();
|
|
128
|
-
}, 5000);
|
|
95
|
+
if (e.key === `mp:state:${this.sid}` && e.newValue) {
|
|
96
|
+
const state = e.newValue;
|
|
97
|
+
this.finishWithState(state);
|
|
129
98
|
}
|
|
130
99
|
};
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
100
|
+
onMpMessage = (data) => {
|
|
101
|
+
if (!data || data.type !== 'mp:state')
|
|
102
|
+
return;
|
|
103
|
+
if (data.sid !== this.sid)
|
|
104
|
+
return;
|
|
105
|
+
this.finishWithState(data.state);
|
|
134
106
|
};
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
107
|
+
checkLocalStorageOnce() {
|
|
108
|
+
if (!this.sid)
|
|
109
|
+
return;
|
|
110
|
+
const state = localStorage.getItem(`mp:state:${this.sid}`);
|
|
111
|
+
if (state)
|
|
112
|
+
this.finishWithState(state);
|
|
113
|
+
}
|
|
114
|
+
/** Cierra el flujo de pago con el estado final y notifica al padre. */
|
|
115
|
+
finishWithState(state) {
|
|
116
|
+
if (this.finished)
|
|
138
117
|
return;
|
|
118
|
+
this.finished = true;
|
|
119
|
+
if (this.pollTimer)
|
|
120
|
+
clearInterval(this.pollTimer);
|
|
121
|
+
this.pollTimer = null;
|
|
122
|
+
localStorage.removeItem(`mp:state:${this.sid}`);
|
|
123
|
+
localStorage.removeItem('mp:sid');
|
|
124
|
+
localStorage.removeItem('state');
|
|
125
|
+
try {
|
|
126
|
+
this.ventana && !this.ventana.closed && this.ventana.close();
|
|
127
|
+
}
|
|
128
|
+
catch { }
|
|
129
|
+
this.ventana = null;
|
|
130
|
+
if (state === 'success' || state === 'pending') {
|
|
131
|
+
this.phase = 'finalizing';
|
|
132
|
+
this.ready.emit(true);
|
|
139
133
|
}
|
|
140
|
-
if (
|
|
141
|
-
|
|
134
|
+
else if (state === 'failure' || state === 'cancel') {
|
|
135
|
+
this.phase = 'idle';
|
|
136
|
+
this._toastService.show(state === 'cancel' ? 'Se canceló el pago con Mercado Pago' : 'payment-error');
|
|
142
137
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
this.localStorage.removeItem('mp_processing_tab');
|
|
147
|
-
this.localStorage.removeItem('mp_processing_tab_time');
|
|
138
|
+
else {
|
|
139
|
+
this.phase = 'idle';
|
|
140
|
+
this._toastService.show('payment-error');
|
|
148
141
|
}
|
|
142
|
+
}
|
|
143
|
+
genSid() {
|
|
144
|
+
return `mp_${Date.now()}_${Math.random().toString(36).slice(2, 9)}`;
|
|
145
|
+
}
|
|
146
|
+
processError = (msg) => {
|
|
147
|
+
this._toastService.show(msg || 'payment-error');
|
|
148
|
+
};
|
|
149
|
+
/** Limpia posibles residuos de estado en storages. */
|
|
150
|
+
clearStorageState = () => {
|
|
151
|
+
if (!isPlatformBrowser(this.platformId))
|
|
152
|
+
return;
|
|
153
|
+
localStorage.removeItem('state');
|
|
154
|
+
const sid = localStorage.getItem('mp:sid');
|
|
155
|
+
if (sid)
|
|
156
|
+
localStorage.removeItem(`mp:state:${sid}`);
|
|
157
|
+
};
|
|
158
|
+
/** Obtiene la preferencia e inicializa `url` (init_point). */
|
|
159
|
+
getPreference = () => {
|
|
160
|
+
this._paymentService.getPreference(this.allData).then((res) => {
|
|
161
|
+
this.preference = res;
|
|
162
|
+
this.url = this.preference?.init_point;
|
|
163
|
+
this.renderMP(this.preference);
|
|
164
|
+
}, () => this.setError('operation-error'));
|
|
149
165
|
};
|
|
150
|
-
getPreference = () => this._paymentService.getPreference(this.allData).then(res => {
|
|
151
|
-
this.preference = res;
|
|
152
|
-
this.url = this.preference.init_point;
|
|
153
|
-
this.renderMP(this.preference);
|
|
154
|
-
}, err => this.setError('operation-error'));
|
|
155
166
|
setError = (message) => {
|
|
156
167
|
//this.error = message;
|
|
157
168
|
};
|
|
158
|
-
renderMP = (
|
|
159
|
-
// Solo ejecutar en el browser
|
|
160
|
-
if (!isPlatformBrowser(this.platformId) || !this.window) {
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
|
-
this.window.addEventListener("message", (event) => {
|
|
164
|
-
if (event.origin !== 'https://www.mercadopago.com.ar' || !event.data.type) {
|
|
165
|
-
return;
|
|
166
|
-
}
|
|
167
|
-
let dataType = event.data.type;
|
|
168
|
-
if (dataType === 'submit') {
|
|
169
|
-
const paymentData = event.data.value;
|
|
170
|
-
return;
|
|
171
|
-
}
|
|
172
|
-
});
|
|
173
|
-
};
|
|
169
|
+
renderMP = (_pref) => { };
|
|
174
170
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MpRedirectEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
175
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MpRedirectEcComponent, isStandalone: true, selector: "app-mp-redirect-ec", inputs: { method: "method", total_amount: "total_amount", allData: "allData" }, outputs: { ready: "ready" }, ngImport: i0, template: "<div class=\"text-center\">\
|
|
171
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: MpRedirectEcComponent, isStandalone: true, selector: "app-mp-redirect-ec", inputs: { method: "method", total_amount: "total_amount", allData: "allData" }, outputs: { ready: "ready" }, ngImport: i0, template: "<div class=\"text-center\">\n\t@if(url) {\n\n\t@if(isIdle) {\n\t<button (click)=\"iniciar()\" class=\"btn btn-outline-primary rounded-0 comprar mt-3\">Pagar</button>\n\t}\n\n\t@if(isPaying) {\n\t<div class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\n\t\t<h3>Procesando el pago por Mercado Pago</h3>\n\t\t<h5>Record\u00E1 tocar \u201CVolver al sitio\u201D en Mercado Pago para finalizar.</h5>\n\t\t<app-loading-full-ec></app-loading-full-ec>\n\t</div>\n\n\t<div class=\"container-fluid\">\n\t\t<div class=\"row\">\n\t\t\t<div class=\"col-5\">\n\t\t\t\t<hr>\n\t\t\t</div>\n\t\t\t<div class=\"col-2 text-center\"><label>o</label></div>\n\t\t\t<div class=\"col-5\">\n\t\t\t\t<hr>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\n\t<div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n\t\t<button (click)=\"clickClose()\" class=\"btn btn-outline-secondary\">Cancelar pago</button>\n\t</div>\n\t}\n\n\t@if(isFinalizing) {\n\t<div class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\n\t\t<h3>Confirmando pago y redirigiendo\u2026</h3>\n\t\t<h5>No cierres ni recargues esta p\u00E1gina.</h5>\n\t\t<app-loading-full-ec></app-loading-full-ec>\n\t</div>\n\t}\n\n\t} @else {\n\t<div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n\t\t<app-loading-full-ec></app-loading-full-ec>\n\t</div>\n\t}\n</div>", styles: [""], dependencies: [{ kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }] });
|
|
176
172
|
}
|
|
177
173
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: MpRedirectEcComponent, decorators: [{
|
|
178
174
|
type: Component,
|
|
179
|
-
args: [{ selector: 'app-mp-redirect-ec', standalone: true, imports: [LoadingFullEcComponent], template: "<div class=\"text-center\">\
|
|
180
|
-
}],
|
|
175
|
+
args: [{ selector: 'app-mp-redirect-ec', standalone: true, imports: [LoadingFullEcComponent], template: "<div class=\"text-center\">\n\t@if(url) {\n\n\t@if(isIdle) {\n\t<button (click)=\"iniciar()\" class=\"btn btn-outline-primary rounded-0 comprar mt-3\">Pagar</button>\n\t}\n\n\t@if(isPaying) {\n\t<div class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\n\t\t<h3>Procesando el pago por Mercado Pago</h3>\n\t\t<h5>Record\u00E1 tocar \u201CVolver al sitio\u201D en Mercado Pago para finalizar.</h5>\n\t\t<app-loading-full-ec></app-loading-full-ec>\n\t</div>\n\n\t<div class=\"container-fluid\">\n\t\t<div class=\"row\">\n\t\t\t<div class=\"col-5\">\n\t\t\t\t<hr>\n\t\t\t</div>\n\t\t\t<div class=\"col-2 text-center\"><label>o</label></div>\n\t\t\t<div class=\"col-5\">\n\t\t\t\t<hr>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n\n\t<div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n\t\t<button (click)=\"clickClose()\" class=\"btn btn-outline-secondary\">Cancelar pago</button>\n\t</div>\n\t}\n\n\t@if(isFinalizing) {\n\t<div class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\n\t\t<h3>Confirmando pago y redirigiendo\u2026</h3>\n\t\t<h5>No cierres ni recargues esta p\u00E1gina.</h5>\n\t\t<app-loading-full-ec></app-loading-full-ec>\n\t</div>\n\t}\n\n\t} @else {\n\t<div class=\"d-flex flex-column justify-content-center align-items-center mt-2\">\n\t\t<app-loading-full-ec></app-loading-full-ec>\n\t</div>\n\t}\n</div>" }]
|
|
176
|
+
}], propDecorators: { method: [{
|
|
181
177
|
type: Input
|
|
182
178
|
}], total_amount: [{
|
|
183
179
|
type: Input
|
|
@@ -186,4 +182,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
186
182
|
}], ready: [{
|
|
187
183
|
type: Output
|
|
188
184
|
}] } });
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXAtcmVkaXJlY3QtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvcGF5bWVudC1lYy9wYXltZW50LW1ldGhvZHMvbXAtcmVkaXJlY3QtZWMvbXAtcmVkaXJlY3QtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvcGF5bWVudC1lYy9wYXltZW50LW1ldGhvZHMvbXAtcmVkaXJlY3QtZWMvbXAtcmVkaXJlY3QtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBU3BELE1BQU0sT0FBTyxxQkFBcUI7SUFFekIsZUFBZSxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDeEQsYUFBYSxHQUFpQixNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7SUFFakQsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNkLFlBQVksR0FBRyxDQUFDLENBQUM7SUFDakIsT0FBTyxDQUFNO0lBQ1osS0FBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFFM0IsVUFBVSxDQUFNO0lBRW5CLE9BQU8sR0FB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QUM7SUFDSixDQUFDLENBQUE7d0dBcE1XLHFCQUFxQjs0RkFBckIscUJBQXFCLDJMQ1psQyxxd0NBZ0NNLDBERHRCSyxzQkFBc0I7OzRGQUVwQixxQkFBcUI7a0JBUGpDLFNBQVM7K0JBQ0Msb0JBQW9CLGNBQ2xCLElBQUksV0FHUCxDQUFDLHNCQUFzQixDQUFDO3dEQU94QixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBQTEFURk9STV9JRCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBQYXltZW50U2VydmljZSwgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBMb2FkaW5nRnVsbEVjQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vd2lkZ2V0cy1lYyc7XHJcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnYXBwLW1wLXJlZGlyZWN0LWVjJyxcclxuXHRzdGFuZGFsb25lOiB0cnVlLFxyXG5cdHRlbXBsYXRlVXJsOiAnLi9tcC1yZWRpcmVjdC1lYy5jb21wb25lbnQuaHRtbCcsXHJcblx0c3R5bGVVcmxzOiBbJy4vbXAtcmVkaXJlY3QtZWMuY29tcG9uZW50LnNjc3MnXSxcclxuXHRpbXBvcnRzOiBbTG9hZGluZ0Z1bGxFY0NvbXBvbmVudF1cclxufSlcclxuZXhwb3J0IGNsYXNzIE1wUmVkaXJlY3RFY0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG5cdHByaXZhdGUgX3BheW1lbnRTZXJ2aWNlOiBQYXltZW50U2VydmljZSA9IGluamVjdChQYXltZW50U2VydmljZSlcclxuXHRwcml2YXRlIF90b2FzdFNlcnZpY2U6IFRvYXN0U2VydmljZSA9IGluamVjdChUb2FzdFNlcnZpY2UpXHJcblxyXG5cdEBJbnB1dCgpIG1ldGhvZCA9IG51bGw7XHJcblx0QElucHV0KCkgdG90YWxfYW1vdW50ID0gMDtcclxuXHRASW5wdXQoKSBhbGxEYXRhOiBhbnk7XHJcblx0QE91dHB1dCgpIHJlYWR5ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuXHRwcm90ZWN0ZWQgcHJlZmVyZW5jZTogYW55O1xyXG5cclxuXHRwdWJsaWMgbG9hZGluZyA9IGZhbHNlO1xyXG5cdHB1YmxpYyB1cmw6IGFueTtcclxuXHRwdWJsaWMgY2xvc2VNb2RhbCA9ICcnXHJcblx0cHVibGljIHZlbnRhbmE6IGFueTtcclxuXHRwdWJsaWMgd2luZG93PzogV2luZG93O1xyXG5cdHB1YmxpYyBsb2NhbFN0b3JhZ2U/OlN0b3JhZ2U7XHJcblx0cHJpdmF0ZSBpc01vYmlsZSA9IGZhbHNlO1xyXG5cdHByaXZhdGUgc2Vzc2lvbklkOiBzdHJpbmcgPSAnJztcclxuXHJcblx0cHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnkgPSBpbmplY3QoUExBVEZPUk1fSUQpXHJcblxyXG5cdGNvbnN0cnVjdG9yKCkge1xyXG5cdFx0aWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHtcclxuXHRcdFx0dGhpcy53aW5kb3cgPSB3aW5kb3dcclxuXHRcdFx0dGhpcy5sb2NhbFN0b3JhZ2UgPSBsb2NhbFN0b3JhZ2VcclxuXHRcdFx0dGhpcy5kZXRlY3RNb2JpbGUoKVxyXG5cdFx0XHR0aGlzLmdlbmVyYXRlU2Vzc2lvbklkKClcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0dGhpcy5nZXRQcmVmZXJlbmNlKClcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZGV0ZWN0TW9iaWxlKCk6IHZvaWQge1xyXG5cdFx0aWYgKGlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgJiYgdGhpcy53aW5kb3cpIHtcclxuXHRcdFx0Y29uc3QgdXNlckFnZW50ID0gdGhpcy53aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xyXG5cdFx0XHR0aGlzLmlzTW9iaWxlID0gL2FuZHJvaWR8d2Vib3N8aXBob25lfGlwYWR8aXBvZHxibGFja2JlcnJ5fGllbW9iaWxlfG9wZXJhIG1pbml8bW9iaWxlL2kudGVzdCh1c2VyQWdlbnQpIHx8XHJcblx0XHRcdCAgICAgICAgICAgICAgKHRoaXMud2luZG93LmlubmVyV2lkdGggPD0gNzY4KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHByaXZhdGUgZ2VuZXJhdGVTZXNzaW9uSWQoKTogdm9pZCB7XHJcblx0XHR0aGlzLnNlc3Npb25JZCA9IGBtcF9zZXNzaW9uXyR7RGF0ZS5ub3coKX1fJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHIoMiwgOSl9YDtcclxuXHRcdGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpICYmIHRoaXMubG9jYWxTdG9yYWdlKSB7XHJcblx0XHRcdHRoaXMubG9jYWxTdG9yYWdlLnNldEl0ZW0oJ21wX3Nlc3Npb25faWQnLCB0aGlzLnNlc3Npb25JZCk7XHJcblx0XHR9XHJcblx0fVxyXG5cdGNsaWNrQ2xvc2UgPSAoKSA9PiB7XHJcblx0XHQvKiAgdGhpcy5jbG9zZU1vZGFsID0gJ2NhbmNlbCdcclxuXHRcdCB0aGlzLnZlbnRhbmE/LmNsb3NlKCkgKi9cclxuXHR9XHJcblxyXG5cdGluaWNpYXIgPSAoKSA9PiB7XHJcblx0XHR0aGlzLmNsb3NlTW9kYWwgPSAnJ1xyXG5cdFx0dGhpcy5jbGVhclN0b3JhZ2VTdGF0ZSgpXHJcblx0XHRcclxuXHRcdC8vIFNvbG8gZWplY3V0YXIgZW4gZWwgYnJvd3NlclxyXG5cdFx0aWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0Ly8gRW4gbW9iaWxlLCBtYXJjYW1vcyBlc3RhIHBlc3Rhw7FhIGNvbW8gbGEgcHJpbmNpcGFsXHJcblx0XHRpZiAodGhpcy5pc01vYmlsZSAmJiB0aGlzLmxvY2FsU3RvcmFnZSkge1xyXG5cdFx0XHR0aGlzLmxvY2FsU3RvcmFnZS5zZXRJdGVtKCdtcF9tYWluX3RhYicsIHRoaXMuc2Vzc2lvbklkKTtcclxuXHRcdFx0dGhpcy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbXBfcGF5bWVudF9zdGFydGVkJywgJ3RydWUnKTtcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0aWYgKHRoaXMuaXNNb2JpbGUgJiYgdGhpcy53aW5kb3cpIHtcclxuXHRcdFx0Ly8gRW4gbW9iaWxlLCB1c2FyIHdpbmRvdy5sb2NhdGlvbi5ocmVmIGVuIGx1Z2FyIGRlIHBvcHVwXHJcblx0XHRcdHRoaXMud2luZG93LmxvY2F0aW9uLmhyZWYgPSB0aGlzLnVybDtcclxuXHRcdH0gZWxzZSBpZiAodGhpcy53aW5kb3cpIHtcclxuXHRcdFx0Ly8gRW4gZGVza3RvcCwgdXNhciBwb3B1cCBjb21vIGFudGVzXHJcblx0XHRcdHRoaXMudmVudGFuYSA9IHRoaXMud2luZG93Lm9wZW4odGhpcy51cmwpXHJcblx0XHRcdHRoaXMuY2FsbFN0YXRlKClcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGNhbGxTdGF0ZSA9ICgpID0+IHtcclxuXHRcdC8vIFNvbG8gZWplY3V0YXIgZW4gZWwgYnJvd3NlclxyXG5cdFx0aWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0bGV0IHN0YXRlID0gdGhpcy5jbG9zZU1vZGFsICE9ICcnID8gdGhpcy5jbG9zZU1vZGFsIDogdGhpcy5sb2NhbFN0b3JhZ2U/LmdldEl0ZW0oJ3N0YXRlJylcclxuXHRcdCFzdGF0ZSAmJiB0aGlzLnZlbnRhbmE/LmNsb3NlZCAmJiAoc3RhdGUgPSAnY2FuY2VsJylcclxuXHRcdHRoaXMubG9hZGluZyA9IHRydWVcclxuXHRcdHN0YXRlICYmIGNvbnNvbGUubG9nKHN0YXRlKTtcclxuXHRcdFxyXG5cdFx0Ly8gRW4gbW9iaWxlLCB2ZXJpZmljYXIgc2kgZXN0YSBwZXN0YcOxYSBkZWJlIHByb2Nlc2FyIGVsIGVzdGFkb1xyXG5cdFx0aWYgKHRoaXMuaXNNb2JpbGUgJiYgdGhpcy5sb2NhbFN0b3JhZ2UpIHtcclxuXHRcdFx0Y29uc3QgbWFpblRhYiA9IHRoaXMubG9jYWxTdG9yYWdlLmdldEl0ZW0oJ21wX21haW5fdGFiJyk7XHJcblx0XHRcdGNvbnN0IGN1cnJlbnRTZXNzaW9uSWQgPSB0aGlzLmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtcF9zZXNzaW9uX2lkJyk7XHJcblx0XHRcdFxyXG5cdFx0XHQvLyBTaSBubyBlcyBsYSBwZXN0YcOxYSBwcmluY2lwYWwsIG5vIHByb2Nlc2FyXHJcblx0XHRcdGlmIChtYWluVGFiICE9PSBjdXJyZW50U2Vzc2lvbklkICYmIG1haW5UYWIgIT09IG51bGwpIHtcclxuXHRcdFx0XHRjb25zb2xlLmxvZygnRXN0YSBubyBlcyBsYSBwZXN0YcOxYSBwcmluY2lwYWwsIGlnbm9yYW5kbyBlc3RhZG8nKTtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0aWYgKHN0YXRlKSB7XHJcblx0XHRcdHRoaXMubG9hZGluZyA9IGZhbHNlXHJcblx0XHRcdHRoaXMubG9jYWxTdG9yYWdlPy5yZW1vdmVJdGVtKCdzdGF0ZScpXHJcblx0XHRcdFxyXG5cdFx0XHQvLyBMaW1waWFyIG1hcmNhZG9yZXMgZGUgbW9iaWxlXHJcblx0XHRcdGlmICh0aGlzLmlzTW9iaWxlICYmIHRoaXMubG9jYWxTdG9yYWdlKSB7XHJcblx0XHRcdFx0dGhpcy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbXBfbWFpbl90YWInKTtcclxuXHRcdFx0XHR0aGlzLmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdtcF9wYXltZW50X3N0YXJ0ZWQnKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRcclxuXHRcdFx0aWYgKHN0YXRlID09ICdzdWNjZXNzJykge1xyXG5cdFx0XHRcdHRoaXMudmVudGFuYT8uY2xvc2UoKVxyXG5cdFx0XHRcdHRoaXMucmVhZHkuZW1pdCh0cnVlKVxyXG5cdFx0XHRcdHJldHVyblxyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChzdGF0ZSA9PSAncGVuZGluZycpIHtcclxuXHRcdFx0XHR0aGlzLnZlbnRhbmE/LmNsb3NlKClcclxuXHRcdFx0XHR0aGlzLnJlYWR5LmVtaXQodHJ1ZSlcclxuXHRcdFx0XHRyZXR1cm5cclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoc3RhdGUgPT0gJ2ZhaWx1cmUnKSB7XHJcblx0XHRcdFx0dGhpcy52ZW50YW5hPy5jbG9zZSgpXHJcblx0XHRcdFx0dGhpcy5wcm9jZXNzRXJyb3IoJycpXHJcblx0XHRcdFx0cmV0dXJuXHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKHN0YXRlID09ICdjYW5jZWwnKSB7XHJcblx0XHRcdFx0dGhpcy52ZW50YW5hPy5jbG9zZSgpXHJcblx0XHRcdFx0dGhpcy5wcm9jZXNzRXJyb3IoJ1NlIGNhbmNlbG8gZWwgcGFnbyBjb24gbWVyY2FkbyBwYWdvJylcclxuXHRcdFx0XHRyZXR1cm5cclxuXHRcdFx0fVxyXG5cdFx0XHR0aGlzLnZlbnRhbmE/LmNsb3NlKClcclxuXHRcdFx0dGhpcy5wcm9jZXNzRXJyb3IoJycpXHJcblx0XHRcdHJldHVyblxyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHQvLyBTb2xvIGNvbnRpbnVhciBwb2xsaW5nIHNpIG5vIGVzIG1vYmlsZSBvIHNpIGVzIGxhIHBlc3Rhw7FhIHByaW5jaXBhbFxyXG5cdFx0aWYgKCF0aGlzLmlzTW9iaWxlIHx8ICh0aGlzLmlzTW9iaWxlICYmIHRoaXMubG9jYWxTdG9yYWdlPy5nZXRJdGVtKCdtcF9tYWluX3RhYicpID09PSB0aGlzLnNlc3Npb25JZCkpIHtcclxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0dGhpcy5jYWxsU3RhdGUoKVxyXG5cdFx0XHR9LCA1MDAwKTtcclxuXHRcdH1cclxuXHR9XHJcblx0cHJvY2Vzc0Vycm9yID0gKGVycjogYW55KSA9PiB7XHJcblx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdyhlcnIgIT0gJycgPyBlcnIgOiAncGF5bWVudC1lcnJvcicpO1xyXG5cdFx0Ly8gY29uc29sZS5sb2coXCJFUlJPUiBFTlZJTyBCQUNLICBcIiwgZXJyKTtcclxuXHR9XHJcblx0Y2xlYXJTdG9yYWdlU3RhdGUgPSAoKSA9PiB7XHJcblx0XHQvLyBTb2xvIGVqZWN1dGFyIGVuIGVsIGJyb3dzZXJcclxuXHRcdGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdGlmICh0eXBlb2Ygc2Vzc2lvblN0b3JhZ2UgIT09ICd1bmRlZmluZWQnKSB7XHJcblx0XHRcdHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3N0YXRlJylcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0dGhpcy5sb2NhbFN0b3JhZ2U/LnJlbW92ZUl0ZW0oJ3N0YXRlJylcclxuXHRcdFxyXG5cdFx0Ly8gTGltcGlhciB0YW1iacOpbiBsb3MgbWFyY2Fkb3JlcyBkZSBtb2JpbGVcclxuXHRcdGlmICh0aGlzLmlzTW9iaWxlICYmIHRoaXMubG9jYWxTdG9yYWdlKSB7XHJcblx0XHRcdHRoaXMubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ21wX3Byb2Nlc3NpbmdfdGFiJylcclxuXHRcdFx0dGhpcy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbXBfcHJvY2Vzc2luZ190YWJfdGltZScpXHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRnZXRQcmVmZXJlbmNlID0gKCkgPT5cclxuXHRcdHRoaXMuX3BheW1lbnRTZXJ2aWNlLmdldFByZWZlcmVuY2UodGhpcy5hbGxEYXRhKS50aGVuKFxyXG5cdFx0XHRyZXMgPT4ge1xyXG5cdFx0XHRcdHRoaXMucHJlZmVyZW5jZSA9IHJlcztcclxuXHRcdFx0XHR0aGlzLnVybCA9IHRoaXMucHJlZmVyZW5jZS5pbml0X3BvaW50XHJcblx0XHRcdFx0dGhpcy5yZW5kZXJNUCh0aGlzLnByZWZlcmVuY2UpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRlcnIgPT4gdGhpcy5zZXRFcnJvcignb3BlcmF0aW9uLWVycm9yJylcclxuXHRcdCk7XHJcblx0c2V0RXJyb3IgPSAobWVzc2FnZTogYW55KSA9PiB7XHJcblx0XHQvL3RoaXMuZXJyb3IgPSBtZXNzYWdlO1xyXG5cdH1cclxuXHRyZW5kZXJNUCA9IChwcmVmZXJlbmNlOiBhbnkpID0+IHtcclxuXHRcdC8vIFNvbG8gZWplY3V0YXIgZW4gZWwgYnJvd3NlclxyXG5cdFx0aWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpIHx8ICF0aGlzLndpbmRvdykge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdHRoaXMud2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIChldmVudDogYW55KSA9PiB7XHJcblx0XHRcdGlmIChldmVudC5vcmlnaW4gIT09ICdodHRwczovL3d3dy5tZXJjYWRvcGFnby5jb20uYXInIHx8ICFldmVudC5kYXRhLnR5cGUpIHtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHRcdFx0bGV0IGRhdGFUeXBlID0gZXZlbnQuZGF0YS50eXBlO1xyXG5cdFx0XHRpZiAoZGF0YVR5cGUgPT09ICdzdWJtaXQnKSB7XHJcblx0XHRcdFx0Y29uc3QgcGF5bWVudERhdGEgPSBldmVudC5kYXRhLnZhbHVlO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cdFx0fSk7XHJcblx0fVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG5cdEBpZih1cmwpe1xyXG5cdFx0QGlmKCFsb2FkaW5nKXtcclxuXHRcdFx0PGJ1dHRvbiAoY2xpY2spPVwiaW5pY2lhcigpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLTAgY29tcHJhciBtdC0zXCI+UGFnYXI8L2J1dHRvbj5cclxuXHRcdH0gQGVsc2Uge1xyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c2l0ZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG10LTJcIj5cclxuXHRcdFx0XHQ8aDM+UHJvY2VzYW5kbyBlbCBwYWdvIHBvciBtZXJjYWRvIHBhZ288L2gzPlxyXG5cdFx0XHRcdDxoNT5SZWN1ZXJkZSBoYWNlciBjbGljayBlbiBcIlZvbHZlciBhbCBzaXRpb1wiIGRlc2RlIG1lcmNhZG8gcGFnbyBwYXJhIGZpbmFsaXphciBsYSBjb21wcmEuPC9oNT5cclxuXHRcdFx0XHQ8YXBwLWxvYWRpbmctZnVsbC1lYz48L2FwcC1sb2FkaW5nLWZ1bGwtZWM+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cInJvd1wiPlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC01XCI+XHJcblx0XHRcdFx0XHRcdDxocj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC0yIHRleHQtY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdDxsYWJlbCBmb3I9XCJcIj5vPC9sYWJlbD5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cImNvbC01XCI+XHJcblx0XHRcdFx0XHRcdDxocj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yXCI+XHJcblx0XHRcdFx0PGJ1dHRvbiAoY2xpY2spPVwiY2xpY2tDbG9zZSgpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5XCI+Q2FuY2VsYXIgcGFnbzwvYnV0dG9uPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdH1cclxuXHR9IEBlbHNle1xyXG5cdDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1jb2x1bW4ganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtMlwiPlxyXG5cdFx0PGFwcC1sb2FkaW5nLWZ1bGwtZWM+PC9hcHAtbG9hZGluZy1mdWxsLWVjPlxyXG5cdDwvZGl2PlxyXG5cdH1cclxuPC9kaXY+Il19
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXAtcmVkaXJlY3QtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvcGF5bWVudC1lYy9wYXltZW50LW1ldGhvZHMvbXAtcmVkaXJlY3QtZWMvbXAtcmVkaXJlY3QtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvcGF5bWVudC1lYy9wYXltZW50LW1ldGhvZHMvbXAtcmVkaXJlY3QtZWMvbXAtcmVkaXJlY3QtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsV0FBVyxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQy9HLE9BQU8sRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBWXBELE1BQU0sT0FBTyxxQkFBcUI7SUFFekIsZUFBZSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN6QyxhQUFhLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3JDLFVBQVUsR0FBUSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUVoQixNQUFNLEdBQUcsSUFBSSxDQUFDO0lBQ2QsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUNqQixPQUFPLENBQU07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QiwyTENmbEMsazNDQTRDTSwwREQvQkssc0JBQXNCOzs0RkFFcEIscUJBQXFCO2tCQVBqQyxTQUFTOytCQUNDLG9CQUFvQixjQUNsQixJQUFJLFdBR1AsQ0FBQyxzQkFBc0IsQ0FBQzs4QkFTeEIsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNJLEtBQUs7c0JBQWQsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkluaXQsIE91dHB1dCwgUExBVEZPUk1fSUQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGF5bWVudFNlcnZpY2UsIFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2VjLXNlcnZpY2VzJztcbmltcG9ydCB7IExvYWRpbmdGdWxsRWNDb21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi93aWRnZXRzLWVjJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxudHlwZSBNcFN0YXRlID0gJ3N1Y2Nlc3MnIHwgJ3BlbmRpbmcnIHwgJ2ZhaWx1cmUnIHwgJ2NhbmNlbCc7XG50eXBlIFBoYXNlID0gJ2lkbGUnIHwgJ3BheWluZycgfCAnZmluYWxpemluZyc7XG5cbkBDb21wb25lbnQoe1xuXHRzZWxlY3RvcjogJ2FwcC1tcC1yZWRpcmVjdC1lYycsXG5cdHN0YW5kYWxvbmU6IHRydWUsXG5cdHRlbXBsYXRlVXJsOiAnLi9tcC1yZWRpcmVjdC1lYy5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL21wLXJlZGlyZWN0LWVjLmNvbXBvbmVudC5zY3NzJ10sXG5cdGltcG9ydHM6IFtMb2FkaW5nRnVsbEVjQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBNcFJlZGlyZWN0RWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG5cblx0cHJpdmF0ZSBfcGF5bWVudFNlcnZpY2UgPSBpbmplY3QoUGF5bWVudFNlcnZpY2UpO1xuXHRwcml2YXRlIF90b2FzdFNlcnZpY2UgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcblx0cHJpdmF0ZSBwbGF0Zm9ybUlkOiBhbnkgPSBpbmplY3QoUExBVEZPUk1fSUQpO1xuXHRwcml2YXRlIGZpbmlzaGVkID0gZmFsc2U7XG5cblx0QElucHV0KCkgbWV0aG9kID0gbnVsbDtcblx0QElucHV0KCkgdG90YWxfYW1vdW50ID0gMDtcblx0QElucHV0KCkgYWxsRGF0YTogYW55O1xuXHRAT3V0cHV0KCkgcmVhZHkgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cblx0cHJvdGVjdGVkIHByZWZlcmVuY2U6IGFueTtcblx0cHVibGljIHVybD86IHN0cmluZztcblxuXHQvLyBGYXNlcyBkZSBVSVxuXHRwdWJsaWMgcGhhc2U6IFBoYXNlID0gJ2lkbGUnO1xuXHRnZXQgaXNJZGxlKCkgeyByZXR1cm4gdGhpcy5waGFzZSA9PT0gJ2lkbGUnOyB9XG5cdGdldCBpc1BheWluZygpIHsgcmV0dXJuIHRoaXMucGhhc2UgPT09ICdwYXlpbmcnOyB9XG5cdGdldCBpc0ZpbmFsaXppbmcoKSB7IHJldHVybiB0aGlzLnBoYXNlID09PSAnZmluYWxpemluZyc7IH1cblxuXHRwcml2YXRlIHZlbnRhbmE6IFdpbmRvdyB8IG51bGwgPSBudWxsO1xuXHRwcml2YXRlIHdpbmRvd1JlZj86IFdpbmRvdztcblx0cHJpdmF0ZSBzaWQgPSAnJztcblx0cHJpdmF0ZSBiYz86IEJyb2FkY2FzdENoYW5uZWw7XG5cdHByaXZhdGUgcG9sbFRpbWVyPzogYW55O1xuXHRwcml2YXRlIHBvbGxTdGFydGVkQXQgPSAwO1xuXG5cdG5nT25Jbml0KCkge1xuXHRcdGlmIChpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSB7XG5cdFx0XHR0aGlzLndpbmRvd1JlZiA9IHdpbmRvdztcblxuXHRcdFx0aWYgKCdCcm9hZGNhc3RDaGFubmVsJyBpbiB3aW5kb3cpIHtcblx0XHRcdFx0dGhpcy5iYyA9IG5ldyBCcm9hZGNhc3RDaGFubmVsKCdtcF9wYXltZW50Jyk7XG5cdFx0XHRcdHRoaXMuYmMub25tZXNzYWdlID0gKGU6IE1lc3NhZ2VFdmVudCkgPT4gdGhpcy5vbk1wTWVzc2FnZShlPy5kYXRhKTtcblx0XHRcdH1cblxuXHRcdFx0d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCB0aGlzLm9uU3RvcmFnZSk7XG5cdFx0XHR3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMub25XaW5kb3dNZXNzYWdlKTtcblx0XHR9XG5cblx0XHR0aGlzLmdldFByZWZlcmVuY2UoKTtcblx0fVxuXG5cdG5nT25EZXN0cm95KCkge1xuXHRcdGlmICghaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkgcmV0dXJuO1xuXHRcdHRoaXMuYmM/LmNsb3NlKCk7XG5cdFx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3N0b3JhZ2UnLCB0aGlzLm9uU3RvcmFnZSk7XG5cdFx0d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCB0aGlzLm9uV2luZG93TWVzc2FnZSk7XG5cdFx0aWYgKHRoaXMucG9sbFRpbWVyKSBjbGVhckludGVydmFsKHRoaXMucG9sbFRpbWVyKTtcblx0fVxuXG5cdC8qKiBDYW5jZWxhIG1hbnVhbG1lbnRlIGVsIHBhZ28geSBmaW5hbGl6YSBlbCBmbHVqbyBjb24gZXN0YWRvIFwiY2FuY2VsXCIuICovXG5cdGNsaWNrQ2xvc2UgPSAoKSA9PiB7XG5cdFx0aWYgKHRoaXMuZmluaXNoZWQpIHJldHVybjtcblx0XHR0aGlzLmZpbmlzaFdpdGhTdGF0ZSgnY2FuY2VsJyk7XG5cdH1cblxuXHQvKipcblx0ICogSW5pY2lhIGVsIHBhZ28gYWJyaWVuZG8gYGluaXRfcG9pbnRgIGVuIHVuYSB2ZW50YW5hL3Blc3Rhw7FhIG51ZXZhLlxuXHQgKiBHZW5lcmEgdW4gU0lEIHkgbG8gcGVyc2lzdGUgcGFyYSBjYXNhciBsYSByZXNwdWVzdGEgZGVsIGNhdGNoLlxuXHQgKiBTaSBlbCBwb3B1cCBlcyBibG9xdWVhZG8sIGhhY2UgZmFsbGJhY2sgbmF2ZWdhbmRvIGVuIGxhIG1pc21hIHBlc3Rhw7FhLlxuXHQgKi9cblx0aW5pY2lhciA9ICgpID0+IHtcblx0XHRpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkgfHwgIXRoaXMud2luZG93UmVmIHx8ICF0aGlzLnVybCkgcmV0dXJuO1xuXG5cdFx0dGhpcy5waGFzZSA9ICdwYXlpbmcnO1xuXHRcdHRoaXMuc2lkID0gdGhpcy5nZW5TaWQoKTtcblx0XHRjb25zdCB1cmwgPSBuZXcgVVJMKHRoaXMudXJsKTtcblxuXHRcdGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdtcDpzaWQnLCB0aGlzLnNpZCk7XG5cblx0XHR0aGlzLnZlbnRhbmEgPSB0aGlzLndpbmRvd1JlZi5vcGVuKHRoaXMudXJsLCAnX2JsYW5rJyk7XG5cblx0XHQvLyBwb3B1cCBibG9xdWVhZG8g4oaSIGZhbGxiYWNrIGEgbmF2ZWdhY2nDs24gZW4gbWlzbWEgcGVzdGHDsWFcblx0XHRpZiAoIXRoaXMudmVudGFuYSB8fCB0aGlzLnZlbnRhbmEuY2xvc2VkKSB7XG5cdFx0XHR0aGlzLndpbmRvd1JlZi5sb2NhdGlvbi5ocmVmID0gdGhpcy51cmw7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gcG9sbGluZyBkZSDDumx0aW1vIHJlY3Vyc28gKGhhc3RhIDEwIG1pbnV0b3MpXG5cdFx0dGhpcy5wb2xsU3RhcnRlZEF0ID0gRGF0ZS5ub3coKTtcblx0XHRpZiAodGhpcy5wb2xsVGltZXIpIGNsZWFySW50ZXJ2YWwodGhpcy5wb2xsVGltZXIpO1xuXHRcdHRoaXMucG9sbFRpbWVyID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0aWYgKERhdGUubm93KCkgLSB0aGlzLnBvbGxTdGFydGVkQXQgPiAxMCAqIDYwICogMTAwMCkge1xuXHRcdFx0XHRjbGVhckludGVydmFsKHRoaXMucG9sbFRpbWVyKTtcblx0XHRcdFx0dGhpcy5wb2xsVGltZXIgPSBudWxsO1xuXHRcdFx0XHR0aGlzLnBoYXNlID0gJ2lkbGUnO1xuXHRcdFx0XHR0aGlzLnByb2Nlc3NFcnJvcignVGllbXBvIGRlIGVzcGVyYSBhZ290YWRvIGFsIHByb2Nlc2FyIGVsIHBhZ28uJyk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHRoaXMuY2hlY2tMb2NhbFN0b3JhZ2VPbmNlKCk7XG5cdFx0fSwgMTAwMCk7XG5cdH1cblxuXHRwcml2YXRlIG9uV2luZG93TWVzc2FnZSA9IChldmVudDogTWVzc2FnZUV2ZW50KSA9PiB7XG5cdFx0Y29uc3QgZGF0YSA9IGV2ZW50Py5kYXRhO1xuXHRcdHRoaXMub25NcE1lc3NhZ2UoZGF0YSk7XG5cdH1cblxuXHRwcml2YXRlIG9uU3RvcmFnZSA9IChlOiBTdG9yYWdlRXZlbnQpID0+IHtcblx0XHRpZiAoIWUua2V5IHx8ICF0aGlzLnNpZCkgcmV0dXJuO1xuXHRcdGlmIChlLmtleSA9PT0gYG1wOnN0YXRlOiR7dGhpcy5zaWR9YCAmJiBlLm5ld1ZhbHVlKSB7XG5cdFx0XHRjb25zdCBzdGF0ZSA9IGUubmV3VmFsdWUgYXMgTXBTdGF0ZTtcblx0XHRcdHRoaXMuZmluaXNoV2l0aFN0YXRlKHN0YXRlKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIG9uTXBNZXNzYWdlID0gKGRhdGE6IGFueSkgPT4ge1xuXHRcdGlmICghZGF0YSB8fCBkYXRhLnR5cGUgIT09ICdtcDpzdGF0ZScpIHJldHVybjtcblx0XHRpZiAoZGF0YS5zaWQgIT09IHRoaXMuc2lkKSByZXR1cm47XG5cdFx0dGhpcy5maW5pc2hXaXRoU3RhdGUoZGF0YS5zdGF0ZSBhcyBNcFN0YXRlKTtcblx0fVxuXG5cdHByaXZhdGUgY2hlY2tMb2NhbFN0b3JhZ2VPbmNlKCkge1xuXHRcdGlmICghdGhpcy5zaWQpIHJldHVybjtcblx0XHRjb25zdCBzdGF0ZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKGBtcDpzdGF0ZToke3RoaXMuc2lkfWApIGFzIE1wU3RhdGUgfCBudWxsO1xuXHRcdGlmIChzdGF0ZSkgdGhpcy5maW5pc2hXaXRoU3RhdGUoc3RhdGUpO1xuXHR9XG5cblx0LyoqIENpZXJyYSBlbCBmbHVqbyBkZSBwYWdvIGNvbiBlbCBlc3RhZG8gZmluYWwgeSBub3RpZmljYSBhbCBwYWRyZS4gKi9cblx0cHJpdmF0ZSBmaW5pc2hXaXRoU3RhdGUoc3RhdGU6IE1wU3RhdGUpIHtcblx0XHRpZiAodGhpcy5maW5pc2hlZCkgcmV0dXJuO1xuXHRcdHRoaXMuZmluaXNoZWQgPSB0cnVlO1xuXG5cdFx0aWYgKHRoaXMucG9sbFRpbWVyKSBjbGVhckludGVydmFsKHRoaXMucG9sbFRpbWVyKTtcblx0XHR0aGlzLnBvbGxUaW1lciA9IG51bGw7XG5cblx0XHRsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShgbXA6c3RhdGU6JHt0aGlzLnNpZH1gKTtcblx0XHRsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbXA6c2lkJyk7XG5cdFx0bG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3N0YXRlJyk7XG5cblx0XHR0cnkgeyB0aGlzLnZlbnRhbmEgJiYgIXRoaXMudmVudGFuYS5jbG9zZWQgJiYgdGhpcy52ZW50YW5hLmNsb3NlKCk7IH0gY2F0Y2ggeyB9XG5cdFx0dGhpcy52ZW50YW5hID0gbnVsbDtcblxuXHRcdGlmIChzdGF0ZSA9PT0gJ3N1Y2Nlc3MnIHx8IHN0YXRlID09PSAncGVuZGluZycpIHtcblx0XHRcdHRoaXMucGhhc2UgPSAnZmluYWxpemluZyc7XG5cdFx0XHR0aGlzLnJlYWR5LmVtaXQodHJ1ZSk7XG5cdFx0fSBlbHNlIGlmIChzdGF0ZSA9PT0gJ2ZhaWx1cmUnIHx8IHN0YXRlID09PSAnY2FuY2VsJykge1xuXHRcdFx0dGhpcy5waGFzZSA9ICdpZGxlJztcblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KHN0YXRlID09PSAnY2FuY2VsJyA/ICdTZSBjYW5jZWzDsyBlbCBwYWdvIGNvbiBNZXJjYWRvIFBhZ28nIDogJ3BheW1lbnQtZXJyb3InKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5waGFzZSA9ICdpZGxlJztcblx0XHRcdHRoaXMuX3RvYXN0U2VydmljZS5zaG93KCdwYXltZW50LWVycm9yJyk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBnZW5TaWQoKTogc3RyaW5nIHtcblx0XHRyZXR1cm4gYG1wXyR7RGF0ZS5ub3coKX1fJHtNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyLCA5KX1gO1xuXHR9XG5cblx0cHJpdmF0ZSBwcm9jZXNzRXJyb3IgPSAobXNnOiBzdHJpbmcpID0+IHtcblx0XHR0aGlzLl90b2FzdFNlcnZpY2Uuc2hvdyhtc2cgfHwgJ3BheW1lbnQtZXJyb3InKTtcblx0fVxuXG5cdC8qKiBMaW1waWEgcG9zaWJsZXMgcmVzaWR1b3MgZGUgZXN0YWRvIGVuIHN0b3JhZ2VzLiAqL1xuXHRjbGVhclN0b3JhZ2VTdGF0ZSA9ICgpID0+IHtcblx0XHRpZiAoIWlzUGxhdGZvcm1Ccm93c2VyKHRoaXMucGxhdGZvcm1JZCkpIHJldHVybjtcblx0XHRsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnc3RhdGUnKTtcblx0XHRjb25zdCBzaWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbXA6c2lkJyk7XG5cdFx0aWYgKHNpZCkgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYG1wOnN0YXRlOiR7c2lkfWApO1xuXHR9XG5cblx0LyoqIE9idGllbmUgbGEgcHJlZmVyZW5jaWEgZSBpbmljaWFsaXphIGB1cmxgIChpbml0X3BvaW50KS4gKi9cblx0cHJpdmF0ZSBnZXRQcmVmZXJlbmNlID0gKCk6IHZvaWQgPT4ge1xuXHRcdHRoaXMuX3BheW1lbnRTZXJ2aWNlLmdldFByZWZlcmVuY2UodGhpcy5hbGxEYXRhKS50aGVuKFxuXHRcdFx0KHJlcykgPT4ge1xuXHRcdFx0XHR0aGlzLnByZWZlcmVuY2UgPSByZXM7XG5cdFx0XHRcdHRoaXMudXJsID0gdGhpcy5wcmVmZXJlbmNlPy5pbml0X3BvaW50O1xuXHRcdFx0XHR0aGlzLnJlbmRlck1QKHRoaXMucHJlZmVyZW5jZSk7XG5cdFx0XHR9LFxuXHRcdFx0KCkgPT4gdGhpcy5zZXRFcnJvcignb3BlcmF0aW9uLWVycm9yJylcblx0XHQpO1xuXHR9O1xuXG5cdHByaXZhdGUgc2V0RXJyb3IgPSAobWVzc2FnZTogYW55KSA9PiB7XG5cdFx0Ly90aGlzLmVycm9yID0gbWVzc2FnZTtcblx0fVxuXG5cdHByaXZhdGUgcmVuZGVyTVAgPSAoX3ByZWY6IGFueSk6IHZvaWQgPT4geyAvKiBub29wICovIH07XG59XG4iLCI8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cblx0QGlmKHVybCkge1xuXG5cdEBpZihpc0lkbGUpIHtcblx0PGJ1dHRvbiAoY2xpY2spPVwiaW5pY2lhcigpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUtcHJpbWFyeSByb3VuZGVkLTAgY29tcHJhciBtdC0zXCI+UGFnYXI8L2J1dHRvbj5cblx0fVxuXG5cdEBpZihpc1BheWluZykge1xuXHQ8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c2l0ZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG10LTJcIj5cblx0XHQ8aDM+UHJvY2VzYW5kbyBlbCBwYWdvIHBvciBNZXJjYWRvIFBhZ288L2gzPlxuXHRcdDxoNT5SZWNvcmTDoSB0b2NhciDigJxWb2x2ZXIgYWwgc2l0aW/igJ0gZW4gTWVyY2FkbyBQYWdvIHBhcmEgZmluYWxpemFyLjwvaDU+XG5cdFx0PGFwcC1sb2FkaW5nLWZ1bGwtZWM+PC9hcHAtbG9hZGluZy1mdWxsLWVjPlxuXHQ8L2Rpdj5cblxuXHQ8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XG5cdFx0PGRpdiBjbGFzcz1cInJvd1wiPlxuXHRcdFx0PGRpdiBjbGFzcz1cImNvbC01XCI+XG5cdFx0XHRcdDxocj5cblx0XHRcdDwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImNvbC0yIHRleHQtY2VudGVyXCI+PGxhYmVsPm88L2xhYmVsPjwvZGl2PlxuXHRcdFx0PGRpdiBjbGFzcz1cImNvbC01XCI+XG5cdFx0XHRcdDxocj5cblx0XHRcdDwvZGl2PlxuXHRcdDwvZGl2PlxuXHQ8L2Rpdj5cblxuXHQ8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG10LTJcIj5cblx0XHQ8YnV0dG9uIChjbGljayk9XCJjbGlja0Nsb3NlKClcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnlcIj5DYW5jZWxhciBwYWdvPC9idXR0b24+XG5cdDwvZGl2PlxuXHR9XG5cblx0QGlmKGlzRmluYWxpemluZykge1xuXHQ8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c2l0ZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG10LTJcIj5cblx0XHQ8aDM+Q29uZmlybWFuZG8gcGFnbyB5IHJlZGlyaWdpZW5kb+KApjwvaDM+XG5cdFx0PGg1Pk5vIGNpZXJyZXMgbmkgcmVjYXJndWVzIGVzdGEgcMOhZ2luYS48L2g1PlxuXHRcdDxhcHAtbG9hZGluZy1mdWxsLWVjPjwvYXBwLWxvYWRpbmctZnVsbC1lYz5cblx0PC9kaXY+XG5cdH1cblxuXHR9IEBlbHNlIHtcblx0PGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yXCI+XG5cdFx0PGFwcC1sb2FkaW5nLWZ1bGwtZWM+PC9hcHAtbG9hZGluZy1mdWxsLWVjPlxuXHQ8L2Rpdj5cblx0fVxuPC9kaXY+Il19
|
|
@@ -11,14 +11,14 @@ export class OfflineEcComponent {
|
|
|
11
11
|
ngOnInit() {
|
|
12
12
|
}
|
|
13
13
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OfflineEcComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
14
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OfflineEcComponent, isStandalone: true, selector: "app-offline-ec", inputs: { method: "method", verifyValidate: "verifyValidate", setLoading: "setLoading" }, ngImport: i0, template: "<p id=\"faqs\" class=\"qt px-5\">{{ method.description }}</p>\
|
|
14
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: OfflineEcComponent, isStandalone: true, selector: "app-offline-ec", inputs: { method: "method", verifyValidate: "verifyValidate", setLoading: "setLoading" }, ngImport: i0, template: "<p id=\"faqs\" class=\"qt px-5\">{{ method.description }}</p>\n<p class=\"px-5\">{{ method.instructions }}</p>\n<div class=\"end-button\">\n\t<button class=\"btn btn-outline-primary\" (click)=\"setLoading() && verifyValidate()\">{{\n\t\t('pay-with-offline'| translate) }}</button>\n</div>\n<!-- @if(loading$ | async; as loading){\n @if(loading){\n <div class=\"mt-2\">\n <app-loading-inline-ec></app-loading-inline-ec>\n </div>\n }\n} -->", styles: [""], dependencies: [{ kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }] });
|
|
15
15
|
}
|
|
16
16
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: OfflineEcComponent, decorators: [{
|
|
17
17
|
type: Component,
|
|
18
18
|
args: [{ selector: 'app-offline-ec', standalone: true, imports: [
|
|
19
19
|
LoadingInlineEcComponent,
|
|
20
20
|
TranslateModule
|
|
21
|
-
], template: "<p id=\"faqs\" class=\"qt px-5\">{{ method.description }}</p>\
|
|
21
|
+
], template: "<p id=\"faqs\" class=\"qt px-5\">{{ method.description }}</p>\n<p class=\"px-5\">{{ method.instructions }}</p>\n<div class=\"end-button\">\n\t<button class=\"btn btn-outline-primary\" (click)=\"setLoading() && verifyValidate()\">{{\n\t\t('pay-with-offline'| translate) }}</button>\n</div>\n<!-- @if(loading$ | async; as loading){\n @if(loading){\n <div class=\"mt-2\">\n <app-loading-inline-ec></app-loading-inline-ec>\n </div>\n }\n} -->" }]
|
|
22
22
|
}], ctorParameters: () => [], propDecorators: { method: [{
|
|
23
23
|
type: Input,
|
|
24
24
|
args: [{
|
|
@@ -29,4 +29,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
29
29
|
}], setLoading: [{
|
|
30
30
|
type: Input
|
|
31
31
|
}] } });
|
|
32
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZS1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy9jaGVja291dC1lYy9wYXltZW50LWVjL3BheW1lbnQtbWV0aG9kcy9vZmZsaW5lLWVjL29mZmxpbmUtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvY2hlY2tvdXQtZWMvcGF5bWVudC1lYy9wYXltZW50LW1ldGhvZHMvb2ZmbGluZS1lYy9vZmZsaW5lLWVjLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7O0FBWXRELE1BQU0sT0FBTyxrQkFBa0I7SUFHM0IsTUFBTSxDQUFNO0lBQ04sY0FBYyxDQUFNO0lBQ3BCLFVBQVUsQ0FBTTtJQUN6QixnQkFBZ0IsQ0FBQztJQUVqQixRQUFRO0lBQ1IsQ0FBQzt3R0FUVyxrQkFBa0I7NEZBQWxCLGtCQUFrQixvS0NkL0IsK2JBWUsseUREREgsZUFBZTs7NEZBR0osa0JBQWtCO2tCQVY5QixTQUFTOytCQUNDLGdCQUFnQixjQUNkLElBQUksV0FHUDt3QkFDUix3QkFBd0I7d0JBQ3hCLGVBQWU7cUJBQ2Y7d0RBS0UsTUFBTTtzQkFGUixLQUFLO3VCQUFDO3dCQUNOLFFBQVEsRUFBRSxJQUFJO3FCQUNkO2dCQUNRLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9hZGluZ0lubGluZUVjQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vd2lkZ2V0cy1lYyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcblxuQENvbXBvbmVudCh7XG5cdHNlbGVjdG9yOiAnYXBwLW9mZmxpbmUtZWMnLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHR0ZW1wbGF0ZVVybDogJy4vb2ZmbGluZS1lYy5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsczogWycuL29mZmxpbmUtZWMuY29tcG9uZW50LnNjc3MnXSxcblx0aW1wb3J0czogW1xuXHRcdExvYWRpbmdJbmxpbmVFY0NvbXBvbmVudCxcblx0XHRUcmFuc2xhdGVNb2R1bGVcblx0XVxufSlcbmV4cG9ydCBjbGFzcyBPZmZsaW5lRWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXHRASW5wdXQoe1xuXHRcdHJlcXVpcmVkOiB0cnVlLFxuXHR9KSBtZXRob2Q6IGFueTtcblx0QElucHV0KCkgdmVyaWZ5VmFsaWRhdGU6IGFueTtcblx0QElucHV0KCkgc2V0TG9hZGluZzogYW55O1xuXHRjb25zdHJ1Y3RvcigpIHsgfVxuXG5cdG5nT25Jbml0KCkge1xuXHR9XG5cbn1cbiIsIjxwIGlkPVwiZmFxc1wiIGNsYXNzPVwicXQgcHgtNVwiPnt7IG1ldGhvZC5kZXNjcmlwdGlvbiB9fTwvcD5cbjxwIGNsYXNzPVwicHgtNVwiPnt7IG1ldGhvZC5pbnN0cnVjdGlvbnMgfX08L3A+XG48ZGl2IGNsYXNzPVwiZW5kLWJ1dHRvblwiPlxuXHQ8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lLXByaW1hcnlcIiAoY2xpY2spPVwic2V0TG9hZGluZygpICYmIHZlcmlmeVZhbGlkYXRlKClcIj57e1xuXHRcdCgncGF5LXdpdGgtb2ZmbGluZSd8IHRyYW5zbGF0ZSkgfX08L2J1dHRvbj5cbjwvZGl2PlxuPCEtLSBAaWYobG9hZGluZyQgfCBhc3luYzsgYXMgbG9hZGluZyl7XG4gIEBpZihsb2FkaW5nKXtcbiAgPGRpdiBjbGFzcz1cIm10LTJcIj5cbiAgICA8YXBwLWxvYWRpbmctaW5saW5lLWVjPjwvYXBwLWxvYWRpbmctaW5saW5lLWVjPlxuICA8L2Rpdj5cbiAgfVxufSAtLT4iXX0=
|