ng-miam 6.4.13 → 7.0.0
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/bundles/ng-miam.umd.js +8539 -10855
- package/bundles/ng-miam.umd.js.map +1 -1
- package/bundles/ng-miam.umd.min.js +2 -2
- package/bundles/ng-miam.umd.min.js.map +1 -1
- package/esm2015/lib/_components/abstracts/event-tracer.component.js +3 -2
- package/esm2015/lib/_components/accordion/accordion.component.js +75 -0
- package/esm2015/lib/_components/components.module.js +27 -21
- package/esm2015/lib/_components/counter-input/counter-input.component.js +86 -76
- package/esm2015/lib/_components/icon/icon.component.js +1 -1
- package/esm2015/lib/_components/index.js +5 -5
- package/esm2015/lib/_components/like-button/like-button.component.js +1 -1
- package/esm2015/lib/_components/list-input/list-input.component.js +5 -5
- package/esm2015/lib/_components/loader/loader.component.js +1 -1
- package/esm2015/lib/_components/meals-planner-link/meals-planner-link.component.js +3 -3
- package/esm2015/lib/_components/modal/modal.component.js +155 -137
- package/esm2015/lib/_components/product-card/product-card.component.js +333 -0
- package/esm2015/lib/_components/products-picker/products-picker.component.js +155 -0
- package/esm2015/lib/_components/progress-tracker/progress-tracker.component.js +1 -1
- package/esm2015/lib/_components/recipe-filters/recipe-filters.component.js +166 -217
- package/esm2015/lib/_components/recipe-pricing/recipe-pricing.component.js +55 -35
- package/esm2015/lib/_components/slider-tabs/slider-tabs.component.js +84 -0
- package/esm2015/lib/_components/sponsor-blocks/sponsor-image-and-text-block/sponsor-image-and-text-block.component.js +1 -1
- package/esm2015/lib/_components/sponsor-blocks/sponsor-text-and-image-block/sponsor-text-and-image-block.component.js +1 -1
- package/esm2015/lib/_components/tabs/tabs.component.js +48 -88
- package/esm2015/lib/_components/toaster/toaster.component.js +48 -84
- package/esm2015/lib/_components/tooltipable-content/tooltipable-content.component.js +1 -1
- package/esm2015/lib/_models/basket-entry.js +33 -49
- package/esm2015/lib/_models/basket-preview-line.js +5 -5
- package/esm2015/lib/_models/basket.js +15 -12
- package/esm2015/lib/_models/item.js +2 -2
- package/esm2015/lib/_models/recipe.js +2 -15
- package/esm2015/lib/_models/user.js +1 -1
- package/esm2015/lib/_services/analytics.service.js +24 -5
- package/esm2015/lib/_services/baskets-synchronizing/baskets-comparator.service.js +1 -10
- package/esm2015/lib/_services/baskets-synchronizing/baskets-synchronizer.service.js +15 -15
- package/esm2015/lib/_services/baskets.service.js +478 -60
- package/esm2015/lib/_services/context.service.js +22 -35
- package/esm2015/lib/_services/index.js +3 -5
- package/esm2015/lib/_services/interceptor.service.js +2 -2
- package/esm2015/lib/_services/items.service.js +27 -4
- package/esm2015/lib/_services/recipe-details.service.js +198 -0
- package/esm2015/lib/_services/recipe-likes.service.js +1 -1
- package/esm2015/lib/_services/recipes.service.js +24 -53
- package/esm2015/lib/_services/scrolling.service.js +17 -0
- package/esm2015/lib/_services/toaster.service.js +4 -5
- package/esm2015/lib/_services/user.service.js +2 -2
- package/esm2015/lib/_types/basket-action-type.enum.js +11 -0
- package/esm2015/lib/_types/basket-action.js +2 -0
- package/esm2015/lib/_types/basket-stats.js +2 -0
- package/esm2015/lib/_types/builded/miam-interface.js +1 -1
- package/esm2015/lib/_types/event-trace.js +5 -0
- package/esm2015/lib/_types/items-comparator.js +1 -10
- package/esm2015/lib/_types/recipe-filters.js +1 -1
- package/esm2015/lib/_types/toaster.js +1 -1
- package/esm2015/lib/_utils/directives/index.js +2 -1
- package/esm2015/lib/_utils/directives/reach-top.directive.js +33 -0
- package/esm2015/lib/_utils/pipes/readable-float-number/readable-float-number.pipe.js +8 -2
- package/esm2015/lib/_utils/utils.module.js +12 -8
- package/esm2015/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.js +140 -118
- package/esm2015/lib/_web-components/basket-preview/basket-preview-disabled/basket-preview-disabled.component.js +2 -2
- package/esm2015/lib/_web-components/basket-preview/basket-preview-line/basket-preview-line.component.js +125 -444
- package/esm2015/lib/_web-components/basket-preview/replace-item/replace-item.component.js +211 -108
- package/esm2015/lib/_web-components/index.js +1 -4
- package/esm2015/lib/_web-components/list-scan/basket-preview/basket-preview.component.js +11 -14
- package/esm2015/lib/_web-components/list-scan/files-inputs/files-inputs.component.js +13 -13
- package/esm2015/lib/_web-components/list-scan/ingredients-list/ingredients-list.component.js +6 -6
- package/esm2015/lib/_web-components/list-scan/list-scan.component.js +10 -10
- package/esm2015/lib/_web-components/list-scan/overlay-button/overlay-button.component.js +23 -11
- package/esm2015/lib/_web-components/meals-planner/meals-planner-basket-confirmation/meals-planner-basket-confirmation.component.js +1 -1
- package/esm2015/lib/_web-components/meals-planner/meals-planner-catalog/meals-planner-catalog.component.js +1 -1
- package/esm2015/lib/_web-components/meals-planner/meals-planner-form/meals-planner-form.component.js +7 -7
- package/esm2015/lib/_web-components/meals-planner/meals-planner-result/meals-planner-result.component.js +5 -5
- package/esm2015/lib/_web-components/meals-planner/meals-planner.component.js +16 -20
- package/esm2015/lib/_web-components/planner-side-menu/planner-side-menu.component.js +4 -53
- package/esm2015/lib/_web-components/recipe-cards/add-recipe-card/add-recipe-card.component.js +1 -1
- package/esm2015/lib/_web-components/recipe-cards/index.js +1 -3
- package/esm2015/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.js +326 -404
- package/esm2015/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.js +50 -146
- package/esm2015/lib/_web-components/recipe-cards/recipe-cards.module.js +3 -15
- package/esm2015/lib/_web-components/recipe-catalog/catalog-article-card/catalog-article-card.component.js +1 -1
- package/esm2015/lib/_web-components/recipe-catalog/catalog-category/catalog-category.component.js +35 -29
- package/esm2015/lib/_web-components/recipe-catalog/catalog-header/catalog-header.component.js +1 -1
- package/esm2015/lib/_web-components/recipe-catalog/catalog-list/catalog-list.component.js +27 -31
- package/esm2015/lib/_web-components/recipe-catalog/recipe-catalog.component.js +98 -100
- package/esm2015/lib/_web-components/recipe-creation/recipe-form/recipe-form.component.js +2 -2
- package/esm2015/lib/_web-components/recipe-creation/recipe-stepper/recipe-stepper.component.js +7 -7
- package/esm2015/lib/_web-components/recipe-creation/tags-creator/tags-creator.component.js +4 -4
- package/esm2015/lib/_web-components/recipe-creation/tags-selector/tags-selector.component.js +8 -8
- package/esm2015/lib/_web-components/recipe-details/recipe-addon/recipe-addon.component.js +7 -3
- package/esm2015/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.js +57 -358
- package/esm2015/lib/_web-components/recipe-details/recipe-details-ingredients/recipe-details-ingredients.component.js +59 -122
- package/esm2015/lib/_web-components/recipe-details/recipe-details-steps/recipe-details-steps.component.js +51 -72
- package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +313 -363
- package/esm2015/lib/_web-components/recipe-details/recipe-details.module.js +8 -4
- package/esm2015/lib/_web-components/recipe-details/sponsor-storytelling/sponsor-storytelling.component.js +1 -1
- package/esm2015/lib/_web-components/recipe-helper/recipe-helper.component.js +89 -113
- package/esm2015/lib/_web-components/recipe-modal/recipe-modal.component.js +78 -69
- package/esm2015/lib/_web-components/recipe-tags/recipe-tags.component.js +5 -5
- package/esm2015/lib/_web-components/toaster-stack/toaster-stack.component.js +8 -4
- package/esm2015/lib/_web-components/web-components.module.js +3 -19
- package/esm2015/lib/ng-miam.module.js +5 -7
- package/fesm2015/ng-miam.js +5165 -6973
- package/fesm2015/ng-miam.js.map +1 -1
- package/lib/_components/abstracts/event-tracer.component.d.ts +2 -1
- package/lib/_components/accordion/accordion.component.d.ts +23 -0
- package/lib/_components/components.module.d.ts +38 -36
- package/lib/_components/counter-input/counter-input.component.d.ts +12 -14
- package/lib/_components/index.d.ts +4 -4
- package/lib/_components/modal/modal.component.d.ts +18 -18
- package/lib/_components/product-card/product-card.component.d.ts +40 -0
- package/lib/_components/products-picker/products-picker.component.d.ts +17 -0
- package/lib/_components/recipe-pricing/recipe-pricing.component.d.ts +12 -8
- package/lib/_components/slider-tabs/slider-tabs.component.d.ts +16 -0
- package/lib/_components/tabs/tabs.component.d.ts +11 -11
- package/lib/_components/toaster/toaster.component.d.ts +4 -2
- package/lib/_models/basket-entry.d.ts +16 -20
- package/lib/_models/basket-preview-line.d.ts +1 -0
- package/lib/_models/basket.d.ts +12 -5
- package/lib/_models/item.d.ts +1 -1
- package/lib/_models/recipe.d.ts +0 -5
- package/lib/_models/user.d.ts +0 -1
- package/lib/_services/analytics.service.d.ts +8 -22
- package/lib/_services/baskets-synchronizing/baskets-comparator.service.d.ts +0 -5
- package/lib/_services/baskets-synchronizing/baskets-synchronizer.service.d.ts +3 -6
- package/lib/_services/baskets.service.d.ts +137 -18
- package/lib/_services/context.service.d.ts +2 -4
- package/lib/_services/index.d.ts +2 -4
- package/lib/_services/items.service.d.ts +9 -2
- package/lib/_services/recipe-details.service.d.ts +84 -0
- package/lib/_services/recipe-likes.service.d.ts +2 -1
- package/lib/_services/recipes.service.d.ts +10 -14
- package/lib/_services/scrolling.service.d.ts +8 -0
- package/lib/_services/toaster.service.d.ts +1 -1
- package/lib/_types/basket-action-type.enum.d.ts +9 -0
- package/lib/_types/basket-action.d.ts +14 -0
- package/lib/_types/basket-stats.d.ts +5 -0
- package/lib/_types/builded/miam-interface.d.ts +16 -25
- package/lib/_types/event-trace.d.ts +22 -0
- package/lib/_types/items-comparator.d.ts +0 -5
- package/lib/_types/recipe-filters.d.ts +0 -2
- package/lib/_types/toaster.d.ts +1 -1
- package/lib/_utils/directives/index.d.ts +1 -0
- package/lib/_utils/directives/reach-top.directive.d.ts +13 -0
- package/lib/_utils/pipes/readable-float-number/readable-float-number.pipe.d.ts +1 -1
- package/lib/_utils/utils.module.d.ts +2 -2
- package/lib/_web-components/basket-preview/basket-preview-block/basket-preview-block.component.d.ts +9 -8
- package/lib/_web-components/basket-preview/basket-preview-line/basket-preview-line.component.d.ts +11 -9
- package/lib/_web-components/basket-preview/replace-item/replace-item.component.d.ts +27 -20
- package/lib/_web-components/index.d.ts +0 -3
- package/lib/_web-components/list-scan/basket-preview/basket-preview.component.d.ts +1 -2
- package/lib/_web-components/list-scan/files-inputs/files-inputs.component.d.ts +6 -5
- package/lib/_web-components/list-scan/ingredients-list/ingredients-list.component.d.ts +3 -3
- package/lib/_web-components/list-scan/list-scan.component.d.ts +3 -3
- package/lib/_web-components/list-scan/overlay-button/overlay-button.component.d.ts +8 -6
- package/lib/_web-components/meals-planner/meals-planner.component.d.ts +2 -3
- package/lib/_web-components/recipe-cards/index.d.ts +0 -2
- package/lib/_web-components/recipe-cards/recipe-card/recipe-card.component.d.ts +58 -17
- package/lib/_web-components/recipe-cards/recipe-card-cta/recipe-card-cta.component.d.ts +5 -12
- package/lib/_web-components/recipe-cards/recipe-cards.module.d.ts +7 -9
- package/lib/_web-components/recipe-catalog/catalog-category/catalog-category.component.d.ts +8 -6
- package/lib/_web-components/recipe-catalog/catalog-list/catalog-list.component.d.ts +7 -4
- package/lib/_web-components/recipe-catalog/recipe-catalog.component.d.ts +2 -3
- package/lib/_web-components/recipe-details/recipe-addon/recipe-addon.component.d.ts +5 -2
- package/lib/_web-components/recipe-details/recipe-details-infos/recipe-details-infos.component.d.ts +6 -18
- package/lib/_web-components/recipe-details/recipe-details-ingredients/recipe-details-ingredients.component.d.ts +6 -13
- package/lib/_web-components/recipe-details/recipe-details-steps/recipe-details-steps.component.d.ts +2 -10
- package/lib/_web-components/recipe-details/recipe-details.component.d.ts +29 -36
- package/lib/_web-components/recipe-details/recipe-details.module.d.ts +2 -1
- package/lib/_web-components/recipe-helper/recipe-helper.component.d.ts +2 -6
- package/lib/_web-components/recipe-modal/recipe-modal.component.d.ts +11 -9
- package/lib/_web-components/toaster-stack/toaster-stack.component.d.ts +5 -2
- package/lib/_web-components/web-components.module.d.ts +23 -29
- package/miam-style.css +1 -1
- package/package.json +1 -1
- package/esm2015/lib/_components/abstracts/abstract-recipe-card.component.js +0 -130
- package/esm2015/lib/_components/skeleton/skeleton.component.js +0 -70
- package/esm2015/lib/_components/tabs/tab-body.component.js +0 -30
- package/esm2015/lib/_components/tabs/tab-item.component.js +0 -36
- package/esm2015/lib/_components/tabs/tab-label.component.js +0 -30
- package/esm2015/lib/_models/groceries-entry.js +0 -42
- package/esm2015/lib/_models/groceries-list.js +0 -36
- package/esm2015/lib/_services/counter.service.js +0 -20
- package/esm2015/lib/_services/groceries-entries.service.js +0 -21
- package/esm2015/lib/_services/groceries-lists.service.js +0 -240
- package/esm2015/lib/_services/recipe-events.service.js +0 -63
- package/esm2015/lib/_types/skeleton.enum.js +0 -7
- package/esm2015/lib/_web-components/drawer/drawer.component.js +0 -273
- package/esm2015/lib/_web-components/pos-card/pos-card.component.js +0 -207
- package/esm2015/lib/_web-components/pos-selection/pos-selection.component.js +0 -283
- package/esm2015/lib/_web-components/recipe-cards/catalog-recipe-card/catalog-recipe-card.component.js +0 -632
- package/esm2015/lib/_web-components/recipe-cards/suggestion-card/suggestion-card.component.js +0 -144
- package/lib/_components/abstracts/abstract-recipe-card.component.d.ts +0 -49
- package/lib/_components/skeleton/skeleton.component.d.ts +0 -11
- package/lib/_components/tabs/tab-body.component.d.ts +0 -8
- package/lib/_components/tabs/tab-item.component.d.ts +0 -11
- package/lib/_components/tabs/tab-label.component.d.ts +0 -8
- package/lib/_models/groceries-entry.d.ts +0 -20
- package/lib/_models/groceries-list.d.ts +0 -30
- package/lib/_services/counter.service.d.ts +0 -10
- package/lib/_services/groceries-entries.service.d.ts +0 -10
- package/lib/_services/groceries-lists.service.d.ts +0 -68
- package/lib/_services/recipe-events.service.d.ts +0 -23
- package/lib/_types/skeleton.enum.d.ts +0 -5
- package/lib/_web-components/drawer/drawer.component.d.ts +0 -37
- package/lib/_web-components/pos-card/pos-card.component.d.ts +0 -24
- package/lib/_web-components/pos-selection/pos-selection.component.d.ts +0 -38
- package/lib/_web-components/recipe-cards/catalog-recipe-card/catalog-recipe-card.component.d.ts +0 -49
- package/lib/_web-components/recipe-cards/suggestion-card/suggestion-card.component.d.ts +0 -42
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, ChangeDetectorRef, ElementRef, ViewChildren, QueryList, Input } from '@angular/core';
|
|
2
2
|
import { map, skipWhile, switchMap, take, tap } from 'rxjs/operators';
|
|
3
3
|
import { CatalogCategoryComponent } from './catalog-category/catalog-category.component';
|
|
4
|
-
import { RecipeTypeService, SponsorService, PackageService, SuppliersService, RecipesService, UserService,
|
|
4
|
+
import { RecipeTypeService, SponsorService, PackageService, SuppliersService, RecipesService, UserService, BasketsService, ContextService, CatalogSettingsService } from '../../_services';
|
|
5
5
|
import { Icon } from '../../_types/icon.enum';
|
|
6
6
|
import { CatalogHeaderComponent } from './catalog-header/catalog-header.component';
|
|
7
7
|
import { RecipeFilters } from '../../_types/recipe-filters';
|
|
@@ -47,75 +47,76 @@ function RecipeCatalogComponent_div_2_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
|
47
47
|
i0.ɵɵadvance(3);
|
|
48
48
|
i0.ɵɵproperty("iconName", ctx_r4.icon.ChevronDown);
|
|
49
49
|
} }
|
|
50
|
-
function
|
|
51
|
-
i0.ɵɵelementStart(0, "
|
|
52
|
-
i0.ɵɵ
|
|
53
|
-
i0.ɵɵi18n(2, 24);
|
|
54
|
-
i0.ɵɵelementEnd();
|
|
55
|
-
i0.ɵɵelementStart(3, "span");
|
|
56
|
-
i0.ɵɵtext(4);
|
|
57
|
-
i0.ɵɵelementEnd();
|
|
50
|
+
function RecipeCatalogComponent_div_2_div_5_span_3_Template(rf, ctx) { if (rf & 1) {
|
|
51
|
+
i0.ɵɵelementStart(0, "span");
|
|
52
|
+
i0.ɵɵi18n(1, 22);
|
|
58
53
|
i0.ɵɵelementEnd();
|
|
59
|
-
} if (rf & 2) {
|
|
60
|
-
const ctx_r10 = i0.ɵɵnextContext(3);
|
|
61
|
-
i0.ɵɵadvance(4);
|
|
62
|
-
i0.ɵɵtextInterpolate(ctx_r10.filters.search);
|
|
63
54
|
} }
|
|
64
55
|
function RecipeCatalogComponent_div_2_div_5_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
65
56
|
i0.ɵɵelementStart(0, "span");
|
|
66
|
-
i0.ɵɵ
|
|
57
|
+
i0.ɵɵtext(1);
|
|
67
58
|
i0.ɵɵelementEnd();
|
|
59
|
+
} if (rf & 2) {
|
|
60
|
+
const ctx_r11 = i0.ɵɵnextContext(3);
|
|
61
|
+
i0.ɵɵadvance(1);
|
|
62
|
+
i0.ɵɵtextInterpolate(ctx_r11.filters.search);
|
|
68
63
|
} }
|
|
69
64
|
function RecipeCatalogComponent_div_2_div_5_span_5_Template(rf, ctx) { if (rf & 1) {
|
|
70
65
|
i0.ɵɵelementStart(0, "span");
|
|
71
|
-
i0.ɵɵi18n(1,
|
|
66
|
+
i0.ɵɵi18n(1, 23);
|
|
72
67
|
i0.ɵɵelementEnd();
|
|
73
68
|
} }
|
|
74
69
|
function RecipeCatalogComponent_div_2_div_5_span_6_Template(rf, ctx) { if (rf & 1) {
|
|
70
|
+
i0.ɵɵelementStart(0, "span");
|
|
71
|
+
i0.ɵɵi18n(1, 24);
|
|
72
|
+
i0.ɵɵelementEnd();
|
|
73
|
+
} }
|
|
74
|
+
function RecipeCatalogComponent_div_2_div_5_span_7_Template(rf, ctx) { if (rf & 1) {
|
|
75
75
|
i0.ɵɵelementStart(0, "span");
|
|
76
76
|
i0.ɵɵtext(1);
|
|
77
77
|
i0.ɵɵelementEnd();
|
|
78
78
|
} if (rf & 2) {
|
|
79
|
-
const
|
|
79
|
+
const ctx_r14 = i0.ɵɵnextContext(3);
|
|
80
80
|
i0.ɵɵadvance(1);
|
|
81
|
-
i0.ɵɵtextInterpolate(
|
|
81
|
+
i0.ɵɵtextInterpolate(ctx_r14.filters.additionalFilters.title);
|
|
82
82
|
} }
|
|
83
|
-
function
|
|
83
|
+
function RecipeCatalogComponent_div_2_div_5_span_8_Template(rf, ctx) { if (rf & 1) {
|
|
84
84
|
i0.ɵɵelementStart(0, "span");
|
|
85
|
-
i0.ɵɵi18n(1,
|
|
85
|
+
i0.ɵɵi18n(1, 25);
|
|
86
86
|
i0.ɵɵelementEnd();
|
|
87
87
|
} }
|
|
88
|
-
function
|
|
89
|
-
const
|
|
90
|
-
i0.ɵɵelementStart(0, "div",
|
|
91
|
-
i0.ɵɵlistener("click", function
|
|
92
|
-
i0.ɵɵelement(1, "ng-miam-icon",
|
|
88
|
+
function RecipeCatalogComponent_div_2_div_5_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
89
|
+
const _r18 = i0.ɵɵgetCurrentView();
|
|
90
|
+
i0.ɵɵelementStart(0, "div", 26);
|
|
91
|
+
i0.ɵɵlistener("click", function RecipeCatalogComponent_div_2_div_5_div_9_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r17 = i0.ɵɵnextContext(3); return ctx_r17.manageRecipeAction({ action: "CREATE", recipe: null }); });
|
|
92
|
+
i0.ɵɵelement(1, "ng-miam-icon", 27);
|
|
93
93
|
i0.ɵɵelementStart(2, "span");
|
|
94
|
-
i0.ɵɵi18n(3,
|
|
94
|
+
i0.ɵɵi18n(3, 28);
|
|
95
95
|
i0.ɵɵelementEnd();
|
|
96
96
|
i0.ɵɵelementEnd();
|
|
97
97
|
} if (rf & 2) {
|
|
98
|
-
const
|
|
98
|
+
const ctx_r16 = i0.ɵɵnextContext(3);
|
|
99
99
|
i0.ɵɵadvance(1);
|
|
100
|
-
i0.ɵɵproperty("iconName",
|
|
100
|
+
i0.ɵɵproperty("iconName", ctx_r16.icon.Plus);
|
|
101
101
|
} }
|
|
102
102
|
function RecipeCatalogComponent_div_2_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
103
|
-
const
|
|
103
|
+
const _r20 = i0.ɵɵgetCurrentView();
|
|
104
104
|
i0.ɵɵelementStart(0, "div", 16);
|
|
105
105
|
i0.ɵɵelementStart(1, "div", 17);
|
|
106
106
|
i0.ɵɵelementStart(2, "ng-miam-icon", 18);
|
|
107
|
-
i0.ɵɵlistener("click", function RecipeCatalogComponent_div_2_div_5_Template_ng_miam_icon_click_2_listener() { i0.ɵɵrestoreView(
|
|
107
|
+
i0.ɵɵlistener("click", function RecipeCatalogComponent_div_2_div_5_Template_ng_miam_icon_click_2_listener() { i0.ɵɵrestoreView(_r20); const ctx_r19 = i0.ɵɵnextContext(2); return ctx_r19.returnToHomePage(); });
|
|
108
108
|
i0.ɵɵelementEnd();
|
|
109
|
-
i0.ɵɵtemplate(3,
|
|
110
|
-
i0.ɵɵtemplate(4, RecipeCatalogComponent_div_2_div_5_span_4_Template, 2,
|
|
111
|
-
i0.ɵɵtemplate(5, RecipeCatalogComponent_div_2_div_5_span_5_Template, 2, 0, "span",
|
|
112
|
-
i0.ɵɵtemplate(6, RecipeCatalogComponent_div_2_div_5_span_6_Template, 2,
|
|
113
|
-
i0.ɵɵtemplate(7, RecipeCatalogComponent_div_2_div_5_span_7_Template, 2,
|
|
109
|
+
i0.ɵɵtemplate(3, RecipeCatalogComponent_div_2_div_5_span_3_Template, 2, 0, "span", 19);
|
|
110
|
+
i0.ɵɵtemplate(4, RecipeCatalogComponent_div_2_div_5_span_4_Template, 2, 1, "span", 19);
|
|
111
|
+
i0.ɵɵtemplate(5, RecipeCatalogComponent_div_2_div_5_span_5_Template, 2, 0, "span", 19);
|
|
112
|
+
i0.ɵɵtemplate(6, RecipeCatalogComponent_div_2_div_5_span_6_Template, 2, 0, "span", 19);
|
|
113
|
+
i0.ɵɵtemplate(7, RecipeCatalogComponent_div_2_div_5_span_7_Template, 2, 1, "span", 19);
|
|
114
|
+
i0.ɵɵtemplate(8, RecipeCatalogComponent_div_2_div_5_span_8_Template, 2, 0, "span", 19);
|
|
114
115
|
i0.ɵɵelementEnd();
|
|
115
|
-
i0.ɵɵtemplate(
|
|
116
|
-
i0.ɵɵpipe(
|
|
117
|
-
i0.ɵɵelementStart(
|
|
118
|
-
i0.ɵɵlistener("filterRemoved", function
|
|
116
|
+
i0.ɵɵtemplate(9, RecipeCatalogComponent_div_2_div_5_div_9_Template, 4, 1, "div", 20);
|
|
117
|
+
i0.ɵɵpipe(10, "async");
|
|
118
|
+
i0.ɵɵelementStart(11, "ng-miam-catalog-list", 21);
|
|
119
|
+
i0.ɵɵlistener("filterRemoved", function RecipeCatalogComponent_div_2_div_5_Template_ng_miam_catalog_list_filterRemoved_11_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r21 = i0.ɵɵnextContext(2); return ctx_r21.removeFilter($event); })("recipeActionTriggered", function RecipeCatalogComponent_div_2_div_5_Template_ng_miam_catalog_list_recipeActionTriggered_11_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r22 = i0.ɵɵnextContext(2); return ctx_r22.manageRecipeAction($event); });
|
|
119
120
|
i0.ɵɵelementEnd();
|
|
120
121
|
i0.ɵɵelementEnd();
|
|
121
122
|
} if (rf & 2) {
|
|
@@ -125,6 +126,8 @@ function RecipeCatalogComponent_div_2_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
|
125
126
|
i0.ɵɵadvance(1);
|
|
126
127
|
i0.ɵɵproperty("ngIf", ctx_r5.isSearchPage());
|
|
127
128
|
i0.ɵɵadvance(1);
|
|
129
|
+
i0.ɵɵproperty("ngIf", ctx_r5.isSearchPage());
|
|
130
|
+
i0.ɵɵadvance(1);
|
|
128
131
|
i0.ɵɵproperty("ngIf", ctx_r5.isFavoritesPage());
|
|
129
132
|
i0.ɵɵadvance(1);
|
|
130
133
|
i0.ɵɵproperty("ngIf", ctx_r5.isPersonalPage());
|
|
@@ -133,87 +136,87 @@ function RecipeCatalogComponent_div_2_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
|
133
136
|
i0.ɵɵadvance(1);
|
|
134
137
|
i0.ɵɵproperty("ngIf", ctx_r5.isDefaultPage());
|
|
135
138
|
i0.ɵɵadvance(1);
|
|
136
|
-
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(
|
|
139
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(10, 11, ctx_r5.canDisplayCreationButton()));
|
|
137
140
|
i0.ɵɵadvance(2);
|
|
138
141
|
i0.ɵɵproperty("filters", ctx_r5.filters)("originTrace", ctx_r5.eventTrace())("displayPricing", ctx_r5.displayPricing);
|
|
139
142
|
} }
|
|
140
143
|
function RecipeCatalogComponent_div_2_ng_template_7_div_0_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
141
|
-
const
|
|
144
|
+
const _r31 = i0.ɵɵgetCurrentView();
|
|
142
145
|
i0.ɵɵelementContainerStart(0);
|
|
143
|
-
i0.ɵɵelementStart(1, "ng-miam-catalog-category",
|
|
144
|
-
i0.ɵɵlistener("displayList", function RecipeCatalogComponent_div_2_ng_template_7_div_0_ng_container_1_ng_container_1_Template_ng_miam_catalog_category_displayList_1_listener($event) { i0.ɵɵrestoreView(
|
|
146
|
+
i0.ɵɵelementStart(1, "ng-miam-catalog-category", 34);
|
|
147
|
+
i0.ɵɵlistener("displayList", function RecipeCatalogComponent_div_2_ng_template_7_div_0_ng_container_1_ng_container_1_Template_ng_miam_catalog_category_displayList_1_listener($event) { i0.ɵɵrestoreView(_r31); const ctx_r30 = i0.ɵɵnextContext(5); return ctx_r30.categoryTitleClicked($event); });
|
|
145
148
|
i0.ɵɵelementEnd();
|
|
146
149
|
i0.ɵɵelementContainerEnd();
|
|
147
150
|
} if (rf & 2) {
|
|
148
|
-
const
|
|
149
|
-
const
|
|
151
|
+
const category_r25 = i0.ɵɵnextContext().$implicit;
|
|
152
|
+
const ctx_r27 = i0.ɵɵnextContext(4);
|
|
150
153
|
i0.ɵɵadvance(1);
|
|
151
|
-
i0.ɵɵproperty("title",
|
|
154
|
+
i0.ɵɵproperty("title", category_r25.title)("subtitle", category_r25.subtitle)("filters", category_r25.filters)("displayPricing", ctx_r27.displayPricing)("originTrace", ctx_r27.eventTrace());
|
|
152
155
|
} }
|
|
153
156
|
function RecipeCatalogComponent_div_2_ng_template_7_div_0_ng_container_1_ng_template_2_ng_miam_meals_planner_link_1_Template(rf, ctx) { if (rf & 1) {
|
|
154
157
|
i0.ɵɵelement(0, "ng-miam-meals-planner-link");
|
|
155
158
|
} }
|
|
156
159
|
function RecipeCatalogComponent_div_2_ng_template_7_div_0_ng_container_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
157
|
-
const
|
|
158
|
-
i0.ɵɵelementStart(0, "div",
|
|
159
|
-
i0.ɵɵtemplate(1, RecipeCatalogComponent_div_2_ng_template_7_div_0_ng_container_1_ng_template_2_ng_miam_meals_planner_link_1_Template, 1, 0, "ng-miam-meals-planner-link",
|
|
160
|
+
const _r35 = i0.ɵɵgetCurrentView();
|
|
161
|
+
i0.ɵɵelementStart(0, "div", 35);
|
|
162
|
+
i0.ɵɵtemplate(1, RecipeCatalogComponent_div_2_ng_template_7_div_0_ng_container_1_ng_template_2_ng_miam_meals_planner_link_1_Template, 1, 0, "ng-miam-meals-planner-link", 19);
|
|
160
163
|
i0.ɵɵpipe(2, "async");
|
|
161
|
-
i0.ɵɵelementStart(3, "ng-miam-catalog-category",
|
|
162
|
-
i0.ɵɵlistener("displayList", function RecipeCatalogComponent_div_2_ng_template_7_div_0_ng_container_1_ng_template_2_Template_ng_miam_catalog_category_displayList_3_listener($event) { i0.ɵɵrestoreView(
|
|
164
|
+
i0.ɵɵelementStart(3, "ng-miam-catalog-category", 34);
|
|
165
|
+
i0.ɵɵlistener("displayList", function RecipeCatalogComponent_div_2_ng_template_7_div_0_ng_container_1_ng_template_2_Template_ng_miam_catalog_category_displayList_3_listener($event) { i0.ɵɵrestoreView(_r35); const ctx_r34 = i0.ɵɵnextContext(5); return ctx_r34.categoryTitleClicked($event); });
|
|
163
166
|
i0.ɵɵelementEnd();
|
|
164
167
|
i0.ɵɵelementEnd();
|
|
165
|
-
i0.ɵɵelementStart(4, "div",
|
|
166
|
-
i0.ɵɵelement(5, "ng-miam-explain-banner",
|
|
168
|
+
i0.ɵɵelementStart(4, "div", 36);
|
|
169
|
+
i0.ɵɵelement(5, "ng-miam-explain-banner", 37);
|
|
167
170
|
i0.ɵɵelementEnd();
|
|
168
171
|
} if (rf & 2) {
|
|
169
|
-
const
|
|
170
|
-
const
|
|
172
|
+
const category_r25 = i0.ɵɵnextContext().$implicit;
|
|
173
|
+
const ctx_r29 = i0.ɵɵnextContext(4);
|
|
171
174
|
i0.ɵɵadvance(1);
|
|
172
|
-
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(2, 7,
|
|
175
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(2, 7, ctx_r29.contextService.enableMealsPlanner$));
|
|
173
176
|
i0.ɵɵadvance(2);
|
|
174
|
-
i0.ɵɵproperty("title",
|
|
177
|
+
i0.ɵɵproperty("title", category_r25.title)("subtitle", category_r25.subtitle)("filters", category_r25.filters)("displayPricing", ctx_r29.displayPricing)("originTrace", ctx_r29.eventTrace());
|
|
175
178
|
i0.ɵɵadvance(2);
|
|
176
|
-
i0.ɵɵproperty("catalogSetting",
|
|
179
|
+
i0.ɵɵproperty("catalogSetting", ctx_r29.catalogSetting);
|
|
177
180
|
} }
|
|
178
181
|
function RecipeCatalogComponent_div_2_ng_template_7_div_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
|
|
179
182
|
i0.ɵɵelementContainerStart(0);
|
|
180
|
-
i0.ɵɵtemplate(1, RecipeCatalogComponent_div_2_ng_template_7_div_0_ng_container_1_ng_container_1_Template, 2, 5, "ng-container",
|
|
181
|
-
i0.ɵɵtemplate(2, RecipeCatalogComponent_div_2_ng_template_7_div_0_ng_container_1_ng_template_2_Template, 6, 9, "ng-template", null,
|
|
183
|
+
i0.ɵɵtemplate(1, RecipeCatalogComponent_div_2_ng_template_7_div_0_ng_container_1_ng_container_1_Template, 2, 5, "ng-container", 32);
|
|
184
|
+
i0.ɵɵtemplate(2, RecipeCatalogComponent_div_2_ng_template_7_div_0_ng_container_1_ng_template_2_Template, 6, 9, "ng-template", null, 33, i0.ɵɵtemplateRefExtractor);
|
|
182
185
|
i0.ɵɵelementContainerEnd();
|
|
183
186
|
} if (rf & 2) {
|
|
184
|
-
const
|
|
185
|
-
const
|
|
187
|
+
const i_r26 = ctx.index;
|
|
188
|
+
const _r28 = i0.ɵɵreference(3);
|
|
186
189
|
i0.ɵɵadvance(1);
|
|
187
|
-
i0.ɵɵproperty("ngIf",
|
|
190
|
+
i0.ɵɵproperty("ngIf", i_r26 !== 0)("ngIfElse", _r28);
|
|
188
191
|
} }
|
|
189
192
|
function RecipeCatalogComponent_div_2_ng_template_7_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
190
|
-
i0.ɵɵelementStart(0, "div",
|
|
191
|
-
i0.ɵɵtemplate(1, RecipeCatalogComponent_div_2_ng_template_7_div_0_ng_container_1_Template, 4, 2, "ng-container",
|
|
193
|
+
i0.ɵɵelementStart(0, "div", 30);
|
|
194
|
+
i0.ɵɵtemplate(1, RecipeCatalogComponent_div_2_ng_template_7_div_0_ng_container_1_Template, 4, 2, "ng-container", 31);
|
|
192
195
|
i0.ɵɵelementEnd();
|
|
193
196
|
} if (rf & 2) {
|
|
194
|
-
const
|
|
197
|
+
const ctx_r23 = i0.ɵɵnextContext(3);
|
|
195
198
|
i0.ɵɵadvance(1);
|
|
196
|
-
i0.ɵɵproperty("ngForOf",
|
|
199
|
+
i0.ɵɵproperty("ngForOf", ctx_r23.categories);
|
|
197
200
|
} }
|
|
198
201
|
function RecipeCatalogComponent_div_2_ng_template_7_Template(rf, ctx) { if (rf & 1) {
|
|
199
|
-
i0.ɵɵtemplate(0, RecipeCatalogComponent_div_2_ng_template_7_div_0_Template, 2, 1, "div",
|
|
202
|
+
i0.ɵɵtemplate(0, RecipeCatalogComponent_div_2_ng_template_7_div_0_Template, 2, 1, "div", 29);
|
|
200
203
|
} if (rf & 2) {
|
|
201
204
|
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
202
205
|
i0.ɵɵproperty("ngIf", ctx_r7.categories.length > 0);
|
|
203
206
|
} }
|
|
204
207
|
function RecipeCatalogComponent_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
205
|
-
const
|
|
208
|
+
const _r38 = i0.ɵɵgetCurrentView();
|
|
206
209
|
i0.ɵɵelementStart(0, "div", 4);
|
|
207
210
|
i0.ɵɵelementStart(1, "div", 5);
|
|
208
211
|
i0.ɵɵelementStart(2, "ng-miam-catalog-header", 6);
|
|
209
|
-
i0.ɵɵlistener("returnButtonPressed", function RecipeCatalogComponent_div_2_Template_ng_miam_catalog_header_returnButtonPressed_2_listener() { i0.ɵɵrestoreView(
|
|
212
|
+
i0.ɵɵlistener("returnButtonPressed", function RecipeCatalogComponent_div_2_Template_ng_miam_catalog_header_returnButtonPressed_2_listener() { i0.ɵɵrestoreView(_r38); const ctx_r37 = i0.ɵɵnextContext(); return ctx_r37.returnToHomePage(); })("filterButtonPressed", function RecipeCatalogComponent_div_2_Template_ng_miam_catalog_header_filterButtonPressed_2_listener() { i0.ɵɵrestoreView(_r38); const ctx_r39 = i0.ɵɵnextContext(); return ctx_r39.onFilterCollapsed(); })("searchStringChanged", function RecipeCatalogComponent_div_2_Template_ng_miam_catalog_header_searchStringChanged_2_listener($event) { i0.ɵɵrestoreView(_r38); const ctx_r40 = i0.ɵɵnextContext(); return ctx_r40.updateSearch($event); })("personalButtonPressed", function RecipeCatalogComponent_div_2_Template_ng_miam_catalog_header_personalButtonPressed_2_listener() { i0.ɵɵrestoreView(_r38); const ctx_r41 = i0.ɵɵnextContext(); return ctx_r41.setPersonalFilter(); })("favoritesButtonPressed", function RecipeCatalogComponent_div_2_Template_ng_miam_catalog_header_favoritesButtonPressed_2_listener() { i0.ɵɵrestoreView(_r38); const ctx_r42 = i0.ɵɵnextContext(); return ctx_r42.setFavoritesFilter(); });
|
|
210
213
|
i0.ɵɵpipe(3, "async");
|
|
211
214
|
i0.ɵɵelementEnd();
|
|
212
215
|
i0.ɵɵtemplate(4, RecipeCatalogComponent_div_2_div_4_Template, 8, 3, "div", 7);
|
|
213
|
-
i0.ɵɵtemplate(5, RecipeCatalogComponent_div_2_div_5_Template,
|
|
216
|
+
i0.ɵɵtemplate(5, RecipeCatalogComponent_div_2_div_5_Template, 12, 13, "div", 8);
|
|
214
217
|
i0.ɵɵelementEnd();
|
|
215
218
|
i0.ɵɵelementStart(6, "ng-miam-recipe-filters", 9);
|
|
216
|
-
i0.ɵɵlistener("filterChanged", function RecipeCatalogComponent_div_2_Template_ng_miam_recipe_filters_filterChanged_6_listener($event) { i0.ɵɵrestoreView(
|
|
219
|
+
i0.ɵɵlistener("filterChanged", function RecipeCatalogComponent_div_2_Template_ng_miam_recipe_filters_filterChanged_6_listener($event) { i0.ɵɵrestoreView(_r38); const ctx_r43 = i0.ɵɵnextContext(); return ctx_r43.updateFilters($event); })("filterCollapsed", function RecipeCatalogComponent_div_2_Template_ng_miam_recipe_filters_filterCollapsed_6_listener() { i0.ɵɵrestoreView(_r38); const ctx_r44 = i0.ɵɵnextContext(); return ctx_r44.onFilterCollapsed(); })("preferencesChanged", function RecipeCatalogComponent_div_2_Template_ng_miam_recipe_filters_preferencesChanged_6_listener() { i0.ɵɵrestoreView(_r38); const ctx_r45 = i0.ɵɵnextContext(); return ctx_r45.reloadPackages(); });
|
|
217
220
|
i0.ɵɵelementEnd();
|
|
218
221
|
i0.ɵɵtemplate(7, RecipeCatalogComponent_div_2_ng_template_7_Template, 1, 1, "ng-template", null, 10, i0.ɵɵtemplateRefExtractor);
|
|
219
222
|
i0.ɵɵelementEnd();
|
|
@@ -230,22 +233,22 @@ function RecipeCatalogComponent_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
230
233
|
i0.ɵɵproperty("filters", ctx_r1.filters)("isFilterCollapsed", ctx_r1.isFilterCollapsed)("filterToRemove", ctx_r1.filterToRemove)("position", ctx_r1.filtersPosition)("originTrace", ctx_r1.eventTrace());
|
|
231
234
|
} }
|
|
232
235
|
function RecipeCatalogComponent_ng_template_3_ng_miam_recipe_stepper_0_Template(rf, ctx) { if (rf & 1) {
|
|
233
|
-
const
|
|
234
|
-
i0.ɵɵelementStart(0, "ng-miam-recipe-stepper",
|
|
235
|
-
i0.ɵɵlistener("recipeChange", function RecipeCatalogComponent_ng_template_3_ng_miam_recipe_stepper_0_Template_ng_miam_recipe_stepper_recipeChange_0_listener() { i0.ɵɵrestoreView(
|
|
236
|
+
const _r48 = i0.ɵɵgetCurrentView();
|
|
237
|
+
i0.ɵɵelementStart(0, "ng-miam-recipe-stepper", 39);
|
|
238
|
+
i0.ɵɵlistener("recipeChange", function RecipeCatalogComponent_ng_template_3_ng_miam_recipe_stepper_0_Template_ng_miam_recipe_stepper_recipeChange_0_listener() { i0.ɵɵrestoreView(_r48); const ctx_r47 = i0.ɵɵnextContext(2); return ctx_r47.leaveCreatePage(); })("canceled", function RecipeCatalogComponent_ng_template_3_ng_miam_recipe_stepper_0_Template_ng_miam_recipe_stepper_canceled_0_listener() { i0.ɵɵrestoreView(_r48); const ctx_r49 = i0.ɵɵnextContext(2); return ctx_r49.leaveCreatePage(); });
|
|
236
239
|
i0.ɵɵelementEnd();
|
|
237
240
|
} if (rf & 2) {
|
|
238
|
-
const
|
|
239
|
-
i0.ɵɵproperty("recipeToUpdate",
|
|
241
|
+
const ctx_r46 = i0.ɵɵnextContext(2);
|
|
242
|
+
i0.ɵɵproperty("recipeToUpdate", ctx_r46.recipeToUpdate)("originTrace", ctx_r46.eventTrace());
|
|
240
243
|
} }
|
|
241
244
|
function RecipeCatalogComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
242
|
-
i0.ɵɵtemplate(0, RecipeCatalogComponent_ng_template_3_ng_miam_recipe_stepper_0_Template, 1, 2, "ng-miam-recipe-stepper",
|
|
245
|
+
i0.ɵɵtemplate(0, RecipeCatalogComponent_ng_template_3_ng_miam_recipe_stepper_0_Template, 1, 2, "ng-miam-recipe-stepper", 38);
|
|
243
246
|
} if (rf & 2) {
|
|
244
247
|
const ctx_r3 = i0.ɵɵnextContext();
|
|
245
248
|
i0.ɵɵproperty("ngIf", ctx_r3.catalogSettingHasLoaded);
|
|
246
249
|
} }
|
|
247
250
|
export class RecipeCatalogComponent extends EventTracerComponent {
|
|
248
|
-
constructor(cdr, recipeTypesService, sponsorService, supplierService, packageService, recipesService, mediaMatcher, usersService, catalogSettingService, analyticsService,
|
|
251
|
+
constructor(cdr, recipeTypesService, sponsorService, supplierService, packageService, recipesService, mediaMatcher, usersService, catalogSettingService, analyticsService, basketsService, contextService) {
|
|
249
252
|
super(analyticsService);
|
|
250
253
|
this.cdr = cdr;
|
|
251
254
|
this.recipeTypesService = recipeTypesService;
|
|
@@ -257,13 +260,12 @@ export class RecipeCatalogComponent extends EventTracerComponent {
|
|
|
257
260
|
this.usersService = usersService;
|
|
258
261
|
this.catalogSettingService = catalogSettingService;
|
|
259
262
|
this.analyticsService = analyticsService;
|
|
260
|
-
this.groceriesListService = groceriesListService;
|
|
261
263
|
this.basketsService = basketsService;
|
|
262
264
|
this.contextService = contextService;
|
|
263
265
|
this.headerPictureUrl = 'https://storage.googleapis.com/assets.miam.tech/generic/images/default-catalog-picture.png';
|
|
264
266
|
this.initialRoute = '';
|
|
265
267
|
this.filtersPosition = 'left';
|
|
266
|
-
this.displayPricing =
|
|
268
|
+
this.displayPricing = true;
|
|
267
269
|
this.isFilterCollapsed = true;
|
|
268
270
|
this.icon = Icon;
|
|
269
271
|
this.categories = [];
|
|
@@ -280,19 +282,15 @@ export class RecipeCatalogComponent extends EventTracerComponent {
|
|
|
280
282
|
ngOnInit() {
|
|
281
283
|
this.pageview();
|
|
282
284
|
this.initFilters();
|
|
283
|
-
this.subscriptions
|
|
284
|
-
this.
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
this.
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
this.cdr.detectChanges();
|
|
293
|
-
}),
|
|
294
|
-
this.assessShowUserFeedback()
|
|
295
|
-
];
|
|
285
|
+
this.subscriptions.push(this.supplierService.supplier$.asObservable().pipe(skipWhile(supp => supp === undefined || supp == null), take(1), switchMap(supplier => {
|
|
286
|
+
this.supplierId = supplier.id;
|
|
287
|
+
this.initCatalogHeader(supplier);
|
|
288
|
+
return this.loadPackages();
|
|
289
|
+
})).subscribe(), this.basketsService.basketStats$.pipe(skipWhile(bs => !bs)).subscribe(bs => {
|
|
290
|
+
this.recipeCount = bs.recipesCount;
|
|
291
|
+
this.totalPrice = bs.totalPrice;
|
|
292
|
+
this.cdr.detectChanges();
|
|
293
|
+
}), this.assessShowUserFeedback());
|
|
296
294
|
this.setDirectAccess();
|
|
297
295
|
}
|
|
298
296
|
ngAfterViewInit() {
|
|
@@ -325,11 +323,11 @@ export class RecipeCatalogComponent extends EventTracerComponent {
|
|
|
325
323
|
var _a, _b, _c;
|
|
326
324
|
if ((_a = supplier.relationships['catalog-setting']) === null || _a === void 0 ? void 0 : _a.data) {
|
|
327
325
|
const id = (_c = (_b = supplier.relationships['catalog-setting']) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.id;
|
|
328
|
-
this.catalogSettingService.get(id).pipe(skipWhile(c => c.is_loading), take(1), tap(catalog => {
|
|
326
|
+
this.subscriptions.push(this.catalogSettingService.get(id).pipe(skipWhile(c => c.is_loading), take(1), tap(catalog => {
|
|
329
327
|
this.catalogSetting = catalog;
|
|
330
328
|
this.catalogSettingHasLoaded = true;
|
|
331
329
|
this.cdr.detectChanges();
|
|
332
|
-
})).subscribe();
|
|
330
|
+
})).subscribe());
|
|
333
331
|
}
|
|
334
332
|
}
|
|
335
333
|
// Used on load to build the filters attribute, and on click on the link to reset the filters
|
|
@@ -540,7 +538,7 @@ export class RecipeCatalogComponent extends EventTracerComponent {
|
|
|
540
538
|
}
|
|
541
539
|
}
|
|
542
540
|
}
|
|
543
|
-
RecipeCatalogComponent.ɵfac = function RecipeCatalogComponent_Factory(t) { return new (t || RecipeCatalogComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.RecipeTypeService), i0.ɵɵdirectiveInject(i1.SponsorService), i0.ɵɵdirectiveInject(i1.SuppliersService), i0.ɵɵdirectiveInject(i1.PackageService), i0.ɵɵdirectiveInject(i1.RecipesService), i0.ɵɵdirectiveInject(i2.MediaMatcher), i0.ɵɵdirectiveInject(i1.UserService), i0.ɵɵdirectiveInject(i1.CatalogSettingsService), i0.ɵɵdirectiveInject(i3.AnalyticsService), i0.ɵɵdirectiveInject(i1.
|
|
541
|
+
RecipeCatalogComponent.ɵfac = function RecipeCatalogComponent_Factory(t) { return new (t || RecipeCatalogComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.RecipeTypeService), i0.ɵɵdirectiveInject(i1.SponsorService), i0.ɵɵdirectiveInject(i1.SuppliersService), i0.ɵɵdirectiveInject(i1.PackageService), i0.ɵɵdirectiveInject(i1.RecipesService), i0.ɵɵdirectiveInject(i2.MediaMatcher), i0.ɵɵdirectiveInject(i1.UserService), i0.ɵɵdirectiveInject(i1.CatalogSettingsService), i0.ɵɵdirectiveInject(i3.AnalyticsService), i0.ɵɵdirectiveInject(i1.BasketsService), i0.ɵɵdirectiveInject(i1.ContextService)); };
|
|
544
542
|
RecipeCatalogComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeCatalogComponent, selectors: [["ng-miam-recipe-catalog"]], viewQuery: function RecipeCatalogComponent_Query(rf, ctx) { if (rf & 1) {
|
|
545
543
|
i0.ɵɵviewQuery(CatalogHeaderComponent, true);
|
|
546
544
|
i0.ɵɵviewQuery(_c0, true);
|
|
@@ -586,7 +584,7 @@ RecipeCatalogComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeCatalogCompo
|
|
|
586
584
|
}
|
|
587
585
|
else {
|
|
588
586
|
i18n_11 = $localize `:␟3b0b12b85604af610c07cfbd5d4f74662b9a881a␟1931799427977453728:Ajouter une idée repas`;
|
|
589
|
-
} return [[1, "miam-catalog-anchor"], ["miamCatalogTopAnchor", ""], ["class", "miam-recipe-catalog", 4, "ngIf", "ngIfElse"], ["creationPage", ""], [1, "miam-recipe-catalog"], [1, "miam-recipe-catalog__content"], [3, "home", "searchTerm", "additionalFiltersTitle", "homeLabel", "pictureUrl", "catalogSetting", "favoritesButtonHidden", "personalButtonHidden", "filterBadgeCount", "returnButtonPressed", "filterButtonPressed", "searchStringChanged", "personalButtonPressed", "favoritesButtonPressed"], ["class", "miam-recipe-catalog__content__myMeal__button", 3, "click", 4, "ngIf"], ["class", "miam-recipe-catalog__list", 4, "ngIf", "ngIfElse"], [3, "filters", "isFilterCollapsed", "filterToRemove", "position", "originTrace", "filterChanged", "filterCollapsed", "preferencesChanged"], ["categoriesComponents", ""], [1, "miam-recipe-catalog__content__myMeal__button", 3, "click"], ["primaryColor", "var(--m-color-white)", 1, "miam-recipe-catalog__myMeal__first__icon", 3, "iconName"], [1, "miam-recipe-catalog__myMeal__button__text"], i18n_1, ["primaryColor", "var(--m-color-white)", 1, "miam-recipe-catalog__myMeal__second__icon", 3, "iconName"], [1, "miam-recipe-catalog__list"], [1, "miam-recipe-catalog__content__title"], ["width", "24", "height", "24", 3, "iconName", "click"], [
|
|
587
|
+
} return [[1, "miam-catalog-anchor"], ["miamCatalogTopAnchor", ""], ["class", "miam-recipe-catalog", 4, "ngIf", "ngIfElse"], ["creationPage", ""], [1, "miam-recipe-catalog"], [1, "miam-recipe-catalog__content"], [3, "home", "searchTerm", "additionalFiltersTitle", "homeLabel", "pictureUrl", "catalogSetting", "favoritesButtonHidden", "personalButtonHidden", "filterBadgeCount", "returnButtonPressed", "filterButtonPressed", "searchStringChanged", "personalButtonPressed", "favoritesButtonPressed"], ["class", "miam-recipe-catalog__content__myMeal__button", 3, "click", 4, "ngIf"], ["class", "miam-recipe-catalog__list", 4, "ngIf", "ngIfElse"], [3, "filters", "isFilterCollapsed", "filterToRemove", "position", "originTrace", "filterChanged", "filterCollapsed", "preferencesChanged"], ["categoriesComponents", ""], [1, "miam-recipe-catalog__content__myMeal__button", 3, "click"], ["primaryColor", "var(--m-color-white)", 1, "miam-recipe-catalog__myMeal__first__icon", 3, "iconName"], [1, "miam-recipe-catalog__myMeal__button__text"], i18n_1, ["primaryColor", "var(--m-color-white)", 1, "miam-recipe-catalog__myMeal__second__icon", 3, "iconName"], [1, "miam-recipe-catalog__list"], [1, "miam-recipe-catalog__content__title"], ["width", "24", "height", "24", 3, "iconName", "click"], [4, "ngIf"], ["class", "miam-recipe-catalog__list__create___button", 3, "click", 4, "ngIf"], [3, "filters", "originTrace", "displayPricing", "filterRemoved", "recipeActionTriggered"], i18n_3, i18n_5, i18n_7, i18n_9, [1, "miam-recipe-catalog__list__create___button", 3, "click"], ["width", "24", "height", "24", "primaryColor", "var(--m-color-primary)", 3, "iconName"], i18n_11, ["class", "miam-recipe-catalog__categories", 4, "ngIf"], [1, "miam-recipe-catalog__categories"], [4, "ngFor", "ngForOf"], [4, "ngIf", "ngIfElse"], ["firstCategory", ""], [3, "title", "subtitle", "filters", "displayPricing", "originTrace", "displayList"], [1, "miam-recipe-catalog__first-category"], [1, "miam-recipe-catalog__explain_banner"], [3, "catalogSetting"], [3, "recipeToUpdate", "originTrace", "recipeChange", "canceled", 4, "ngIf"], [3, "recipeToUpdate", "originTrace", "recipeChange", "canceled"]]; }, template: function RecipeCatalogComponent_Template(rf, ctx) { if (rf & 1) {
|
|
590
588
|
i0.ɵɵelement(0, "div", 0, 1);
|
|
591
589
|
i0.ɵɵtemplate(2, RecipeCatalogComponent_div_2_Template, 9, 19, "div", 2);
|
|
592
590
|
i0.ɵɵtemplate(3, RecipeCatalogComponent_ng_template_3_Template, 1, 1, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
|
|
@@ -594,7 +592,7 @@ RecipeCatalogComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeCatalogCompo
|
|
|
594
592
|
const _r2 = i0.ɵɵreference(4);
|
|
595
593
|
i0.ɵɵadvance(2);
|
|
596
594
|
i0.ɵɵproperty("ngIf", !ctx.creatingRecipe && ctx.catalogSettingHasLoaded)("ngIfElse", _r2);
|
|
597
|
-
} }, directives: [i4.NgIf, i5.CatalogHeaderComponent, i6.RecipeFiltersComponent, i7.IconComponent, i8.CatalogListComponent, i4.NgForOf, i9.CatalogCategoryComponent, i10.ExplainBannerComponent, i11.MealsPlannerLinkComponent, i12.RecipeStepperComponent], pipes: [i4.AsyncPipe], styles: [".miam-recipe-catalog{display:flex;justify-content:space-between}.miam-recipe-catalog,.miam-recipe-catalog .miam-recipe-catalog__content{position:relative;width:100%}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__title{align-items:center;display:flex;font-size:24px;font-weight:700;
|
|
595
|
+
} }, directives: [i4.NgIf, i5.CatalogHeaderComponent, i6.RecipeFiltersComponent, i7.IconComponent, i8.CatalogListComponent, i4.NgForOf, i9.CatalogCategoryComponent, i10.ExplainBannerComponent, i11.MealsPlannerLinkComponent, i12.RecipeStepperComponent], pipes: [i4.AsyncPipe], styles: [".miam-recipe-catalog{display:flex;justify-content:space-between}.miam-recipe-catalog,.miam-recipe-catalog .miam-recipe-catalog__content{position:relative;width:100%}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__title{align-items:center;display:flex;font-size:24px;font-weight:700;line-height:34px;margin-bottom:24px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__title ng-miam-icon{cursor:pointer;margin-right:20px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__title ng-miam-icon .icon-container{transform:rotate(90deg)}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__content__title span:last-child{margin-left:6px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories{box-sizing:border-box;display:flex;flex-direction:column;padding:48px 24px;width:100%}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__first-category{align-items:flex-end;display:flex;flex-direction:row;width:100%}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__first-category ng-miam-meals-planner-link{margin:0 0 40px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__explain_banner{margin-bottom:40px}@media (max-width:1023px){.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories{padding:48px 0 48px 24px}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__first-category{align-items:flex-start;flex-direction:column}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__first-category ng-miam-catalog-category{width:100%}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__categories .miam-recipe-catalog__first-category ng-miam-meals-planner-link{margin:0 24px 24px 0;width:calc(100% - 24px)}}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__list{padding:24px;width:100%}.miam-recipe-catalog .miam-recipe-catalog__content .miam-recipe-catalog__list .miam-recipe-catalog__list__create___button{align-items:center;border:1px solid var(--miam-color-primary);border-radius:20px;color:var(--miam-color-primary);cursor:pointer;display:flex;margin-bottom:24px;padding:4px 8px;width:-moz-fit-content;width:fit-content}.miam-recipe-catalog .miam-recipe-catalog__content__myMeal__button{align-items:center;background:var(--m-color-primary);border-radius:0 0 20px 20px;cursor:pointer;display:flex;height:50px;justify-content:space-around;left:unset;position:absolute;right:50px;width:200px}.miam-recipe-catalog .miam-recipe-catalog__content__myMeal__button .miam-recipe-catalog__myMeal__button__text{color:var(--m-color-white);font-weight:700}.miam-recipe-catalog .miam-recipe-catalog__content__myMeal__button .miam-recipe-catalog__myMeal__second__icon{transform:rotate(-90deg)}@media (max-width:1023px){.miam-recipe-catalog .miam-recipe-catalog__content__myMeal__button{border-radius:20px 20px 0 0;bottom:0;left:8px;position:fixed;right:8px;width:auto;z-index:2}}.miam-recipe-catalog ng-miam-recipe-card .miam-recipe-card{height:var(--m-catalog-card-height);margin:calc(var(--m-catalog-cards-spacing)/2);width:var(--m-catalog-card-width)}"], encapsulation: 2, changeDetection: 0 });
|
|
598
596
|
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(RecipeCatalogComponent, [{
|
|
599
597
|
type: Component,
|
|
600
598
|
args: [{
|
|
@@ -604,7 +602,7 @@ RecipeCatalogComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeCatalogCompo
|
|
|
604
602
|
encapsulation: ViewEncapsulation.None,
|
|
605
603
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
606
604
|
}]
|
|
607
|
-
}], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.RecipeTypeService }, { type: i1.SponsorService }, { type: i1.SuppliersService }, { type: i1.PackageService }, { type: i1.RecipesService }, { type: i2.MediaMatcher }, { type: i1.UserService }, { type: i1.CatalogSettingsService }, { type: i3.AnalyticsService }, { type: i1.
|
|
605
|
+
}], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.RecipeTypeService }, { type: i1.SponsorService }, { type: i1.SuppliersService }, { type: i1.PackageService }, { type: i1.RecipesService }, { type: i2.MediaMatcher }, { type: i1.UserService }, { type: i1.CatalogSettingsService }, { type: i3.AnalyticsService }, { type: i1.BasketsService }, { type: i1.ContextService }]; }, { catalogHeader: [{
|
|
608
606
|
type: ViewChild,
|
|
609
607
|
args: [CatalogHeaderComponent]
|
|
610
608
|
}], topAnchor: [{
|
|
@@ -626,4 +624,4 @@ RecipeCatalogComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeCatalogCompo
|
|
|
626
624
|
}], customFilters: [{
|
|
627
625
|
type: Input
|
|
628
626
|
}] }); })();
|
|
629
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWNhdGFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNhdGFsb2cvcmVjaXBlLWNhdGFsb2cuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtY2F0YWxvZy9yZWNpcGUtY2F0YWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBaUIsaUJBQWlCLEVBQVUsVUFBVSxFQUM3SCxZQUFZLEVBQUUsU0FBUyxFQUFhLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXpGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQzlILGNBQWMsRUFBRSxjQUFjLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFxQyxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRixPQUFPLEVBQUUsYUFBYSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHbkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDckUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDSXRGLCtCQUNFO0lBRGdGLHNNQUE4QjtJQUM5RyxtQ0FBMEk7SUFDMUksZ0NBQ0U7SUFBQSw0QkFBTTtJQUFBLFlBQWU7SUFBQSxpQkFBTztJQUM1Qiw0QkFBWTtJQUFaLGdCQUFZO0lBQUssaUJBQU87SUFDMUIsaUJBQU87SUFDUCxtQ0FBa0o7SUFDcEosaUJBQU07OztJQU5VLGVBQXNCO0lBQXRCLDJDQUFzQjtJQUU1QixlQUFlO0lBQWYsd0NBQWU7SUFHUixlQUE2QjtJQUE3QixrREFBNkI7OztJQXlCMUMsK0JBQ0U7SUFBQSw0QkFBVztJQUFYLGdCQUFXO0lBQWtCLGlCQUFPO0lBQUEsNEJBQU07SUFBQSxZQUFvQjtJQUFBLGlCQUFPO0lBQ3ZFLGlCQUFNOzs7SUFEc0MsZUFBb0I7SUFBcEIsNENBQW9COzs7SUFFaEUsNEJBQXFDO0lBQXJDLGdCQUFxQztJQUFlLGlCQUFPOzs7SUFDM0QsNEJBQW9DO0lBQXBDLGdCQUFvQztJQUFnQixpQkFBTzs7O0lBQzNELDRCQUErQjtJQUFBLFlBQXFDO0lBQUEsaUJBQU87OztJQUE1QyxlQUFxQztJQUFyQyw2REFBcUM7OztJQUNwRSw0QkFBbUM7SUFBbkMsZ0JBQW1DO0lBQWUsaUJBQU87Ozs7SUFFM0QsK0JBRUU7SUFERixvTkFBcUMsUUFBUSxVQUFVLElBQUksT0FBRztJQUM1RCxtQ0FBaUg7SUFDakgsNEJBQVc7SUFBWCxnQkFBVztJQUFzQixpQkFBTztJQUMxQyxpQkFBTTs7O0lBRlUsZUFBc0I7SUFBdEIsNENBQXNCOzs7O0lBYnhDLCtCQUNFO0lBQUEsK0JBQ0U7SUFBQSx3Q0FBNkc7SUFBNUMsZ05BQTRCO0lBQUMsaUJBQWU7SUFDN0csb0ZBQ0U7SUFFRixzRkFBcUM7SUFDckMsc0ZBQW9DO0lBQ3BDLHNGQUErQjtJQUMvQixzRkFBbUM7SUFDckMsaUJBQU07SUFDTixvRkFFRTs7SUFJRixpREFNdUI7SUFGckIsaVBBQXNDLDBQQUFBO0lBRXhDLGlCQUF1QjtJQUN6QixpQkFBTTs7O0lBdEJZLGVBQTJCO0lBQTNCLGdEQUEyQjtJQUNzQixlQUFzQjtJQUF0Qiw0Q0FBc0I7SUFHL0UsZUFBeUI7SUFBekIsK0NBQXlCO0lBQ3pCLGVBQXdCO0lBQXhCLDhDQUF3QjtJQUN4QixlQUF3QjtJQUF4Qiw4Q0FBd0I7SUFDeEIsZUFBdUI7SUFBdkIsNkNBQXVCO0lBRXlCLGVBQTBDO0lBQTFDLCtFQUEwQztJQU9oRyxlQUFtQjtJQUFuQix3Q0FBbUIsb0NBQUEseUNBQUE7Ozs7SUF3Qm5CLDZCQUNFO0lBQUEsb0RBUTJCO0lBRnpCLG9TQUE0QztJQUU5QyxpQkFBMkI7SUFDN0IsMEJBQWU7Ozs7SUFSWCxlQUF3QjtJQUF4QiwwQ0FBd0IsbUNBQUEsaUNBQUEsMENBQUEscUNBQUE7OztJQVd4Qiw2Q0FBNEc7Ozs7SUFEOUcsK0JBQ0U7SUFBQSw2S0FBK0U7O0lBQy9FLG9EQVEyQjtJQUZ6QixtU0FBNEM7SUFFOUMsaUJBQTJCO0lBQzdCLGlCQUFNO0lBQ04sK0JBQ0U7SUFBQSw2Q0FBbUY7SUFDckYsaUJBQU07Ozs7SUFid0IsZUFBa0Q7SUFBbEQsdUZBQWtEO0lBRTVFLGVBQXdCO0lBQXhCLDBDQUF3QixtQ0FBQSxpQ0FBQSwwQ0FBQSxxQ0FBQTtJQVVGLGVBQWlDO0lBQWpDLHVEQUFpQzs7O0lBMUIvRCw2QkFDRTtJQUFBLG1JQUNFO0lBVUYsa0tBQ0U7SUFnQkosMEJBQWU7Ozs7SUE1QkMsZUFBa0M7SUFBbEMsa0NBQWtDLGtCQUFBOzs7SUFGcEQsK0JBQ0U7SUFBQSxvSEFDRTtJQTZCSixpQkFBTTs7O0lBOUJVLGVBQWlEO0lBQWpELDRDQUFpRDs7O0lBRGpFLDRGQUNFOzs7SUFERyxtREFBNkI7Ozs7SUF0RnRDLDhCQUNFO0lBQUEsOEJBQ0U7SUFBQSxpREFleUI7SUFMdkIsK09BQTBDLG1PQUFBLDBPQUFBLHVPQUFBLDBPQUFBOztJQUs1QyxpQkFBeUI7SUFDekIsNkVBQ0U7SUEyQkYsK0VBQ0U7SUF3QkosaUJBQU07SUFFTixpREFVeUI7SUFKdkIsNE9BQXVDLDJOQUFBLDhOQUFBO0lBSXpDLGlCQUF5QjtJQUV6QiwrSEFDRTtJQWlDSixpQkFBTTs7OztJQXBIQSxlQUF3QjtJQUF4Qiw2Q0FBd0IscUVBQUEsb0pBQUEsK0JBQUEseUVBQUEseUNBQUEsbURBQUEsOEZBQUEsNkRBQUE7SUFlckIsZUFBdUI7SUFBdkIsNkNBQXVCO0lBNEJ2QixlQUFvRDtJQUFwRCxnREFBb0QsaUJBQUE7SUE0QnpELGVBQW1CO0lBQW5CLHdDQUFtQiwrQ0FBQSx5Q0FBQSxvQ0FBQSxvQ0FBQTs7OztJQWdEckIsa0RBTXlCO0lBRnZCLGtRQUFrQyw2T0FBQTtJQUVwQyxpQkFBeUI7OztJQUp2Qix1REFBaUMscUNBQUE7OztJQUZuQyw0SEFNQTs7O0lBTEUscURBQStCOztBRDdGbkMsTUFBTSxPQUFPLHNCQUF1QixTQUFRLG9CQUFvQjtJQThCOUQsWUFDUyxHQUFzQixFQUN0QixrQkFBcUMsRUFDckMsY0FBOEIsRUFDOUIsZUFBaUMsRUFDakMsY0FBOEIsRUFDN0IsY0FBOEIsRUFDL0IsWUFBMEIsRUFDMUIsWUFBeUIsRUFDekIscUJBQTZDLEVBQzFDLGdCQUFrQyxFQUNyQyxvQkFBMkMsRUFDM0MsY0FBOEIsRUFDOUIsY0FBOEI7UUFFckMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFkakIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNyQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsb0JBQWUsR0FBZixlQUFlLENBQWtCO1FBQ2pDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM3QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDL0IsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF3QjtRQUMxQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ3JDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBdUI7UUFDM0MsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQXRDOUIscUJBQWdCLEdBQUcsNEZBQTRGLENBQUM7UUFDaEgsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsb0JBQWUsR0FBRyxNQUFNLENBQUM7UUFFekIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFJaEMsc0JBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLFNBQUksR0FBRyxJQUFJLENBQUM7UUFDWixlQUFVLEdBQWUsRUFBRSxDQUFDO1FBQzVCLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBR3ZCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLGdCQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLGVBQVUsR0FBRyxDQUFDLENBQUM7UUFDZixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUVyQiw0QkFBdUIsR0FBRyxLQUFLLENBQUM7UUFFeEIsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBbUJ6QyxJQUFJLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDekUsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRW5CLElBQUksQ0FBQyxhQUFhLEdBQUc7WUFDbkIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUNoRCxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsRUFDckQsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ2pDLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzdCLENBQUMsQ0FBQyxDQUNILENBQUMsU0FBUyxFQUFFO1lBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ3pFLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDLFlBQVksQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsVUFBVSxDQUFDO2dCQUNoQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzNCLENBQUMsQ0FBQztZQUNGLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtTQUM5QixDQUFDO1FBRUYsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELFdBQVcsS0FBYSxPQUFPLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFFaEQsbUJBQW1COztRQUNqQixNQUFNLFdBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hFLElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxNQUFNLEVBQUU7WUFDNUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDM0I7UUFDRCxJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsS0FBSyxNQUFNLEVBQUU7WUFDakQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDMUI7UUFDRCxNQUFNLElBQUksU0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQywwQ0FBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxNQUFNLE1BQUssQ0FBQyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsNkdBQTZHO0lBQzdHLGlCQUFpQixDQUFDLFFBQWtCOztRQUNsQyxVQUFJLFFBQVEsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsMENBQUUsSUFBSSxFQUFFO1lBQ25ELE1BQU0sRUFBRSxlQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsMENBQUUsSUFBSSwwQ0FBRSxFQUFFLENBQUM7WUFDL0QsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3JDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsRUFDNUIsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDWixJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQztnQkFDOUIsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQztnQkFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0lBRUQsNkZBQTZGO0lBQzdGLFdBQVc7UUFDVCxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksYUFBYSxDQUM5QjtZQUNFLFVBQVUsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztZQUN0SCxJQUFJLEVBQUU7Z0JBQ0osRUFBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUM7Z0JBQzNCLEVBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFDO2dCQUM1QixFQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQztnQkFDL0IsZ0ZBQWdGO2FBQ2pGO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLEVBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFDO2dCQUMxQixFQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBQztnQkFDMUIsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUM7Z0JBQzFCLEVBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFDO2FBRTVCO1NBQ0YsQ0FDRixDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3RCLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDakQ7UUFDRCxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7WUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FBRTtRQUNuRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFDeEMsQ0FBQztJQUVELGFBQWEsQ0FBQyxPQUFzQjtRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLDhDQUE4QztRQUM3RSxJQUFJLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQztRQUNoQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWM7UUFDekIsSUFBSSxNQUFNLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUU7WUFDbEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUVELG9CQUFvQixDQUFDLEtBQW9EO1FBQ3ZFLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMxQyxpQkFBaUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxFQUFFO1NBQ2xFLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDMUMsaUJBQWlCLEVBQUU7Z0JBQ2pCLE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7Z0JBQ3hCLEtBQUssRUFBRSxpQkFBaUI7YUFDekI7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDMUMsaUJBQWlCLEVBQUU7Z0JBQ2pCLE9BQU8sRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRTtnQkFDakQsS0FBSyxFQUFFLGtCQUFrQjthQUMxQjtTQUNGLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFjO1FBQzVCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMxQyxpQkFBaUIsRUFBRTtnQkFDakIsT0FBTyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFO2dCQUMzRixLQUFLLEVBQUUsdUJBQXVCLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRzthQUN6QztTQUNGLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELFlBQVksQ0FBQyxVQUFrQjtRQUM3QixNQUFNLElBQUksS0FBSyxDQUFDLDBGQUEwRixDQUFDLENBQUM7UUFDNUcsSUFBSSxDQUFDLGNBQWMsR0FBRyxVQUFVLENBQUM7UUFDakMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxjQUFjLEVBQUUsQ0FBQztTQUMvQztJQUNILENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEIsa0hBQWtIO1FBQ2xILElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNuQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxpQkFBaUI7UUFDZixJQUFJLENBQUMsaUJBQWlCLEdBQUcsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUM7UUFDakQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsY0FBYyxDQUFDLFNBQWlCLElBQUk7UUFDbEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsS0FBdUM7O1FBQ3hELFFBQVEsS0FBSyxDQUFDLE1BQU0sRUFBRTtZQUNwQixLQUFLLFFBQVEsQ0FBQyxDQUFDO2dCQUNiLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdEIsTUFBTTthQUNQO1lBRUQsS0FBSyxNQUFNLENBQUMsQ0FBQztnQkFDWCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbEMsTUFBTTthQUNQO1lBRUQsS0FBSyxRQUFRLENBQUMsQ0FBQztnQkFDYixJQUFJLE9BQUEsS0FBSyxDQUFDLE1BQU0sMENBQUUsRUFBRSxLQUFJLE9BQUEsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsaUJBQWlCLENBQUMsMENBQUUsSUFBSSxDQUFDLEVBQUUsTUFBSyxVQUFVLEVBQUU7b0JBQzdGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7d0JBQ3pELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDM0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsNEJBQTRCLENBQUMsQ0FBQzt3QkFDbkUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDM0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztpQkFDSDtnQkFDRCxNQUFNO2FBQ1A7U0FDRjtJQUNILENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FDaEMsQ0FBQztJQUNKLENBQUM7SUFFRCxZQUFZO1FBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQzFGLENBQUM7SUFFRCxlQUFlOztRQUNiLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksYUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxpQkFBaUIsMENBQUUsS0FBSyxNQUFLLGlCQUFpQixDQUFDO0lBQ3pILENBQUM7SUFFRCxjQUFjOztRQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksYUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxpQkFBaUIsMENBQUUsS0FBSyxNQUFLLGtCQUFrQixDQUFDO0lBQzFILENBQUM7SUFFRCxjQUFjOztRQUNaLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3pHLG1CQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLGlCQUFpQiwwQ0FBRSxLQUFLLDBDQUFFLE1BQU0sSUFBRyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3hJLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQ3BELEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FDbkQsQ0FBQztJQUNKLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVPLFlBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDL0QsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUMxQyxHQUFHLENBQUMsQ0FBQyxRQUFxQyxFQUFFLEVBQUU7WUFDNUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM5QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzNCLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRU8sY0FBYyxDQUFDLFFBQXFDO1FBQzFELElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ3RELEdBQUcsRUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztZQUNqRyxLQUFLLEVBQUUsZUFBZSxDQUFDLEtBQUs7WUFDNUIsUUFBUSxFQUFFLGVBQWUsQ0FBQyxRQUFRO1lBQ2xDLE9BQU8sRUFBRSxFQUFFLGlCQUFpQixFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUU7U0FDekYsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRU8scUJBQXFCO1FBQzNCLE1BQU0sV0FBVyxHQUFHLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEUsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLEtBQUssV0FBVyxFQUFFO1lBQ3RELE9BQU8sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7U0FDbEM7UUFDRCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLFdBQVcsQ0FBQyxHQUFHLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ3ZHLElBQUksZ0JBQWdCLEVBQUU7WUFDcEIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztTQUNsSTtJQUNILENBQUM7SUFFRCxvRkFBb0Y7SUFDNUUsc0JBQXNCO1FBQzVCLE9BQU8sYUFBYSxDQUFDO1lBQ25CLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUztZQUMzQixJQUFJLENBQUMsWUFBWSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQztZQUNuRCxJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQjtTQUN4QyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3JCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQixNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNyQyxNQUFNLG9CQUFvQixHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxJQUFJLENBQUMsaUJBQWlCLElBQUksb0JBQW9CLENBQUM7WUFDN0UsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxlQUFlO1FBQ3JCLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxFQUFFLEVBQUM7WUFDM0IsUUFBUSxJQUFJLENBQUMsWUFBWSxFQUFDO2dCQUN4QixLQUFLLFdBQVc7b0JBQ2QsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7b0JBQzFCLE1BQU07Z0JBQ1IsS0FBSywyQkFBMkI7b0JBQzlCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO29CQUN6QixNQUFNO2dCQUNSLEtBQUssb0JBQW9CO29CQUN2QixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztvQkFDMUIsTUFBTTthQUNUO1NBQ0Y7SUFDSCxDQUFDOzs0RkF2V1Usc0JBQXNCOzJEQUF0QixzQkFBc0I7dUJBQ3RCLHNCQUFzQjs7dUJBRW5CLHdCQUF3Qjs7Ozs7Ozs7Ozs7aUJDWHBCLFVBQUEsdUVBQUs7Ozs7OztpQkE0QkosVUFBQSxtRkFBa0I7Ozs7OztpQkFFTSxVQUFBLCtFQUFlOzs7Ozs7aUJBQ2hCLFVBQUEsaUZBQWdCOzs7Ozs7aUJBRWpCLFVBQUEsZ0ZBQWU7Ozs7OztrQkFLdkMsVUFBQSx1RkFBc0I7O1FBN0R6Qyw0QkFBNkQ7UUFDN0Qsd0VBQ0U7UUF3SEYsd0hBQ0U7OztRQTFIRyxlQUFvRTtRQUFwRSx5RUFBb0UsaUJBQUE7O2tERDhCNUQsc0JBQXNCO2NBUGxDLFNBQVM7ZUFBQztnQkFDVCxRQUFRLEVBQUUsd0JBQXdCO2dCQUNsQyxXQUFXLEVBQUUsaUNBQWlDO2dCQUM5QyxTQUFTLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztnQkFDOUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEO2liQUVvQyxhQUFhO2tCQUEvQyxTQUFTO21CQUFDLHNCQUFzQjtZQUNFLFNBQVM7a0JBQTNDLFNBQVM7bUJBQUMsc0JBQXNCO1lBQ1EsY0FBYztrQkFBdEQsWUFBWTttQkFBQyx3QkFBd0I7WUFFN0IsZ0JBQWdCO2tCQUF4QixLQUFLO1lBQ0csWUFBWTtrQkFBcEIsS0FBSztZQUNHLGVBQWU7a0JBQXZCLEtBQUs7WUFDRyxTQUFTO2tCQUFqQixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLGFBQWE7a0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgT25Jbml0LCBFbGVtZW50UmVmLFxuICBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgT25EZXN0cm95LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwLCBza2lwV2hpbGUsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2F0YWxvZ0NhdGVnb3J5Q29tcG9uZW50IH0gZnJvbSAnLi9jYXRhbG9nLWNhdGVnb3J5L2NhdGFsb2ctY2F0ZWdvcnkuY29tcG9uZW50JztcbmltcG9ydCB7IENhdGFsb2dTZXR0aW5nLCBSZWNpcGUsIFN1cHBsaWVyIH0gZnJvbSAnLi4vLi4vX21vZGVscyc7XG5pbXBvcnQgeyBSZWNpcGVUeXBlU2VydmljZSwgU3BvbnNvclNlcnZpY2UsIFBhY2thZ2VTZXJ2aWNlLCBTdXBwbGllcnNTZXJ2aWNlLCBSZWNpcGVzU2VydmljZSwgVXNlclNlcnZpY2UsIEdyb2Nlcmllc0xpc3RzU2VydmljZSxcbiAgQmFza2V0c1NlcnZpY2UsIENvbnRleHRTZXJ2aWNlLCBDYXRhbG9nU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi9fdHlwZXMvaWNvbi5lbnVtJztcbmltcG9ydCB7IENhdGFsb2dIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2NhdGFsb2ctaGVhZGVyL2NhdGFsb2ctaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJQWRkaXRpb25uYWxGaWx0ZXJzLCBSZWNpcGVGaWx0ZXIsIFJlY2lwZUZpbHRlcnMgfSBmcm9tICcuLi8uLi9fdHlwZXMvcmVjaXBlLWZpbHRlcnMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNZWRpYU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IERvY3VtZW50Q29sbGVjdGlvbiB9IGZyb20gJ25neC1qc29uYXBpJztcbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tICcuLi8uLi9fbW9kZWxzL3BhY2thZ2UnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBFdmVudFRyYWNlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL19jb21wb25lbnRzL2Fic3RyYWN0cy9ldmVudC10cmFjZXIuY29tcG9uZW50JztcblxuaW50ZXJmYWNlIENhdGVnb3J5IHtcbiAga2V5OiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN1YnRpdGxlOiBzdHJpbmc7XG4gIGZpbHRlcnM6IHsgYWRkaXRpb25hbEZpbHRlcnM6IHsgZmlsdGVyczogeyBwYWNrYWdlczogc3RyaW5nIH07IHRpdGxlOiBzdHJpbmcgfX07XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLW1pYW0tcmVjaXBlLWNhdGFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVjaXBlLWNhdGFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZWNpcGUtY2F0YWxvZy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBSZWNpcGVDYXRhbG9nQ29tcG9uZW50IGV4dGVuZHMgRXZlbnRUcmFjZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoQ2F0YWxvZ0hlYWRlckNvbXBvbmVudCkgY2F0YWxvZ0hlYWRlcjogQ2F0YWxvZ0hlYWRlckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnbWlhbUNhdGFsb2dUb3BBbmNob3InKSB0b3BBbmNob3I6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkcmVuKENhdGFsb2dDYXRlZ29yeUNvbXBvbmVudCkgIGNhdGVnb3JpZXNDb21wITogUXVlcnlMaXN0PENhdGFsb2dDYXRlZ29yeUNvbXBvbmVudD47XG5cbiAgQElucHV0KCkgaGVhZGVyUGljdHVyZVVybCA9ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ltYWdlcy9kZWZhdWx0LWNhdGFsb2ctcGljdHVyZS5wbmcnO1xuICBASW5wdXQoKSBpbml0aWFsUm91dGUgPSAnJztcbiAgQElucHV0KCkgZmlsdGVyc1Bvc2l0aW9uID0gJ2xlZnQnO1xuICBASW5wdXQoKSBob21lTGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgZGlzcGxheVByaWNpbmcgPSBmYWxzZTtcbiAgQElucHV0KCkgY3VzdG9tRmlsdGVyczogeyBkaWZmaWN1bHR5PzogUmVjaXBlRmlsdGVyW107IGNvc3Q/OiBSZWNpcGVGaWx0ZXJbXTsgdGltZT86IFJlY2lwZUZpbHRlcltdIH07XG5cbiAgZmlsdGVyczogUmVjaXBlRmlsdGVycztcbiAgaXNGaWx0ZXJDb2xsYXBzZWQgPSB0cnVlO1xuICBpY29uID0gSWNvbjtcbiAgY2F0ZWdvcmllczogQ2F0ZWdvcnlbXSA9IFtdO1xuICBjcmVhdGluZ1JlY2lwZSA9IGZhbHNlO1xuICByZWNpcGVUb1VwZGF0ZTogUmVjaXBlO1xuICBmaWx0ZXJUb1JlbW92ZTogc3RyaW5nO1xuICBpc01vYmlsZSA9IGZhbHNlO1xuICBzaG93VXNlckZlZWRiYWNrID0gZmFsc2U7XG4gIHJlY2lwZUNvdW50ID0gMDtcbiAgdG90YWxQcmljZSA9IDA7XG4gIGlzTXlNZWFsQ2xvc2UgPSB0cnVlO1xuICBjYXRhbG9nU2V0dGluZzogQ2F0YWxvZ1NldHRpbmc7XG4gIGNhdGFsb2dTZXR0aW5nSGFzTG9hZGVkID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIHN1cHBsaWVySWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIHJlY2lwZVR5cGVzU2VydmljZTogUmVjaXBlVHlwZVNlcnZpY2UsXG4gICAgcHVibGljIHNwb25zb3JTZXJ2aWNlOiBTcG9uc29yU2VydmljZSxcbiAgICBwdWJsaWMgc3VwcGxpZXJTZXJ2aWNlOiBTdXBwbGllcnNTZXJ2aWNlLFxuICAgIHB1YmxpYyBwYWNrYWdlU2VydmljZTogUGFja2FnZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVzU2VydmljZTogUmVjaXBlc1NlcnZpY2UsXG4gICAgcHVibGljIG1lZGlhTWF0Y2hlcjogTWVkaWFNYXRjaGVyLFxuICAgIHB1YmxpYyB1c2Vyc1NlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBjYXRhbG9nU2V0dGluZ1NlcnZpY2U6IENhdGFsb2dTZXR0aW5nc1NlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UsXG4gICAgcHVibGljIGdyb2Nlcmllc0xpc3RTZXJ2aWNlOiBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsXG4gICAgcHVibGljIGJhc2tldHNTZXJ2aWNlOiBCYXNrZXRzU2VydmljZSxcbiAgICBwdWJsaWMgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlLFxuICApIHtcbiAgICBzdXBlcihhbmFseXRpY3NTZXJ2aWNlKTtcbiAgICB0aGlzLmlzTW9iaWxlID0gbWVkaWFNYXRjaGVyLm1hdGNoTWVkaWEoJyhtYXgtd2lkdGg6IDEwMjJweCknKS5tYXRjaGVzO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5wYWdldmlldygpO1xuICAgIHRoaXMuaW5pdEZpbHRlcnMoKTtcblxuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtcbiAgICAgIHRoaXMuc3VwcGxpZXJTZXJ2aWNlLnN1cHBsaWVyJC5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgICBza2lwV2hpbGUoc3VwcCA9PiBzdXBwID09PSB1bmRlZmluZWQgfHwgc3VwcCA9PSBudWxsKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgc3dpdGNoTWFwKHN1cHBsaWVyID0+IHtcbiAgICAgICAgICB0aGlzLnN1cHBsaWVySWQgPSBzdXBwbGllci5pZDtcbiAgICAgICAgICB0aGlzLmluaXRDYXRhbG9nSGVhZGVyKHN1cHBsaWVyKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkUGFja2FnZXMoKTtcbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKCksXG4gICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmJhc2tldFN0YXRzJC5waXBlKHNraXBXaGlsZShicyA9PiAhYnMpKS5zdWJzY3JpYmUoYnMgPT4ge1xuICAgICAgICB0aGlzLnJlY2lwZUNvdW50ID0gYnMucmVjaXBlc0NvdW50O1xuICAgICAgICB0aGlzLnRvdGFsUHJpY2UgPSBicy50b3RhbFByaWNlO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KSxcbiAgICAgIHRoaXMuYXNzZXNzU2hvd1VzZXJGZWVkYmFjaygpXG4gICAgXTtcblxuICAgIHRoaXMuc2V0RGlyZWN0QWNjZXNzKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5vcGVuRmVhdHVyZXNGcm9tVVJMKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgY3VycmVudFBhdGgoKTogc3RyaW5nIHsgcmV0dXJuICdtaWFtL3JlY2lwZXMnOyB9XG5cbiAgb3BlbkZlYXR1cmVzRnJvbVVSTCgpIHtcbiAgICBjb25zdCBwYXJhbXNBcnJheSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgaWYgKHBhcmFtc0FycmF5LmdldCgnb3BlbkJhc2tldCcpID09PSAndHJ1ZScpIHtcbiAgICAgIHRoaXMudG9nZ2xlTXlNZWFsRHJhd2VyKCk7XG4gICAgfVxuICAgIGlmIChwYXJhbXNBcnJheS5nZXQoJ3BlcnNvbmFsQ2F0YWxvZycpID09PSAndHJ1ZScpIHtcbiAgICAgIHRoaXMuc2V0UGVyc29uYWxGaWx0ZXIoKTtcbiAgICB9XG4gICAgY29uc3QgY29zdCA9IHBhcmFtc0FycmF5LmdldCgnY29zdCcpPy5zcGxpdCgnLCcpO1xuICAgIGlmIChjb3N0Py5sZW5ndGggPT09IDIpIHtcbiAgICAgIHRoaXMuc2V0UHJpY2VGaWx0ZXJzKGNvc3QpO1xuICAgIH1cbiAgfVxuXG4gIGRpc3BsYXlIb21lUGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJzLmlzRW1wdHkoKTtcbiAgfVxuXG4gIC8vIGluaXQgdGhlIHZhbHVlIG9mIHRoZSBpbWFnZSBhbmQgdGhlIHRleHQgZm9yIHRoZSBjYXRhbG9nIGhlYWRlciwgdXNpbmcgdGhlIGNhdGFsb2cgc2V0dGluZyBvZiB0aGUgc3VwcGxpZXJcbiAgaW5pdENhdGFsb2dIZWFkZXIoc3VwcGxpZXI6IFN1cHBsaWVyKSB7XG4gICAgaWYgKHN1cHBsaWVyLnJlbGF0aW9uc2hpcHNbJ2NhdGFsb2ctc2V0dGluZyddPy5kYXRhKSB7XG4gICAgICBjb25zdCBpZCA9IHN1cHBsaWVyLnJlbGF0aW9uc2hpcHNbJ2NhdGFsb2ctc2V0dGluZyddPy5kYXRhPy5pZDtcbiAgICAgIHRoaXMuY2F0YWxvZ1NldHRpbmdTZXJ2aWNlLmdldChpZCkucGlwZShcbiAgICAgICAgc2tpcFdoaWxlKGMgPT4gYy5pc19sb2FkaW5nKSxcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgdGFwKGNhdGFsb2cgPT4ge1xuICAgICAgICAgIHRoaXMuY2F0YWxvZ1NldHRpbmcgPSBjYXRhbG9nO1xuICAgICAgICAgIHRoaXMuY2F0YWxvZ1NldHRpbmdIYXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgLy8gVXNlZCBvbiBsb2FkIHRvIGJ1aWxkIHRoZSBmaWx0ZXJzIGF0dHJpYnV0ZSwgYW5kIG9uIGNsaWNrIG9uIHRoZSBsaW5rIHRvIHJlc2V0IHRoZSBmaWx0ZXJzXG4gIGluaXRGaWx0ZXJzKCkge1xuICAgIHRoaXMuZmlsdGVycyA9IG5ldyBSZWNpcGVGaWx0ZXJzKFxuICAgICAge1xuICAgICAgICBkaWZmaWN1bHR5OiB0aGlzLnJlY2lwZXNTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHMubWFwKGYgPT4gKHsgbmFtZTogZi52YWx1ZS50b1N0cmluZygpLCB0ZXh0OiBmLmxhYmVsLCB2YWx1ZTogZmFsc2UgfSkpLFxuICAgICAgICBjb3N0OiBbXG4gICAgICAgICAge25hbWU6ICcwLTUnLCB2YWx1ZTogZmFsc2V9LFxuICAgICAgICAgIHtuYW1lOiAnNS0xMCcsIHZhbHVlOiBmYWxzZX0sXG4gICAgICAgICAge25hbWU6ICcxMC0xMDAwJywgdmFsdWU6IGZhbHNlfVxuICAgICAgICAgIC8vIHdlIHNldCBhIGxpbWl0IGF0IDEwMDDigqwgbWF4LCBpZiBhIHJlY2lwZSBjb3N0IG1vcmUgc2hvdWxkIGJlIG5vbiBzZW5zZSBhbnl3YXlcbiAgICAgICAgXSxcbiAgICAgICAgdGltZTogW1xuICAgICAgICAgIHtuYW1lOiAnMTUnLCB2YWx1ZTogZmFsc2V9LFxuICAgICAgICAgIHtuYW1lOiAnMzAnLCB2YWx1ZTogZmFsc2V9LFxuICAgICAgICAgIHtuYW1lOiAnNjAnLCB2YWx1ZTogZmFsc2V9LFxuICAgICAgICAgIHtuYW1lOiAnMTIwJywgdmFsdWU6IGZhbHNlfVxuXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICApO1xuICAgIGlmICh0aGlzLmN1c3RvbUZpbHRlcnMpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5maWx0ZXJzLCB0aGlzLmN1c3RvbUZpbHRlcnMpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jYXRhbG9nSGVhZGVyKSB7IHRoaXMuY2F0YWxvZ0hlYWRlci5yZXNldFNlYXJjaFN0cmluZygpOyB9XG4gICAgdGhpcy5maWx0ZXJzLnNlYXJjaCA9ICcnO1xuICAgIHRoaXMuZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycyA9IG51bGw7XG4gIH1cblxuICB1cGRhdGVGaWx0ZXJzKGZpbHRlcnM6IFJlY2lwZUZpbHRlcnMpIHtcbiAgICB0aGlzLmZpbHRlcnMgPSBmaWx0ZXJzLmNvcHkoKTsgLy8gbmVjZXNzYXJ5IHRvIHRyaWdnZXIgY2hpbGQgY29tcG9uZW50IGNoYW5nZVxuICAgIHRoaXMuZmlsdGVyVG9SZW1vdmUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZXR1cm5Ub1RvcCgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHVwZGF0ZVNlYXJjaChzZWFyY2g6IHN0cmluZykge1xuICAgIGlmIChzZWFyY2ggIT09IHRoaXMuZmlsdGVycy5zZWFyY2gpIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBPYmplY3QuYXNzaWduKHRoaXMuZmlsdGVycywgeyBzZWFyY2ggfSk7XG4gICAgICB0aGlzLnVwZGF0ZUZpbHRlcnMoZmlsdGVycyk7XG4gICAgfVxuICB9XG5cbiAgY2F0ZWdvcnlUaXRsZUNsaWNrZWQoZXZlbnQ6IHt0aXRsZTogc3RyaW5nOyBmaWx0ZXJzOiBJQWRkaXRpb25uYWxGaWx0ZXJzfSkge1xuICAgIGNvbnN0IGZpbHRlcnMgPSBPYmplY3QuYXNzaWduKHRoaXMuZmlsdGVycywge1xuICAgICAgYWRkaXRpb25hbEZpbHRlcnM6IHsgZmlsdGVyczogZXZlbnQuZmlsdGVycywgdGl0bGU6IGV2ZW50LnRpdGxlIH1cbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICBzZXRGYXZvcml0ZXNGaWx0ZXIoKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVycyA9IE9iamVjdC5hc3NpZ24odGhpcy5maWx0ZXJzLCB7XG4gICAgICBhZGRpdGlvbmFsRmlsdGVyczoge1xuICAgICAgICBmaWx0ZXJzOiB7IGxpa2VkOiB0cnVlIH0sXG4gICAgICAgIHRpdGxlOiAnTWVzIGlkw6llcyByZXBhcydcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICBzZXRQZXJzb25hbEZpbHRlcigpOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJzID0gT2JqZWN0LmFzc2lnbih0aGlzLmZpbHRlcnMsIHtcbiAgICAgIGFkZGl0aW9uYWxGaWx0ZXJzOiB7XG4gICAgICAgIGZpbHRlcnM6IHsgcGVyc29uYWw6IHRydWUsIGFjdGl2ZTogJ3RydWUsZmFsc2UnIH0sXG4gICAgICAgIHRpdGxlOiAnTW9uIGNhcm5ldCBwZXJzbydcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICBzZXRQcmljZUZpbHRlcnMoY29zdDogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJzID0gT2JqZWN0LmFzc2lnbih0aGlzLmZpbHRlcnMsIHtcbiAgICAgIGFkZGl0aW9uYWxGaWx0ZXJzOiB7XG4gICAgICAgIGZpbHRlcnM6IHsgY29tcHV0ZWRfY29zdDogY29zdFswXSArICcsZ3QsJyArIGNvc3RbMV0gKyAnLGx0JywgcmVjaXBlX3R5cGVfaWQ6ICdtYWluLWRpc2gnIH0sXG4gICAgICAgIHRpdGxlOiBgUmVjZXR0ZXMgw6AgbW9pbnMgZGUgJHtjb3N0WzFdfeKCrGBcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICByZW1vdmVGaWx0ZXIoZmlsdGVyVGV4dDogc3RyaW5nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGZ1bmN0aW9uIGlzIGJyb2tlbiwgdXNlIGhhcyBiZWVuIGNvbW1lbnRhdGVkLCByZXBhaXIgaXQgaWYgeW91IHdhbnQgdG8gdXNlIGl0IGFnYWluJyk7XG4gICAgdGhpcy5maWx0ZXJUb1JlbW92ZSA9IGZpbHRlclRleHQ7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmV0dXJuVG9Ub3AoKSB7XG4gICAgaWYgKHRoaXMudG9wQW5jaG9yKSB7XG4gICAgICB0aGlzLnRvcEFuY2hvci5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuVG9Ib21lUGFnZSgpIHtcbiAgICB0aGlzLnBhZ2V2aWV3KCk7XG4gICAgLy8gZWl0aGVyIHlvdSBoYXZlIGZpbHRlcnMgZWl0aGVyIHlvdSBhcmUgb24gaG9tZSBwYWdlLiBUaGF0IG1lYW4gaWYgeW91IGdvIG9uIGhvbWUgcGFnZSB5b3UgZG9uJ3Qgd2FudCBBTlkgZmlsdGVyXG4gICAgdGhpcy5pbml0RmlsdGVycygpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9uRmlsdGVyQ29sbGFwc2VkKCkge1xuICAgIHRoaXMuaXNGaWx0ZXJDb2xsYXBzZWQgPSAhdGhpcy5pc0ZpbHRlckNvbGxhcHNlZDtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBnb1RvQ3JlYXRlUGFnZShyZWNpcGU6IFJlY2lwZSA9IG51bGwpIHtcbiAgICB0aGlzLmNyZWF0aW5nUmVjaXBlID0gdHJ1ZTtcbiAgICB0aGlzLnJlY2lwZVRvVXBkYXRlID0gcmVjaXBlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnJldHVyblRvVG9wKCk7XG4gIH1cblxuICBsZWF2ZUNyZWF0ZVBhZ2UoKSB7XG4gICAgdGhpcy5jcmVhdGluZ1JlY2lwZSA9IGZhbHNlO1xuICAgIHRoaXMucmV0dXJuVG9Ub3AoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBtYW5hZ2VSZWNpcGVBY3Rpb24oZXZlbnQ6IHthY3Rpb246IHN0cmluZzsgcmVjaXBlOiBSZWNpcGV9KSB7XG4gICAgc3dpdGNoIChldmVudC5hY3Rpb24pIHtcbiAgICAgIGNhc2UgJ0NSRUFURSc6IHtcbiAgICAgICAgdGhpcy5nb1RvQ3JlYXRlUGFnZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSAnRURJVCc6IHtcbiAgICAgICAgdGhpcy5nb1RvQ3JlYXRlUGFnZShldmVudC5yZWNpcGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSAnREVMRVRFJzoge1xuICAgICAgICBpZiAoZXZlbnQucmVjaXBlPy5pZCAmJiBldmVudC5yZWNpcGUucmVsYXRpb25zaGlwc1sncmVjaXBlLXByb3ZpZGVyJ10/LmRhdGEuaWQgPT09ICdwZXJzb25hbCcpIHtcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgIHRoaXMucmVjaXBlc1NlcnZpY2UuZGVsZXRlKGV2ZW50LnJlY2lwZS5pZCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLnByb3BzKCksIHsgcmVjaXBlSWQ6IGV2ZW50LnJlY2lwZS5pZCB9KTtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kRXZlbnQodGhpcy5hbmFseXRpY3NTZXJ2aWNlLkVWRU5UX1BFUlNPTkFMX1JFQ0lQRV9ERUxFVEUpO1xuICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVsb2FkUGFja2FnZXMoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmxvYWRQYWNrYWdlcygpLnN1YnNjcmliZSgpXG4gICAgKTtcbiAgfVxuXG4gIGlzU2VhcmNoUGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZGlzcGxheUhvbWVQYWdlKCkgJiYgdGhpcy5maWx0ZXJzLnNlYXJjaCAmJiB0aGlzLmZpbHRlcnMuc2VhcmNoLmxlbmd0aCA+IDA7XG4gIH1cblxuICBpc0Zhdm9yaXRlc1BhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmRpc3BsYXlIb21lUGFnZSgpICYmICF0aGlzLmlzU2VhcmNoUGFnZSgpICYmIHRoaXMuZmlsdGVycz8uYWRkaXRpb25hbEZpbHRlcnM/LnRpdGxlID09PSAnTWVzIGlkw6llcyByZXBhcyc7XG4gIH1cblxuICBpc1BlcnNvbmFsUGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZGlzcGxheUhvbWVQYWdlKCkgJiYgIXRoaXMuaXNTZWFyY2hQYWdlKCkgJiYgdGhpcy5maWx0ZXJzPy5hZGRpdGlvbmFsRmlsdGVycz8udGl0bGUgPT09ICdNb24gY2FybmV0IHBlcnNvJztcbiAgfVxuXG4gIGlzQ2F0ZWdvcnlQYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5kaXNwbGF5SG9tZVBhZ2UoKSAmJiAhdGhpcy5pc1NlYXJjaFBhZ2UoKSAmJiAhdGhpcy5pc0Zhdm9yaXRlc1BhZ2UoKSAmJiAhdGhpcy5pc1BlcnNvbmFsUGFnZSgpICYmXG4gICAgICB0aGlzLmZpbHRlcnM/LmFkZGl0aW9uYWxGaWx0ZXJzPy50aXRsZT8ubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGlzRGVmYXVsdFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmRpc3BsYXlIb21lUGFnZSgpICYmICF0aGlzLmlzU2VhcmNoUGFnZSgpICYmICF0aGlzLmlzRmF2b3JpdGVzUGFnZSgpICYmICF0aGlzLmlzUGVyc29uYWxQYWdlKCkgJiYgIXRoaXMuaXNDYXRlZ29yeVBhZ2UoKTtcbiAgfVxuXG4gIGNhbkRpc3BsYXlDcmVhdGlvbkJ1dHRvbigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy51c2Vyc1NlcnZpY2UuaXNMb2dnZWQkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICBtYXAoaXNMb2dnZWQgPT4gaXNMb2dnZWQgJiYgdGhpcy5pc1BlcnNvbmFsUGFnZSgpKVxuICAgICk7XG4gIH1cblxuICB0b2dnbGVNeU1lYWxEcmF3ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5yZWNpcGVzU2VydmljZS5vcGVuQmFza2V0KHRoaXMuZXZlbnRUcmFjZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFBhY2thZ2VzKCk6IE9ic2VydmFibGU8RG9jdW1lbnRDb2xsZWN0aW9uPFBhY2thZ2U+PiB7XG4gICAgcmV0dXJuIHRoaXMucGFja2FnZVNlcnZpY2UuY2F0ZWdvcmllc19mb3IoW3RoaXMuc3VwcGxpZXJJZF0pLnBpcGUoXG4gICAgICBza2lwV2hpbGUocGFja2FnZXMgPT4gcGFja2FnZXMuaXNfbG9hZGluZyksXG4gICAgICB0YXAoKHBhY2thZ2VzOiBEb2N1bWVudENvbGxlY3Rpb248UGFja2FnZT4pID0+IHtcbiAgICAgICAgdGhpcy5pbml0Q2F0ZWdvcmllcyhwYWNrYWdlcyk7XG4gICAgICAgIHRoaXMuc2VsZWN0Q2F0ZWdvcnlGcm9tVXJsKCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdENhdGVnb3JpZXMocGFja2FnZXM6IERvY3VtZW50Q29sbGVjdGlvbjxQYWNrYWdlPik6IHZvaWQge1xuICAgIHRoaXMuY2F0ZWdvcmllcyA9IHBhY2thZ2VzLmRhdGEubWFwKGNhdGVnb3J5UGFja2FnZSA9PiAoe1xuICAgICAga2V5OiBjYXRlZ29yeVBhY2thZ2UudGl0bGUudHJpbSgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXpBLVowLTkgLV0vLCAnJykucmVwbGFjZSgvXFxzL2csICctJyksXG4gICAgICB0aXRsZTogY2F0ZWdvcnlQYWNrYWdlLnRpdGxlLFxuICAgICAgc3VidGl0bGU6IGNhdGVnb3J5UGFja2FnZS5zdWJ0aXRsZSxcbiAgICAgIGZpbHRlcnM6IHsgYWRkaXRpb25hbEZpbHRlcnM6IHsgZmlsdGVyczogeyBwYWNrYWdlczogY2F0ZWdvcnlQYWNrYWdlLmlkIH0sIHRpdGxlOiAnJyB9IH1cbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdENhdGVnb3J5RnJvbVVybCgpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbXNBcnJheSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgaWYgKHBhcmFtc0FycmF5LmdldCgnY2F0YWxvZ0NhdGVnb3J5JykgPT09ICdmYXZvcml0ZXMnKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRGYXZvcml0ZXNGaWx0ZXIoKTtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0ZWRDYXRlZ29yeSA9IHRoaXMuY2F0ZWdvcmllcy5maW5kKChjYXQpID0+IGNhdC5rZXkgPT09IHBhcmFtc0FycmF5LmdldCgnY2F0YWxvZ0NhdGVnb3J5JykpO1xuICAgIGlmIChzZWxlY3RlZENhdGVnb3J5KSB7XG4gICAgICByZXR1cm4gdGhpcy5jYXRlZ29yeVRpdGxlQ2xpY2tlZCh7IHRpdGxlOiBzZWxlY3RlZENhdGVnb3J5LnRpdGxlLCBmaWx0ZXJzOiBzZWxlY3RlZENhdGVnb3J5LmZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnMuZmlsdGVycyB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBTaG93IGZlZWRiYWNrIGJsb2NrIG9ubHkgaWYgdXNlciBpcyBsb2dnZWQgYW5kIHRoZSBjaGlsZHJlbiBwcmVmZXJlbmNlIGlzIHVua25vd25cbiAgcHJpdmF0ZSBhc3Nlc3NTaG93VXNlckZlZWRiYWNrKCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy51c2Vyc1NlcnZpY2UuaXNMb2dnZWQkLFxuICAgICAgdGhpcy51c2Vyc1NlcnZpY2UucHJlZmVyZW5jZURlZmluZWQoJ2hhc19jaGlsZHJlbicpLFxuICAgICAgdGhpcy51c2Vyc1NlcnZpY2UucHJlZmVyZW5jZXNBY3RpdmF0ZWQkXG4gICAgXSkuc3Vic2NyaWJlKHJlc3VsdHMgPT4ge1xuICAgICAgY29uc3QgbG9nZ2VkID0gcmVzdWx0c1swXTtcbiAgICAgIGNvbnN0IHByZWZlcmVuY2VEZWZpbmVkID0gcmVzdWx0c1sxXTtcbiAgICAgIGNvbnN0IHByZWZlcmVuY2VzQWN0aXZhdGVkID0gcmVzdWx0c1syXTtcbiAgICAgIHRoaXMuc2hvd1VzZXJGZWVkYmFjayA9IGxvZ2dlZCAmJiAhcHJlZmVyZW5jZURlZmluZWQgJiYgcHJlZmVyZW5jZXNBY3RpdmF0ZWQ7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldERpcmVjdEFjY2Vzcygpe1xuICAgIGlmICh0aGlzLmluaXRpYWxSb3V0ZSAhPT0gJycpe1xuICAgICAgc3dpdGNoICh0aGlzLmluaXRpYWxSb3V0ZSl7XG4gICAgICAgIGNhc2UgJ21lcy1yZXBhcyc6XG4gICAgICAgICAgdGhpcy50b2dnbGVNeU1lYWxEcmF3ZXIoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbWVzLXJlY2V0dGVzLXBlcnNvbm5lbGxlcyc6XG4gICAgICAgICAgdGhpcy5zZXRQZXJzb25hbEZpbHRlcigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyZWNldHRlcy1mYXZvcml0ZXMnOlxuICAgICAgICAgIHRoaXMuc2V0RmF2b3JpdGVzRmlsdGVyKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gVW51c2VkIGZvciBub3cuLi5cbiAgLy8gc2V0VXNlclByZWZlcmVuY2UocHJlZiwgc3RhdGUpIHtcbiAgLy8gICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgLy8gICAgIHRoaXMudXNlcnNTZXJ2aWNlLnNldFByZWZlcmVuY2UocHJlZiwgc3RhdGUpLnBpcGUoXG4gIC8vICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmxvYWRQYWNrYWdlcygpKVxuICAvLyAgICAgKS5zdWJzY3JpYmUoKVxuICAvLyAgICk7XG4gIC8vICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gIC8vIH1cblxuICAvLyBwcml2YXRlIGNsb3NlTW9kYWwoKSB7XG4gIC8vICAgdGhpcy5zaG93VXNlckZlZWRiYWNrID0gIXRoaXMuc2hvd1VzZXJGZWVkYmFjaztcbiAgLy8gICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIC8vIH1cbn1cbiIsIjxkaXYgI21pYW1DYXRhbG9nVG9wQW5jaG9yIGNsYXNzPVwibWlhbS1jYXRhbG9nLWFuY2hvclwiPjwvZGl2PlxuPGRpdiAqbmdJZj1cIiFjcmVhdGluZ1JlY2lwZSAmJiBjYXRhbG9nU2V0dGluZ0hhc0xvYWRlZCBlbHNlIGNyZWF0aW9uUGFnZVwiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ1wiPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudFwiPlxuICAgIDxuZy1taWFtLWNhdGFsb2ctaGVhZGVyXG4gICAgICBbaG9tZV09XCJkaXNwbGF5SG9tZVBhZ2VcIlxuICAgICAgW3NlYXJjaFRlcm1dPVwiZmlsdGVycz8uc2VhcmNoXCJcbiAgICAgIFthZGRpdGlvbmFsRmlsdGVyc1RpdGxlXT1cImZpbHRlcnM/LmFkZGl0aW9uYWxGaWx0ZXJzPy50aXRsZVwiXG4gICAgICBbaG9tZUxhYmVsXT1cImhvbWVMYWJlbFwiXG4gICAgICBbcGljdHVyZVVybF09XCJkaXNwbGF5SG9tZVBhZ2UoKSA/IGhlYWRlclBpY3R1cmVVcmwgOiBudWxsXCJcbiAgICAgIFtjYXRhbG9nU2V0dGluZ109XCJjYXRhbG9nU2V0dGluZ1wiXG4gICAgICBbZmF2b3JpdGVzQnV0dG9uSGlkZGVuXT1cImlzRmF2b3JpdGVzUGFnZSgpXCJcbiAgICAgIFtwZXJzb25hbEJ1dHRvbkhpZGRlbl09XCIhKGNvbnRleHRTZXJ2aWNlLmVuYWJsZVBlcnNvbmFsUmVjaXBlcyQgfCBhc3luYylcIlxuICAgICAgW2ZpbHRlckJhZGdlQ291bnRdPVwiZmlsdGVycy5zZWxlY3RhYmxlRmlsdGVyc0NvdW50KClcIlxuICAgICAgKHJldHVybkJ1dHRvblByZXNzZWQpPVwicmV0dXJuVG9Ib21lUGFnZSgpXCJcbiAgICAgIChmaWx0ZXJCdXR0b25QcmVzc2VkKT1cIm9uRmlsdGVyQ29sbGFwc2VkKClcIlxuICAgICAgKHNlYXJjaFN0cmluZ0NoYW5nZWQpPVwidXBkYXRlU2VhcmNoKCRldmVudClcIlxuICAgICAgKHBlcnNvbmFsQnV0dG9uUHJlc3NlZCk9XCJzZXRQZXJzb25hbEZpbHRlcigpXCJcbiAgICAgIChmYXZvcml0ZXNCdXR0b25QcmVzc2VkKT1cInNldEZhdm9yaXRlc0ZpbHRlcigpXCI+XG4gICAgPC9uZy1taWFtLWNhdGFsb2ctaGVhZGVyPlxuICAgIDxkaXYgKm5nSWY9XCJyZWNpcGVDb3VudCA+IDBcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX215TWVhbF9fYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZU15TWVhbERyYXdlcigpXCIgPlxuICAgICAgPG5nLW1pYW0taWNvbiBbaWNvbk5hbWVdPVwiaWNvbi5DYXJ0XCIgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLXdoaXRlKScgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19teU1lYWxfX2ZpcnN0X19pY29uXCIgPjwvbmctbWlhbS1pY29uPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19teU1lYWxfX2J1dHRvbl9fdGV4dFwiPlxuICAgICAgICA8c3Bhbj57e3JlY2lwZUNvdW50fX08L3NwYW4+XG4gICAgICAgIDxzcGFuIGkxOG4+IHJlcGFzPC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPG5nLW1pYW0taWNvbiAgW2ljb25OYW1lXT1cImljb24uQ2hldnJvbkRvd25cIiBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3Itd2hpdGUpJyBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX215TWVhbF9fc2Vjb25kX19pY29uXCI+PC9uZy1taWFtLWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFVzZXIgZmVlZGJhY2sgYmFubmVyICh1bnVzZWQgZm9yIG5vdyAvIG1heWJlIHJlYWN0aXZhdGVkIGxhdGVyKSAtLT5cbiAgICA8IS0tIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X191c2VyLWZlZWRiYWNrX19tb2RhbFwiICpuZ0lmPVwic2hvd1VzZXJGZWVkYmFja1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX3VzZXItZmVlZGJhY2tcIj5cbiAgICAgICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX3VzZXItZmVlZGJhY2tfX2ljb24tY3Jvc3NcIiAoY2xpY2spPVwiY2xvc2VNb2RhbCgpXCIgW2ljb25OYW1lXT1cImljb24uQ3Jvc3NcIiBbd2lkdGhdPVwiMzBcIiBbaGVpZ2h0XT1cIjMwXCIgcHJpbWFyeUNvbG9yPVwibm9uZVwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudF9fdXNlci1mZWVkYmFja19fdGl0bGVcIj5cbiAgICAgICAgICAgIDxzcGFuPlBvdXIgbWlldXggdm91cyBjb25uYcOudHJlPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX3VzZXItZmVlZGJhY2tfX3F1ZXN0aW9uXCI+XG4gICAgICAgICAgICA8c3Bhbj5BdmV6LXZvdXMgbCdoYWJpdHVkZSBkZSBjdWlzaW5lciBwb3VyIG91IGF2ZWMgZGVzIGVuZmFudHMgPzwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX3VzZXItZmVlZGJhY2tfX2FjdGlvbnNcIj5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibS1mZWVkYmFjay1idXR0b25cIiAoY2xpY2spPVwic2V0VXNlclByZWZlcmVuY2UoJ2hhc19jaGlsZHJlbicsIGZhbHNlKVwiPk5vbjwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtLWZlZWRiYWNrLWJ1dHRvblwiIChjbGljayk9XCJzZXRVc2VyUHJlZmVyZW5jZSgnaGFzX2NoaWxkcmVuJywgdHJ1ZSlcIj5PdWk8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj4gLS0+XG5cbiAgICA8IS0tIENhdGFsb2cgcGFnZSBjb250ZW50IHdoZW4gZmlsdGVycyBhcHBsaWVkIC0tPlxuICAgIDxkaXYgKm5nSWY9XCIhZGlzcGxheUhvbWVQYWdlKCkgZWxzZSBjYXRlZ29yaWVzQ29tcG9uZW50c1wiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fbGlzdFwiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX3RpdGxlXCI+XG4gICAgICAgIDxuZy1taWFtLWljb24gW2ljb25OYW1lXT1cImljb24uQXJyb3dEb3duXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgKGNsaWNrKT1cInJldHVyblRvSG9tZVBhZ2UoKVwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudF9fdGl0bGVfX3NlYXJjaF9fdGV4dFwiICpuZ0lmPVwiaXNTZWFyY2hQYWdlKClcIj5cbiAgICAgICAgICA8c3BhbiBpMThuPlZvdHJlIHJlY2hlcmNoZSA6IDwvc3Bhbj48c3Bhbj57eyBmaWx0ZXJzLnNlYXJjaCB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXNGYXZvcml0ZXNQYWdlKClcIiBpMThuPk1lcyBpZMOpZXMgcmVwYXM8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXNQZXJzb25hbFBhZ2UoKVwiIGkxOG4+TW9uIGNhcm5ldCBwZXJzbzwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0NhdGVnb3J5UGFnZSgpXCI+e3sgZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycy50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0RlZmF1bHRQYWdlKClcIiBpMThuPlZvdHJlIHPDqWxlY3Rpb248L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19saXN0X19jcmVhdGVfX19idXR0b25cIiAqbmdJZj1cImNhbkRpc3BsYXlDcmVhdGlvbkJ1dHRvbigpIHwgYXN5bmNcIlxuICAgICAgKGNsaWNrKT1cIm1hbmFnZVJlY2lwZUFjdGlvbih7YWN0aW9uOiAnQ1JFQVRFJywgcmVjaXBlOiBudWxsfSlcIj5cbiAgICAgICAgPG5nLW1pYW0taWNvbiBbaWNvbk5hbWVdPVwiaWNvbi5QbHVzXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1wcmltYXJ5KVwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICA8c3BhbiBpMThuPkFqb3V0ZXIgdW5lIGlkw6llIHJlcGFzPC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxuZy1taWFtLWNhdGFsb2ctbGlzdFxuICAgICAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcbiAgICAgICAgW29yaWdpblRyYWNlXT1cImV2ZW50VHJhY2UoKVwiXG4gICAgICAgIFtkaXNwbGF5UHJpY2luZ109XCJkaXNwbGF5UHJpY2luZ1wiXG4gICAgICAgIChmaWx0ZXJSZW1vdmVkKT1cInJlbW92ZUZpbHRlcigkZXZlbnQpXCJcbiAgICAgICAgKHJlY2lwZUFjdGlvblRyaWdnZXJlZCk9XCJtYW5hZ2VSZWNpcGVBY3Rpb24oJGV2ZW50KVwiPlxuICAgICAgPC9uZy1taWFtLWNhdGFsb2ctbGlzdD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPG5nLW1pYW0tcmVjaXBlLWZpbHRlcnNcbiAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcbiAgICBbaXNGaWx0ZXJDb2xsYXBzZWRdPVwiaXNGaWx0ZXJDb2xsYXBzZWRcIlxuICAgIFtmaWx0ZXJUb1JlbW92ZV09XCJmaWx0ZXJUb1JlbW92ZVwiXG4gICAgW3Bvc2l0aW9uXT1cImZpbHRlcnNQb3NpdGlvblwiXG4gICAgW29yaWdpblRyYWNlXT1cImV2ZW50VHJhY2UoKVwiXG4gICAgKGZpbHRlckNoYW5nZWQpPVwidXBkYXRlRmlsdGVycygkZXZlbnQpXCJcbiAgICAoZmlsdGVyQ29sbGFwc2VkKT1cIm9uRmlsdGVyQ29sbGFwc2VkKClcIlxuICAgIChwcmVmZXJlbmNlc0NoYW5nZWQpPVwicmVsb2FkUGFja2FnZXMoKVwiXG4gID5cbiAgPC9uZy1taWFtLXJlY2lwZS1maWx0ZXJzPlxuICA8IS0tIENhdGFsb2cgaG9tZSBwYWdlIGNvbnRlbnQgLS0+XG4gIDxuZy10ZW1wbGF0ZSAjY2F0ZWdvcmllc0NvbXBvbmVudHM+XG4gICAgPGRpdiAqbmdJZj1cImNhdGVnb3JpZXMubGVuZ3RoID4gMFwiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY2F0ZWdvcmllc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgY2F0ZWdvcmllcyBsZXQgaSA9IGluZGV4XCIgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaSAhPT0gMCBlbHNlIGZpcnN0Q2F0ZWdvcnlcIj5cbiAgICAgICAgICA8bmctbWlhbS1jYXRhbG9nLWNhdGVnb3J5XG4gICAgICAgICAgICBbdGl0bGVdPVwiY2F0ZWdvcnkudGl0bGVcIlxuICAgICAgICAgICAgW3N1YnRpdGxlXT1cImNhdGVnb3J5LnN1YnRpdGxlXCJcbiAgICAgICAgICAgIFtmaWx0ZXJzXT1cImNhdGVnb3J5LmZpbHRlcnNcIlxuICAgICAgICAgICAgW2Rpc3BsYXlQcmljaW5nXT1cImRpc3BsYXlQcmljaW5nXCJcbiAgICAgICAgICAgIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlKClcIlxuICAgICAgICAgICAgKGRpc3BsYXlMaXN0KT1cImNhdGVnb3J5VGl0bGVDbGlja2VkKCRldmVudClcIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L25nLW1pYW0tY2F0YWxvZy1jYXRlZ29yeT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZmlyc3RDYXRlZ29yeT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fZmlyc3QtY2F0ZWdvcnlcIj5cbiAgICAgICAgICAgIDxuZy1taWFtLW1lYWxzLXBsYW5uZXItbGluayAqbmdJZj1cImNvbnRleHRTZXJ2aWNlLmVuYWJsZU1lYWxzUGxhbm5lciQgfCBhc3luY1wiPjwvbmctbWlhbS1tZWFscy1wbGFubmVyLWxpbms+XG4gICAgICAgICAgICA8bmctbWlhbS1jYXRhbG9nLWNhdGVnb3J5XG4gICAgICAgICAgICAgIFt0aXRsZV09XCJjYXRlZ29yeS50aXRsZVwiXG4gICAgICAgICAgICAgIFtzdWJ0aXRsZV09XCJjYXRlZ29yeS5zdWJ0aXRsZVwiXG4gICAgICAgICAgICAgIFtmaWx0ZXJzXT1cImNhdGVnb3J5LmZpbHRlcnNcIlxuICAgICAgICAgICAgICBbZGlzcGxheVByaWNpbmddPVwiZGlzcGxheVByaWNpbmdcIlxuICAgICAgICAgICAgICBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZSgpXCJcbiAgICAgICAgICAgICAgKGRpc3BsYXlMaXN0KT1cImNhdGVnb3J5VGl0bGVDbGlja2VkKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy1taWFtLWNhdGFsb2ctY2F0ZWdvcnk+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19leHBsYWluX2Jhbm5lclwiPlxuICAgICAgICAgICAgPG5nLW1pYW0tZXhwbGFpbi1iYW5uZXIgW2NhdGFsb2dTZXR0aW5nXT1cImNhdGFsb2dTZXR0aW5nXCI+PC9uZy1taWFtLWV4cGxhaW4tYmFubmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjcmVhdGlvblBhZ2U+XG4gIDxuZy1taWFtLXJlY2lwZS1zdGVwcGVyXG4gICAgKm5nSWY9XCJjYXRhbG9nU2V0dGluZ0hhc0xvYWRlZFwiXG4gICAgW3JlY2lwZVRvVXBkYXRlXT1cInJlY2lwZVRvVXBkYXRlXCJcbiAgICBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZSgpXCJcbiAgICAocmVjaXBlQ2hhbmdlKT1cImxlYXZlQ3JlYXRlUGFnZSgpXCJcbiAgICAoY2FuY2VsZWQpPVwibGVhdmVDcmVhdGVQYWdlKClcIj5cbiAgPC9uZy1taWFtLXJlY2lwZS1zdGVwcGVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
627
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWNhdGFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNhdGFsb2cvcmVjaXBlLWNhdGFsb2cuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtY2F0YWxvZy9yZWNpcGUtY2F0YWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBaUIsaUJBQWlCLEVBQVUsVUFBVSxFQUM3SCxZQUFZLEVBQUUsU0FBUyxFQUFhLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBRXpGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQ3ZHLGNBQWMsRUFBRSxjQUFjLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDbkYsT0FBTyxFQUFxQyxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMvRixPQUFPLEVBQUUsYUFBYSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHbkQsT0FBTyxFQUFFLGdC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QUUsQ0FBQztvQkFDekIsTUFBTTtnQkFDUixLQUFLLG9CQUFvQjtvQkFDdkIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7b0JBQzFCLE1BQU07YUFDVDtTQUNGO0lBQ0gsQ0FBQzs7NEZBeFdVLHNCQUFzQjsyREFBdEIsc0JBQXNCO3VCQUN0QixzQkFBc0I7O3VCQUVuQix3QkFBd0I7Ozs7Ozs7Ozs7O2lCQ1hwQixVQUFBLHVFQUFLOzs7Ozs7aUJBMkJpQixVQUFBLG1GQUFrQjs7Ozs7O2lCQUNmLFVBQUEsK0VBQWU7Ozs7OztpQkFDaEIsVUFBQSxpRkFBZ0I7Ozs7OztpQkFFakIsVUFBQSxnRkFBZTs7Ozs7O2tCQUt2QyxVQUFBLHVGQUFzQjs7UUEzRHpDLDRCQUE2RDtRQUM3RCx3RUFDRTtRQXNIRix3SEFDRTs7O1FBeEhHLGVBQW9FO1FBQXBFLHlFQUFvRSxpQkFBQTs7a0REOEI1RCxzQkFBc0I7Y0FQbEMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSx3QkFBd0I7Z0JBQ2xDLFdBQVcsRUFBRSxpQ0FBaUM7Z0JBQzlDLFNBQVMsRUFBRSxDQUFDLGlDQUFpQyxDQUFDO2dCQUM5QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07YUFDaEQ7NllBRW9DLGFBQWE7a0JBQS9DLFNBQVM7bUJBQUMsc0JBQXNCO1lBQ0UsU0FBUztrQkFBM0MsU0FBUzttQkFBQyxzQkFBc0I7WUFDUSxjQUFjO2tCQUF0RCxZQUFZO21CQUFDLHdCQUF3QjtZQUU3QixnQkFBZ0I7a0JBQXhCLEtBQUs7WUFDRyxZQUFZO2tCQUFwQixLQUFLO1lBQ0csZUFBZTtrQkFBdkIsS0FBSztZQUNHLFNBQVM7a0JBQWpCLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0csYUFBYTtrQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3Q2hpbGQsIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBPbkluaXQsIEVsZW1lbnRSZWYsXG4gIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0LCBPbkRlc3Ryb3ksIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBtYXAsIHNraXBXaGlsZSwgc3dpdGNoTWFwLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDYXRhbG9nQ2F0ZWdvcnlDb21wb25lbnQgfSBmcm9tICcuL2NhdGFsb2ctY2F0ZWdvcnkvY2F0YWxvZy1jYXRlZ29yeS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2F0YWxvZ1NldHRpbmcsIFJlY2lwZSwgU3VwcGxpZXIgfSBmcm9tICcuLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7IFJlY2lwZVR5cGVTZXJ2aWNlLCBTcG9uc29yU2VydmljZSwgUGFja2FnZVNlcnZpY2UsIFN1cHBsaWVyc1NlcnZpY2UsIFJlY2lwZXNTZXJ2aWNlLCBVc2VyU2VydmljZSxcbiAgQmFza2V0c1NlcnZpY2UsIENvbnRleHRTZXJ2aWNlLCBDYXRhbG9nU2V0dGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi9fdHlwZXMvaWNvbi5lbnVtJztcbmltcG9ydCB7IENhdGFsb2dIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL2NhdGFsb2ctaGVhZGVyL2NhdGFsb2ctaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBJQWRkaXRpb25uYWxGaWx0ZXJzLCBSZWNpcGVGaWx0ZXIsIFJlY2lwZUZpbHRlcnMgfSBmcm9tICcuLi8uLi9fdHlwZXMvcmVjaXBlLWZpbHRlcnMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNZWRpYU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IERvY3VtZW50Q29sbGVjdGlvbiB9IGZyb20gJ25neC1qc29uYXBpJztcbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tICcuLi8uLi9fbW9kZWxzL3BhY2thZ2UnO1xuaW1wb3J0IHsgQW5hbHl0aWNzU2VydmljZSB9IGZyb20gJy4uLy4uL19zZXJ2aWNlcy9hbmFseXRpY3Muc2VydmljZSc7XG5pbXBvcnQgeyBFdmVudFRyYWNlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL19jb21wb25lbnRzL2Fic3RyYWN0cy9ldmVudC10cmFjZXIuY29tcG9uZW50JztcblxuaW50ZXJmYWNlIENhdGVnb3J5IHtcbiAga2V5OiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN1YnRpdGxlOiBzdHJpbmc7XG4gIGZpbHRlcnM6IHsgYWRkaXRpb25hbEZpbHRlcnM6IHsgZmlsdGVyczogeyBwYWNrYWdlczogc3RyaW5nIH07IHRpdGxlOiBzdHJpbmcgfX07XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLW1pYW0tcmVjaXBlLWNhdGFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVjaXBlLWNhdGFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZWNpcGUtY2F0YWxvZy5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBSZWNpcGVDYXRhbG9nQ29tcG9uZW50IGV4dGVuZHMgRXZlbnRUcmFjZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBWaWV3Q2hpbGQoQ2F0YWxvZ0hlYWRlckNvbXBvbmVudCkgY2F0YWxvZ0hlYWRlcjogQ2F0YWxvZ0hlYWRlckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnbWlhbUNhdGFsb2dUb3BBbmNob3InKSB0b3BBbmNob3I6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBAVmlld0NoaWxkcmVuKENhdGFsb2dDYXRlZ29yeUNvbXBvbmVudCkgIGNhdGVnb3JpZXNDb21wITogUXVlcnlMaXN0PENhdGFsb2dDYXRlZ29yeUNvbXBvbmVudD47XG5cbiAgQElucHV0KCkgaGVhZGVyUGljdHVyZVVybCA9ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ltYWdlcy9kZWZhdWx0LWNhdGFsb2ctcGljdHVyZS5wbmcnO1xuICBASW5wdXQoKSBpbml0aWFsUm91dGUgPSAnJztcbiAgQElucHV0KCkgZmlsdGVyc1Bvc2l0aW9uID0gJ2xlZnQnO1xuICBASW5wdXQoKSBob21lTGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgZGlzcGxheVByaWNpbmcgPSB0cnVlO1xuICBASW5wdXQoKSBjdXN0b21GaWx0ZXJzOiB7IGRpZmZpY3VsdHk/OiBSZWNpcGVGaWx0ZXJbXTsgY29zdD86IFJlY2lwZUZpbHRlcltdOyB0aW1lPzogUmVjaXBlRmlsdGVyW10gfTtcblxuICBmaWx0ZXJzOiBSZWNpcGVGaWx0ZXJzO1xuICBpc0ZpbHRlckNvbGxhcHNlZCA9IHRydWU7XG4gIGljb24gPSBJY29uO1xuICBjYXRlZ29yaWVzOiBDYXRlZ29yeVtdID0gW107XG4gIGNyZWF0aW5nUmVjaXBlID0gZmFsc2U7XG4gIHJlY2lwZVRvVXBkYXRlOiBSZWNpcGU7XG4gIGZpbHRlclRvUmVtb3ZlOiBzdHJpbmc7XG4gIGlzTW9iaWxlID0gZmFsc2U7XG4gIHNob3dVc2VyRmVlZGJhY2sgPSBmYWxzZTtcbiAgcmVjaXBlQ291bnQgPSAwO1xuICB0b3RhbFByaWNlID0gMDtcbiAgaXNNeU1lYWxDbG9zZSA9IHRydWU7XG4gIGNhdGFsb2dTZXR0aW5nOiBDYXRhbG9nU2V0dGluZztcbiAgY2F0YWxvZ1NldHRpbmdIYXNMb2FkZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgc3VwcGxpZXJJZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgcmVjaXBlVHlwZXNTZXJ2aWNlOiBSZWNpcGVUeXBlU2VydmljZSxcbiAgICBwdWJsaWMgc3BvbnNvclNlcnZpY2U6IFNwb25zb3JTZXJ2aWNlLFxuICAgIHB1YmxpYyBzdXBwbGllclNlcnZpY2U6IFN1cHBsaWVyc1NlcnZpY2UsXG4gICAgcHVibGljIHBhY2thZ2VTZXJ2aWNlOiBQYWNrYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZXNTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwdWJsaWMgbWVkaWFNYXRjaGVyOiBNZWRpYU1hdGNoZXIsXG4gICAgcHVibGljIHVzZXJzU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHVibGljIGNhdGFsb2dTZXR0aW5nU2VydmljZTogQ2F0YWxvZ1NldHRpbmdzU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgYW5hbHl0aWNzU2VydmljZTogQW5hbHl0aWNzU2VydmljZSxcbiAgICBwdWJsaWMgYmFza2V0c1NlcnZpY2U6IEJhc2tldHNTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICkge1xuICAgIHN1cGVyKGFuYWx5dGljc1NlcnZpY2UpO1xuICAgIHRoaXMuaXNNb2JpbGUgPSBtZWRpYU1hdGNoZXIubWF0Y2hNZWRpYSgnKG1heC13aWR0aDogMTAyMnB4KScpLm1hdGNoZXM7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBhZ2V2aWV3KCk7XG4gICAgdGhpcy5pbml0RmlsdGVycygpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnN1cHBsaWVyU2VydmljZS5zdXBwbGllciQuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgICAgc2tpcFdoaWxlKHN1cHAgPT4gc3VwcCA9PT0gdW5kZWZpbmVkIHx8IHN1cHAgPT0gbnVsbCksXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHN3aXRjaE1hcChzdXBwbGllciA9PiB7XG4gICAgICAgICAgdGhpcy5zdXBwbGllcklkID0gc3VwcGxpZXIuaWQ7XG4gICAgICAgICAgdGhpcy5pbml0Q2F0YWxvZ0hlYWRlcihzdXBwbGllcik7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubG9hZFBhY2thZ2VzKCk7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgpLFxuICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5iYXNrZXRTdGF0cyQucGlwZShza2lwV2hpbGUoYnMgPT4gIWJzKSkuc3Vic2NyaWJlKGJzID0+IHtcbiAgICAgICAgdGhpcy5yZWNpcGVDb3VudCA9IGJzLnJlY2lwZXNDb3VudDtcbiAgICAgICAgdGhpcy50b3RhbFByaWNlID0gYnMudG90YWxQcmljZTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSksXG4gICAgICB0aGlzLmFzc2Vzc1Nob3dVc2VyRmVlZGJhY2soKVxuICAgICk7XG5cbiAgICB0aGlzLnNldERpcmVjdEFjY2VzcygpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMub3BlbkZlYXR1cmVzRnJvbVVSTCgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIGN1cnJlbnRQYXRoKCk6IHN0cmluZyB7IHJldHVybiAnbWlhbS9yZWNpcGVzJzsgfVxuXG4gIG9wZW5GZWF0dXJlc0Zyb21VUkwoKSB7XG4gICAgY29uc3QgcGFyYW1zQXJyYXkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIGlmIChwYXJhbXNBcnJheS5nZXQoJ29wZW5CYXNrZXQnKSA9PT0gJ3RydWUnKSB7XG4gICAgICB0aGlzLnRvZ2dsZU15TWVhbERyYXdlcigpO1xuICAgIH1cbiAgICBpZiAocGFyYW1zQXJyYXkuZ2V0KCdwZXJzb25hbENhdGFsb2cnKSA9PT0gJ3RydWUnKSB7XG4gICAgICB0aGlzLnNldFBlcnNvbmFsRmlsdGVyKCk7XG4gICAgfVxuICAgIGNvbnN0IGNvc3QgPSBwYXJhbXNBcnJheS5nZXQoJ2Nvc3QnKT8uc3BsaXQoJywnKTtcbiAgICBpZiAoY29zdD8ubGVuZ3RoID09PSAyKSB7XG4gICAgICB0aGlzLnNldFByaWNlRmlsdGVycyhjb3N0KTtcbiAgICB9XG4gIH1cblxuICBkaXNwbGF5SG9tZVBhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVycy5pc0VtcHR5KCk7XG4gIH1cblxuICAvLyBpbml0IHRoZSB2YWx1ZSBvZiB0aGUgaW1hZ2UgYW5kIHRoZSB0ZXh0IGZvciB0aGUgY2F0YWxvZyBoZWFkZXIsIHVzaW5nIHRoZSBjYXRhbG9nIHNldHRpbmcgb2YgdGhlIHN1cHBsaWVyXG4gIGluaXRDYXRhbG9nSGVhZGVyKHN1cHBsaWVyOiBTdXBwbGllcikge1xuICAgIGlmIChzdXBwbGllci5yZWxhdGlvbnNoaXBzWydjYXRhbG9nLXNldHRpbmcnXT8uZGF0YSkge1xuICAgICAgY29uc3QgaWQgPSBzdXBwbGllci5yZWxhdGlvbnNoaXBzWydjYXRhbG9nLXNldHRpbmcnXT8uZGF0YT8uaWQ7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgdGhpcy5jYXRhbG9nU2V0dGluZ1NlcnZpY2UuZ2V0KGlkKS5waXBlKFxuICAgICAgICAgIHNraXBXaGlsZShjID0+IGMuaXNfbG9hZGluZyksXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICB0YXAoY2F0YWxvZyA9PiB7XG4gICAgICAgICAgICB0aGlzLmNhdGFsb2dTZXR0aW5nID0gY2F0YWxvZztcbiAgICAgICAgICAgIHRoaXMuY2F0YWxvZ1NldHRpbmdIYXNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0pXG4gICAgICAgICkuc3Vic2NyaWJlKClcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLy8gVXNlZCBvbiBsb2FkIHRvIGJ1aWxkIHRoZSBmaWx0ZXJzIGF0dHJpYnV0ZSwgYW5kIG9uIGNsaWNrIG9uIHRoZSBsaW5rIHRvIHJlc2V0IHRoZSBmaWx0ZXJzXG4gIGluaXRGaWx0ZXJzKCkge1xuICAgIHRoaXMuZmlsdGVycyA9IG5ldyBSZWNpcGVGaWx0ZXJzKFxuICAgICAge1xuICAgICAgICBkaWZmaWN1bHR5OiB0aGlzLnJlY2lwZXNTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHMubWFwKGYgPT4gKHsgbmFtZTogZi52YWx1ZS50b1N0cmluZygpLCB0ZXh0OiBmLmxhYmVsLCB2YWx1ZTogZmFsc2UgfSkpLFxuICAgICAgICBjb3N0OiBbXG4gICAgICAgICAge25hbWU6ICcwLTUnLCB2YWx1ZTogZmFsc2V9LFxuICAgICAgICAgIHtuYW1lOiAnNS0xMCcsIHZhbHVlOiBmYWxzZX0sXG4gICAgICAgICAge25hbWU6ICcxMC0xMDAwJywgdmFsdWU6IGZhbHNlfVxuICAgICAgICAgIC8vIHdlIHNldCBhIGxpbWl0IGF0IDEwMDDigqwgbWF4LCBpZiBhIHJlY2lwZSBjb3N0IG1vcmUgc2hvdWxkIGJlIG5vbiBzZW5zZSBhbnl3YXlcbiAgICAgICAgXSxcbiAgICAgICAgdGltZTogW1xuICAgICAgICAgIHtuYW1lOiAnMTUnLCB2YWx1ZTogZmFsc2V9LFxuICAgICAgICAgIHtuYW1lOiAnMzAnLCB2YWx1ZTogZmFsc2V9LFxuICAgICAgICAgIHtuYW1lOiAnNjAnLCB2YWx1ZTogZmFsc2V9LFxuICAgICAgICAgIHtuYW1lOiAnMTIwJywgdmFsdWU6IGZhbHNlfVxuXG4gICAgICAgIF1cbiAgICAgIH1cbiAgICApO1xuICAgIGlmICh0aGlzLmN1c3RvbUZpbHRlcnMpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24odGhpcy5maWx0ZXJzLCB0aGlzLmN1c3RvbUZpbHRlcnMpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jYXRhbG9nSGVhZGVyKSB7IHRoaXMuY2F0YWxvZ0hlYWRlci5yZXNldFNlYXJjaFN0cmluZygpOyB9XG4gICAgdGhpcy5maWx0ZXJzLnNlYXJjaCA9ICcnO1xuICAgIHRoaXMuZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycyA9IG51bGw7XG4gIH1cblxuICB1cGRhdGVGaWx0ZXJzKGZpbHRlcnM6IFJlY2lwZUZpbHRlcnMpIHtcbiAgICB0aGlzLmZpbHRlcnMgPSBmaWx0ZXJzLmNvcHkoKTsgLy8gbmVjZXNzYXJ5IHRvIHRyaWdnZXIgY2hpbGQgY29tcG9uZW50IGNoYW5nZVxuICAgIHRoaXMuZmlsdGVyVG9SZW1vdmUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5yZXR1cm5Ub1RvcCgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHVwZGF0ZVNlYXJjaChzZWFyY2g6IHN0cmluZykge1xuICAgIGlmIChzZWFyY2ggIT09IHRoaXMuZmlsdGVycy5zZWFyY2gpIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBPYmplY3QuYXNzaWduKHRoaXMuZmlsdGVycywgeyBzZWFyY2ggfSk7XG4gICAgICB0aGlzLnVwZGF0ZUZpbHRlcnMoZmlsdGVycyk7XG4gICAgfVxuICB9XG5cbiAgY2F0ZWdvcnlUaXRsZUNsaWNrZWQoZXZlbnQ6IHt0aXRsZTogc3RyaW5nOyBmaWx0ZXJzOiBJQWRkaXRpb25uYWxGaWx0ZXJzfSkge1xuICAgIGNvbnN0IGZpbHRlcnMgPSBPYmplY3QuYXNzaWduKHRoaXMuZmlsdGVycywge1xuICAgICAgYWRkaXRpb25hbEZpbHRlcnM6IHsgZmlsdGVyczogZXZlbnQuZmlsdGVycywgdGl0bGU6IGV2ZW50LnRpdGxlIH1cbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICBzZXRGYXZvcml0ZXNGaWx0ZXIoKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVycyA9IE9iamVjdC5hc3NpZ24odGhpcy5maWx0ZXJzLCB7XG4gICAgICBhZGRpdGlvbmFsRmlsdGVyczoge1xuICAgICAgICBmaWx0ZXJzOiB7IGxpa2VkOiB0cnVlIH0sXG4gICAgICAgIHRpdGxlOiAnTWVzIGlkw6llcyByZXBhcydcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICBzZXRQZXJzb25hbEZpbHRlcigpOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJzID0gT2JqZWN0LmFzc2lnbih0aGlzLmZpbHRlcnMsIHtcbiAgICAgIGFkZGl0aW9uYWxGaWx0ZXJzOiB7XG4gICAgICAgIGZpbHRlcnM6IHsgcGVyc29uYWw6IHRydWUsIGFjdGl2ZTogJ3RydWUsZmFsc2UnIH0sXG4gICAgICAgIHRpdGxlOiAnTW9uIGNhcm5ldCBwZXJzbydcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICBzZXRQcmljZUZpbHRlcnMoY29zdDogc3RyaW5nW10pOiB2b2lkIHtcbiAgICBjb25zdCBmaWx0ZXJzID0gT2JqZWN0LmFzc2lnbih0aGlzLmZpbHRlcnMsIHtcbiAgICAgIGFkZGl0aW9uYWxGaWx0ZXJzOiB7XG4gICAgICAgIGZpbHRlcnM6IHsgY29tcHV0ZWRfY29zdDogY29zdFswXSArICcsZ3QsJyArIGNvc3RbMV0gKyAnLGx0JywgcmVjaXBlX3R5cGVfaWQ6ICdtYWluLWRpc2gnIH0sXG4gICAgICAgIHRpdGxlOiBgUmVjZXR0ZXMgw6AgbW9pbnMgZGUgJHtjb3N0WzFdfeKCrGBcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICByZW1vdmVGaWx0ZXIoZmlsdGVyVGV4dDogc3RyaW5nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGlzIGZ1bmN0aW9uIGlzIGJyb2tlbiwgdXNlIGhhcyBiZWVuIGNvbW1lbnRhdGVkLCByZXBhaXIgaXQgaWYgeW91IHdhbnQgdG8gdXNlIGl0IGFnYWluJyk7XG4gICAgdGhpcy5maWx0ZXJUb1JlbW92ZSA9IGZpbHRlclRleHQ7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmV0dXJuVG9Ub3AoKSB7XG4gICAgaWYgKHRoaXMudG9wQW5jaG9yKSB7XG4gICAgICB0aGlzLnRvcEFuY2hvci5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuVG9Ib21lUGFnZSgpIHtcbiAgICB0aGlzLnBhZ2V2aWV3KCk7XG4gICAgLy8gZWl0aGVyIHlvdSBoYXZlIGZpbHRlcnMgZWl0aGVyIHlvdSBhcmUgb24gaG9tZSBwYWdlLiBUaGF0IG1lYW4gaWYgeW91IGdvIG9uIGhvbWUgcGFnZSB5b3UgZG9uJ3Qgd2FudCBBTlkgZmlsdGVyXG4gICAgdGhpcy5pbml0RmlsdGVycygpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG9uRmlsdGVyQ29sbGFwc2VkKCkge1xuICAgIHRoaXMuaXNGaWx0ZXJDb2xsYXBzZWQgPSAhdGhpcy5pc0ZpbHRlckNvbGxhcHNlZDtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBnb1RvQ3JlYXRlUGFnZShyZWNpcGU6IFJlY2lwZSA9IG51bGwpIHtcbiAgICB0aGlzLmNyZWF0aW5nUmVjaXBlID0gdHJ1ZTtcbiAgICB0aGlzLnJlY2lwZVRvVXBkYXRlID0gcmVjaXBlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnJldHVyblRvVG9wKCk7XG4gIH1cblxuICBsZWF2ZUNyZWF0ZVBhZ2UoKSB7XG4gICAgdGhpcy5jcmVhdGluZ1JlY2lwZSA9IGZhbHNlO1xuICAgIHRoaXMucmV0dXJuVG9Ub3AoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBtYW5hZ2VSZWNpcGVBY3Rpb24oZXZlbnQ6IHthY3Rpb246IHN0cmluZzsgcmVjaXBlOiBSZWNpcGV9KSB7XG4gICAgc3dpdGNoIChldmVudC5hY3Rpb24pIHtcbiAgICAgIGNhc2UgJ0NSRUFURSc6IHtcbiAgICAgICAgdGhpcy5nb1RvQ3JlYXRlUGFnZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSAnRURJVCc6IHtcbiAgICAgICAgdGhpcy5nb1RvQ3JlYXRlUGFnZShldmVudC5yZWNpcGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSAnREVMRVRFJzoge1xuICAgICAgICBpZiAoZXZlbnQucmVjaXBlPy5pZCAmJiBldmVudC5yZWNpcGUucmVsYXRpb25zaGlwc1sncmVjaXBlLXByb3ZpZGVyJ10/LmRhdGEuaWQgPT09ICdwZXJzb25hbCcpIHtcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgIHRoaXMucmVjaXBlc1NlcnZpY2UuZGVsZXRlKGV2ZW50LnJlY2lwZS5pZCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLnByb3BzKCksIHsgcmVjaXBlSWQ6IGV2ZW50LnJlY2lwZS5pZCB9KTtcbiAgICAgICAgICAgICAgdGhpcy5zZW5kRXZlbnQodGhpcy5hbmFseXRpY3NTZXJ2aWNlLkVWRU5UX1BFUlNPTkFMX1JFQ0lQRV9ERUxFVEUpO1xuICAgICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVsb2FkUGFja2FnZXMoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmxvYWRQYWNrYWdlcygpLnN1YnNjcmliZSgpXG4gICAgKTtcbiAgfVxuXG4gIGlzU2VhcmNoUGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZGlzcGxheUhvbWVQYWdlKCkgJiYgdGhpcy5maWx0ZXJzLnNlYXJjaCAmJiB0aGlzLmZpbHRlcnMuc2VhcmNoLmxlbmd0aCA+IDA7XG4gIH1cblxuICBpc0Zhdm9yaXRlc1BhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmRpc3BsYXlIb21lUGFnZSgpICYmICF0aGlzLmlzU2VhcmNoUGFnZSgpICYmIHRoaXMuZmlsdGVycz8uYWRkaXRpb25hbEZpbHRlcnM/LnRpdGxlID09PSAnTWVzIGlkw6llcyByZXBhcyc7XG4gIH1cblxuICBpc1BlcnNvbmFsUGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gIXRoaXMuZGlzcGxheUhvbWVQYWdlKCkgJiYgIXRoaXMuaXNTZWFyY2hQYWdlKCkgJiYgdGhpcy5maWx0ZXJzPy5hZGRpdGlvbmFsRmlsdGVycz8udGl0bGUgPT09ICdNb24gY2FybmV0IHBlcnNvJztcbiAgfVxuXG4gIGlzQ2F0ZWdvcnlQYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5kaXNwbGF5SG9tZVBhZ2UoKSAmJiAhdGhpcy5pc1NlYXJjaFBhZ2UoKSAmJiAhdGhpcy5pc0Zhdm9yaXRlc1BhZ2UoKSAmJiAhdGhpcy5pc1BlcnNvbmFsUGFnZSgpICYmXG4gICAgICB0aGlzLmZpbHRlcnM/LmFkZGl0aW9uYWxGaWx0ZXJzPy50aXRsZT8ubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGlzRGVmYXVsdFBhZ2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLmRpc3BsYXlIb21lUGFnZSgpICYmICF0aGlzLmlzU2VhcmNoUGFnZSgpICYmICF0aGlzLmlzRmF2b3JpdGVzUGFnZSgpICYmICF0aGlzLmlzUGVyc29uYWxQYWdlKCkgJiYgIXRoaXMuaXNDYXRlZ29yeVBhZ2UoKTtcbiAgfVxuXG4gIGNhbkRpc3BsYXlDcmVhdGlvbkJ1dHRvbigpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gdGhpcy51c2Vyc1NlcnZpY2UuaXNMb2dnZWQkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoXG4gICAgICBtYXAoaXNMb2dnZWQgPT4gaXNMb2dnZWQgJiYgdGhpcy5pc1BlcnNvbmFsUGFnZSgpKVxuICAgICk7XG4gIH1cblxuICB0b2dnbGVNeU1lYWxEcmF3ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5yZWNpcGVzU2VydmljZS5vcGVuQmFza2V0KHRoaXMuZXZlbnRUcmFjZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFBhY2thZ2VzKCk6IE9ic2VydmFibGU8RG9jdW1lbnRDb2xsZWN0aW9uPFBhY2thZ2U+PiB7XG4gICAgcmV0dXJuIHRoaXMucGFja2FnZVNlcnZpY2UuY2F0ZWdvcmllc19mb3IoW3RoaXMuc3VwcGxpZXJJZF0pLnBpcGUoXG4gICAgICBza2lwV2hpbGUocGFja2FnZXMgPT4gcGFja2FnZXMuaXNfbG9hZGluZyksXG4gICAgICB0YXAoKHBhY2thZ2VzOiBEb2N1bWVudENvbGxlY3Rpb248UGFja2FnZT4pID0+IHtcbiAgICAgICAgdGhpcy5pbml0Q2F0ZWdvcmllcyhwYWNrYWdlcyk7XG4gICAgICAgIHRoaXMuc2VsZWN0Q2F0ZWdvcnlGcm9tVXJsKCk7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdENhdGVnb3JpZXMocGFja2FnZXM6IERvY3VtZW50Q29sbGVjdGlvbjxQYWNrYWdlPik6IHZvaWQge1xuICAgIHRoaXMuY2F0ZWdvcmllcyA9IHBhY2thZ2VzLmRhdGEubWFwKGNhdGVnb3J5UGFja2FnZSA9PiAoe1xuICAgICAga2V5OiBjYXRlZ29yeVBhY2thZ2UudGl0bGUudHJpbSgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvW15hLXpBLVowLTkgLV0vLCAnJykucmVwbGFjZSgvXFxzL2csICctJyksXG4gICAgICB0aXRsZTogY2F0ZWdvcnlQYWNrYWdlLnRpdGxlLFxuICAgICAgc3VidGl0bGU6IGNhdGVnb3J5UGFja2FnZS5zdWJ0aXRsZSxcbiAgICAgIGZpbHRlcnM6IHsgYWRkaXRpb25hbEZpbHRlcnM6IHsgZmlsdGVyczogeyBwYWNrYWdlczogY2F0ZWdvcnlQYWNrYWdlLmlkIH0sIHRpdGxlOiAnJyB9IH1cbiAgICB9KSk7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdENhdGVnb3J5RnJvbVVybCgpOiB2b2lkIHtcbiAgICBjb25zdCBwYXJhbXNBcnJheSA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgaWYgKHBhcmFtc0FycmF5LmdldCgnY2F0YWxvZ0NhdGVnb3J5JykgPT09ICdmYXZvcml0ZXMnKSB7XG4gICAgICByZXR1cm4gdGhpcy5zZXRGYXZvcml0ZXNGaWx0ZXIoKTtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0ZWRDYXRlZ29yeSA9IHRoaXMuY2F0ZWdvcmllcy5maW5kKChjYXQpID0+IGNhdC5rZXkgPT09IHBhcmFtc0FycmF5LmdldCgnY2F0YWxvZ0NhdGVnb3J5JykpO1xuICAgIGlmIChzZWxlY3RlZENhdGVnb3J5KSB7XG4gICAgICByZXR1cm4gdGhpcy5jYXRlZ29yeVRpdGxlQ2xpY2tlZCh7IHRpdGxlOiBzZWxlY3RlZENhdGVnb3J5LnRpdGxlLCBmaWx0ZXJzOiBzZWxlY3RlZENhdGVnb3J5LmZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnMuZmlsdGVycyB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBTaG93IGZlZWRiYWNrIGJsb2NrIG9ubHkgaWYgdXNlciBpcyBsb2dnZWQgYW5kIHRoZSBjaGlsZHJlbiBwcmVmZXJlbmNlIGlzIHVua25vd25cbiAgcHJpdmF0ZSBhc3Nlc3NTaG93VXNlckZlZWRiYWNrKCk6IFN1YnNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy51c2Vyc1NlcnZpY2UuaXNMb2dnZWQkLFxuICAgICAgdGhpcy51c2Vyc1NlcnZpY2UucHJlZmVyZW5jZURlZmluZWQoJ2hhc19jaGlsZHJlbicpLFxuICAgICAgdGhpcy51c2Vyc1NlcnZpY2UucHJlZmVyZW5jZXNBY3RpdmF0ZWQkXG4gICAgXSkuc3Vic2NyaWJlKHJlc3VsdHMgPT4ge1xuICAgICAgY29uc3QgbG9nZ2VkID0gcmVzdWx0c1swXTtcbiAgICAgIGNvbnN0IHByZWZlcmVuY2VEZWZpbmVkID0gcmVzdWx0c1sxXTtcbiAgICAgIGNvbnN0IHByZWZlcmVuY2VzQWN0aXZhdGVkID0gcmVzdWx0c1syXTtcbiAgICAgIHRoaXMuc2hvd1VzZXJGZWVkYmFjayA9IGxvZ2dlZCAmJiAhcHJlZmVyZW5jZURlZmluZWQgJiYgcHJlZmVyZW5jZXNBY3RpdmF0ZWQ7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldERpcmVjdEFjY2Vzcygpe1xuICAgIGlmICh0aGlzLmluaXRpYWxSb3V0ZSAhPT0gJycpe1xuICAgICAgc3dpdGNoICh0aGlzLmluaXRpYWxSb3V0ZSl7XG4gICAgICAgIGNhc2UgJ21lcy1yZXBhcyc6XG4gICAgICAgICAgdGhpcy50b2dnbGVNeU1lYWxEcmF3ZXIoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbWVzLXJlY2V0dGVzLXBlcnNvbm5lbGxlcyc6XG4gICAgICAgICAgdGhpcy5zZXRQZXJzb25hbEZpbHRlcigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyZWNldHRlcy1mYXZvcml0ZXMnOlxuICAgICAgICAgIHRoaXMuc2V0RmF2b3JpdGVzRmlsdGVyKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gVW51c2VkIGZvciBub3cuLi5cbiAgLy8gc2V0VXNlclByZWZlcmVuY2UocHJlZiwgc3RhdGUpIHtcbiAgLy8gICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgLy8gICAgIHRoaXMudXNlcnNTZXJ2aWNlLnNldFByZWZlcmVuY2UocHJlZiwgc3RhdGUpLnBpcGUoXG4gIC8vICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmxvYWRQYWNrYWdlcygpKVxuICAvLyAgICAgKS5zdWJzY3JpYmUoKVxuICAvLyAgICk7XG4gIC8vICAgdGhpcy5jbG9zZU1vZGFsKCk7XG4gIC8vIH1cblxuICAvLyBwcml2YXRlIGNsb3NlTW9kYWwoKSB7XG4gIC8vICAgdGhpcy5zaG93VXNlckZlZWRiYWNrID0gIXRoaXMuc2hvd1VzZXJGZWVkYmFjaztcbiAgLy8gICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIC8vIH1cbn1cbiIsIjxkaXYgI21pYW1DYXRhbG9nVG9wQW5jaG9yIGNsYXNzPVwibWlhbS1jYXRhbG9nLWFuY2hvclwiPjwvZGl2PlxuPGRpdiAqbmdJZj1cIiFjcmVhdGluZ1JlY2lwZSAmJiBjYXRhbG9nU2V0dGluZ0hhc0xvYWRlZCBlbHNlIGNyZWF0aW9uUGFnZVwiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ1wiPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudFwiPlxuICAgIDxuZy1taWFtLWNhdGFsb2ctaGVhZGVyIFxuICAgICAgW2hvbWVdPVwiZGlzcGxheUhvbWVQYWdlXCJcbiAgICAgIFtzZWFyY2hUZXJtXT1cImZpbHRlcnM/LnNlYXJjaFwiXG4gICAgICBbYWRkaXRpb25hbEZpbHRlcnNUaXRsZV09XCJmaWx0ZXJzPy5hZGRpdGlvbmFsRmlsdGVycz8udGl0bGVcIlxuICAgICAgW2hvbWVMYWJlbF09XCJob21lTGFiZWxcIlxuICAgICAgW3BpY3R1cmVVcmxdPVwiZGlzcGxheUhvbWVQYWdlKCkgPyBoZWFkZXJQaWN0dXJlVXJsIDogbnVsbFwiXG4gICAgICBbY2F0YWxvZ1NldHRpbmddPVwiY2F0YWxvZ1NldHRpbmdcIlxuICAgICAgW2Zhdm9yaXRlc0J1dHRvbkhpZGRlbl09XCJpc0Zhdm9yaXRlc1BhZ2UoKVwiXG4gICAgICBbcGVyc29uYWxCdXR0b25IaWRkZW5dPVwiIShjb250ZXh0U2VydmljZS5lbmFibGVQZXJzb25hbFJlY2lwZXMkIHwgYXN5bmMpXCJcbiAgICAgIFtmaWx0ZXJCYWRnZUNvdW50XT1cImZpbHRlcnMuc2VsZWN0YWJsZUZpbHRlcnNDb3VudCgpXCJcbiAgICAgIChyZXR1cm5CdXR0b25QcmVzc2VkKT1cInJldHVyblRvSG9tZVBhZ2UoKVwiXG4gICAgICAoZmlsdGVyQnV0dG9uUHJlc3NlZCk9XCJvbkZpbHRlckNvbGxhcHNlZCgpXCJcbiAgICAgIChzZWFyY2hTdHJpbmdDaGFuZ2VkKT1cInVwZGF0ZVNlYXJjaCgkZXZlbnQpXCJcbiAgICAgIChwZXJzb25hbEJ1dHRvblByZXNzZWQpPVwic2V0UGVyc29uYWxGaWx0ZXIoKVwiXG4gICAgICAoZmF2b3JpdGVzQnV0dG9uUHJlc3NlZCk9XCJzZXRGYXZvcml0ZXNGaWx0ZXIoKVwiPlxuICAgIDwvbmctbWlhbS1jYXRhbG9nLWhlYWRlcj5cbiAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlQ291bnQgPiAwXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X19teU1lYWxfX2J1dHRvblwiIChjbGljayk9XCJ0b2dnbGVNeU1lYWxEcmF3ZXIoKVwiID5cbiAgICAgIDxuZy1taWFtLWljb24gW2ljb25OYW1lXT1cImljb24uQ2FydFwiIHByaW1hcnlDb2xvcj0ndmFyKC0tbS1jb2xvci13aGl0ZSknIGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fbXlNZWFsX19maXJzdF9faWNvblwiID48L25nLW1pYW0taWNvbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fbXlNZWFsX19idXR0b25fX3RleHRcIj5cbiAgICAgICAgPHNwYW4+e3tyZWNpcGVDb3VudH19PC9zcGFuPlxuICAgICAgICA8c3BhbiBpMThuPiByZXBhczwvc3Bhbj5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxuZy1taWFtLWljb24gIFtpY29uTmFtZV09XCJpY29uLkNoZXZyb25Eb3duXCIgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLXdoaXRlKScgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19teU1lYWxfX3NlY29uZF9faWNvblwiPjwvbmctbWlhbS1pY29uPlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBVc2VyIGZlZWRiYWNrIGJhbm5lciAodW51c2VkIGZvciBub3cgLyBtYXliZSByZWFjdGl2YXRlZCBsYXRlcikgLS0+XG4gICAgPCEtLSA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudF9fdXNlci1mZWVkYmFja19fbW9kYWxcIiAqbmdJZj1cInNob3dVc2VyRmVlZGJhY2tcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X191c2VyLWZlZWRiYWNrXCI+XG4gICAgICAgIDxuZy1taWFtLWljb24gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X191c2VyLWZlZWRiYWNrX19pY29uLWNyb3NzXCIgKGNsaWNrKT1cImNsb3NlTW9kYWwoKVwiIFtpY29uTmFtZV09XCJpY29uLkNyb3NzXCIgW3dpZHRoXT1cIjMwXCIgW2hlaWdodF09XCIzMFwiIHByaW1hcnlDb2xvcj1cIm5vbmVcIj48L25nLW1pYW0taWNvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX3VzZXItZmVlZGJhY2tfX3RpdGxlXCI+XG4gICAgICAgICAgICA8c3Bhbj5Qb3VyIG1pZXV4IHZvdXMgY29ubmHDrnRyZTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X191c2VyLWZlZWRiYWNrX19xdWVzdGlvblwiPlxuICAgICAgICAgICAgPHNwYW4+QXZlei12b3VzIGwnaGFiaXR1ZGUgZGUgY3Vpc2luZXIgcG91ciBvdSBhdmVjIGRlcyBlbmZhbnRzID88L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICAgIFxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudF9fdXNlci1mZWVkYmFja19fYWN0aW9uc1wiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtLWZlZWRiYWNrLWJ1dHRvblwiIChjbGljayk9XCJzZXRVc2VyUHJlZmVyZW5jZSgnaGFzX2NoaWxkcmVuJywgZmFsc2UpXCI+Tm9uPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm0tZmVlZGJhY2stYnV0dG9uXCIgKGNsaWNrKT1cInNldFVzZXJQcmVmZXJlbmNlKCdoYXNfY2hpbGRyZW4nLCB0cnVlKVwiPk91aTwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PiAtLT5cblxuICAgIDwhLS0gQ2F0YWxvZyBwYWdlIGNvbnRlbnQgd2hlbiBmaWx0ZXJzIGFwcGxpZWQgLS0+XG4gICAgPGRpdiAqbmdJZj1cIiFkaXNwbGF5SG9tZVBhZ2UoKSBlbHNlIGNhdGVnb3JpZXNDb21wb25lbnRzXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19saXN0XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudF9fdGl0bGVcIj5cbiAgICAgICAgPG5nLW1pYW0taWNvbiBbaWNvbk5hbWVdPVwiaWNvbi5BcnJvd0Rvd25cIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiAoY2xpY2spPVwicmV0dXJuVG9Ib21lUGFnZSgpXCI+PC9uZy1taWFtLWljb24+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXNTZWFyY2hQYWdlKClcIiBpMThuPlZvdHJlIHJlY2hlcmNoZSA6IDwvc3Bhbj48c3BhbiAqbmdJZj1cImlzU2VhcmNoUGFnZSgpXCI+e3sgZmlsdGVycy5zZWFyY2ggfX08L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXNGYXZvcml0ZXNQYWdlKClcIiBpMThuPk1lcyBpZMOpZXMgcmVwYXM8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXNQZXJzb25hbFBhZ2UoKVwiIGkxOG4+TW9uIGNhcm5ldCBwZXJzbzwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0NhdGVnb3J5UGFnZSgpXCI+e3sgZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycy50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJpc0RlZmF1bHRQYWdlKClcIiBpMThuPlZvdHJlIHPDqWxlY3Rpb248L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19saXN0X19jcmVhdGVfX19idXR0b25cIiAqbmdJZj1cImNhbkRpc3BsYXlDcmVhdGlvbkJ1dHRvbigpIHwgYXN5bmNcIiBcbiAgICAgIChjbGljayk9XCJtYW5hZ2VSZWNpcGVBY3Rpb24oe2FjdGlvbjogJ0NSRUFURScsIHJlY2lwZTogbnVsbH0pXCI+XG4gICAgICAgIDxuZy1taWFtLWljb24gW2ljb25OYW1lXT1cImljb24uUGx1c1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHByaW1hcnlDb2xvcj1cInZhcigtLW0tY29sb3ItcHJpbWFyeSlcIj48L25nLW1pYW0taWNvbj5cbiAgICAgICAgPHNwYW4gaTE4bj5Bam91dGVyIHVuZSBpZMOpZSByZXBhczwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctbWlhbS1jYXRhbG9nLWxpc3RcbiAgICAgICAgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXG4gICAgICAgIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlKClcIlxuICAgICAgICBbZGlzcGxheVByaWNpbmddPVwiZGlzcGxheVByaWNpbmdcIlxuICAgICAgICAoZmlsdGVyUmVtb3ZlZCk9XCJyZW1vdmVGaWx0ZXIoJGV2ZW50KVwiXG4gICAgICAgIChyZWNpcGVBY3Rpb25UcmlnZ2VyZWQpPVwibWFuYWdlUmVjaXBlQWN0aW9uKCRldmVudClcIj5cbiAgICAgIDwvbmctbWlhbS1jYXRhbG9nLWxpc3Q+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxuZy1taWFtLXJlY2lwZS1maWx0ZXJzXG4gICAgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXG4gICAgW2lzRmlsdGVyQ29sbGFwc2VkXT1cImlzRmlsdGVyQ29sbGFwc2VkXCJcbiAgICBbZmlsdGVyVG9SZW1vdmVdPVwiZmlsdGVyVG9SZW1vdmVcIlxuICAgIFtwb3NpdGlvbl09XCJmaWx0ZXJzUG9zaXRpb25cIlxuICAgIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlKClcIlxuICAgIChmaWx0ZXJDaGFuZ2VkKT1cInVwZGF0ZUZpbHRlcnMoJGV2ZW50KVwiXG4gICAgKGZpbHRlckNvbGxhcHNlZCk9XCJvbkZpbHRlckNvbGxhcHNlZCgpXCJcbiAgICAocHJlZmVyZW5jZXNDaGFuZ2VkKT1cInJlbG9hZFBhY2thZ2VzKClcIlxuICA+XG4gIDwvbmctbWlhbS1yZWNpcGUtZmlsdGVycz5cbiAgPCEtLSBDYXRhbG9nIGhvbWUgcGFnZSBjb250ZW50IC0tPlxuICA8bmctdGVtcGxhdGUgI2NhdGVnb3JpZXNDb21wb25lbnRzPlxuICAgIDxkaXYgKm5nSWY9XCJjYXRlZ29yaWVzLmxlbmd0aCA+IDBcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NhdGVnb3JpZXNcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMgbGV0IGkgPSBpbmRleFwiID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImkgIT09IDAgZWxzZSBmaXJzdENhdGVnb3J5XCI+XG4gICAgICAgICAgPG5nLW1pYW0tY2F0YWxvZy1jYXRlZ29yeSBcbiAgICAgICAgICAgIFt0aXRsZV09XCJjYXRlZ29yeS50aXRsZVwiXG4gICAgICAgICAgICBbc3VidGl0bGVdPVwiY2F0ZWdvcnkuc3VidGl0bGVcIlxuICAgICAgICAgICAgW2ZpbHRlcnNdPVwiY2F0ZWdvcnkuZmlsdGVyc1wiXG4gICAgICAgICAgICBbZGlzcGxheVByaWNpbmddPVwiZGlzcGxheVByaWNpbmdcIlxuICAgICAgICAgICAgW29yaWdpblRyYWNlXT1cImV2ZW50VHJhY2UoKVwiXG4gICAgICAgICAgICAoZGlzcGxheUxpc3QpPVwiY2F0ZWdvcnlUaXRsZUNsaWNrZWQoJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvbmctbWlhbS1jYXRhbG9nLWNhdGVnb3J5PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNmaXJzdENhdGVnb3J5PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19maXJzdC1jYXRlZ29yeVwiPlxuICAgICAgICAgICAgPG5nLW1pYW0tbWVhbHMtcGxhbm5lci1saW5rICpuZ0lmPVwiY29udGV4dFNlcnZpY2UuZW5hYmxlTWVhbHNQbGFubmVyJCB8IGFzeW5jXCI+PC9uZy1taWFtLW1lYWxzLXBsYW5uZXItbGluaz5cbiAgICAgICAgICAgIDxuZy1taWFtLWNhdGFsb2ctY2F0ZWdvcnkgXG4gICAgICAgICAgICAgIFt0aXRsZV09XCJjYXRlZ29yeS50aXRsZVwiXG4gICAgICAgICAgICAgIFtzdWJ0aXRsZV09XCJjYXRlZ29yeS5zdWJ0aXRsZVwiXG4gICAgICAgICAgICAgIFtmaWx0ZXJzXT1cImNhdGVnb3J5LmZpbHRlcnNcIlxuICAgICAgICAgICAgICBbZGlzcGxheVByaWNpbmddPVwiZGlzcGxheVByaWNpbmdcIlxuICAgICAgICAgICAgICBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZSgpXCJcbiAgICAgICAgICAgICAgKGRpc3BsYXlMaXN0KT1cImNhdGVnb3J5VGl0bGVDbGlja2VkKCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9uZy1taWFtLWNhdGFsb2ctY2F0ZWdvcnk+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19leHBsYWluX2Jhbm5lclwiPlxuICAgICAgICAgICAgPG5nLW1pYW0tZXhwbGFpbi1iYW5uZXIgW2NhdGFsb2dTZXR0aW5nXT1cImNhdGFsb2dTZXR0aW5nXCI+PC9uZy1taWFtLWV4cGxhaW4tYmFubmVyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjcmVhdGlvblBhZ2U+XG4gIDxuZy1taWFtLXJlY2lwZS1zdGVwcGVyXG4gICAgKm5nSWY9XCJjYXRhbG9nU2V0dGluZ0hhc0xvYWRlZFwiXG4gICAgW3JlY2lwZVRvVXBkYXRlXT1cInJlY2lwZVRvVXBkYXRlXCJcbiAgICBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZSgpXCJcbiAgICAocmVjaXBlQ2hhbmdlKT1cImxlYXZlQ3JlYXRlUGFnZSgpXCJcbiAgICAoY2FuY2VsZWQpPVwibGVhdmVDcmVhdGVQYWdlKClcIj5cbiAgPC9uZy1taWFtLXJlY2lwZS1zdGVwcGVyPlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|