ng-easycommerce-v18 0.3.20-beta.1 → 0.3.21-beta.1
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 +2 -16
- package/esm2022/lib/classes/filters/attributes-filter.mjs +4 -74
- package/esm2022/lib/classes/filters/category-filter.mjs +26 -105
- package/esm2022/lib/classes/filters/filter-factory.mjs +3 -7
- package/esm2022/lib/classes/filters/price_range-filter.mjs +3 -3
- package/esm2022/lib/constants/api.constants.service.mjs +15 -19
- package/esm2022/lib/constants/core.constants.service.mjs +5 -16
- package/esm2022/lib/ec-components/abstractions-components/menu-ec.component.mjs +1 -17
- package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +16 -26
- package/esm2022/lib/ec-components/auth-ec/password-reset-ec/password-reset-ec.component.mjs +21 -25
- package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +16 -4
- package/esm2022/lib/ec-components/collection-ec/collection-ec.component.mjs +17 -41
- package/esm2022/lib/ec-components/filters-ec/filters-ec.component.mjs +14 -72
- package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +25 -41
- package/esm2022/lib/ec-components/price-range-filter/price-range-filter.component.mjs +2 -13
- package/esm2022/lib/ec-components/product-detail-ec/product-detail-ec.component.mjs +7 -12
- package/esm2022/lib/ec-components/stores-ec/stores-ec.component.mjs +9 -18
- package/esm2022/lib/ec-components/widgets-ec/decidir-ec/decidir-ec.component.mjs +6 -12
- package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +4 -6
- package/esm2022/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.mjs +17 -7
- package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +4 -4
- package/esm2022/lib/ec-services/analytics/gtm.service.mjs +6 -10
- package/esm2022/lib/ec-services/analytics/metricool-pixel.service.mjs +18 -17
- package/esm2022/lib/ec-services/checkout.service.mjs +2 -4
- package/esm2022/lib/ec-services/filters.service.mjs +18 -124
- package/esm2022/lib/ec-services/index.mjs +1 -3
- package/esm2022/lib/ec-services/pagination.service.mjs +22 -70
- package/esm2022/lib/ec-services/products.service.mjs +3 -5
- package/esm2022/lib/interceptors/index.mjs +1 -2
- package/esm2022/lib/interfaces/environment.mjs +1 -1
- package/esm2022/lib/interfaces/filter.mjs +1 -1
- package/esm2022/lib/interfaces/index.mjs +1 -2
- package/esm2022/lib/interfaces/options.mjs +1 -1
- package/esm2022/lib/providers/index.mjs +1 -2
- package/fesm2022/ng-easycommerce-v18.mjs +316 -1186
- package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
- package/lib/classes/filters/attributes-filter.d.ts +0 -24
- package/lib/classes/filters/category-filter.d.ts +3 -30
- package/lib/constants/api.constants.service.d.ts +0 -1
- package/lib/constants/core.constants.service.d.ts +0 -7
- package/lib/ec-components/abstractions-components/menu-ec.component.d.ts +0 -12
- package/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.d.ts +0 -2
- package/lib/ec-components/collection-ec/collection-ec.component.d.ts +4 -5
- package/lib/ec-components/filters-ec/filters-ec.component.d.ts +4 -25
- package/lib/ec-components/price-range-filter/price-range-filter.component.d.ts +0 -2
- package/lib/ec-services/analytics/gtm.service.d.ts +1 -1
- package/lib/ec-services/filters.service.d.ts +1 -18
- package/lib/ec-services/index.d.ts +0 -2
- package/lib/ec-services/pagination.service.d.ts +5 -21
- package/lib/ec-services/products.service.d.ts +1 -1
- package/lib/interceptors/index.d.ts +0 -1
- package/lib/interfaces/environment.d.ts +0 -1
- package/lib/interfaces/filter.d.ts +0 -1
- package/lib/interfaces/index.d.ts +0 -1
- package/lib/interfaces/options.d.ts +0 -2
- package/lib/providers/index.d.ts +0 -1
- package/package.json +1 -1
- package/esm2022/lib/ec-services/base-api.service.mjs +0 -148
- package/esm2022/lib/ec-services/runtime-config.service.mjs +0 -190
- package/esm2022/lib/interceptors/runtime-config.interceptor.mjs +0 -41
- package/esm2022/lib/interfaces/runtime-config.mjs +0 -2
- package/esm2022/lib/providers/provideRuntimeConfig.mjs +0 -42
- package/lib/ec-services/base-api.service.d.ts +0 -64
- package/lib/ec-services/runtime-config.service.d.ts +0 -63
- package/lib/interceptors/runtime-config.interceptor.d.ts +0 -7
- package/lib/interfaces/runtime-config.d.ts +0 -22
- package/lib/providers/provideRuntimeConfig.d.ts +0 -13
|
@@ -121,13 +121,11 @@ export class StoresEcComponent extends ComponentHelper {
|
|
|
121
121
|
});
|
|
122
122
|
const center = bounds.getCenter();
|
|
123
123
|
const style = [{ "elementType": "geometry", "stylers": [{ "color": "#212121" }] }, { "elementType": "labels.icon", "stylers": [{ "visibility": "off" }] }, { "elementType": "labels.text.fill", "stylers": [{ "color": "#757575" }] }, { "elementType": "labels.text.stroke", "stylers": [{ "color": "#212121" }] }, { "featureType": "administrative", "elementType": "geometry", "stylers": [{ "color": "#757575" }] }, { "featureType": "administrative.country", "elementType": "labels.text.fill", "stylers": [{ "color": "#9e9e9e" }] }, { "featureType": "administrative.locality", "elementType": "labels.text.fill", "stylers": [{ "color": "#bdbdbd" }] }, { "featureType": "poi", "elementType": "labels.text.fill", "stylers": [{ "color": "#757575" }] }, { "featureType": "poi.business", "stylers": [{ "visibility": "off" }] }, { "featureType": "poi.park", "elementType": "geometry", "stylers": [{ "color": "#181818" }] }, { "featureType": "poi.park", "elementType": "labels.text.fill", "stylers": [{ "color": "#616161" }] }, { "featureType": "poi.park", "elementType": "labels.text.stroke", "stylers": [{ "color": "#1b1b1b" }] }, { "featureType": "road", "elementType": "geometry.fill", "stylers": [{ "color": "#2c2c2c" }] }, { "featureType": "road", "elementType": "labels.icon", "stylers": [{ "visibility": "off" }] }, { "featureType": "road", "elementType": "labels.text.fill", "stylers": [{ "color": "#8a8a8a" }] }, { "featureType": "road.arterial", "elementType": "geometry", "stylers": [{ "color": "#373737" }] }, { "featureType": "road.arterial", "elementType": "labels", "stylers": [{ "visibility": "off" }] }, { "featureType": "road.highway", "elementType": "geometry", "stylers": [{ "color": "#3c3c3c" }] }, { "featureType": "road.highway", "elementType": "labels", "stylers": [{ "visibility": "off" }] }, { "featureType": "road.highway.controlled_access", "elementType": "geometry", "stylers": [{ "color": "#4e4e4e" }] }, { "featureType": "road.local", "stylers": [{ "visibility": "off" }] }, { "featureType": "road.local", "elementType": "labels.text.fill", "stylers": [{ "color": "#616161" }] }, { "featureType": "transit", "stylers": [{ "visibility": "off" }] }, { "featureType": "transit", "elementType": "labels.text.fill", "stylers": [{ "color": "#757575" }] }, { "featureType": "water", "elementType": "geometry", "stylers": [{ "color": "#000000" }] }, { "featureType": "water", "elementType": "labels.text.fill", "stylers": [{ "color": "#3d3d3d" }] }];
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
});
|
|
130
|
-
}
|
|
124
|
+
this.map = new google.maps.Map(document.getElementById('map'), {
|
|
125
|
+
zoom: 12,
|
|
126
|
+
center: center, // Centrar el mapa en el centro calculado
|
|
127
|
+
styles: style // Aplica los estilos personalizados
|
|
128
|
+
});
|
|
131
129
|
this.locations.forEach(location => {
|
|
132
130
|
const marker = new google.maps.Marker({
|
|
133
131
|
position: { lat: location.lat, lng: location.lng },
|
|
@@ -141,12 +139,8 @@ export class StoresEcComponent extends ComponentHelper {
|
|
|
141
139
|
marker.set('id', location.id); // Associate marker with its ID
|
|
142
140
|
this.markers.push(marker);
|
|
143
141
|
marker.addListener('click', () => {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
if (typeof document !== 'undefined') {
|
|
147
|
-
elemento = document.getElementById(location.id);
|
|
148
|
-
contenedor = document.getElementById('home');
|
|
149
|
-
}
|
|
142
|
+
const elemento = document.getElementById(location.id);
|
|
143
|
+
const contenedor = document.getElementById('home');
|
|
150
144
|
if (elemento && contenedor) {
|
|
151
145
|
contenedor.scrollTo({
|
|
152
146
|
top: elemento.offsetTop - contenedor.offsetTop + contenedor.scrollTop,
|
|
@@ -174,10 +168,7 @@ export class StoresEcComponent extends ComponentHelper {
|
|
|
174
168
|
showStoreOnMap(storeCode) {
|
|
175
169
|
this.stopBounce();
|
|
176
170
|
const marker = this.markers.find(m => m.get('id') === storeCode);
|
|
177
|
-
|
|
178
|
-
if (typeof document !== 'undefined') {
|
|
179
|
-
elemento = document.getElementById(storeCode);
|
|
180
|
-
}
|
|
171
|
+
const elemento = document.getElementById(storeCode);
|
|
181
172
|
if (this.ultimoElementoSeleccionado !== null) {
|
|
182
173
|
// Quitar la clase del último elemento seleccionado
|
|
183
174
|
this.ultimoElementoSeleccionado.classList.remove('selected');
|
|
@@ -203,4 +194,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
203
194
|
type: Component,
|
|
204
195
|
args: [{ selector: 'app-store-ec', standalone: true, imports: [TranslateModule], template: "<!-- <div class=\"row w-100 mx-auto my-4 px-3 bb-s bt-md-s py-1\">\n <strong>{{ 'stores' | translate }}</strong>\n</div>\n@if(stores){\n<div class=\"row\">\n <div class=\"col-12 col-md-3 order-1 order-md-1\">\n <div class=\"row\">\n <div class=\"form-group w-100\">\n <select (change)=\"selectChange($event.target.value)\" class=\"rounded-0 form-control form-control-sm\"\n id=\"exampleFormControlSelect1\">\n <option selected [value]=\"''\">Seleccione provincia</option>\n <option [value]=\"item.code\" *ngFor=\"let item of getProvices(stores)\"> {{item.name}}\n </option>\n </select>\n </div>\n </div>\n </div>\n <div class=\"col-12 col-md-3 order-3 order-md-2\">\n <div class=\"container-fluid scrolleable\" *ngIf=\"filterStores && filterStores.length\">\n <div class=\"row mb-1\" *ngFor=\"let store of filterStores; let i = index\">\n <div class=\"col-12\">\n <h6 class=\"\"><strong>{{ store.name }}</strong></h6>\n <label>{{ store.address }}</label>\n <label>{{ store.phone }}</label>\n <div [innerHtml]=\"store.note\"></div>\n <div class=\"text-right\">\n\n <a *ngIf=\"store.urlMap\" (click)=\"updateMap (store.urlMap)\" class=\"custom-a\">Ver mapa</a>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"col-12 col-md-6 order-2 order-md-3 my-4 mt-md-0\">\n\n <iframe id=\"map-iframe\" [src]=\"urlmap\" frameborder=\"0\"></iframe>\n </div>\n</div>\n}@else {\n<div class=\"d-flex flex-row justify-content-center my-5 align-items-center alto-total\">\n <h5 class=\"text-center\">{{ 'no-stores' | translate }}</h5>\n</div>\n}\n\n\n\n<ng-template #loading>\n <div class=\"container\">\n <div class=\"row\">\n <div class=\"col-12 align-items-center\">\n <div class=\"d-flex flex-column justify-content-center align-items-center my-5\">\n <app-loading-full-ec></app-loading-full-ec>\n </div>\n </div>\n </div>\n </div>\n</ng-template> -->", styles: [".scrolleable{height:70vh;overflow:auto}@media screen and (max-width: 768px){.scrolleable{height:auto}}.background-white{background-color:#fff}.alto-total{height:60vh}.custom-a{color:#000}#map-iframe{width:100%;border:0;height:100%}@media screen and (max-width: 425px){#map-iframe{height:400px}}\n"] }]
|
|
205
196
|
}], ctorParameters: () => [{ type: i1.StoresService }, { type: i2.CoreConstantsService }, { type: i3.DomSanitizer }] });
|
|
206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVzLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL3N0b3Jlcy1lYy9zdG9yZXMtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvc3RvcmVzLWVjL3N0b3Jlcy1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7OztBQVV0RCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQWNoQztJQUFxQztJQUF5QztJQWJ6RixNQUFNLEdBQUcsSUFBSSxlQUFlLENBQVUsRUFBRSxDQUFDLENBQUM7SUFDMUMsWUFBWSxHQUFtQixJQUFJLENBQUE7SUFDbkMsU0FBUyxHQUFtQixJQUFJLENBQUE7SUFDaEMsZUFBZSxHQUFtQixJQUFJLENBQUE7SUFDdEMsUUFBUSxHQUFHLElBQUksQ0FBQTtJQUNmLE1BQU0sQ0FBQztJQUNQLFNBQVMsR0FBRyxFQUFFLENBQUE7SUFDYixHQUFHLENBQVU7SUFDYixHQUFHLENBQU07SUFDVCxPQUFPLEdBQVUsRUFBRSxDQUFDO0lBQ3BCLFNBQVMsR0FBVSxFQUFFLENBQUM7SUFDdkIsMEJBQTBC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RUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLFVBQVUsRUFBQyxhQUFhLEVBQUMsb0JBQW9CLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLE1BQU0sRUFBQyxhQUFhLEVBQUMsZUFBZSxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLGFBQWEsRUFBQyxNQUFNLEVBQUMsYUFBYSxFQUFDLGFBQWEsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLFlBQVksRUFBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsTUFBTSxFQUFDLGFBQWEsRUFBQyxrQkFBa0IsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsZUFBZSxFQUFDLGFBQWEsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLGVBQWUsRUFBQyxhQUFhLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsWUFBWSxFQUFDLEtBQUssRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLGFBQWEsRUFBQyxjQUFjLEVBQUMsYUFBYSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsY0FBYyxFQUFDLGFBQWEsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxZQUFZLEVBQUMsS0FBSyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLGdDQUFnQyxFQUFDLGFBQWEsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFD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QUFXLEVBQUUsQ0FBQztZQUNsQyxRQUFRLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQ1AsSUFBSSxJQUFJLENBQUMsMEJBQTBCLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDMUMsbURBQW1EO1lBQ25ELElBQUksQ0FBQywwQkFBMEIsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxtREFBbUQ7UUFDbkQsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQywwQkFBMEIsR0FBRyxRQUFRLENBQUM7UUFDN0MsQ0FBQztRQUNGLElBQUksTUFBTSxFQUFFLENBQUM7WUFDVCxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDTCxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3pCLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUixDQUFDO3dHQWpOUyxpQkFBaUI7NEZBQWpCLGlCQUFpQiwrRkNuQjlCLDJ3RUF3RGtCLGlXRHZDSixlQUFlOzs0RkFFaEIsaUJBQWlCO2tCQVA3QixTQUFTOytCQUNJLGNBQWMsY0FHWixJQUFJLFdBQ1AsQ0FBQyxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50SGVscGVyIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyJztcbmltcG9ydCB7IENvcmVDb25zdGFudHNTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgU3RvcmVzU2VydmljZSB9IGZyb20gJy4uLy4uL2VjLXNlcnZpY2VzL3N0b3Jlcy5zZXJ2aWNlJztcbmltcG9ydCB7IHNraXBXaGlsZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuZGVjbGFyZSB2YXIgJDogYW55O1xuZGVjbGFyZSB2YXIgZ29vZ2xlOiBhbnk7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1zdG9yZS1lYycsXG4gICAgdGVtcGxhdGVVcmw6ICdzdG9yZXMtZWMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydzdG9yZXMtZWMuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtUcmFuc2xhdGVNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFN0b3Jlc0VjQ29tcG9uZW50IGV4dGVuZHMgQ29tcG9uZW50SGVscGVyICB7XG4gICAgcHVibGljIHN0b3JlcyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U3RvcmVbXT4oW10pO1xuICAgIHB1YmxpYyBmaWx0ZXJTdG9yZXM6IFN0b3JlW10gfCBudWxsID0gbnVsbFxuICAgIHB1YmxpYyBzdG9yZXNBbGw6IFN0b3JlW10gfCBudWxsID0gbnVsbFxuICAgIHB1YmxpYyBleGNsdXNpdmVTdG9yZXM6IFN0b3JlW10gfCBudWxsID0gbnVsbFxuICAgIHB1YmxpYyBpbWFnZU1hcCA9IHRydWVcbiAgICBwdWJsaWMgdXJsbWFwO1xuICAgIHB1YmxpYyBwcm92aW5jZXMgPSBbXVxuICAgIHByaXZhdGUgdXJsITogc3RyaW5nO1xuICAgIHByaXZhdGUgbWFwOiBhbnk7XG4gICAgcHJpdmF0ZSBtYXJrZXJzOiBhbnlbXSA9IFtdO1xuICAgIHByaXZhdGUgbG9jYXRpb25zOiBhbnlbXSA9IFtdO1xuICAgIHB1YmxpYyB1bHRpbW9FbGVtZW50b1NlbGVjY2lvbmFkbzogYW55ID0gbnVsbDtcblxuICAgY29uc3RydWN0b3IocHVibGljIHN0b3Jlc1NlcnZpY2U6IFN0b3Jlc1NlcnZpY2UsIHB1YmxpYyBjb25zdHM6IENvcmVDb25zdGFudHNTZXJ2aWNlICwgcHJvdGVjdGVkIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnVybG1hcCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCgnaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2VtYmVkP3BiPSExbTEwITFtOCExbTMhMWQxMzEzNy41MTk2ODg5NTc1NDUhMmQtNTguMzg4ODE2MyEzZC0zNC41OTQ1NTMzITNtMiExaTEwMjQhMmk3NjghNGYxMy4xITVlMCEzbTIhMXNlcy00MTkhMnNhciE0djE1MjM4ODkyMDQxNDgnKTtcbiAgICB0aGlzLnN0b3Jlc1NlcnZpY2Uuc3RvcmVzXG4gICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoc3RvcmVzOiBTdG9yZVtdIHwgbnVsbCk6IHN0b3JlcyBpcyBTdG9yZVtdID0+IEFycmF5LmlzQXJyYXkoc3RvcmVzKSAmJiBzdG9yZXMubGVuZ3RoID4gMClcbiAgICApXG4gICAgLnN1YnNjcmliZShzdG9yZXMgPT4ge1xuICAgICAgICB0aGlzLnN0b3Jlc0FsbCA9IHN0b3JlcztcbiAgICAgICAgaWYgKHN0b3Jlcykge1xuICAgICAgICAgICAgdGhpcy5zdG9yZXMubmV4dChzdG9yZXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXhjbHVzaXZlU3RvcmVzID0gc3RvcmVzID8gc3RvcmVzLmZpbHRlcihzdG9yZSA9PiBzdG9yZS5leGNsdXNpdmUgKSA6IG51bGw7XG4gICAgICAgIC8vIHRoaXMuc2VsZWN0Q2hhbmdlKCcnKTtcbi8vICAgIGNvbnNvbGUubG9nKCdTdG9yZXM6Jywgc3RvcmVzKTtcbiAgICB9KTtcbiAgICB0aGlzLmVjT25Db25zdHJ1Y3QoKTtcbn1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmVjT25Jbml0KClcbiAgICB9XG5cbiAgICB1cGRhdGVNYXAodXJsOnN0cmluZykge1xuICAgICAgICB1cmwgPSB1cmwuaW5jbHVkZXMgKCdlbWJlZCcpID8gdXJsIDogJ2h0dHBzOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy9lbWJlZD9wYj0hMW0xMCExbTghMW0zITFkMTMxMzcuNTE5Njg4OTU3NTQ1ITJkLTU4LjM4ODgxNjMhM2QtMzQuNTk0NTUzMyEzbTIhMWkxMDI0ITJpNzY4ITRmMTMuMSE1ZTAhM20yITFzZXMtNDE5ITJzYXIhNHYxNTIzODg5MjA0MTQ4J1xuICAgICAgICB0aGlzLnVybG1hcCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh1cmwpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE9idGllbmUgdG9kYXMgbGEgcHJvdmluY2lhcyBxdWUgZmlndXJlbiBlbiBlbCBhcnJlZ2xvXG4gICAgICogQHBhcmFtIHN0b3JlcyBBcnJlZ2xvIGRlIHRpZW5kYXNcbiAgICAgKiBAcmV0dXJucyB7QXJyYXl9IEFycmVnbG8gZGUgcHJvdmluY2lhc1xuICAgICAqL1xuICAgIGdldFByb3ZpY2VzID0gKHN0b3JlczogU3RvcmVbXSkgPT4ge1xuICAgICAgICBsZXQgcHJvdmluY2VzT3B0OiBhbnlbXSA9IFtdXG4gICAgICAgIHN0b3Jlcy5mb3JFYWNoKHN0b3JlID0+IHtcbiAgICAgICAgICAgIGlmIChwcm92aW5jZXNPcHQuZmluZChzID0+IHMuY29kZSA9PSBzdG9yZS5wcm92aW5jZS5jb2RlKSA9PSAgdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcHJvdmluY2VzT3B0LnB1c2goc3RvcmUucHJvdmluY2UpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gcHJvdmluY2VzT3B0XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJldG9ybmEgdW4gYXJyZWdsbyBkZSBvYmpldG9zIGZvcm1hZG8gcG9yIGxhcyBjbGF2ZXNcbiAgICAgKiAgICAgIFwicHJvdmluY2VcIihjb250aWVuZSB1biBvYmpldG8gcHJvdmluY2lhKSB5XG4gICAgICogICAgICBcInN0b3Jlc1wiIChjb250aWVuZSB1biBhcnJlZ2xvIGRlIHRpZW5kYXMgcGVydGVuZWNpZW50ZXMgYSBsYSBwcm92aW5jaWEpXG4gICAgICogQHBhcmFtIHN0b3JlcyBPcGNpb25hbCwgYXJyZWdsbyBkZSB0aWVuZGFzIGEgbGEgcXVlIHNlIGxlIHF1aWVyZSBhcGxpY2FyIGxhIGRpdmlzaW9uIHBvciBwcm92aW5jaWFcbiAgICAgKiBAcmV0dXJucyB7QXJyYXk8e1wicHJvdmluY2VcIiwgXCJzdG9yZXNcIn0+fVxuICAgICAqL1xuICAgIGdldFN0b3Jlc0J5UHJvdmluY2VzID0gKHN0b3JlczogU3RvcmVbXSA9IHRoaXMuc3RvcmVzLnZhbHVlKSA9PiB7XG4gICAgICAgIGxldCBzdG9yZXNCeVByb3ZpbmNlczogeyBwcm92aW5jZTogYW55LCBzdG9yZXM6IFN0b3JlW10gfVtdID0gW11cbiAgICAgICAgaWYoc3RvcmVzKXtcbiAgICAgICAgICAgIGxldCBwcm92aW5jZXMgPSB0aGlzLmdldFByb3ZpY2VzKHN0b3JlcylcbiAgICAgICAgICAgIHByb3ZpbmNlcy5mb3JFYWNoKCBlbGVtID0+IHtcbiAgICAgICAgICAgICAgICBsZXQgYXV4ID0gc3RvcmVzPy5maWx0ZXIoc3RvcmUgPT4gIHN0b3JlLnByb3ZpbmNlLmNvZGUgPT0gZWxlbS5jb2RlKVxuICAgICAgICAgICAgICAgIHN0b3Jlc0J5UHJvdmluY2VzLnB1c2goe3Byb3ZpbmNlOmVsZW0sc3RvcmVzOmF1eH0pXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzdG9yZXNCeVByb3ZpbmNlc1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBSZXRvcm5hIGxhcyB0aWVuZGFzIGNvbi9zaW4gcmV0aXJvIGVuIGVsIGxvY2FsXG4gICAgICogQHBhcmFtIHN0b3JlcyBPcGNpb25hbCwgYXJyZWdsbyBkZSB0aWVuZGFzXG4gICAgICogQHBhcmFtIGNvbmQgT3BjaW9uYWwsIFNpIGVzIFwidHJ1ZVwiIG9idGllbmUgbGFzIHRpZW5kYXMgY29uIHJldGlybyBsb2NhbCBjYXNvIGNvbnRyYXJpbyBcImZhbHNlXCJcbiAgICAgKiBAcmV0dXJucyB7QXJyYXk8U3RvcmU+fSBBcnJlZ2xvIGRlIFN0b3JlXG4gICAgICovXG4gICAgZ2V0UGlja3VwU3RvcmVzID0gKHN0b3JlcyA9IHRoaXMuc3RvcmVzLnZhbHVlLCBjb25kOkJvb2xlYW4gPSB0cnVlKSA9PiBzdG9yZXMgJiYgc3RvcmVzLmZpbHRlcihzdG9yZSA9PiBjb25kID09IHN0b3JlLnBpY2t1cFN0b3JlKVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIE1ldG9kbyBxdWUgZGV2dWVsdmUgbGFzIHRpZW5kYXMgcXVlIE5PIHNvbiBleGNsdXNpdmFzLlxuICAgICAqIEByZXR1cm5zIHtBcnJheTxTdG9yZT59IEFycmVnbG8gZGUgU3RvcmVcbiAgICAgKi9cbiAgICBnZXROb25FeGNsdXNpdmVTdG9yZXMgPSAoKSA9PiB0aGlzLnN0b3Jlcy52YWx1ZS5maWx0ZXIoc3RvcmUgPT4gIXN0b3JlLmV4Y2x1c2l2ZSApXG5cbiAgICBzZWxlY3RDaGFuZ2UgPSAoc2VsZWN0OiBzdHJpbmcpID0+IHtcbiAgICAgICAgdGhpcy5maWx0ZXJTdG9yZXMgPSBzZWxlY3QgIT09ICcnICYmIHRoaXMuc3RvcmVzQWxsXG4gICAgICAgICAgICA/IHRoaXMuc3RvcmVzQWxsLmZpbHRlcihzdG9yZSA9PiBzdG9yZS5wcm92aW5jZS5jb2RlID09IHNlbGVjdClcbiAgICAgICAgICAgIDogdGhpcy5zdG9yZXNBbGw7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgaW5pdE1hcCgpOiB2b2lkIHtcblxuICAgICB0aGlzLnN0b3Jlc1NlcnZpY2Uuc3RvcmVzLnBpcGUoXG4gICAgICAgICBza2lwV2hpbGUoc3RvcmVzID0+ICFzdG9yZXMgfHwgc3RvcmVzLmxlbmd0aCA9PT0gMCkgLy8gT21pdGlyIHZhbG9yZXMgdmFjw61vc1xuICAgICAgICkuc3Vic2NyaWJlKFxuICAgICAgICAgKHJlcykgPT4ge1xuICAgICAgICAgICAvLyB0aGlzLnN0b3Jlcy5uZXh0KHJlcyA/PyBbXSk7IC8vIEVsaW1pbmFkbyBwYXJhIG5vIHNvYnJlc2NyaWJpciBlbCBsaXN0YWRvIHByaW5jaXBhbFxuXG4gICAgICAgICAgIHRoaXMuc3RvcmVzLnZhbHVlLmZvckVhY2goc3RvcmUgPT4ge1xuICAgICAgICAgICAgIGxldCBkYXRvcyA9IHtcbiAgICAgICAgICAgICAgIGlkOiBzdG9yZS5jb2RlLFxuICAgICAgICAgICAgICAgbGF0OiBwYXJzZUZsb2F0KHN0b3JlLmxhdGl0dWRlICE9PSB1bmRlZmluZWQgPyBzdG9yZS5sYXRpdHVkZS50b1N0cmluZygpIDogJzAnKSxcbiAgICAgICAgICAgICAgIGxuZzogcGFyc2VGbG9hdChzdG9yZS5sb25naXR1ZGUgIT09IHVuZGVmaW5lZCA/IHN0b3JlLmxvbmdpdHVkZS50b1N0cmluZygpIDogJzAnKSxcbiAgICAgICAgICAgICAgIHRpdGxlOiBzdG9yZS5uYW1lICsgJyAtICcgKyBzdG9yZS5hZGRyZXNzLFxuICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHN0b3JlLnBob25lLFxuICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvLyAgY29uc29sZS5sb2coZGF0b3MpXG4gICAgICAgICAgICAgdGhpcy5sb2NhdGlvbnMucHVzaChkYXRvcyk7XG5cbiAgICAgICAgICAgfSk7XG4gICAgICAgICAgIGNvbnN0IGJvdW5kcyA9IG5ldyBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHMoKTtcbiAgICAgICAgICAgdGhpcy5sb2NhdGlvbnMuZm9yRWFjaChsb2NhdGlvbiA9PiB7XG4gICAgICAgICAgICAgYm91bmRzLmV4dGVuZChuZXcgZ29vZ2xlLm1hcHMuTGF0TG5nKGxvY2F0aW9uLmxhdCwgbG9jYXRpb24ubG5nKSk7XG4gICAgICAgICAgIH0pO1xuICAgICAgICAgICBjb25zdCBjZW50ZXIgPSBib3VuZHMuZ2V0Q2VudGVyKCk7XG4gICAgICAgICAgIGNvbnN0IHN0eWxlID0gW3tcImVsZW1lbnRUeXBlXCI6XCJnZW9tZXRyeVwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzIxMjEyMVwifV19LHtcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMuaWNvblwiLFwic3R5bGVyc1wiOlt7XCJ2aXNpYmlsaXR5XCI6XCJvZmZcIn1dfSx7XCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzc1NzU3NVwifV19LHtcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5zdHJva2VcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMyMTIxMjFcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwiYWRtaW5pc3RyYXRpdmVcIixcImVsZW1lbnRUeXBlXCI6XCJnZW9tZXRyeVwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzc1NzU3NVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJhZG1pbmlzdHJhdGl2ZS5jb3VudHJ5XCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzllOWU5ZVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJhZG1pbmlzdHJhdGl2ZS5sb2NhbGl0eVwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVscy50ZXh0LmZpbGxcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiNiZGJkYmRcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicG9pXCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzc1NzU3NVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJwb2kuYnVzaW5lc3NcIixcInN0eWxlcnNcIjpbe1widmlzaWJpbGl0eVwiOlwib2ZmXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcInBvaS5wYXJrXCIsXCJlbGVtZW50VHlwZVwiOlwiZ2VvbWV0cnlcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMxODE4MThcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicG9pLnBhcmtcIixcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5maWxsXCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjNjE2MTYxXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcInBvaS5wYXJrXCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuc3Ryb2tlXCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjMWIxYjFiXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcInJvYWRcIixcImVsZW1lbnRUeXBlXCI6XCJnZW9tZXRyeS5maWxsXCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjMmMyYzJjXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcInJvYWRcIixcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMuaWNvblwiLFwic3R5bGVyc1wiOlt7XCJ2aXNpYmlsaXR5XCI6XCJvZmZcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZFwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVscy50ZXh0LmZpbGxcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiM4YThhOGFcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5hcnRlcmlhbFwiLFwiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5XCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjMzczNzM3XCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcInJvYWQuYXJ0ZXJpYWxcIixcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHNcIixcInN0eWxlcnNcIjpbe1widmlzaWJpbGl0eVwiOlwib2ZmXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcInJvYWQuaGlnaHdheVwiLFwiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5XCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjM2MzYzNjXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcInJvYWQuaGlnaHdheVwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVsc1wiLFwic3R5bGVyc1wiOlt7XCJ2aXNpYmlsaXR5XCI6XCJvZmZcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5oaWdod2F5LmNvbnRyb2xsZWRfYWNjZXNzXCIsXCJlbGVtZW50VHlwZVwiOlwiZ2VvbWV0cnlcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiM0ZTRlNGVcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5sb2NhbFwiLFwic3R5bGVyc1wiOlt7XCJ2aXNpYmlsaXR5XCI6XCJvZmZcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5sb2NhbFwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVscy50ZXh0LmZpbGxcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiM2MTYxNjFcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwidHJhbnNpdFwiLFwic3R5bGVyc1wiOlt7XCJ2aXNpYmlsaXR5XCI6XCJvZmZcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwidHJhbnNpdFwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVscy50ZXh0LmZpbGxcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiM3NTc1NzVcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwid2F0ZXJcIixcImVsZW1lbnRUeXBlXCI6XCJnZW9tZXRyeVwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzAwMDAwMFwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJ3YXRlclwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVscy50ZXh0LmZpbGxcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMzZDNkM2RcIn1dfV07XG4gICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubWFwID0gbmV3IGdvb2dsZS5tYXBzLk1hcChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFwJyksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgem9vbTogMTIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlbnRlcjogY2VudGVyLCAvLyBDZW50cmFyIGVsIG1hcGEgZW4gZWwgY2VudHJvIGNhbGN1bGFkb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IHN0eWxlIC8vIEFwbGljYSBsb3MgZXN0aWxvcyBwZXJzb25hbGl6YWRvc1xuICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgIHRoaXMubG9jYXRpb25zLmZvckVhY2gobG9jYXRpb24gPT4ge1xuICAgICAgICAgICAgIGNvbnN0IG1hcmtlciA9IG5ldyBnb29nbGUubWFwcy5NYXJrZXIoe1xuICAgICAgICAgICAgICAgcG9zaXRpb246IHsgbGF0OiBsb2NhdGlvbi5sYXQsIGxuZzogbG9jYXRpb24ubG5nIH0sXG4gICAgICAgICAgICAgICBtYXA6IHRoaXMubWFwLFxuICAgICAgICAgICAgICAgdGl0bGU6IGxvY2F0aW9uLnRpdGxlLFxuICAgICAgICAgICAgICAgaWNvbjoge1xuICAgICAgICAgICAgICAgIHVybDogXCIuLi8uLi8uLi9hc3NldHMvbG9jYXRpb24uc3ZnXCIsXG4gICAgICAgICAgICAgICAgc2NhbGVkU2l6ZTogbmV3IGdvb2dsZS5tYXBzLlNpemUoMzAsIDMwKVxuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgIG1hcmtlci5zZXQoJ2lkJywgbG9jYXRpb24uaWQpOyAvLyBBc3NvY2lhdGUgbWFya2VyIHdpdGggaXRzIElEXG4gICAgICAgICAgICAgdGhpcy5tYXJrZXJzLnB1c2gobWFya2VyKTtcbiAgICAgICAgICAgICBtYXJrZXIuYWRkTGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVsZW1lbnRvID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW5lZG9yID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudG8gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChsb2NhdGlvbi5pZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVuZWRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdob21lJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRvICYmIGNvbnRlbmVkb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgIGNvbnRlbmVkb3Iuc2Nyb2xsVG8oe1xuICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogZWxlbWVudG8ub2Zmc2V0VG9wIC0gY29udGVuZWRvci5vZmZzZXRUb3AgKyBjb250ZW5lZG9yLnNjcm9sbFRvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCdcbiAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgaWYgKHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgIC8vIFF1aXRhciBsYSBjbGFzZSBkZWwgw7psdGltbyBlbGVtZW50byBzZWxlY2Npb25hZG9cbiAgICAgICAgICAgICAgICAgICAgIHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKTtcbiAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgIC8vIEFncmVnYXIgdW5hIGNsYXNlIGFsIG51ZXZvIGVsZW1lbnRvIHNlbGVjY2lvbmFkb1xuICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudG8pIHtcbiAgICAgICAgICAgICAgICAgICBlbGVtZW50by5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpO1xuICAgICAgICAgICAgICAgICAgIHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8gPSBlbGVtZW50bztcbiAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgIHRoaXMuc3RvcEJvdW5jZSgpO1xuICAgICAgICAgICAgICAgICBtYXJrZXIuc2V0QW5pbWF0aW9uKGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5CT1VOQ0UpO1xuICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgdGhpcy5tYXAuZml0Qm91bmRzKGJvdW5kcyk7XG4gICAgICAgICB9LFxuICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgYWwgb2J0ZW5lciBsYXMgdGllbmRhczonLCBlcnJvcik7XG4gICAgICAgICB9XG4gICAgICAgKTtcbiAgICAgICB9KTtcblxuICAgICB9XG5cbiAgIHNob3dTdG9yZU9uTWFwKHN0b3JlQ29kZTogc3RyaW5nKSB7XG4gICAgICAgdGhpcy5zdG9wQm91bmNlKCk7XG4gICAgICAgY29uc3QgbWFya2VyID0gdGhpcy5tYXJrZXJzLmZpbmQobSA9PiBtLmdldCgnaWQnKSA9PT0gc3RvcmVDb2RlKTtcbiAgICAgICAgICAgICBsZXQgZWxlbWVudG8gPSBudWxsO1xuICAgICAgICAgICAgIGlmICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgIGVsZW1lbnRvID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3RvcmVDb2RlKTtcbiAgICAgICAgICAgICB9XG4gICAgICAgaWYgKHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8gIT09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIFF1aXRhciBsYSBjbGFzZSBkZWwgw7psdGltbyBlbGVtZW50byBzZWxlY2Npb25hZG9cbiAgICAgICAgICAgIHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFncmVnYXIgdW5hIGNsYXNlIGFsIG51ZXZvIGVsZW1lbnRvIHNlbGVjY2lvbmFkb1xuICAgICAgICBpZiAoZWxlbWVudG8pIHtcbiAgICAgICAgICBlbGVtZW50by5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpO1xuICAgICAgICAgIHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8gPSBlbGVtZW50bztcbiAgICAgICAgfVxuICAgICAgIGlmIChtYXJrZXIpIHtcbiAgICAgICAgICAgbWFya2VyLnNldEFuaW1hdGlvbihnb29nbGUubWFwcy5BbmltYXRpb24uQk9VTkNFKTtcbiAgICAgICB9XG4gICB9XG5cbiAgIHN0b3BCb3VuY2UoKXtcbiAgICAgICB0aGlzLm1hcmtlcnMuZm9yRWFjaChtYXJrZXIgPT4ge1xuICAgICAgICAgICAgbWFya2VyLnNldEFuaW1hdGlvbihudWxsKTtcbiAgICAgICAgfSk7XG4gICB9XG5cblxufVxuIiwiPCEtLSA8ZGl2IGNsYXNzPVwicm93IHctMTAwIG14LWF1dG8gbXktNCBweC0zIGJiLXMgYnQtbWQtcyBweS0xXCI+XG4gICAgPHN0cm9uZz57eyAnc3RvcmVzJyB8IHRyYW5zbGF0ZSB9fTwvc3Ryb25nPlxuPC9kaXY+XG5AaWYoc3RvcmVzKXtcbjxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC0zIG9yZGVyLTEgb3JkZXItbWQtMVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB3LTEwMFwiPlxuICAgICAgICAgICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RDaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSlcIiBjbGFzcz1cInJvdW5kZWQtMCBmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJleGFtcGxlRm9ybUNvbnRyb2xTZWxlY3QxXCI+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQgW3ZhbHVlXT1cIicnXCI+U2VsZWNjaW9uZSBwcm92aW5jaWE8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaXRlbS5jb2RlXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0UHJvdmljZXMoc3RvcmVzKVwiPiB7e2l0ZW0ubmFtZX19XG4gICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTMgb3JkZXItMyBvcmRlci1tZC0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWQgc2Nyb2xsZWFibGVcIiAqbmdJZj1cImZpbHRlclN0b3JlcyAmJiBmaWx0ZXJTdG9yZXMubGVuZ3RoXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTFcIiAqbmdGb3I9XCJsZXQgc3RvcmUgb2YgZmlsdGVyU3RvcmVzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJcIj48c3Ryb25nPnt7IHN0b3JlLm5hbWUgfX08L3N0cm9uZz48L2g2PlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgc3RvcmUuYWRkcmVzcyB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyBzdG9yZS5waG9uZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySHRtbF09XCJzdG9yZS5ub3RlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwic3RvcmUudXJsTWFwXCIgKGNsaWNrKT1cInVwZGF0ZU1hcCAoc3RvcmUudXJsTWFwKVwiIGNsYXNzPVwiY3VzdG9tLWFcIj5WZXIgbWFwYTwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNiBvcmRlci0yIG9yZGVyLW1kLTMgbXktNCBtdC1tZC0wXCI+XG5cbiAgICAgICAgPGlmcmFtZSBpZD1cIm1hcC1pZnJhbWVcIiBbc3JjXT1cInVybG1hcFwiIGZyYW1lYm9yZGVyPVwiMFwiPjwvaWZyYW1lPlxuICAgIDwvZGl2PlxuPC9kaXY+XG59QGVsc2Uge1xuPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG15LTUgYWxpZ24taXRlbXMtY2VudGVyIGFsdG8tdG90YWxcIj5cbiAgICA8aDUgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPnt7ICduby1zdG9yZXMnIHwgdHJhbnNsYXRlIH19PC9oNT5cbjwvZGl2PlxufVxuXG5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG15LTVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1sb2FkaW5nLWZ1bGwtZWM+PC9hcHAtbG9hZGluZy1mdWxsLWVjPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4gLS0+Il19
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmVzLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL3N0b3Jlcy1lYy9zdG9yZXMtZWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctZWFzeWNvbW1lcmNlLXYxOC9zcmMvbGliL2VjLWNvbXBvbmVudHMvc3RvcmVzLWVjL3N0b3Jlcy1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFHakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7OztBQVV0RCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsZUFBZTtJQWNoQztJQUFxQztJQUF5QztJQWJ6RixNQUFNLEdBQUcsSUFBSSxlQUFlLENBQVUsRUFBRSxDQUFDLENBQUM7SUFDMUMsWUFBWSxHQUFtQixJQUFJLENBQUE7SUFDbkMsU0FBUyxHQUFtQixJQUFJLENBQUE7SUFDaEMsZUFBZSxHQUFtQixJQUFJLENBQUE7SUFDdEMsUUFBUSxHQUFHLElBQUksQ0FBQTtJQUNmLE1BQU0sQ0FBQztJQUNQLFNBQVMsR0FBRyxFQUFFLENBQUE7SUFDYixHQUFHLENBQVU7SUFDYixHQUFHLENBQU07SUFDVCxPQUFPLEdBQVUsRUFBRSxDQUFDO0lBQ3BCLFNBQVMsR0FBVSxFQUFFLENBQUM7SUFDdkIsMEJBQTBC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RUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLFVBQVUsRUFBQyxhQUFhLEVBQUMsb0JBQW9CLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLE1BQU0sRUFBQyxhQUFhLEVBQUMsZUFBZSxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsT0FBTyxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLGFBQWEsRUFBQyxNQUFNLEVBQUMsYUFBYSxFQUFDLGFBQWEsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLFlBQVksRUFBQyxLQUFLLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsTUFBTSxFQUFDLGFBQWEsRUFBQyxrQkFBa0IsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsZUFBZSxFQUFDLGFBQWEsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxPQUFPLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLGVBQWUsRUFBQyxhQUFhLEVBQUMsUUFBUSxFQUFDLFNBQVMsRUFBQyxDQUFDLEVBQUMsWUFBWSxFQUFDLEtBQUssRUFBQyxDQUFDLEVBQUMsRUFBQyxFQUFDLGFBQWEsRUFBQyxjQUFjLEVBQUMsYUFBYSxFQUFDLFVBQVUsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLE9BQU8sRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLEVBQUMsRUFBQyxhQUFhLEVBQUMsY0FBYyxFQUFDLGFBQWEsRUFBQyxRQUFRLEVBQUMsU0FBUyxFQUFDLENBQUMsRUFBQyxZQUFZLEVBQUMsS0FBSyxFQUFDLENBQUMsRUFBQyxFQUFDLEVBQUMsYUFBYSxFQUFDLGdDQUFnQyxFQUFDLGFBQWEsRUFBQyxVQUFVLEVBQUMsU0FBUyxFQUFD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LFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDbkMsSUFBSSxDQUFDLDBCQUEwQixHQUFHLFFBQVEsQ0FBQztRQUM3QyxDQUFDO1FBQ0YsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNULE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDekIsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7d0dBeE1TLGlCQUFpQjs0RkFBakIsaUJBQWlCLCtGQ25COUIsMndFQXdEa0IsaVdEdkNKLGVBQWU7OzRGQUVoQixpQkFBaUI7a0JBUDdCLFNBQVM7K0JBQ0ksY0FBYyxjQUdaLElBQUksV0FDUCxDQUFDLGVBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyIH0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlcic7XG5pbXBvcnQgeyBmaWx0ZXIgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NvbXBvbmVudC1oZWxwZXInO1xuaW1wb3J0IHsgQ29yZUNvbnN0YW50c1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBTdG9yZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZWMtc2VydmljZXMvc3RvcmVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgc2tpcFdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdG9yZSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5kZWNsYXJlIHZhciAkOiBhbnk7XG5kZWNsYXJlIHZhciBnb29nbGU6IGFueTtcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLXN0b3JlLWVjJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3N0b3Jlcy1lYy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ3N0b3Jlcy1lYy5jb21wb25lbnQuc2NzcyddLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgU3RvcmVzRWNDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRIZWxwZXIgIHtcbiAgICBwdWJsaWMgc3RvcmVzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTdG9yZVtdPihbXSk7XG4gICAgcHVibGljIGZpbHRlclN0b3JlczogU3RvcmVbXSB8IG51bGwgPSBudWxsXG4gICAgcHVibGljIHN0b3Jlc0FsbDogU3RvcmVbXSB8IG51bGwgPSBudWxsXG4gICAgcHVibGljIGV4Y2x1c2l2ZVN0b3JlczogU3RvcmVbXSB8IG51bGwgPSBudWxsXG4gICAgcHVibGljIGltYWdlTWFwID0gdHJ1ZVxuICAgIHB1YmxpYyB1cmxtYXA7XG4gICAgcHVibGljIHByb3ZpbmNlcyA9IFtdXG4gICAgcHJpdmF0ZSB1cmwhOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBtYXA6IGFueTtcbiAgICBwcml2YXRlIG1hcmtlcnM6IGFueVtdID0gW107XG4gICAgcHJpdmF0ZSBsb2NhdGlvbnM6IGFueVtdID0gW107XG4gICAgcHVibGljIHVsdGltb0VsZW1lbnRvU2VsZWNjaW9uYWRvOiBhbnkgPSBudWxsO1xuXG4gICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RvcmVzU2VydmljZTogU3RvcmVzU2VydmljZSwgcHVibGljIGNvbnN0czogQ29yZUNvbnN0YW50c1NlcnZpY2UgLCBwcm90ZWN0ZWQgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXIpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudXJsbWFwID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKCdodHRwczovL3d3dy5nb29nbGUuY29tL21hcHMvZW1iZWQ/cGI9ITFtMTAhMW04ITFtMyExZDEzMTM3LjUxOTY4ODk1NzU0NSEyZC01OC4zODg4MTYzITNkLTM0LjU5NDU1MzMhM20yITFpMTAyNCEyaTc2OCE0ZjEzLjEhNWUwITNtMiExc2VzLTQxOSEyc2FyITR2MTUyMzg4OTIwNDE0OCcpO1xuICAgIHRoaXMuc3RvcmVzU2VydmljZS5zdG9yZXNcbiAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChzdG9yZXM6IFN0b3JlW10gfCBudWxsKTogc3RvcmVzIGlzIFN0b3JlW10gPT4gQXJyYXkuaXNBcnJheShzdG9yZXMpICYmIHN0b3Jlcy5sZW5ndGggPiAwKVxuICAgIClcbiAgICAuc3Vic2NyaWJlKHN0b3JlcyA9PiB7XG4gICAgICAgIHRoaXMuc3RvcmVzQWxsID0gc3RvcmVzO1xuICAgICAgICBpZiAoc3RvcmVzKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3Jlcy5uZXh0KHN0b3Jlcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5leGNsdXNpdmVTdG9yZXMgPSBzdG9yZXMgPyBzdG9yZXMuZmlsdGVyKHN0b3JlID0+IHN0b3JlLmV4Y2x1c2l2ZSApIDogbnVsbDtcbiAgICAgICAgLy8gdGhpcy5zZWxlY3RDaGFuZ2UoJycpO1xuLy8gICAgY29uc29sZS5sb2coJ1N0b3JlczonLCBzdG9yZXMpO1xuICAgIH0pO1xuICAgIHRoaXMuZWNPbkNvbnN0cnVjdCgpO1xufVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMuZWNPbkluaXQoKVxuICAgIH1cblxuICAgIHVwZGF0ZU1hcCh1cmw6c3RyaW5nKSB7XG4gICAgICAgIHVybCA9IHVybC5pbmNsdWRlcyAoJ2VtYmVkJykgPyB1cmwgOiAnaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL2VtYmVkP3BiPSExbTEwITFtOCExbTMhMWQxMzEzNy41MTk2ODg5NTc1NDUhMmQtNTguMzg4ODE2MyEzZC0zNC41OTQ1NTMzITNtMiExaTEwMjQhMmk3NjghNGYxMy4xITVlMCEzbTIhMXNlcy00MTkhMnNhciE0djE1MjM4ODkyMDQxNDgnXG4gICAgICAgIHRoaXMudXJsbWFwID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHVybClcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gT2J0aWVuZSB0b2RhcyBsYSBwcm92aW5jaWFzIHF1ZSBmaWd1cmVuIGVuIGVsIGFycmVnbG9cbiAgICAgKiBAcGFyYW0gc3RvcmVzIEFycmVnbG8gZGUgdGllbmRhc1xuICAgICAqIEByZXR1cm5zIHtBcnJheX0gQXJyZWdsbyBkZSBwcm92aW5jaWFzXG4gICAgICovXG4gICAgZ2V0UHJvdmljZXMgPSAoc3RvcmVzOiBTdG9yZVtdKSA9PiB7XG4gICAgICAgIGxldCBwcm92aW5jZXNPcHQ6IGFueVtdID0gW11cbiAgICAgICAgc3RvcmVzLmZvckVhY2goc3RvcmUgPT4ge1xuICAgICAgICAgICAgaWYgKHByb3ZpbmNlc09wdC5maW5kKHMgPT4gcy5jb2RlID09IHN0b3JlLnByb3ZpbmNlLmNvZGUpID09ICB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBwcm92aW5jZXNPcHQucHVzaChzdG9yZS5wcm92aW5jZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBwcm92aW5jZXNPcHRcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gUmV0b3JuYSB1biBhcnJlZ2xvIGRlIG9iamV0b3MgZm9ybWFkbyBwb3IgbGFzIGNsYXZlc1xuICAgICAqICAgICAgXCJwcm92aW5jZVwiKGNvbnRpZW5lIHVuIG9iamV0byBwcm92aW5jaWEpIHlcbiAgICAgKiAgICAgIFwic3RvcmVzXCIgKGNvbnRpZW5lIHVuIGFycmVnbG8gZGUgdGllbmRhcyBwZXJ0ZW5lY2llbnRlcyBhIGxhIHByb3ZpbmNpYSlcbiAgICAgKiBAcGFyYW0gc3RvcmVzIE9wY2lvbmFsLCBhcnJlZ2xvIGRlIHRpZW5kYXMgYSBsYSBxdWUgc2UgbGUgcXVpZXJlIGFwbGljYXIgbGEgZGl2aXNpb24gcG9yIHByb3ZpbmNpYVxuICAgICAqIEByZXR1cm5zIHtBcnJheTx7XCJwcm92aW5jZVwiLCBcInN0b3Jlc1wifT59XG4gICAgICovXG4gICAgZ2V0U3RvcmVzQnlQcm92aW5jZXMgPSAoc3RvcmVzOiBTdG9yZVtdID0gdGhpcy5zdG9yZXMudmFsdWUpID0+IHtcbiAgICAgICAgbGV0IHN0b3Jlc0J5UHJvdmluY2VzOiB7IHByb3ZpbmNlOiBhbnksIHN0b3JlczogU3RvcmVbXSB9W10gPSBbXVxuICAgICAgICBpZihzdG9yZXMpe1xuICAgICAgICAgICAgbGV0IHByb3ZpbmNlcyA9IHRoaXMuZ2V0UHJvdmljZXMoc3RvcmVzKVxuICAgICAgICAgICAgcHJvdmluY2VzLmZvckVhY2goIGVsZW0gPT4ge1xuICAgICAgICAgICAgICAgIGxldCBhdXggPSBzdG9yZXM/LmZpbHRlcihzdG9yZSA9PiAgc3RvcmUucHJvdmluY2UuY29kZSA9PSBlbGVtLmNvZGUpXG4gICAgICAgICAgICAgICAgc3RvcmVzQnlQcm92aW5jZXMucHVzaCh7cHJvdmluY2U6ZWxlbSxzdG9yZXM6YXV4fSlcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0b3Jlc0J5UHJvdmluY2VzXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRlc2NyaXB0aW9uIFJldG9ybmEgbGFzIHRpZW5kYXMgY29uL3NpbiByZXRpcm8gZW4gZWwgbG9jYWxcbiAgICAgKiBAcGFyYW0gc3RvcmVzIE9wY2lvbmFsLCBhcnJlZ2xvIGRlIHRpZW5kYXNcbiAgICAgKiBAcGFyYW0gY29uZCBPcGNpb25hbCwgU2kgZXMgXCJ0cnVlXCIgb2J0aWVuZSBsYXMgdGllbmRhcyBjb24gcmV0aXJvIGxvY2FsIGNhc28gY29udHJhcmlvIFwiZmFsc2VcIlxuICAgICAqIEByZXR1cm5zIHtBcnJheTxTdG9yZT59IEFycmVnbG8gZGUgU3RvcmVcbiAgICAgKi9cbiAgICBnZXRQaWNrdXBTdG9yZXMgPSAoc3RvcmVzID0gdGhpcy5zdG9yZXMudmFsdWUsIGNvbmQ6Qm9vbGVhbiA9IHRydWUpID0+IHN0b3JlcyAmJiBzdG9yZXMuZmlsdGVyKHN0b3JlID0+IGNvbmQgPT0gc3RvcmUucGlja3VwU3RvcmUpXG5cbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gTWV0b2RvIHF1ZSBkZXZ1ZWx2ZSBsYXMgdGllbmRhcyBxdWUgTk8gc29uIGV4Y2x1c2l2YXMuXG4gICAgICogQHJldHVybnMge0FycmF5PFN0b3JlPn0gQXJyZWdsbyBkZSBTdG9yZVxuICAgICAqL1xuICAgIGdldE5vbkV4Y2x1c2l2ZVN0b3JlcyA9ICgpID0+IHRoaXMuc3RvcmVzLnZhbHVlLmZpbHRlcihzdG9yZSA9PiAhc3RvcmUuZXhjbHVzaXZlIClcblxuICAgIHNlbGVjdENoYW5nZSA9IChzZWxlY3Q6IHN0cmluZykgPT4ge1xuICAgICAgICB0aGlzLmZpbHRlclN0b3JlcyA9IHNlbGVjdCAhPT0gJycgJiYgdGhpcy5zdG9yZXNBbGxcbiAgICAgICAgICAgID8gdGhpcy5zdG9yZXNBbGwuZmlsdGVyKHN0b3JlID0+IHN0b3JlLnByb3ZpbmNlLmNvZGUgPT0gc2VsZWN0KVxuICAgICAgICAgICAgOiB0aGlzLnN0b3Jlc0FsbDtcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBpbml0TWFwKCk6IHZvaWQge1xuXG4gICAgIHRoaXMuc3RvcmVzU2VydmljZS5zdG9yZXMucGlwZShcbiAgICAgICAgIHNraXBXaGlsZShzdG9yZXMgPT4gIXN0b3JlcyB8fCBzdG9yZXMubGVuZ3RoID09PSAwKSAvLyBPbWl0aXIgdmFsb3JlcyB2YWPDrW9zXG4gICAgICAgKS5zdWJzY3JpYmUoXG4gICAgICAgICAocmVzKSA9PiB7XG4gICAgICAgICAgIC8vIHRoaXMuc3RvcmVzLm5leHQocmVzID8/IFtdKTsgLy8gRWxpbWluYWRvIHBhcmEgbm8gc29icmVzY3JpYmlyIGVsIGxpc3RhZG8gcHJpbmNpcGFsXG5cbiAgICAgICAgICAgdGhpcy5zdG9yZXMudmFsdWUuZm9yRWFjaChzdG9yZSA9PiB7XG4gICAgICAgICAgICAgbGV0IGRhdG9zID0ge1xuICAgICAgICAgICAgICAgaWQ6IHN0b3JlLmNvZGUsXG4gICAgICAgICAgICAgICBsYXQ6IHBhcnNlRmxvYXQoc3RvcmUubGF0aXR1ZGUgIT09IHVuZGVmaW5lZCA/IHN0b3JlLmxhdGl0dWRlLnRvU3RyaW5nKCkgOiAnMCcpLFxuICAgICAgICAgICAgICAgbG5nOiBwYXJzZUZsb2F0KHN0b3JlLmxvbmdpdHVkZSAhPT0gdW5kZWZpbmVkID8gc3RvcmUubG9uZ2l0dWRlLnRvU3RyaW5nKCkgOiAnMCcpLFxuICAgICAgICAgICAgICAgdGl0bGU6IHN0b3JlLm5hbWUgKyAnIC0gJyArIHN0b3JlLmFkZHJlc3MsXG4gICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogc3RvcmUucGhvbmUsXG4gICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vICBjb25zb2xlLmxvZyhkYXRvcylcbiAgICAgICAgICAgICB0aGlzLmxvY2F0aW9ucy5wdXNoKGRhdG9zKTtcblxuICAgICAgICAgICB9KTtcbiAgICAgICAgICAgY29uc3QgYm91bmRzID0gbmV3IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kcygpO1xuICAgICAgICAgICB0aGlzLmxvY2F0aW9ucy5mb3JFYWNoKGxvY2F0aW9uID0+IHtcbiAgICAgICAgICAgICBib3VuZHMuZXh0ZW5kKG5ldyBnb29nbGUubWFwcy5MYXRMbmcobG9jYXRpb24ubGF0LCBsb2NhdGlvbi5sbmcpKTtcbiAgICAgICAgICAgfSk7XG4gICAgICAgICAgIGNvbnN0IGNlbnRlciA9IGJvdW5kcy5nZXRDZW50ZXIoKTtcbiAgICAgICAgICAgY29uc3Qgc3R5bGUgPSBbe1wiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5XCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjMjEyMTIxXCJ9XX0se1wiZWxlbWVudFR5cGVcIjpcImxhYmVscy5pY29uXCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5maWxsXCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjNzU3NTc1XCJ9XX0se1wiZWxlbWVudFR5cGVcIjpcImxhYmVscy50ZXh0LnN0cm9rZVwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzIxMjEyMVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJhZG1pbmlzdHJhdGl2ZVwiLFwiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5XCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjNzU3NTc1XCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcImFkbWluaXN0cmF0aXZlLmNvdW50cnlcIixcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5maWxsXCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjOWU5ZTllXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcImFkbWluaXN0cmF0aXZlLmxvY2FsaXR5XCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiI2JkYmRiZFwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJwb2lcIixcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5maWxsXCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjNzU3NTc1XCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcInBvaS5idXNpbmVzc1wiLFwic3R5bGVyc1wiOlt7XCJ2aXNpYmlsaXR5XCI6XCJvZmZcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicG9pLnBhcmtcIixcImVsZW1lbnRUeXBlXCI6XCJnZW9tZXRyeVwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzE4MTgxOFwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJwb2kucGFya1wiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVscy50ZXh0LmZpbGxcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiM2MTYxNjFcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicG9pLnBhcmtcIixcImVsZW1lbnRUeXBlXCI6XCJsYWJlbHMudGV4dC5zdHJva2VcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMxYjFiMWJcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZFwiLFwiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5LmZpbGxcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMyYzJjMmNcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZFwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVscy5pY29uXCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkXCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzhhOGE4YVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkLmFydGVyaWFsXCIsXCJlbGVtZW50VHlwZVwiOlwiZ2VvbWV0cnlcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMzNzM3MzdcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5hcnRlcmlhbFwiLFwiZWxlbWVudFR5cGVcIjpcImxhYmVsc1wiLFwic3R5bGVyc1wiOlt7XCJ2aXNpYmlsaXR5XCI6XCJvZmZcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5oaWdod2F5XCIsXCJlbGVtZW50VHlwZVwiOlwiZ2VvbWV0cnlcIixcInN0eWxlcnNcIjpbe1wiY29sb3JcIjpcIiMzYzNjM2NcIn1dfSx7XCJmZWF0dXJlVHlwZVwiOlwicm9hZC5oaWdod2F5XCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzXCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkLmhpZ2h3YXkuY29udHJvbGxlZF9hY2Nlc3NcIixcImVsZW1lbnRUeXBlXCI6XCJnZW9tZXRyeVwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzRlNGU0ZVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkLmxvY2FsXCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJyb2FkLmxvY2FsXCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzYxNjE2MVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJ0cmFuc2l0XCIsXCJzdHlsZXJzXCI6W3tcInZpc2liaWxpdHlcIjpcIm9mZlwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJ0cmFuc2l0XCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzc1NzU3NVwifV19LHtcImZlYXR1cmVUeXBlXCI6XCJ3YXRlclwiLFwiZWxlbWVudFR5cGVcIjpcImdlb21ldHJ5XCIsXCJzdHlsZXJzXCI6W3tcImNvbG9yXCI6XCIjMDAwMDAwXCJ9XX0se1wiZmVhdHVyZVR5cGVcIjpcIndhdGVyXCIsXCJlbGVtZW50VHlwZVwiOlwibGFiZWxzLnRleHQuZmlsbFwiLFwic3R5bGVyc1wiOlt7XCJjb2xvclwiOlwiIzNkM2QzZFwifV19XTtcbiAgICAgICAgICAgdGhpcy5tYXAgPSBuZXcgZ29vZ2xlLm1hcHMuTWFwKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYXAnKSwge1xuICAgICAgICAgICAgIHpvb206IDEyLFxuICAgICAgICAgICAgIGNlbnRlcjogY2VudGVyLCAvLyBDZW50cmFyIGVsIG1hcGEgZW4gZWwgY2VudHJvIGNhbGN1bGFkb1xuICAgICAgICAgICAgIHN0eWxlczogc3R5bGUgLy8gQXBsaWNhIGxvcyBlc3RpbG9zIHBlcnNvbmFsaXphZG9zXG4gICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgIHRoaXMubG9jYXRpb25zLmZvckVhY2gobG9jYXRpb24gPT4ge1xuICAgICAgICAgICAgIGNvbnN0IG1hcmtlciA9IG5ldyBnb29nbGUubWFwcy5NYXJrZXIoe1xuICAgICAgICAgICAgICAgcG9zaXRpb246IHsgbGF0OiBsb2NhdGlvbi5sYXQsIGxuZzogbG9jYXRpb24ubG5nIH0sXG4gICAgICAgICAgICAgICBtYXA6IHRoaXMubWFwLFxuICAgICAgICAgICAgICAgdGl0bGU6IGxvY2F0aW9uLnRpdGxlLFxuICAgICAgICAgICAgICAgaWNvbjoge1xuICAgICAgICAgICAgICAgIHVybDogXCIuLi8uLi8uLi9hc3NldHMvbG9jYXRpb24uc3ZnXCIsXG4gICAgICAgICAgICAgICAgc2NhbGVkU2l6ZTogbmV3IGdvb2dsZS5tYXBzLlNpemUoMzAsIDMwKVxuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgIG1hcmtlci5zZXQoJ2lkJywgbG9jYXRpb24uaWQpOyAvLyBBc3NvY2lhdGUgbWFya2VyIHdpdGggaXRzIElEXG4gICAgICAgICAgICAgdGhpcy5tYXJrZXJzLnB1c2gobWFya2VyKTtcbiAgICAgICAgICAgICBtYXJrZXIuYWRkTGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50byA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGxvY2F0aW9uLmlkKTtcbiAgICAgICAgICAgICAgICAgY29uc3QgY29udGVuZWRvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdob21lJyk7XG5cbiAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRvICYmIGNvbnRlbmVkb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgIGNvbnRlbmVkb3Iuc2Nyb2xsVG8oe1xuICAgICAgICAgICAgICAgICAgICAgICAgIHRvcDogZWxlbWVudG8ub2Zmc2V0VG9wIC0gY29udGVuZWRvci5vZmZzZXRUb3AgKyBjb250ZW5lZG9yLnNjcm9sbFRvcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCdcbiAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgaWYgKHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8gIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICAgICAgIC8vIFF1aXRhciBsYSBjbGFzZSBkZWwgw7psdGltbyBlbGVtZW50byBzZWxlY2Npb25hZG9cbiAgICAgICAgICAgICAgICAgICAgIHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKTtcbiAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgIC8vIEFncmVnYXIgdW5hIGNsYXNlIGFsIG51ZXZvIGVsZW1lbnRvIHNlbGVjY2lvbmFkb1xuICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudG8pIHtcbiAgICAgICAgICAgICAgICAgICBlbGVtZW50by5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpO1xuICAgICAgICAgICAgICAgICAgIHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8gPSBlbGVtZW50bztcbiAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgIHRoaXMuc3RvcEJvdW5jZSgpO1xuICAgICAgICAgICAgICAgICBtYXJrZXIuc2V0QW5pbWF0aW9uKGdvb2dsZS5tYXBzLkFuaW1hdGlvbi5CT1VOQ0UpO1xuICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgdGhpcy5tYXAuZml0Qm91bmRzKGJvdW5kcyk7XG4gICAgICAgICB9LFxuICAgICAgICAgKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgYWwgb2J0ZW5lciBsYXMgdGllbmRhczonLCBlcnJvcik7XG4gICAgICAgICB9XG4gICAgICAgKTtcbiAgICAgICB9KTtcblxuICAgICB9XG5cbiAgIHNob3dTdG9yZU9uTWFwKHN0b3JlQ29kZTogc3RyaW5nKSB7XG4gICAgICAgdGhpcy5zdG9wQm91bmNlKCk7XG4gICAgICAgY29uc3QgbWFya2VyID0gdGhpcy5tYXJrZXJzLmZpbmQobSA9PiBtLmdldCgnaWQnKSA9PT0gc3RvcmVDb2RlKTtcbiAgICAgICBjb25zdCBlbGVtZW50byA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHN0b3JlQ29kZSk7XG4gICAgICAgaWYgKHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8gIT09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIFF1aXRhciBsYSBjbGFzZSBkZWwgw7psdGltbyBlbGVtZW50byBzZWxlY2Npb25hZG9cbiAgICAgICAgICAgIHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFncmVnYXIgdW5hIGNsYXNlIGFsIG51ZXZvIGVsZW1lbnRvIHNlbGVjY2lvbmFkb1xuICAgICAgICBpZiAoZWxlbWVudG8pIHtcbiAgICAgICAgICBlbGVtZW50by5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpO1xuICAgICAgICAgIHRoaXMudWx0aW1vRWxlbWVudG9TZWxlY2Npb25hZG8gPSBlbGVtZW50bztcbiAgICAgICAgfVxuICAgICAgIGlmIChtYXJrZXIpIHtcbiAgICAgICAgICAgbWFya2VyLnNldEFuaW1hdGlvbihnb29nbGUubWFwcy5BbmltYXRpb24uQk9VTkNFKTtcbiAgICAgICB9XG4gICB9XG5cbiAgIHN0b3BCb3VuY2UoKXtcbiAgICAgICB0aGlzLm1hcmtlcnMuZm9yRWFjaChtYXJrZXIgPT4ge1xuICAgICAgICAgICAgbWFya2VyLnNldEFuaW1hdGlvbihudWxsKTtcbiAgICAgICAgfSk7XG4gICB9XG5cblxufVxuIiwiPCEtLSA8ZGl2IGNsYXNzPVwicm93IHctMTAwIG14LWF1dG8gbXktNCBweC0zIGJiLXMgYnQtbWQtcyBweS0xXCI+XG4gICAgPHN0cm9uZz57eyAnc3RvcmVzJyB8IHRyYW5zbGF0ZSB9fTwvc3Ryb25nPlxuPC9kaXY+XG5AaWYoc3RvcmVzKXtcbjxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGNvbC1tZC0zIG9yZGVyLTEgb3JkZXItbWQtMVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB3LTEwMFwiPlxuICAgICAgICAgICAgICAgIDxzZWxlY3QgKGNoYW5nZSk9XCJzZWxlY3RDaGFuZ2UoJGV2ZW50LnRhcmdldC52YWx1ZSlcIiBjbGFzcz1cInJvdW5kZWQtMCBmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJleGFtcGxlRm9ybUNvbnRyb2xTZWxlY3QxXCI+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQgW3ZhbHVlXT1cIicnXCI+U2VsZWNjaW9uZSBwcm92aW5jaWE8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwiaXRlbS5jb2RlXCIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0UHJvdmljZXMoc3RvcmVzKVwiPiB7e2l0ZW0ubmFtZX19XG4gICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgY29sLW1kLTMgb3JkZXItMyBvcmRlci1tZC0yXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWQgc2Nyb2xsZWFibGVcIiAqbmdJZj1cImZpbHRlclN0b3JlcyAmJiBmaWx0ZXJTdG9yZXMubGVuZ3RoXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTFcIiAqbmdGb3I9XCJsZXQgc3RvcmUgb2YgZmlsdGVyU3RvcmVzOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJcIj48c3Ryb25nPnt7IHN0b3JlLm5hbWUgfX08L3N0cm9uZz48L2g2PlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWw+e3sgc3RvcmUuYWRkcmVzcyB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbD57eyBzdG9yZS5waG9uZSB9fTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW2lubmVySHRtbF09XCJzdG9yZS5ub3RlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LXJpZ2h0XCI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwic3RvcmUudXJsTWFwXCIgKGNsaWNrKT1cInVwZGF0ZU1hcCAoc3RvcmUudXJsTWFwKVwiIGNsYXNzPVwiY3VzdG9tLWFcIj5WZXIgbWFwYTwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNvbC0xMiBjb2wtbWQtNiBvcmRlci0yIG9yZGVyLW1kLTMgbXktNCBtdC1tZC0wXCI+XG5cbiAgICAgICAgPGlmcmFtZSBpZD1cIm1hcC1pZnJhbWVcIiBbc3JjXT1cInVybG1hcFwiIGZyYW1lYm9yZGVyPVwiMFwiPjwvaWZyYW1lPlxuICAgIDwvZGl2PlxuPC9kaXY+XG59QGVsc2Uge1xuPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG15LTUgYWxpZ24taXRlbXMtY2VudGVyIGFsdG8tdG90YWxcIj5cbiAgICA8aDUgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPnt7ICduby1zdG9yZXMnIHwgdHJhbnNsYXRlIH19PC9oNT5cbjwvZGl2PlxufVxuXG5cblxuPG5nLXRlbXBsYXRlICNsb2FkaW5nPlxuICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIG15LTVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1sb2FkaW5nLWZ1bGwtZWM+PC9hcHAtbG9hZGluZy1mdWxsLWVjPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT4gLS0+Il19
|
|
@@ -63,9 +63,7 @@ export class DecidirEcComponent extends ComponentHelper {
|
|
|
63
63
|
}
|
|
64
64
|
ngOnDestroy() {
|
|
65
65
|
// Remover el listener de mensajes
|
|
66
|
-
|
|
67
|
-
window.removeEventListener('message', this.handleIframeMessage, false);
|
|
68
|
-
}
|
|
66
|
+
window.removeEventListener('message', this.handleIframeMessage, false);
|
|
69
67
|
// console.log("SE DESTROZA");
|
|
70
68
|
}
|
|
71
69
|
ngOnChanges() {
|
|
@@ -145,13 +143,11 @@ export class DecidirEcComponent extends ComponentHelper {
|
|
|
145
143
|
this.url = this.sanitizer.bypassSecurityTrustResourceUrl('assets/decidirFormEc.html');
|
|
146
144
|
this.loading = false;
|
|
147
145
|
// Escuchar mensajes del iframe para manejar la comunicación
|
|
148
|
-
|
|
149
|
-
window.addEventListener('message', this.handleIframeMessage.bind(this), false);
|
|
150
|
-
}
|
|
146
|
+
window.addEventListener('message', this.handleIframeMessage.bind(this), false);
|
|
151
147
|
};
|
|
152
148
|
handleIframeMessage = (event) => {
|
|
153
149
|
// Verificar el origen por seguridad
|
|
154
|
-
if (
|
|
150
|
+
if (event.origin !== window.location.origin) {
|
|
155
151
|
return;
|
|
156
152
|
}
|
|
157
153
|
if (event.data && event.data.type === 'DECIDIR_PAYMENT') {
|
|
@@ -193,10 +189,8 @@ export class DecidirEcComponent extends ComponentHelper {
|
|
|
193
189
|
});
|
|
194
190
|
};
|
|
195
191
|
resizeIframe = (obj) => {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
obj.style.width = obj.contentWindow.document.body.scrollWidth + 'px';
|
|
199
|
-
}
|
|
192
|
+
obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
|
|
193
|
+
obj.style.width = obj.contentWindow.document.body.scrollWidth + 'px';
|
|
200
194
|
};
|
|
201
195
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DecidirEcComponent, deps: [{ token: i0.Renderer2 }, { token: i1.ConnectionService }, { token: i2.ToastService }, { token: i3.CoreConstantsService }, { token: i3.ApiConstantsService }, { token: i4.CartService }, { token: i5.ActivatedRoute }, { token: i6.DomSanitizer }, { token: i7.ParametersService }], target: i0.ɵɵFactoryTarget.Component });
|
|
202
196
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DecidirEcComponent, isStandalone: true, selector: "app-decidir-ec", inputs: { paymentServiceInst: "paymentServiceInst", method: "method", total_amount: "total_amount", allData: "allData", user_data: "user_data" }, outputs: { ready: "ready" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"text-center\">\n <h3>Continuar con el pago en Decidir</h3>\n @if (method) {\n <p class=\"px-5\">{{ method.description }}</p>\n <p class=\"px-5\">{{ method.instructions }}</p>\n }\n @if (!loading) {\n <button class=\"btn btn-outline-secondary comprar\" (click)=\"openModal()\">Pagar</button>\n } @else {\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center mt-2\">\n <app-loading-full-ec></app-loading-full-ec>\n </div>\n }\n </div>\n\n@if (showModal) {\n<div class=\"modal-backdrop\" (click)=\"clickClose()\">\n <div class=\"modal-dialog modal-lg\" (click)=\"$event.stopPropagation()\">\n <div class=\"modal-content\">\n\n <div class=\"modal-body\">\n <div class=\"payment-container\">\n \n <!-- Iframe del formulario de decidir -->\n <div class=\"iframe-container\">\n <iframe [src]=\"url\" frameborder=\"0\" class=\"payment-iframe\"></iframe>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n}\n", styles: [".modal-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#0009;display:flex;justify-content:center;align-items:center;z-index:1050;backdrop-filter:blur(2px)}.modal-dialog{max-width:90%;max-height:90%;width:800px;background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 20px 60px #0000004d;animation:modalFadeIn .3s ease-out}.modal-dialog.modal-lg{max-width:900px;width:90%}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.9) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-content{display:flex;flex-direction:column;height:100%;border:none;border-radius:16px;background:#fff}.modal-header{padding:1.5rem 2rem;border-bottom:1px solid #e9ecef;background:linear-gradient(135deg,#f8f9fa,#e9ecef);display:flex;justify-content:space-between;align-items:center;position:relative}.modal-header:after{content:\"\";position:absolute;bottom:0;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent 0%,#dee2e6 50%,transparent 100%)}.modal-header .modal-title{margin:0;font-size:1.5rem;font-weight:700;color:#2c3e50;text-shadow:0 1px 2px rgba(0,0,0,.1)}.modal-header .btn-close{background:none;border:none;font-size:1.8rem;color:#6c757d;cursor:pointer;padding:0;width:35px;height:35px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .3s ease;position:relative}.modal-header .btn-close:hover{background-color:#dc3545;color:#fff;transform:rotate(90deg);box-shadow:0 4px 12px #dc35454d}.modal-header .btn-close:active{transform:rotate(90deg) scale(.95)}.modal-body{padding:0;flex:1;overflow:hidden;background:#fff}.payment-container{height:100%;display:flex;flex-direction:column;background:#fff}.cards-accepted{padding:1.5rem 2rem;text-align:center;border-bottom:1px solid #e9ecef;background:linear-gradient(135deg,#fff,#f8f9fa);position:relative}.cards-accepted:after{content:\"\";position:absolute;bottom:0;left:5%;right:5%;height:1px;background:linear-gradient(90deg,transparent 0%,#dee2e6 50%,transparent 100%)}.cards-accepted .cards-img{height:45px;max-width:100%;object-fit:contain;filter:drop-shadow(0 2px 4px rgba(0,0,0,.1));transition:transform .2s ease}.cards-accepted .cards-img:hover{transform:scale(1.05)}.iframe-container{flex:1;padding:1.5rem;background:#fff;position:relative}.iframe-container:before{content:\"\";position:absolute;top:0;left:1.5rem;right:1.5rem;height:1px;background:linear-gradient(90deg,transparent 0%,#e9ecef 50%,transparent 100%)}.payment-iframe{width:100%;height:620px;border:none;border-radius:12px;background:#fff;box-shadow:inset 0 2px 8px #0000000d}.half-width{width:49%!important}.ml-1{margin-left:1%}#card-form{height:450px}.iframeStyle{height:520px;width:100%}@media only screen and (max-width: 1024px){.modal-dialog,.modal-dialog.modal-lg{max-width:95%;width:95%}.payment-iframe{height:650px}.modal-header{padding:1rem 1.5rem}.modal-header .modal-title{font-size:1.125rem}.cards-accepted{padding:.75rem 1.5rem}}@media only screen and (max-width: 680px){.modal-dialog{max-width:98%;width:98%;margin:1rem;max-height:calc(100vh - 2rem)}.modal-dialog.modal-lg{max-width:98%;width:98%}.payment-iframe{height:550px}.modal-header{padding:1rem}.modal-header .modal-title{font-size:1rem}.modal-header .btn-close{width:28px;height:28px;font-size:1.25rem}.cards-accepted{padding:.5rem 1rem}.cards-accepted .cards-img{height:35px}.iframe-container{padding:.5rem}}@media only screen and (max-width: 480px){.modal-dialog{margin:.5rem;max-height:calc(100vh - 1rem);border-radius:8px}.modal-content{border-radius:8px}.payment-iframe{height:500px}.cards-accepted .cards-img{height:30px}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }] });
|
|
@@ -217,4 +211,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
217
211
|
}], ready: [{
|
|
218
212
|
type: Output
|
|
219
213
|
}] } });
|
|
220
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaWRpci1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy93aWRnZXRzLWVjL2RlY2lkaXItZWMvZGVjaWRpci1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy93aWRnZXRzLWVjL2RlY2lkaXItZWMvZGVjaWRpci1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBc0IsS0FBSyxFQUF3QixZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxXQUFXLEVBQVUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFPcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sWUFBWSxDQUFDOzs7Ozs7Ozs7QUFVcEQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGVBQWU7SUFzQmhDO0lBQ1I7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQTVCRixrQkFBa0IsQ0FBTTtJQUN4QixNQUFNLEdBQTBFLElBQUksQ0FBQztJQUNyRixZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBTTtJQUNiLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDaEIsS0FBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDM0IsUUFBUSxHQUFlLElBQUksQ0FBQztJQUM1QixXQUFXLENBQU07SUFFcEIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixXQUFXLEdB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LCtCQUFFLHNCQUFzQjs7NEZBRWxELGtCQUFrQjtrQkFQOUIsU0FBUzsrQkFDSSxnQkFBZ0IsY0FDZCxJQUFJLFdBR1AsQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLHNCQUFzQixDQUFDO2dVQUluRCxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIE9uSW5pdCwgRWxlbWVudFJlZiwgSW5wdXQsIFJlbmRlcmVyMiwgT25DaGFuZ2VzLCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tIFwiLi4vLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyXCI7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzU2VydmljZSwgQXBpQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2VjLXNlcnZpY2VzL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCwgU2FmZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgUGFyYW1ldGVyc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9lYy1zZXJ2aWNlcy9wYXJhbWV0ZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9hZGluZ0Z1bGxFY0NvbXBvbmVudCB9IGZyb20gJy4uL2xvYWRpbmcnO1xuZGVjbGFyZSB2YXIgJDogYW55XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWRlY2lkaXItZWMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGVVcmw6ICdkZWNpZGlyLWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnZGVjaWRpci1lYy5jb21wb25lbnQuc2NzcyddLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBMb2FkaW5nRnVsbEVjQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBEZWNpZGlyRWNDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRIZWxwZXIgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcblxuICAgIEBJbnB1dCgpIHBheW1lbnRTZXJ2aWNlSW5zdDogYW55O1xuICAgIEBJbnB1dCgpIG1ldGhvZDogeyBkZXNjcmlwdGlvbj86IHN0cmluZzsgaW5zdHJ1Y3Rpb25zPzogc3RyaW5nOyBjb2RlPzogc3RyaW5nIH0gfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSB0b3RhbF9hbW91bnQgPSAwO1xuICAgIEBJbnB1dCgpIGFsbERhdGE6IGFueTtcbiAgICBASW5wdXQoKSB1c2VyX2RhdGEgPSBudWxsO1xuICAgIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBwcm90ZWN0ZWQgbW9kYWxSZWY6IGFueSB8IG51bGwgPSBudWxsO1xuICAgIHByb3RlY3RlZCBkYXRhRGVjaWRpcjogYW55O1xuXG4gICAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNEb2JsZUF1dGggPSBmYWxzZTtcbiAgICBwdWJsaWMgdXJsczogYW55W10gPSBbXTtcbiAgICBwdWJsaWMgdXJsOiBTYWZlUmVzb3VyY2VVcmwgfCB1bmRlZmluZWQ7XG4gICAgcHVibGljIGNsb3NlTW9kYWwgPSAnJ1xuICAgIHB1YmxpYyBwYXJhbXNNZW5zYWplID0gJydcbiAgICBwdWJsaWMgdmVudGFuYTogYW55XG4gICAgcHVibGljIHBhcmFtczogYW55XG4gICAgcHVibGljIHNob3dNb2RhbCA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBkYXRhUmVkaXJlY3QgPSAoKSA9PiB0aGlzLmFwaUNvbnN0cy5nZXRVcmxCYXNlKCkgKyAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvZGVjaWRpci8nICsgdGhpcy5jYXJ0U2VydmljZS5jYXJ0VG9rZW4gKyAnL3Byb2Nlc3MtcGF5bWVudCc7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHVibGljIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgdG9hc3RyU2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgY29uc3RzOiBDb3JlQ29uc3RhbnRzU2VydmljZSxcbiAgICAgICAgcHVibGljIGFwaUNvbnN0czogQXBpQ29uc3RhbnRzU2VydmljZSxcbiAgICAgICAgcHVibGljIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcbiAgICAgICAgcHVibGljIGFjdGl2ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHB1YmxpYyBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgcHVibGljIHBhcmFtc1NlcnZpY2U6IFBhcmFtZXRlcnNTZXJ2aWNlXG4gICAgICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmVjT25Db25zdHJ1Y3QoKVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmdldENoZWNrb3V0RGVjaWRpcigpXG4gICAgICAgIHRoaXMucGFyYW1zU2VydmljZS5nZXRQYXJhbWV0ZXJzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wYXJhbXMgPSByZXNcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtVmFsdWUgPSB0aGlzLmhhc1BhcmFtcyhyZXMsJ3BhcnRpYWxseV9hdXRob3JpemVkX2RlY2lkaXInKTtcbiAgICAgICAgICAgIHRoaXMucGFyYW1zTWVuc2FqZSA9ICh0eXBlb2YgcGFyYW1WYWx1ZSA9PT0gJ3N0cmluZycgPyBwYXJhbVZhbHVlIDogbnVsbCkgfHwgJ1NlIGVzdMOhIHByb2Nlc2FuZG8gZWwgcGFnbyBjb24gdGFyamV0YS4nXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVjT25Jbml0KClcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgLy8gUmVtb3ZlciBlbCBsaXN0ZW5lciBkZSBtZW5zYWplc1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgdGhpcy5oYW5kbGVJZnJhbWVNZXNzYWdlLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJTRSBERVNUUk9aQVwiKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcygpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJTRSBDQU1CSU9cIik7XG4gICAgfVxuXG4gICAgb3Blbk1vZGFsKCkge1xuICAgICAgICB0aGlzLmNsZWFyU3RvcmFnZVN0YXRlKClcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2RhdGFSZWRpcmVjdCcsIHRoaXMuZGF0YVJlZGlyZWN0KCkpXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdkYXRhRGVjaWRpcicsIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIC4uLnRoaXMubWV0aG9kLFxuICAgICAgICAgICAgdG90YWxfYW1vdW50OiB0aGlzLnRvdGFsX2Ftb3VudFxuICAgICAgICB9KSlcbiAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdWJ0b3RhbCcsIHRoaXMudG90YWxfYW1vdW50LnRvU3RyaW5nKCkpXG4gICAgICAgIHRoaXMuc2hvd01vZGFsID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jbG9zZU1vZGFsID0gJydcbiAgICAgICAgdGhpcy5jYWxsU3RhdGUoKVxuICAgIH1cblxuICAgIGNsZWFyU3RvcmFnZVN0YXRlID0gKCkgPT4ge1xuICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdzdGF0ZScpXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdzdGF0ZScpXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdkYXRhUmVkaXJlY3QnKVxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnZGF0YURlY2lkaXInKVxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnbWVzc2FnZScpXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdzdWJNZXNzYWdlJylcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3N1YnRvdGFsJylcbiAgICB9XG5cbiAgICBjbGlja0Nsb3NlID0gKCkgPT4ge1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWwgPSAnY2FuY2VsJ1xuICAgICAgICB0aGlzLnNob3dNb2RhbCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcignU2UgY2FuY2VsbyBlbCBwYWdvIGNvbiBEZWNpZGlyJylcbiAgICB9XG5cbiAgICBzaG93TWVzc2FnZSA9ICgpID0+IHtcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbWVzc2FnZScpIHx8IHVuZGVmaW5lZFxuICAgICAgICBsZXQgc3ViTWVzc2FnZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzdWJNZXNzYWdlJykgfHwgdW5kZWZpbmVkXG4gICAgICAgIG1lc3NhZ2UgJiYgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3cobWVzc2FnZSx7fSwnJywge2Nsb3NlQnV0dG9uOnRydWUsdGltZU91dDo2MDAwfSk7XG4gICAgICAgIHN1Yk1lc3NhZ2UgJiYgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coc3ViTWVzc2FnZSx7fSwnJywge2Nsb3NlQnV0dG9uOnRydWUsdGltZU91dDo2MDAwfSk7XG4gICAgfVxuXG5cbiAgICBjYWxsU3RhdGUgPSAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsZXQgc3RhdGUgPSB0aGlzLmNsb3NlTW9kYWwgIT0gJycgPyB0aGlzLmNsb3NlTW9kYWwgOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc3RhdGUnKVxuICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICAgICAgICAgICAgc3RhdGUgJiYgdGhpcy5zaG93TWVzc2FnZSgpO1xuICAgICAgICAgICAgaWYgKHN0YXRlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyU3RvcmFnZVN0YXRlKClcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gJ3N1Y2Nlc3MnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZHkuZW1pdCh0cnVlKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gJ3BhcnRpYWxseV9hdXRob3JpemVkJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlYWR5LmVtaXQodHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzRXJyb3IodGhpcy5wYXJhbXNNZW5zYWplKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT0gJ2NhbmNlbCcpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAnZmFpbHVyZScpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9jZXNzRXJyb3IoJycpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd01vZGFsID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGxTdGF0ZSgpXG4gICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm9jZXNzRXJyb3IgPSAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy50b2FzdHJTZXJ2aWNlLnNob3coZXJyICE9ICcnID8gZXJyIDogJ3BheW1lbnQtZXJyb3InKTtcbiAgICAgICAgLy8gY29uc29sZS5sb2coXCJFUlJPUiBFTlZJTyBCQUNLICBcIiwgZXJyKTtcbiAgICB9XG5cbiAgICBnZXRDaGVja291dERlY2lkaXIgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWVcbiAgICAgICAgdGhpcy5kYXRhRGVjaWRpciA9IHRoaXMubWV0aG9kO1xuICAgICAgICB0aGlzLnVybCA9IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCgnYXNzZXRzL2RlY2lkaXJGb3JtRWMuaHRtbCcpXG4gICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlXG4gICAgICAgIC8vIEVzY3VjaGFyIG1lbnNhamVzIGRlbCBpZnJhbWUgcGFyYSBtYW5lamFyIGxhIGNvbXVuaWNhY2nDs25cbiAgICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMuaGFuZGxlSWZyYW1lTWVzc2FnZS5iaW5kKHRoaXMpLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoYW5kbGVJZnJhbWVNZXNzYWdlID0gKGV2ZW50OiBNZXNzYWdlRXZlbnQpID0+IHtcbiAgICAgICAgLy8gVmVyaWZpY2FyIGVsIG9yaWdlbiBwb3Igc2VndXJpZGFkXG4gICAgICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiBldmVudC5vcmlnaW4gIT09IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5kYXRhICYmIGV2ZW50LmRhdGEudHlwZSA9PT0gJ0RFQ0lESVJfUEFZTUVOVCcpIHtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKCdEZWNpZGlyQ29tcG9uZW50IC0gUHJvY2VzYW5kbyBwYWdvIGNvbiBwYXlsb2FkOicsIGV2ZW50LmRhdGEucGF5bG9hZCk7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NQYXltZW50KGV2ZW50LmRhdGEucGF5bG9hZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm9jZXNzUGF5bWVudCA9IChwYXltZW50RGF0YTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgXG4gICAgICAgIFxuICAgICAgICB0aGlzLmNvbm5lY3Rpb24ucG9zdCgnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvZGVjaWRpci8nICsgdGhpcy5jYXJ0U2VydmljZS5jYXJ0VG9rZW4gKyAnL3Byb2Nlc3MtcGF5bWVudCcpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ1Jlc3B1ZXN0YSBkZWwgYmFja2VuZDonLCByZXNwb25zZSk7XG4gICAgICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSAnYXBwcm92ZWQnIHx8IHJlc3BvbnNlLnN0YXR1cyA9PT0gJ3BhcnRpYWxseV9hdXRob3JpemVkJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N0YXRlJywgcmVzcG9uc2Uuc3RhdHVzID09PSAnYXBwcm92ZWQnID8gJ3N1Y2Nlc3MnIDogJ3BhcnRpYWxseV9hdXRob3JpemVkJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UubWVzc2FnZSkgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ21lc3NhZ2UnLCByZXNwb25zZS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWJNZXNzYWdlKSBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3ViTWVzc2FnZScsIHJlc3BvbnNlLnN1Yk1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxsU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdGF0ZScsICdmYWlsdXJlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UubWVzc2FnZSkgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ21lc3NhZ2UnLCByZXNwb25zZS5tZXNzYWdlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWJNZXNzYWdlKSBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3ViTWVzc2FnZScsIHJlc3BvbnNlLnN1Yk1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxsU3RhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwcm9jZXNzaW5nIHBheW1lbnQ6JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3RhdGUnLCAnZmFpbHVyZScpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcignRXJyb3IgYWwgcHJvY2VzYXIgZWwgcGFnbycpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGxTdGF0ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJlc2l6ZUlmcmFtZSA9IChvYmo6IGFueSkgPT4ge1xuICAgICAgICBpZiAob2JqICYmIG9iai5jb250ZW50V2luZG93ICYmIHR5cGVvZiBvYmouY29udGVudFdpbmRvdy5kb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIG9iai5zdHlsZS5oZWlnaHQgPSBvYmouY29udGVudFdpbmRvdy5kb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCArICdweCc7XG4gICAgICAgICAgICBvYmouc3R5bGUud2lkdGggPSBvYmouY29udGVudFdpbmRvdy5kb2N1bWVudC5ib2R5LnNjcm9sbFdpZHRoICsgJ3B4JztcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG4iLCI8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICA8aDM+Q29udGludWFyIGNvbiBlbCBwYWdvIGVuIERlY2lkaXI8L2gzPlxuICAgIEBpZiAobWV0aG9kKSB7XG4gICAgPHAgY2xhc3M9XCJweC01XCI+e3sgbWV0aG9kLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgIDxwIGNsYXNzPVwicHgtNVwiPnt7IG1ldGhvZC5pbnN0cnVjdGlvbnMgfX08L3A+XG4gICAgfVxuICAgIEBpZiAoIWxvYWRpbmcpIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgY29tcHJhclwiIChjbGljayk9XCJvcGVuTW9kYWwoKVwiPlBhZ2FyPC9idXR0b24+XG4gICAgfSBAZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBqdXNpdGZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yXCI+XG4gICAgICAgIDxhcHAtbG9hZGluZy1mdWxsLWVjPjwvYXBwLWxvYWRpbmctZnVsbC1lYz5cbiAgICA8L2Rpdj5cbiAgICB9XG4gICAgPC9kaXY+XG5cbkBpZiAoc2hvd01vZGFsKSB7XG48ZGl2IGNsYXNzPVwibW9kYWwtYmFja2Ryb3BcIiAoY2xpY2spPVwiY2xpY2tDbG9zZSgpXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZ1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBJZnJhbWUgZGVsIGZvcm11bGFyaW8gZGUgZGVjaWRpciAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlmcmFtZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpZnJhbWUgW3NyY109XCJ1cmxcIiBmcmFtZWJvcmRlcj1cIjBcIiBjbGFzcz1cInBheW1lbnQtaWZyYW1lXCI+PC9pZnJhbWU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG59XG4iXX0=
|
|
214
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjaWRpci1lYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy93aWRnZXRzLWVjL2RlY2lkaXItZWMvZGVjaWRpci1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy93aWRnZXRzLWVjL2RlY2lkaXItZWMvZGVjaWRpci1lYy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBc0IsS0FBSyxFQUF3QixZQUFZLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDNUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxXQUFXLEVBQVUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFPcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sWUFBWSxDQUFDOzs7Ozs7Ozs7QUFVcEQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLGVBQWU7SUFzQmhDO0lBQ1I7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQTVCRixrQkFBa0IsQ0FBTTtJQUN4QixNQUFNLEdBQTBFLElBQUksQ0FBQztJQUNyRixZQUFZLEdBQUcsQ0FBQyxDQUFDO0lBQ2pCLE9BQU8sQ0FBTTtJQUNiLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDaEIsS0FBSyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFDM0IsUUFBUSxHQUFlLElBQUksQ0FBQztJQUM1QixXQUFXLENBQU07SUFFcEIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixXQUFXLEdB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S0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPdXRwdXQsIE9uSW5pdCwgRWxlbWVudFJlZiwgSW5wdXQsIFJlbmRlcmVyMiwgT25DaGFuZ2VzLCBFdmVudEVtaXR0ZXIsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tIFwiLi4vLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyXCI7XG5pbXBvcnQgeyBDb25uZWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2FwaS9jb25uZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBDb3JlQ29uc3RhbnRzU2VydmljZSwgQXBpQ29uc3RhbnRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBDYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL2VjLXNlcnZpY2VzL2NhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVSZXNvdXJjZVVybCwgU2FmZVVybCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgUGFyYW1ldGVyc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9lYy1zZXJ2aWNlcy9wYXJhbWV0ZXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTG9hZGluZ0Z1bGxFY0NvbXBvbmVudCB9IGZyb20gJy4uL2xvYWRpbmcnO1xuZGVjbGFyZSB2YXIgJDogYW55XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYXBwLWRlY2lkaXItZWMnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgdGVtcGxhdGVVcmw6ICdkZWNpZGlyLWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnZGVjaWRpci1lYy5jb21wb25lbnQuc2NzcyddLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBMb2FkaW5nRnVsbEVjQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBEZWNpZGlyRWNDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRIZWxwZXIgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcblxuICAgIEBJbnB1dCgpIHBheW1lbnRTZXJ2aWNlSW5zdDogYW55O1xuICAgIEBJbnB1dCgpIG1ldGhvZDogeyBkZXNjcmlwdGlvbj86IHN0cmluZzsgaW5zdHJ1Y3Rpb25zPzogc3RyaW5nOyBjb2RlPzogc3RyaW5nIH0gfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSB0b3RhbF9hbW91bnQgPSAwO1xuICAgIEBJbnB1dCgpIGFsbERhdGE6IGFueTtcbiAgICBASW5wdXQoKSB1c2VyX2RhdGEgPSBudWxsO1xuICAgIEBPdXRwdXQoKSByZWFkeSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBwcm90ZWN0ZWQgbW9kYWxSZWY6IGFueSB8IG51bGwgPSBudWxsO1xuICAgIHByb3RlY3RlZCBkYXRhRGVjaWRpcjogYW55O1xuXG4gICAgcHVibGljIGxvYWRpbmcgPSBmYWxzZTtcbiAgICBwdWJsaWMgaXNEb2JsZUF1dGggPSBmYWxzZTtcbiAgICBwdWJsaWMgdXJsczogYW55W10gPSBbXTtcbiAgICBwdWJsaWMgdXJsOiBTYWZlUmVzb3VyY2VVcmwgfCB1bmRlZmluZWQ7XG4gICAgcHVibGljIGNsb3NlTW9kYWwgPSAnJ1xuICAgIHB1YmxpYyBwYXJhbXNNZW5zYWplID0gJydcbiAgICBwdWJsaWMgdmVudGFuYTogYW55XG4gICAgcHVibGljIHBhcmFtczogYW55XG4gICAgcHVibGljIHNob3dNb2RhbCA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBkYXRhUmVkaXJlY3QgPSAoKSA9PiB0aGlzLmFwaUNvbnN0cy5nZXRVcmxCYXNlKCkgKyAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvZGVjaWRpci8nICsgdGhpcy5jYXJ0U2VydmljZS5jYXJ0VG9rZW4gKyAnL3Byb2Nlc3MtcGF5bWVudCc7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgcHVibGljIGNvbm5lY3Rpb246IENvbm5lY3Rpb25TZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgdG9hc3RyU2VydmljZTogVG9hc3RTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgY29uc3RzOiBDb3JlQ29uc3RhbnRzU2VydmljZSxcbiAgICAgICAgcHVibGljIGFwaUNvbnN0czogQXBpQ29uc3RhbnRzU2VydmljZSxcbiAgICAgICAgcHVibGljIGNhcnRTZXJ2aWNlOiBDYXJ0U2VydmljZSxcbiAgICAgICAgcHVibGljIGFjdGl2ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgICAgIHB1YmxpYyBzYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgcHVibGljIHBhcmFtc1NlcnZpY2U6IFBhcmFtZXRlcnNTZXJ2aWNlXG4gICAgICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmVjT25Db25zdHJ1Y3QoKVxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLmdldENoZWNrb3V0RGVjaWRpcigpXG4gICAgICAgIHRoaXMucGFyYW1zU2VydmljZS5nZXRQYXJhbWV0ZXJzKCkuc3Vic2NyaWJlKChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wYXJhbXMgPSByZXNcbiAgICAgICAgICAgIGNvbnN0IHBhcmFtVmFsdWUgPSB0aGlzLmhhc1BhcmFtcyhyZXMsJ3BhcnRpYWxseV9hdXRob3JpemVkX2RlY2lkaXInKTtcbiAgICAgICAgICAgIHRoaXMucGFyYW1zTWVuc2FqZSA9ICh0eXBlb2YgcGFyYW1WYWx1ZSA9PT0gJ3N0cmluZycgPyBwYXJhbVZhbHVlIDogbnVsbCkgfHwgJ1NlIGVzdMOhIHByb2Nlc2FuZG8gZWwgcGFnbyBjb24gdGFyamV0YS4nXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVjT25Jbml0KClcbiAgICB9XG5cbiAgICBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgLy8gUmVtb3ZlciBlbCBsaXN0ZW5lciBkZSBtZW5zYWplc1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMuaGFuZGxlSWZyYW1lTWVzc2FnZSwgZmFsc2UpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlNFIERFU1RST1pBXCIpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIlNFIENBTUJJT1wiKTtcbiAgICB9XG5cbiAgICBvcGVuTW9kYWwoKSB7XG4gICAgICAgIHRoaXMuY2xlYXJTdG9yYWdlU3RhdGUoKVxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnZGF0YVJlZGlyZWN0JywgdGhpcy5kYXRhUmVkaXJlY3QoKSlcbiAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2RhdGFEZWNpZGlyJywgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgLi4udGhpcy5tZXRob2QsXG4gICAgICAgICAgICB0b3RhbF9hbW91bnQ6IHRoaXMudG90YWxfYW1vdW50XG4gICAgICAgIH0pKVxuICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N1YnRvdGFsJywgdGhpcy50b3RhbF9hbW91bnQudG9TdHJpbmcoKSlcbiAgICAgICAgdGhpcy5zaG93TW9kYWwgPSB0cnVlO1xuICAgICAgICB0aGlzLmNsb3NlTW9kYWwgPSAnJ1xuICAgICAgICB0aGlzLmNhbGxTdGF0ZSgpXG4gICAgfVxuXG4gICAgY2xlYXJTdG9yYWdlU3RhdGUgPSAoKSA9PiB7XG4gICAgICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ3N0YXRlJylcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3N0YXRlJylcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ2RhdGFSZWRpcmVjdCcpXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdkYXRhRGVjaWRpcicpXG4gICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKCdtZXNzYWdlJylcbiAgICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3N1Yk1lc3NhZ2UnKVxuICAgICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnc3VidG90YWwnKVxuICAgIH1cblxuICAgIGNsaWNrQ2xvc2UgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbCA9ICdjYW5jZWwnXG4gICAgICAgIHRoaXMuc2hvd01vZGFsID0gZmFsc2U7XG4gICAgICAgIHRoaXMucHJvY2Vzc0Vycm9yKCdTZSBjYW5jZWxvIGVsIHBhZ28gY29uIERlY2lkaXInKVxuICAgIH1cblxuICAgIHNob3dNZXNzYWdlID0gKCkgPT4ge1xuICAgICAgICBsZXQgbWVzc2FnZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtZXNzYWdlJykgfHwgdW5kZWZpbmVkXG4gICAgICAgIGxldCBzdWJNZXNzYWdlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3N1Yk1lc3NhZ2UnKSB8fCB1bmRlZmluZWRcbiAgICAgICAgbWVzc2FnZSAmJiB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdyhtZXNzYWdlLHt9LCcnLCB7Y2xvc2VCdXR0b246dHJ1ZSx0aW1lT3V0OjYwMDB9KTtcbiAgICAgICAgc3ViTWVzc2FnZSAmJiB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdyhzdWJNZXNzYWdlLHt9LCcnLCB7Y2xvc2VCdXR0b246dHJ1ZSx0aW1lT3V0OjYwMDB9KTtcbiAgICB9XG5cblxuICAgIGNhbGxTdGF0ZSA9ICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IHRoaXMuY2xvc2VNb2RhbCAhPSAnJyA/IHRoaXMuY2xvc2VNb2RhbCA6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzdGF0ZScpXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlXG4gICAgICAgICAgICBzdGF0ZSAmJiB0aGlzLnNob3dNZXNzYWdlKCk7XG4gICAgICAgICAgICBpZiAoc3RhdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZVxuICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJTdG9yYWdlU3RhdGUoKVxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAnc3VjY2VzcycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWFkeS5lbWl0KHRydWUpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAncGFydGlhbGx5X2F1dGhvcml6ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVhZHkuZW1pdCh0cnVlKVxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcih0aGlzLnBhcmFtc01lbnNhamUpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PSAnY2FuY2VsJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlID09ICdmYWlsdXJlJykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3NFcnJvcignJylcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5zaG93TW9kYWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuY2FsbFN0YXRlKClcbiAgICAgICAgICAgIH0sIDUwMDApO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG5cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb2Nlc3NFcnJvciA9IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0clNlcnZpY2Uuc2hvdyhlcnIgIT0gJycgPyBlcnIgOiAncGF5bWVudC1lcnJvcicpO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SIEVOVklPIEJBQ0sgIFwiLCBlcnIpO1xuICAgIH1cblxuICAgIGdldENoZWNrb3V0RGVjaWRpciA9ICgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZVxuICAgICAgICB0aGlzLmRhdGFEZWNpZGlyID0gdGhpcy5tZXRob2Q7XG4gICAgICAgIHRoaXMudXJsID0gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKCdhc3NldHMvZGVjaWRpckZvcm1FYy5odG1sJylcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2VcbiAgICAgICAgXG4gICAgICAgIC8vIEVzY3VjaGFyIG1lbnNhamVzIGRlbCBpZnJhbWUgcGFyYSBtYW5lamFyIGxhIGNvbXVuaWNhY2nDs25cbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21lc3NhZ2UnLCB0aGlzLmhhbmRsZUlmcmFtZU1lc3NhZ2UuYmluZCh0aGlzKSwgZmFsc2UpO1xuICAgIH1cblxuICAgIGhhbmRsZUlmcmFtZU1lc3NhZ2UgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgICAvLyBWZXJpZmljYXIgZWwgb3JpZ2VuIHBvciBzZWd1cmlkYWRcbiAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbiAhPT0gd2luZG93LmxvY2F0aW9uLm9yaWdpbikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmRhdGEgJiYgZXZlbnQuZGF0YS50eXBlID09PSAnREVDSURJUl9QQVlNRU5UJykge1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coJ0RlY2lkaXJDb21wb25lbnQgLSBQcm9jZXNhbmRvIHBhZ28gY29uIHBheWxvYWQ6JywgZXZlbnQuZGF0YS5wYXlsb2FkKTtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc1BheW1lbnQoZXZlbnQuZGF0YS5wYXlsb2FkKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb2Nlc3NQYXltZW50ID0gKHBheW1lbnREYXRhOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICBcbiAgICAgICAgXG4gICAgICAgIHRoaXMuY29ubmVjdGlvbi5wb3N0KCdzaG9wLWFwaS8nICsgdGhpcy5jb25zdHMuZ2V0Q2hhbm5lbCgpICsgJy9kZWNpZGlyLycgKyB0aGlzLmNhcnRTZXJ2aWNlLmNhcnRUb2tlbiArICcvcHJvY2Vzcy1wYXltZW50JylcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICAgICAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAvLyBjb25zb2xlLmxvZygnUmVzcHVlc3RhIGRlbCBiYWNrZW5kOicsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09ICdhcHByb3ZlZCcgfHwgcmVzcG9uc2Uuc3RhdHVzID09PSAncGFydGlhbGx5X2F1dGhvcml6ZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3RhdGUnLCByZXNwb25zZS5zdGF0dXMgPT09ICdhcHByb3ZlZCcgPyAnc3VjY2VzcycgOiAncGFydGlhbGx5X2F1dGhvcml6ZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5tZXNzYWdlKSBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbWVzc2FnZScsIHJlc3BvbnNlLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Yk1lc3NhZ2UpIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdWJNZXNzYWdlJywgcmVzcG9uc2Uuc3ViTWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGxTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N0YXRlJywgJ2ZhaWx1cmUnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5tZXNzYWdlKSBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbWVzc2FnZScsIHJlc3BvbnNlLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnN1Yk1lc3NhZ2UpIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdWJNZXNzYWdlJywgcmVzcG9uc2Uuc3ViTWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbGxTdGF0ZSgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHByb2Nlc3NpbmcgcGF5bWVudDonLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdGF0ZScsICdmYWlsdXJlJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0Vycm9yKCdFcnJvciBhbCBwcm9jZXNhciBlbCBwYWdvJyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsbFN0YXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmVzaXplSWZyYW1lID0gKG9iajogYW55KSA9PiB7XG4gICAgICAgIG9iai5zdHlsZS5oZWlnaHQgPSBvYmouY29udGVudFdpbmRvdy5kb2N1bWVudC5ib2R5LnNjcm9sbEhlaWdodCArICdweCc7XG4gICAgICAgIG9iai5zdHlsZS53aWR0aCA9IG9iai5jb250ZW50V2luZG93LmRvY3VtZW50LmJvZHkuc2Nyb2xsV2lkdGggKyAncHgnO1xuICAgIH1cblxufVxuXG4iLCI8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICA8aDM+Q29udGludWFyIGNvbiBlbCBwYWdvIGVuIERlY2lkaXI8L2gzPlxuICAgIEBpZiAobWV0aG9kKSB7XG4gICAgPHAgY2xhc3M9XCJweC01XCI+e3sgbWV0aG9kLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgIDxwIGNsYXNzPVwicHgtNVwiPnt7IG1ldGhvZC5pbnN0cnVjdGlvbnMgfX08L3A+XG4gICAgfVxuICAgIEBpZiAoIWxvYWRpbmcpIHtcbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tb3V0bGluZS1zZWNvbmRhcnkgY29tcHJhclwiIChjbGljayk9XCJvcGVuTW9kYWwoKVwiPlBhZ2FyPC9idXR0b24+XG4gICAgfSBAZWxzZSB7XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBqdXNpdGZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBtdC0yXCI+XG4gICAgICAgIDxhcHAtbG9hZGluZy1mdWxsLWVjPjwvYXBwLWxvYWRpbmctZnVsbC1lYz5cbiAgICA8L2Rpdj5cbiAgICB9XG4gICAgPC9kaXY+XG5cbkBpZiAoc2hvd01vZGFsKSB7XG48ZGl2IGNsYXNzPVwibW9kYWwtYmFja2Ryb3BcIiAoY2xpY2spPVwiY2xpY2tDbG9zZSgpXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1sZ1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGF5bWVudC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBJZnJhbWUgZGVsIGZvcm11bGFyaW8gZGUgZGVjaWRpciAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlmcmFtZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpZnJhbWUgW3NyY109XCJ1cmxcIiBmcmFtZWJvcmRlcj1cIjBcIiBjbGFzcz1cInBheW1lbnQtaWZyYW1lXCI+PC9pZnJhbWU+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG59XG4iXX0=
|
|
@@ -29,10 +29,8 @@ export class MagnizoomEcComponent {
|
|
|
29
29
|
this.document = inject(DOCUMENT); // Solo se inyecta en el navegador
|
|
30
30
|
}
|
|
31
31
|
afterRender(() => {
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
this.loadImage(this.imageSrc);
|
|
35
|
-
}
|
|
32
|
+
this.initContext();
|
|
33
|
+
this.loadImage(this.imageSrc);
|
|
36
34
|
});
|
|
37
35
|
}
|
|
38
36
|
ngOnInit() {
|
|
@@ -44,7 +42,7 @@ export class MagnizoomEcComponent {
|
|
|
44
42
|
this.context = this.canvas.getContext('2d');
|
|
45
43
|
}
|
|
46
44
|
loadImage(src) {
|
|
47
|
-
if (
|
|
45
|
+
if (this.document) {
|
|
48
46
|
this.image = this.document.createElement('img');
|
|
49
47
|
this.image.onload = () => {
|
|
50
48
|
this.lensSize = { width: this.image.width / 2, height: this.image.height / 2 };
|
|
@@ -177,4 +175,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
177
175
|
type: ViewChild,
|
|
178
176
|
args: ['mainCanvas', { static: true }]
|
|
179
177
|
}] } });
|
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFnbml6b29tLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL3dpZGdldHMtZWMvbWFnbml6b29tLWVjL21hZ25pem9vbS1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy93aWRnZXRzLWVjL21hZ25pem9vbS1lYy9tYWduaXpvb20tZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFZbkksTUFBTSxPQUFPLG9CQUFvQjtJQUN4QixRQUFRLEdBQW1CLElBQUksQ0FBQztJQUM3QixVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXBDLFFBQVEsR0FBUSxFQUFFLENBQUM7SUFDeEIsSUFBYSxRQUFRLENBQUMsS0FBWTtRQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ1EsUUFBUSxHQUFxQixPQUFPLENBQUM7SUFDckMsYUFBYSxHQUFHLEdBQUcsQ0FBQztJQUNwQixhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBRzlCLFVBQVUsQ0FBeUI7SUFDdkIsVUFBVSxDQUFNO0lBRWtCLGFBQWEsQ0FBYztJQUV0RSxNQUFNLENBQXFCO0lBQzNCLE9B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Q0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQsWUFBWTtRQUNSLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUM3QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDOUMsNENBQTRDO1FBQzVDLDRDQUE0QztRQUM1QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzFFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFjLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFjLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDMUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxTQUFTLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUztRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDOUQsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxPQUFlLEVBQUUsT0FBZTtRQUNuRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDekQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQzNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUM3RCxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDO1FBQ3ZELE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDdEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWlCO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBaUI7UUFDaEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWlCO1FBQzNCLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDcEMsYUFBYSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQUMsQ0FBQztRQUMvRSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUFDLENBQUM7UUFDL0UsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLGFBQWEsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQixDQUFDO1FBQ0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QixDQUFDO3dHQXhLUSxvQkFBb0I7NEZBQXBCLG9CQUFvQixxWENiakMsdVZBV0EseURERlcsWUFBWTs7NEZBSVYsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNDLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7d0RBU1AsUUFBUTtzQkFBcEIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFHVCxVQUFVO3NCQUROLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFcUMsYUFBYTtzQkFBdkQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgYWZ0ZXJOZXh0UmVuZGVyLCBhZnRlclJlbmRlciwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbmplY3QsIElucHV0LCBPbkluaXQsIFBMQVRGT1JNX0lELCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW50ZXJmYWNlIFNpemUyRCB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyOyB9XG50eXBlIFBvaW50MkQgPSB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0gfCBudWxsO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdbYXBwLW1hZ25pem9vbS1lY10nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcblx0dGVtcGxhdGVVcmw6ICcuL21hZ25pem9vbS1lYy5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsOiAnLi9tYWduaXpvb20tZWMuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIE1hZ25pem9vbUVjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblx0cHJpdmF0ZSBkb2N1bWVudDpEb2N1bWVudCB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cblx0cHJpdmF0ZSBpbWFnZVNyYzpzdHJpbmc9Jyc7XG4gICAgQElucHV0KCkgc2V0IEltYWdlU3JjKHZhbHVlOnN0cmluZykgeyBcbiAgICAgICAgdGhpcy5pbWFnZVNyYyA9IHZhbHVlOyBcbiAgICAgICAgdGhpcy5sb2FkSW1hZ2UodGhpcy5pbWFnZVNyYyk7IFxuICAgIH1cbiAgICBASW5wdXQoKSB6b29tTW9kZTogJ0xFTlMnIHwgJ0NPVkVSJyA9ICdDT1ZFUic7XG4gICAgQElucHV0KCkgbWluWm9vbUZhY3RvciA9IDEuMjtcbiAgICBASW5wdXQoKSBtYXhab29tRmFjdG9yID0gMztcblxuICAgIEBJbnB1dCgpXG5cdGltYWdlU3R5bGUhOiB7IFt4OiBzdHJpbmddOiBhbnk7IH07XG4gICAgQElucHV0KCkgaW1hZ2VDbGFzczogYW55O1xuXG4gICAgQFZpZXdDaGlsZCgnbWFpbkNhbnZhcycsIHsgc3RhdGljOiB0cnVlIH0pIG1haW5DYW52YXNSZWYhOiBFbGVtZW50UmVmO1xuXG4gICAgY2FudmFzITogSFRNTENhbnZhc0VsZW1lbnQ7XG4gICAgY29udGV4dCE6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB8IG51bGw7XG4gICAgaW1hZ2UhOiBIVE1MSW1hZ2VFbGVtZW50O1xuXG4gICAgbW91c2VQb3NpdGlvbjogUG9pbnQyRCA9IG51bGw7XG4gICAgbGVuc1NpemU6IFNpemUyRCA9IHsgd2lkdGg6IDQwMCwgaGVpZ2h0OiAzMDAgfTtcbiAgICB6b29tRmFjdG9yID0gMjtcblxuICAgIGdldCBjYW52YXNXaWR0aCgpIHsgcmV0dXJuIHRoaXMuaW1hZ2UgJiYgdGhpcy5pbWFnZS53aWR0aCB8fCA4MDA7IH1cbiAgICBnZXQgY2FudmFzSGVpZ2h0KCkgeyByZXR1cm4gdGhpcy5pbWFnZSAmJiB0aGlzLmltYWdlLmhlaWdodCB8fCA2MDA7IH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7IC8vIFNvbG8gc2UgaW55ZWN0YSBlbiBlbCBuYXZlZ2Fkb3JcbiAgICAgICAgfVxuICAgICAgICBhZnRlclJlbmRlcigoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaW5pdENvbnRleHQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRJbWFnZSh0aGlzLmltYWdlU3JjKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIG5nT25Jbml0KCkge1xuICAgICAgIC8qICB0aGlzLmluaXRDb250ZXh0KCk7XG4gICAgICAgIHRoaXMubG9hZEltYWdlKHRoaXMuaW1hZ2VTcmMpOyAqL1xuICAgIH1cblxuICAgIGluaXRDb250ZXh0KCkge1xuICAgICAgICBcbiAgICAgICAgdGhpcy5jYW52YXMgPSAodGhpcy5tYWluQ2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTENhbnZhc0VsZW1lbnQpO1xuICAgICAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIH1cblxuICAgIGxvYWRJbWFnZShzcmM6IHN0cmluZykge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSAmJiB0aGlzLmRvY3VtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmltYWdlID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2Uub25sb2FkID0gKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMubGVuc1NpemUgPSB7IHdpZHRoOiB0aGlzLmltYWdlLndpZHRoIC8gMiwgaGVpZ2h0OiB0aGlzLmltYWdlLmhlaWdodCAvIDIgfTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVuZGVyKCkpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuaW1hZ2Uuc3JjID0gc3JjO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVuZGVyKCkge1xuXHRcdGlmKHRoaXMuY29udGV4dCl7XG5cdFx0XHR0aGlzLmNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIHRoaXMuY2FudmFzV2lkdGgsIHRoaXMuY2FudmFzSGVpZ2h0KTsgLy8gY2xlYXIgY2FudmFzXG5cdFx0XHR0aGlzLmNvbnRleHQubGluZVdpZHRoID0gMTsgLy8gYm9yZGVyIHdpZHRoXG5cdFx0XHR0aGlzLmNvbnRleHQuZHJhd0ltYWdlKHRoaXMuaW1hZ2UsIDAsIDApOyAvLyBiZyBpbWFnZVxuXG5cdFx0XHRpZiAodGhpcy5tb3VzZVBvc2l0aW9uKSB7XG5cdFx0XHRcdHN3aXRjaCAodGhpcy56b29tTW9kZSkge1xuXHRcdFx0XHRcdGNhc2UgJ0xFTlMnOiB0aGlzLnJlbmRlckxlbnNNb2RlKCk7IGJyZWFrO1xuXHRcdFx0XHRcdGNhc2UgJ0NPVkVSJzogdGhpcy5yZW5kZXJDb3Zlck1vZGUoKTsgYnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG4gICAgfVxuXG4gICAgcmVuZGVyTGVuc01vZGUoKSB7XG5cdFx0aWYodGhpcy5jb250ZXh0KXtcbiAgICAgICAgdGhpcy5jb250ZXh0LmxpbmVXaWR0aCA9IDU7IC8vIGJvcmRlciB3aWR0aFxuICAgICAgICBjb25zdCB6b29tUmVjdCA9IHRoaXMuZ2V0Wm9vbVJlY3QoKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LmZpbGxSZWN0KHpvb21SZWN0LngsIHpvb21SZWN0LnksIHpvb21SZWN0LncsIHpvb21SZWN0LmgpOyAvLyBiZyAoY2xlYXIpXG4gICAgICAgIGNvbnN0IGNsaXBwaW5nUmVjdCA9IHRoaXMuZ2V0Q2xpcHBpbmdSZWN0KCk7XG4gICAgICAgIC8vIHpvb20gaW1hZ2VcbiAgICAgICAgdGhpcy5jb250ZXh0LmRyYXdJbWFnZShcbiAgICAgICAgICAgIHRoaXMuaW1hZ2UsXG4gICAgICAgICAgICBjbGlwcGluZ1JlY3QueCwgY2xpcHBpbmdSZWN0LnksIGNsaXBwaW5nUmVjdC53LCBjbGlwcGluZ1JlY3QuaCxcbiAgICAgICAgICAgIHpvb21SZWN0LngsIHpvb21SZWN0LnksIHpvb21SZWN0LncsIHpvb21SZWN0LmhcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5jb250ZXh0LnN0cm9rZVJlY3Qoem9vbVJlY3QueCwgem9vbVJlY3QueSwgem9vbVJlY3Qudywgem9vbVJlY3QuaCk7IC8vIGJvcmRlclxuXHR9XG5cdH1cblxuICAgIHJlbmRlckNvdmVyTW9kZSgpIHtcbiAgICAgICAgY29uc3QgY292ZXJ0UmVjdCA9IHRoaXMuZ2V0Q292ZXJSZWN0KCk7XG4gICAgICAgIHRoaXMuY29udGV4dCAmJiB0aGlzLmNvbnRleHQuZHJhd0ltYWdlKFxuICAgICAgICAgICAgdGhpcy5pbWFnZSxcbiAgICAgICAgICAgIGNvdmVydFJlY3QueCwgY292ZXJ0UmVjdC55LCBjb3ZlcnRSZWN0LncsIGNvdmVydFJlY3QuaCxcbiAgICAgICAgICAgIDAsIDAsIHRoaXMuY2FudmFzV2lkdGgsIHRoaXMuY2FudmFzSGVpZ2h0XG4gICAgICAgICk7IC8vIGNvdmVyIGltYWdlXG4gICAgfVxuXG4gICAgZ2V0Wm9vbVJlY3QoKSB7XG4gICAgICAgIGNvbnN0IHcgPSB0aGlzLmxlbnNTaXplLndpZHRoO1xuICAgICAgICBjb25zdCBoID0gdGhpcy5sZW5zU2l6ZS5oZWlnaHQ7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLm1vdXNlUG9zaXRpb24hLnggLSAodyAvIDIpO1xuICAgICAgICBjb25zdCB5ID0gdGhpcy5tb3VzZVBvc2l0aW9uIS55IC0gKGggLyAyKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xhbXBSZWN0KHgsIHksIHcsIGgpO1xuICAgIH1cblxuICAgIGdldENsaXBwaW5nUmVjdCgpIHtcbiAgICAgICAgY29uc3QgdyA9IHRoaXMubGVuc1NpemUud2lkdGggLyB0aGlzLnpvb21GYWN0b3I7XG4gICAgICAgIGNvbnN0IGggPSB0aGlzLmxlbnNTaXplLmhlaWdodCAvIHRoaXMuem9vbUZhY3RvcjtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMubW91c2VQb3NpdGlvbiEueCAtICh3IC8gMik7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLm1vdXNlUG9zaXRpb24hLnkgLSAoaCAvIDIpO1xuICAgICAgICByZXR1cm4gdGhpcy5jbGFtcFJlY3QoeCwgeSwgdywgaCk7XG4gICAgfVxuXG4gICAgZ2V0Q292ZXJSZWN0KCkge1xuICAgICAgICBjb25zdCB3ID0gdGhpcy5jYW52YXNXaWR0aCAvIHRoaXMuem9vbUZhY3RvcjtcbiAgICAgICAgY29uc3QgaCA9IHRoaXMuY2FudmFzSGVpZ2h0IC8gdGhpcy56b29tRmFjdG9yO1xuICAgICAgICAvLyBjb25zdCB4ID0gdGhpcy5tb3VzZVBvc2l0aW9uLnggLSAodyAvIDIpO1xuICAgICAgICAvLyBjb25zdCB5ID0gdGhpcy5tb3VzZVBvc2l0aW9uLnkgLSAoaCAvIDIpO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5tb3VzZVBvc2l0aW9uIS54IC0gdGhpcy5tb3VzZVBvc2l0aW9uIS54IC8gdGhpcy56b29tRmFjdG9yO1xuICAgICAgICBjb25zdCB5ID0gdGhpcy5tb3VzZVBvc2l0aW9uIS55IC0gdGhpcy5tb3VzZVBvc2l0aW9uIS55IC8gdGhpcy56b29tRmFjdG9yO1xuICAgICAgICByZXR1cm4gdGhpcy5jbGFtcFJlY3QoeCwgeSwgdywgaCk7XG4gICAgfVxuXG4gICAgY2xhbXBSZWN0KHg6IG51bWJlciwgeTogbnVtYmVyLCB3OiBudW1iZXIsIGg6IG51bWJlcikge1xuICAgICAgICBpZiAoeCA8PSAwKSB7IHggPSAwOyB9XG4gICAgICAgIGlmICh4ICsgdyA+PSB0aGlzLmNhbnZhc1dpZHRoKSB7IHggPSB0aGlzLmNhbnZhc1dpZHRoIC0gdzsgfVxuICAgICAgICBpZiAoeSA8IDApIHsgeSA9IDA7IH1cbiAgICAgICAgaWYgKHkgKyBoID49IHRoaXMuY2FudmFzSGVpZ2h0KSB7IHkgPSB0aGlzLmNhbnZhc0hlaWdodCAtIGg7IH1cbiAgICAgICAgcmV0dXJuIHsgeCwgeSwgdywgaCB9O1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZU1vdXNlUG9zaXRpb24oY2xpZW50WDogbnVtYmVyLCBjbGllbnRZOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgYm91bmRpbmdSZWN0ID0gdGhpcy5jYW52YXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHZpZXdUb01vZGVsWCA9IHRoaXMuY2FudmFzV2lkdGggLyBib3VuZGluZ1JlY3Qud2lkdGg7XG4gICAgICAgIGNvbnN0IHZpZXdUb01vZGVsWSA9IHRoaXMuY2FudmFzSGVpZ2h0IC8gYm91bmRpbmdSZWN0LmhlaWdodDtcbiAgICAgICAgY29uc3QgeCA9IChjbGllbnRYIC0gYm91bmRpbmdSZWN0LmxlZnQpICogdmlld1RvTW9kZWxYO1xuICAgICAgICBjb25zdCB5ID0gKGNsaWVudFkgLSBib3VuZGluZ1JlY3QudG9wKSAqIHZpZXdUb01vZGVsWTtcbiAgICAgICAgdGhpcy5tb3VzZVBvc2l0aW9uID0geyB4LCB5IH07XG4gICAgfVxuXG4gICAgb25Nb3VzZUxlYXZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMubW91c2VQb3NpdGlvbiA9IG51bGw7XG4gICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgfVxuXG4gICAgb25Nb3VzZUVudGVyT3JNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlTW91c2VQb3NpdGlvbihldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKTtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG5cbiAgICBvbk1vdXNlU2Nyb2xsKGV2ZW50OiBXaGVlbEV2ZW50KSB7XG4gICAgICAgIGxldCBuZXdab29tRmFjdG9yID0gdGhpcy56b29tRmFjdG9yO1xuICAgICAgICBuZXdab29tRmFjdG9yIC09IGV2ZW50LmRlbHRhWSAvIDEwMDA7XG4gICAgICAgIGlmIChuZXdab29tRmFjdG9yIDwgdGhpcy5taW5ab29tRmFjdG9yKSB7IG5ld1pvb21GYWN0b3IgPSB0aGlzLm1pblpvb21GYWN0b3I7IH1cbiAgICAgICAgaWYgKG5ld1pvb21GYWN0b3IgPiB0aGlzLm1heFpvb21GYWN0b3IpIHsgbmV3Wm9vbUZhY3RvciA9IHRoaXMubWF4Wm9vbUZhY3RvcjsgfVxuICAgICAgICBpZiAodGhpcy56b29tRmFjdG9yICE9PSBuZXdab29tRmFjdG9yKSB7XG4gICAgICAgICAgICB0aGlzLnpvb21GYWN0b3IgPSBuZXdab29tRmFjdG9yO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgfVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG59XG4iLCI8Y2FudmFzICNtYWluQ2FudmFzXG4gIGNsYXNzPVwibWFpbi1jYW52YXNcIlxuICBbbmdDbGFzc109XCJpbWFnZUNsYXNzXCJcbiAgW25nU3R5bGVdPVwiaW1hZ2VTdHlsZVwiXG4gIFt3aWR0aF09XCJjYW52YXNXaWR0aFwiXG4gIFtoZWlnaHRdPVwiY2FudmFzSGVpZ2h0XCJcbiAgKG1vdXNlbGVhdmUpPVwib25Nb3VzZUxlYXZlKCRldmVudClcIlxuICAobW91c2VlbnRlcik9XCJvbk1vdXNlRW50ZXJPck1vdmUoJGV2ZW50KVwiXG4gIChtb3VzZW1vdmUpPVwib25Nb3VzZUVudGVyT3JNb3ZlKCRldmVudClcIlxuICAod2hlZWwpPVwib25Nb3VzZVNjcm9sbCgkZXZlbnQpXCI+XG48L2NhbnZhcz5cbiJdfQ==
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFnbml6b29tLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL3dpZGdldHMtZWMvbWFnbml6b29tLWVjL21hZ25pem9vbS1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy93aWRnZXRzLWVjL21hZ25pem9vbS1lYy9tYWduaXpvb20tZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBVSxXQUFXLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFZbkksTUFBTSxPQUFPLG9CQUFvQjtJQUN4QixRQUFRLEdBQW1CLElBQUksQ0FBQztJQUM3QixVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRXBDLFFBQVEsR0FBUSxFQUFFLENBQUM7SUFDeEIsSUFBYSxRQUFRLENBQUMsS0FBWTtRQUM5QixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ1EsUUFBUSxHQUFxQixPQUFPLENBQUM7SUFDckMsYUFBYSxHQUFHLEdBQUcsQ0FBQztJQUNwQixhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBRzlCLFVBQVUsQ0FBeUI7SUFDdkIsVUFBVSxDQUFNO0lBRWtCLGFBQWEsQ0FBYztJQUV0RSxNQUFNLENBQXFCO0lBQzNCLE9B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QUFDLFVBQVUsQ0FBQztRQUM3QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDOUMsNENBQTRDO1FBQzVDLDRDQUE0QztRQUM1QyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQzFFLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFjLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFjLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDMUUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxTQUFTLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUztRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDOUQsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxPQUFlLEVBQUUsT0FBZTtRQUNuRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDekQsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDO1FBQzNELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQztRQUM3RCxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sR0FBRyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsWUFBWSxDQUFDO1FBQ3ZELE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDdEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWlCO1FBQzFCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO1FBQzFCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBaUI7UUFDaEMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRUQsYUFBYSxDQUFDLEtBQWlCO1FBQzNCLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDcEMsYUFBYSxJQUFJLEtBQUssQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ3JDLElBQUksYUFBYSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQUMsQ0FBQztRQUMvRSxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUFDLENBQUM7UUFDL0UsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLGFBQWEsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsYUFBYSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQixDQUFDO1FBQ0QsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QixDQUFDO3dHQXRLUSxvQkFBb0I7NEZBQXBCLG9CQUFvQixxWENiakMsdVZBV0EseURERlcsWUFBWTs7NEZBSVYsb0JBQW9CO2tCQVBoQyxTQUFTOytCQUNDLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7d0RBU1AsUUFBUTtzQkFBcEIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFHVCxVQUFVO3NCQUROLEtBQUs7Z0JBRUcsVUFBVTtzQkFBbEIsS0FBSztnQkFFcUMsYUFBYTtzQkFBdkQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgYWZ0ZXJOZXh0UmVuZGVyLCBhZnRlclJlbmRlciwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbmplY3QsIElucHV0LCBPbkluaXQsIFBMQVRGT1JNX0lELCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW50ZXJmYWNlIFNpemUyRCB7IHdpZHRoOiBudW1iZXI7IGhlaWdodDogbnVtYmVyOyB9XG50eXBlIFBvaW50MkQgPSB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0gfCBudWxsO1xuXG5AQ29tcG9uZW50KHtcblx0c2VsZWN0b3I6ICdbYXBwLW1hZ25pem9vbS1lY10nLFxuXHRzdGFuZGFsb25lOiB0cnVlLFxuXHRpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcblx0dGVtcGxhdGVVcmw6ICcuL21hZ25pem9vbS1lYy5jb21wb25lbnQuaHRtbCcsXG5cdHN0eWxlVXJsOiAnLi9tYWduaXpvb20tZWMuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIE1hZ25pem9vbUVjQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblx0cHJpdmF0ZSBkb2N1bWVudDpEb2N1bWVudCB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcGxhdGZvcm1JZCA9IGluamVjdChQTEFURk9STV9JRCk7XG5cblx0cHJpdmF0ZSBpbWFnZVNyYzpzdHJpbmc9Jyc7XG4gICAgQElucHV0KCkgc2V0IEltYWdlU3JjKHZhbHVlOnN0cmluZykgeyBcbiAgICAgICAgdGhpcy5pbWFnZVNyYyA9IHZhbHVlOyBcbiAgICAgICAgdGhpcy5sb2FkSW1hZ2UodGhpcy5pbWFnZVNyYyk7IFxuICAgIH1cbiAgICBASW5wdXQoKSB6b29tTW9kZTogJ0xFTlMnIHwgJ0NPVkVSJyA9ICdDT1ZFUic7XG4gICAgQElucHV0KCkgbWluWm9vbUZhY3RvciA9IDEuMjtcbiAgICBASW5wdXQoKSBtYXhab29tRmFjdG9yID0gMztcblxuICAgIEBJbnB1dCgpXG5cdGltYWdlU3R5bGUhOiB7IFt4OiBzdHJpbmddOiBhbnk7IH07XG4gICAgQElucHV0KCkgaW1hZ2VDbGFzczogYW55O1xuXG4gICAgQFZpZXdDaGlsZCgnbWFpbkNhbnZhcycsIHsgc3RhdGljOiB0cnVlIH0pIG1haW5DYW52YXNSZWYhOiBFbGVtZW50UmVmO1xuXG4gICAgY2FudmFzITogSFRNTENhbnZhc0VsZW1lbnQ7XG4gICAgY29udGV4dCE6IENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB8IG51bGw7XG4gICAgaW1hZ2UhOiBIVE1MSW1hZ2VFbGVtZW50O1xuXG4gICAgbW91c2VQb3NpdGlvbjogUG9pbnQyRCA9IG51bGw7XG4gICAgbGVuc1NpemU6IFNpemUyRCA9IHsgd2lkdGg6IDQwMCwgaGVpZ2h0OiAzMDAgfTtcbiAgICB6b29tRmFjdG9yID0gMjtcblxuICAgIGdldCBjYW52YXNXaWR0aCgpIHsgcmV0dXJuIHRoaXMuaW1hZ2UgJiYgdGhpcy5pbWFnZS53aWR0aCB8fCA4MDA7IH1cbiAgICBnZXQgY2FudmFzSGVpZ2h0KCkgeyByZXR1cm4gdGhpcy5pbWFnZSAmJiB0aGlzLmltYWdlLmhlaWdodCB8fCA2MDA7IH1cblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudCA9IGluamVjdChET0NVTUVOVCk7IC8vIFNvbG8gc2UgaW55ZWN0YSBlbiBlbCBuYXZlZ2Fkb3JcbiAgICAgICAgICB9XG5cdFx0YWZ0ZXJSZW5kZXIoKCk9PiB7XG5cdFx0XHR0aGlzLmluaXRDb250ZXh0KCk7XG5cdFx0XHR0aGlzLmxvYWRJbWFnZSh0aGlzLmltYWdlU3JjKTtcblx0XHR9KVxuXHQgfVxuICAgIFxuICAgIG5nT25Jbml0KCkge1xuICAgICAgIC8qICB0aGlzLmluaXRDb250ZXh0KCk7XG4gICAgICAgIHRoaXMubG9hZEltYWdlKHRoaXMuaW1hZ2VTcmMpOyAqL1xuICAgIH1cblxuICAgIGluaXRDb250ZXh0KCkge1xuICAgICAgICBcbiAgICAgICAgdGhpcy5jYW52YXMgPSAodGhpcy5tYWluQ2FudmFzUmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTENhbnZhc0VsZW1lbnQpO1xuICAgICAgICB0aGlzLmNvbnRleHQgPSB0aGlzLmNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuICAgIH1cblxuICAgIGxvYWRJbWFnZShzcmM6IHN0cmluZykge1xuXHRcdGlmKHRoaXMuZG9jdW1lbnQpe1xuXHRcdFx0dGhpcy5pbWFnZSA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG5cdFx0XHR0aGlzLmltYWdlLm9ubG9hZCA9ICgpID0+IHtcblx0XHRcdFx0dGhpcy5sZW5zU2l6ZSA9IHsgd2lkdGg6IHRoaXMuaW1hZ2Uud2lkdGggLyAyLCBoZWlnaHQ6IHRoaXMuaW1hZ2UuaGVpZ2h0IC8gMiB9O1xuXHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHRoaXMucmVuZGVyKCkpO1xuXHRcdFx0fTtcblx0XHRcdHRoaXMuaW1hZ2Uuc3JjID0gc3JjO1xuXHRcdH1cbiAgICB9XG5cbiAgICByZW5kZXIoKSB7XG5cdFx0aWYodGhpcy5jb250ZXh0KXtcblx0XHRcdHRoaXMuY29udGV4dC5jbGVhclJlY3QoMCwgMCwgdGhpcy5jYW52YXNXaWR0aCwgdGhpcy5jYW52YXNIZWlnaHQpOyAvLyBjbGVhciBjYW52YXNcblx0XHRcdHRoaXMuY29udGV4dC5saW5lV2lkdGggPSAxOyAvLyBib3JkZXIgd2lkdGhcblx0XHRcdHRoaXMuY29udGV4dC5kcmF3SW1hZ2UodGhpcy5pbWFnZSwgMCwgMCk7IC8vIGJnIGltYWdlXG5cblx0XHRcdGlmICh0aGlzLm1vdXNlUG9zaXRpb24pIHtcblx0XHRcdFx0c3dpdGNoICh0aGlzLnpvb21Nb2RlKSB7XG5cdFx0XHRcdFx0Y2FzZSAnTEVOUyc6IHRoaXMucmVuZGVyTGVuc01vZGUoKTsgYnJlYWs7XG5cdFx0XHRcdFx0Y2FzZSAnQ09WRVInOiB0aGlzLnJlbmRlckNvdmVyTW9kZSgpOyBicmVhaztcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cbiAgICB9XG5cbiAgICByZW5kZXJMZW5zTW9kZSgpIHtcblx0XHRpZih0aGlzLmNvbnRleHQpe1xuICAgICAgICB0aGlzLmNvbnRleHQubGluZVdpZHRoID0gNTsgLy8gYm9yZGVyIHdpZHRoXG4gICAgICAgIGNvbnN0IHpvb21SZWN0ID0gdGhpcy5nZXRab29tUmVjdCgpO1xuICAgICAgICB0aGlzLmNvbnRleHQuZmlsbFJlY3Qoem9vbVJlY3QueCwgem9vbVJlY3QueSwgem9vbVJlY3Qudywgem9vbVJlY3QuaCk7IC8vIGJnIChjbGVhcilcbiAgICAgICAgY29uc3QgY2xpcHBpbmdSZWN0ID0gdGhpcy5nZXRDbGlwcGluZ1JlY3QoKTtcbiAgICAgICAgLy8gem9vbSBpbWFnZVxuICAgICAgICB0aGlzLmNvbnRleHQuZHJhd0ltYWdlKFxuICAgICAgICAgICAgdGhpcy5pbWFnZSxcbiAgICAgICAgICAgIGNsaXBwaW5nUmVjdC54LCBjbGlwcGluZ1JlY3QueSwgY2xpcHBpbmdSZWN0LncsIGNsaXBwaW5nUmVjdC5oLFxuICAgICAgICAgICAgem9vbVJlY3QueCwgem9vbVJlY3QueSwgem9vbVJlY3Qudywgem9vbVJlY3QuaFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmNvbnRleHQuc3Ryb2tlUmVjdCh6b29tUmVjdC54LCB6b29tUmVjdC55LCB6b29tUmVjdC53LCB6b29tUmVjdC5oKTsgLy8gYm9yZGVyXG5cdH1cblx0fVxuXG4gICAgcmVuZGVyQ292ZXJNb2RlKCkge1xuICAgICAgICBjb25zdCBjb3ZlcnRSZWN0ID0gdGhpcy5nZXRDb3ZlclJlY3QoKTtcbiAgICAgICAgdGhpcy5jb250ZXh0ICYmIHRoaXMuY29udGV4dC5kcmF3SW1hZ2UoXG4gICAgICAgICAgICB0aGlzLmltYWdlLFxuICAgICAgICAgICAgY292ZXJ0UmVjdC54LCBjb3ZlcnRSZWN0LnksIGNvdmVydFJlY3QudywgY292ZXJ0UmVjdC5oLFxuICAgICAgICAgICAgMCwgMCwgdGhpcy5jYW52YXNXaWR0aCwgdGhpcy5jYW52YXNIZWlnaHRcbiAgICAgICAgKTsgLy8gY292ZXIgaW1hZ2VcbiAgICB9XG5cbiAgICBnZXRab29tUmVjdCgpIHtcbiAgICAgICAgY29uc3QgdyA9IHRoaXMubGVuc1NpemUud2lkdGg7XG4gICAgICAgIGNvbnN0IGggPSB0aGlzLmxlbnNTaXplLmhlaWdodDtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMubW91c2VQb3NpdGlvbiEueCAtICh3IC8gMik7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLm1vdXNlUG9zaXRpb24hLnkgLSAoaCAvIDIpO1xuICAgICAgICByZXR1cm4gdGhpcy5jbGFtcFJlY3QoeCwgeSwgdywgaCk7XG4gICAgfVxuXG4gICAgZ2V0Q2xpcHBpbmdSZWN0KCkge1xuICAgICAgICBjb25zdCB3ID0gdGhpcy5sZW5zU2l6ZS53aWR0aCAvIHRoaXMuem9vbUZhY3RvcjtcbiAgICAgICAgY29uc3QgaCA9IHRoaXMubGVuc1NpemUuaGVpZ2h0IC8gdGhpcy56b29tRmFjdG9yO1xuICAgICAgICBjb25zdCB4ID0gdGhpcy5tb3VzZVBvc2l0aW9uIS54IC0gKHcgLyAyKTtcbiAgICAgICAgY29uc3QgeSA9IHRoaXMubW91c2VQb3NpdGlvbiEueSAtIChoIC8gMik7XG4gICAgICAgIHJldHVybiB0aGlzLmNsYW1wUmVjdCh4LCB5LCB3LCBoKTtcbiAgICB9XG5cbiAgICBnZXRDb3ZlclJlY3QoKSB7XG4gICAgICAgIGNvbnN0IHcgPSB0aGlzLmNhbnZhc1dpZHRoIC8gdGhpcy56b29tRmFjdG9yO1xuICAgICAgICBjb25zdCBoID0gdGhpcy5jYW52YXNIZWlnaHQgLyB0aGlzLnpvb21GYWN0b3I7XG4gICAgICAgIC8vIGNvbnN0IHggPSB0aGlzLm1vdXNlUG9zaXRpb24ueCAtICh3IC8gMik7XG4gICAgICAgIC8vIGNvbnN0IHkgPSB0aGlzLm1vdXNlUG9zaXRpb24ueSAtIChoIC8gMik7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLm1vdXNlUG9zaXRpb24hLnggLSB0aGlzLm1vdXNlUG9zaXRpb24hLnggLyB0aGlzLnpvb21GYWN0b3I7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLm1vdXNlUG9zaXRpb24hLnkgLSB0aGlzLm1vdXNlUG9zaXRpb24hLnkgLyB0aGlzLnpvb21GYWN0b3I7XG4gICAgICAgIHJldHVybiB0aGlzLmNsYW1wUmVjdCh4LCB5LCB3LCBoKTtcbiAgICB9XG5cbiAgICBjbGFtcFJlY3QoeDogbnVtYmVyLCB5OiBudW1iZXIsIHc6IG51bWJlciwgaDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh4IDw9IDApIHsgeCA9IDA7IH1cbiAgICAgICAgaWYgKHggKyB3ID49IHRoaXMuY2FudmFzV2lkdGgpIHsgeCA9IHRoaXMuY2FudmFzV2lkdGggLSB3OyB9XG4gICAgICAgIGlmICh5IDwgMCkgeyB5ID0gMDsgfVxuICAgICAgICBpZiAoeSArIGggPj0gdGhpcy5jYW52YXNIZWlnaHQpIHsgeSA9IHRoaXMuY2FudmFzSGVpZ2h0IC0gaDsgfVxuICAgICAgICByZXR1cm4geyB4LCB5LCB3LCBoIH07XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlTW91c2VQb3NpdGlvbihjbGllbnRYOiBudW1iZXIsIGNsaWVudFk6IG51bWJlcikge1xuICAgICAgICBjb25zdCBib3VuZGluZ1JlY3QgPSB0aGlzLmNhbnZhcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgY29uc3Qgdmlld1RvTW9kZWxYID0gdGhpcy5jYW52YXNXaWR0aCAvIGJvdW5kaW5nUmVjdC53aWR0aDtcbiAgICAgICAgY29uc3Qgdmlld1RvTW9kZWxZID0gdGhpcy5jYW52YXNIZWlnaHQgLyBib3VuZGluZ1JlY3QuaGVpZ2h0O1xuICAgICAgICBjb25zdCB4ID0gKGNsaWVudFggLSBib3VuZGluZ1JlY3QubGVmdCkgKiB2aWV3VG9Nb2RlbFg7XG4gICAgICAgIGNvbnN0IHkgPSAoY2xpZW50WSAtIGJvdW5kaW5nUmVjdC50b3ApICogdmlld1RvTW9kZWxZO1xuICAgICAgICB0aGlzLm1vdXNlUG9zaXRpb24gPSB7IHgsIHkgfTtcbiAgICB9XG5cbiAgICBvbk1vdXNlTGVhdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5tb3VzZVBvc2l0aW9uID0gbnVsbDtcbiAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICB9XG5cbiAgICBvbk1vdXNlRW50ZXJPck1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgdGhpcy5jYWxjdWxhdGVNb3VzZVBvc2l0aW9uKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpO1xuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cblxuICAgIG9uTW91c2VTY3JvbGwoZXZlbnQ6IFdoZWVsRXZlbnQpIHtcbiAgICAgICAgbGV0IG5ld1pvb21GYWN0b3IgPSB0aGlzLnpvb21GYWN0b3I7XG4gICAgICAgIG5ld1pvb21GYWN0b3IgLT0gZXZlbnQuZGVsdGFZIC8gMTAwMDtcbiAgICAgICAgaWYgKG5ld1pvb21GYWN0b3IgPCB0aGlzLm1pblpvb21GYWN0b3IpIHsgbmV3Wm9vbUZhY3RvciA9IHRoaXMubWluWm9vbUZhY3RvcjsgfVxuICAgICAgICBpZiAobmV3Wm9vbUZhY3RvciA+IHRoaXMubWF4Wm9vbUZhY3RvcikgeyBuZXdab29tRmFjdG9yID0gdGhpcy5tYXhab29tRmFjdG9yOyB9XG4gICAgICAgIGlmICh0aGlzLnpvb21GYWN0b3IgIT09IG5ld1pvb21GYWN0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuem9vbUZhY3RvciA9IG5ld1pvb21GYWN0b3I7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbn1cbiIsIjxjYW52YXMgI21haW5DYW52YXNcbiAgY2xhc3M9XCJtYWluLWNhbnZhc1wiXG4gIFtuZ0NsYXNzXT1cImltYWdlQ2xhc3NcIlxuICBbbmdTdHlsZV09XCJpbWFnZVN0eWxlXCJcbiAgW3dpZHRoXT1cImNhbnZhc1dpZHRoXCJcbiAgW2hlaWdodF09XCJjYW52YXNIZWlnaHRcIlxuICAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoJGV2ZW50KVwiXG4gIChtb3VzZWVudGVyKT1cIm9uTW91c2VFbnRlck9yTW92ZSgkZXZlbnQpXCJcbiAgKG1vdXNlbW92ZSk9XCJvbk1vdXNlRW50ZXJPck1vdmUoJGV2ZW50KVwiXG4gICh3aGVlbCk9XCJvbk1vdXNlU2Nyb2xsKCRldmVudClcIj5cbjwvY2FudmFzPlxuIl19
|