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,402 +1,201 @@
|
|
|
1
1
|
import { Component, ViewEncapsulation, ChangeDetectorRef, ChangeDetectionStrategy, Input, Output, EventEmitter, ElementRef } from '@angular/core';
|
|
2
|
-
import { AbstractRecipeCardComponent } from '../../../_components/abstracts/abstract-recipe-card.component';
|
|
3
|
-
import { Recipe } from '../../../_models';
|
|
4
|
-
import { AnalyticsService, ContextService, GroceriesListsService, RecipeEventsService, RecipesService, UserService } from '../../../_services';
|
|
5
2
|
import { of } from 'rxjs';
|
|
6
|
-
import { skipWhile, catchError,
|
|
3
|
+
import { skipWhile, catchError, take } from 'rxjs/operators';
|
|
4
|
+
import { EventTracerComponent } from '../../../_components/abstracts/event-tracer.component';
|
|
5
|
+
import { Recipe } from '../../../_models';
|
|
6
|
+
import { AnalyticsService, BasketsService, ContextService, RecipesService, ScrollingService, UserService } from '../../../_services';
|
|
7
|
+
import { Icon } from '../../../_types/icon.enum';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "../../../_services";
|
|
9
10
|
import * as i2 from "@angular/common";
|
|
10
11
|
import * as i3 from "../../../_components/icon/icon.component";
|
|
11
|
-
import * as i4 from "
|
|
12
|
-
import * as i5 from "../../../_components/
|
|
13
|
-
import * as i6 from "
|
|
14
|
-
import * as i7 from "../../../_components/
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
i0.ɵɵ
|
|
19
|
-
i0.ɵɵelement(1, "ng-miam-icon",
|
|
12
|
+
import * as i4 from "../../../_components/like-button/like-button.component";
|
|
13
|
+
import * as i5 from "../../../_components/recipe-pricing/recipe-pricing.component";
|
|
14
|
+
import * as i6 from "../recipe-card-cta/recipe-card-cta.component";
|
|
15
|
+
import * as i7 from "../../../_components/actions-popin/actions-popin.component";
|
|
16
|
+
function RecipeCardComponent_div_1_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
17
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
18
|
+
i0.ɵɵelementStart(0, "div", 26);
|
|
19
|
+
i0.ɵɵlistener("click", function RecipeCardComponent_div_1_div_7_Template_div_click_0_listener($event) { i0.ɵɵrestoreView(_r12); const ctx_r11 = i0.ɵɵnextContext(2); return ctx_r11.toggleMoreActions($event); });
|
|
20
|
+
i0.ɵɵelement(1, "ng-miam-icon", 27);
|
|
20
21
|
i0.ɵɵelementEnd();
|
|
21
22
|
} if (rf & 2) {
|
|
22
|
-
const
|
|
23
|
+
const ctx_r3 = i0.ɵɵnextContext(2);
|
|
23
24
|
i0.ɵɵadvance(1);
|
|
24
|
-
i0.ɵɵproperty("iconName",
|
|
25
|
+
i0.ɵɵproperty("iconName", ctx_r3.actionsOpened ? ctx_r3.icon.Clear : ctx_r3.icon.HorizontalDots);
|
|
25
26
|
} }
|
|
26
|
-
function
|
|
27
|
-
i0.ɵɵelement(0, "ng-miam-like-button",
|
|
27
|
+
function RecipeCardComponent_div_1_ng_template_8_ng_miam_like_button_0_Template(rf, ctx) { if (rf & 1) {
|
|
28
|
+
i0.ɵɵelement(0, "ng-miam-like-button", 29);
|
|
28
29
|
} if (rf & 2) {
|
|
29
|
-
const
|
|
30
|
-
i0.ɵɵproperty("recipe",
|
|
30
|
+
const ctx_r13 = i0.ɵɵnextContext(3);
|
|
31
|
+
i0.ɵɵproperty("recipe", ctx_r13.recipe)("originTrace", ctx_r13.eventTrace())("width", 24)("height", 24);
|
|
31
32
|
} }
|
|
32
|
-
function
|
|
33
|
-
i0.ɵɵ
|
|
34
|
-
i0.ɵɵ
|
|
35
|
-
i0.ɵɵelementEnd();
|
|
33
|
+
function RecipeCardComponent_div_1_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
|
34
|
+
i0.ɵɵtemplate(0, RecipeCardComponent_div_1_ng_template_8_ng_miam_like_button_0_Template, 1, 4, "ng-miam-like-button", 28);
|
|
35
|
+
i0.ɵɵpipe(1, "async");
|
|
36
36
|
} if (rf & 2) {
|
|
37
|
-
const
|
|
38
|
-
i0.ɵɵ
|
|
39
|
-
i0.ɵɵproperty("src", ctx_r20.recipe.sponsorLogoUrl, i0.ɵɵsanitizeUrl);
|
|
37
|
+
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
38
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 1, ctx_r5.userService.isLogged$));
|
|
40
39
|
} }
|
|
41
|
-
function
|
|
42
|
-
i0.ɵɵelementStart(0, "div",
|
|
43
|
-
i0.ɵɵ
|
|
40
|
+
function RecipeCardComponent_div_1_div_19_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
41
|
+
i0.ɵɵelementStart(0, "div", 34);
|
|
42
|
+
i0.ɵɵtext(1);
|
|
44
43
|
i0.ɵɵelementEnd();
|
|
45
44
|
} if (rf & 2) {
|
|
46
|
-
const
|
|
45
|
+
const ctx_r14 = i0.ɵɵnextContext(3);
|
|
47
46
|
i0.ɵɵadvance(1);
|
|
48
|
-
i0.ɵɵ
|
|
47
|
+
i0.ɵɵtextInterpolate1(" + ", ctx_r14.recipe.modifiedIngredients.length - 2, " ");
|
|
49
48
|
} }
|
|
50
|
-
function
|
|
51
|
-
|
|
52
|
-
i0.ɵɵelementStart(
|
|
53
|
-
i0.ɵɵ
|
|
54
|
-
i0.ɵɵelement(1, "img", 26);
|
|
55
|
-
i0.ɵɵtemplate(2, RecipeCardComponent_div_0_div_3_div_2_Template, 2, 3, "div", 27);
|
|
56
|
-
i0.ɵɵelementStart(3, "div", 28);
|
|
57
|
-
i0.ɵɵtemplate(4, RecipeCardComponent_div_0_div_3_ng_miam_like_button_4_Template, 1, 2, "ng-miam-like-button", 29);
|
|
58
|
-
i0.ɵɵpipe(5, "async");
|
|
49
|
+
function RecipeCardComponent_div_1_div_19_Template(rf, ctx) { if (rf & 1) {
|
|
50
|
+
i0.ɵɵelementStart(0, "div", 30);
|
|
51
|
+
i0.ɵɵelementStart(1, "div", 31);
|
|
52
|
+
i0.ɵɵelement(2, "img", 32);
|
|
59
53
|
i0.ɵɵelementEnd();
|
|
60
|
-
i0.ɵɵ
|
|
61
|
-
i0.ɵɵ
|
|
62
|
-
i0.ɵɵelementEnd();
|
|
63
|
-
} if (rf & 2) {
|
|
64
|
-
const ctx_r3 = i0.ɵɵnextContext(2);
|
|
65
|
-
i0.ɵɵadvance(1);
|
|
66
|
-
i0.ɵɵproperty("src", ctx_r3.recipe == null ? null : ctx_r3.recipe.attributes["media-url"], i0.ɵɵsanitizeUrl);
|
|
67
|
-
i0.ɵɵadvance(1);
|
|
68
|
-
i0.ɵɵproperty("ngIf", ctx_r3.contextService.videoRecipesEnabled && (ctx_r3.recipe == null ? null : ctx_r3.recipe.videoId));
|
|
69
|
-
i0.ɵɵadvance(2);
|
|
70
|
-
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(5, 5, ctx_r3.userService.isLogged$));
|
|
71
|
-
i0.ɵɵadvance(2);
|
|
72
|
-
i0.ɵɵproperty("ngIf", ctx_r3.recipe.sponsorLogoUrl);
|
|
73
|
-
i0.ɵɵadvance(1);
|
|
74
|
-
i0.ɵɵproperty("ngIf", ctx_r3.recipe.filigraneLogoUrl);
|
|
75
|
-
} }
|
|
76
|
-
function RecipeCardComponent_div_0_ng_template_4_Template(rf, ctx) { if (rf & 1) {
|
|
77
|
-
i0.ɵɵelement(0, "ng-miam-skeleton", 38);
|
|
78
|
-
} if (rf & 2) {
|
|
79
|
-
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
80
|
-
i0.ɵɵproperty("type", ctx_r5.skeleton.Picture);
|
|
81
|
-
} }
|
|
82
|
-
function RecipeCardComponent_div_0_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
83
|
-
const _r25 = i0.ɵɵgetCurrentView();
|
|
84
|
-
i0.ɵɵelementStart(0, "div");
|
|
85
|
-
i0.ɵɵelementStart(1, "div", 39);
|
|
86
|
-
i0.ɵɵlistener("click", function RecipeCardComponent_div_0_div_7_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r25); const ctx_r24 = i0.ɵɵnextContext(2); return ctx_r24.openRecipe(); });
|
|
87
|
-
i0.ɵɵtext(2);
|
|
54
|
+
i0.ɵɵelementStart(3, "div", 31);
|
|
55
|
+
i0.ɵɵelement(4, "img", 32);
|
|
88
56
|
i0.ɵɵelementEnd();
|
|
57
|
+
i0.ɵɵtemplate(5, RecipeCardComponent_div_1_div_19_div_5_Template, 2, 1, "div", 33);
|
|
89
58
|
i0.ɵɵelementEnd();
|
|
90
59
|
} if (rf & 2) {
|
|
91
60
|
const ctx_r6 = i0.ɵɵnextContext(2);
|
|
92
61
|
i0.ɵɵadvance(2);
|
|
93
|
-
i0.ɵɵ
|
|
94
|
-
} }
|
|
95
|
-
function RecipeCardComponent_div_0_ng_template_8_Template(rf, ctx) { if (rf & 1) {
|
|
96
|
-
i0.ɵɵelement(0, "ng-miam-skeleton", 38);
|
|
97
|
-
} if (rf & 2) {
|
|
98
|
-
const ctx_r8 = i0.ɵɵnextContext(2);
|
|
99
|
-
i0.ɵɵproperty("type", ctx_r8.skeleton.Text);
|
|
100
|
-
} }
|
|
101
|
-
function RecipeCardComponent_div_0_div_11_Template(rf, ctx) { if (rf & 1) {
|
|
102
|
-
i0.ɵɵelementStart(0, "div", 40);
|
|
103
|
-
i0.ɵɵelement(1, "ng-miam-icon", 41);
|
|
104
|
-
i0.ɵɵelementStart(2, "span", 42);
|
|
105
|
-
i0.ɵɵtext(3);
|
|
106
|
-
i0.ɵɵelementEnd();
|
|
107
|
-
i0.ɵɵelementEnd();
|
|
108
|
-
} if (rf & 2) {
|
|
109
|
-
const ctx_r9 = i0.ɵɵnextContext(2);
|
|
110
|
-
i0.ɵɵadvance(1);
|
|
111
|
-
i0.ɵɵproperty("width", 20)("height", 20)("iconName", ctx_r9.icon.Time);
|
|
62
|
+
i0.ɵɵproperty("src", ctx_r6.ingredientPicture(ctx_r6.recipe.modifiedIngredients[0]), i0.ɵɵsanitizeUrl);
|
|
112
63
|
i0.ɵɵadvance(2);
|
|
113
|
-
i0.ɵɵ
|
|
114
|
-
} }
|
|
115
|
-
function RecipeCardComponent_div_0_div_12_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
116
|
-
i0.ɵɵelementContainerStart(0);
|
|
117
|
-
i0.ɵɵelement(1, "ng-miam-icon", 47);
|
|
118
|
-
i0.ɵɵelementContainerEnd();
|
|
119
|
-
} if (rf & 2) {
|
|
120
|
-
const ctx_r26 = i0.ɵɵnextContext(3);
|
|
121
|
-
i0.ɵɵadvance(1);
|
|
122
|
-
i0.ɵɵproperty("width", 60)("height", 20)("iconName", ctx_r26.icon.DifficultyMedium);
|
|
123
|
-
} }
|
|
124
|
-
function RecipeCardComponent_div_0_div_12_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
125
|
-
i0.ɵɵelementContainerStart(0);
|
|
126
|
-
i0.ɵɵelement(1, "ng-miam-icon", 47);
|
|
127
|
-
i0.ɵɵelementContainerEnd();
|
|
128
|
-
} if (rf & 2) {
|
|
129
|
-
const ctx_r27 = i0.ɵɵnextContext(3);
|
|
130
|
-
i0.ɵɵadvance(1);
|
|
131
|
-
i0.ɵɵproperty("width", 60)("height", 20)("iconName", ctx_r27.icon.DifficultyHigh);
|
|
132
|
-
} }
|
|
133
|
-
function RecipeCardComponent_div_0_div_12_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
134
|
-
i0.ɵɵelementContainerStart(0);
|
|
135
|
-
i0.ɵɵelement(1, "ng-miam-icon", 47);
|
|
136
|
-
i0.ɵɵelementContainerEnd();
|
|
137
|
-
} if (rf & 2) {
|
|
138
|
-
const ctx_r28 = i0.ɵɵnextContext(3);
|
|
139
|
-
i0.ɵɵadvance(1);
|
|
140
|
-
i0.ɵɵproperty("width", 60)("height", 20)("iconName", ctx_r28.icon.DifficultyLow);
|
|
141
|
-
} }
|
|
142
|
-
function RecipeCardComponent_div_0_div_12_ng_container_6_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
143
|
-
i0.ɵɵelementStart(0, "span", 50);
|
|
144
|
-
i0.ɵɵtext(1);
|
|
145
|
-
i0.ɵɵelementEnd();
|
|
146
|
-
} if (rf & 2) {
|
|
147
|
-
const ctx_r33 = i0.ɵɵnextContext(4);
|
|
64
|
+
i0.ɵɵproperty("src", ctx_r6.ingredientPicture(ctx_r6.recipe.modifiedIngredients[1]), i0.ɵɵsanitizeUrl);
|
|
148
65
|
i0.ɵɵadvance(1);
|
|
149
|
-
i0.ɵɵ
|
|
66
|
+
i0.ɵɵproperty("ngIf", ctx_r6.recipe.modifiedIngredients.length > 2);
|
|
150
67
|
} }
|
|
151
|
-
function
|
|
152
|
-
i0.ɵɵelementStart(0, "
|
|
153
|
-
i0.ɵɵ
|
|
68
|
+
function RecipeCardComponent_div_1_div_21_Template(rf, ctx) { if (rf & 1) {
|
|
69
|
+
i0.ɵɵelementStart(0, "div", 35);
|
|
70
|
+
i0.ɵɵelement(1, "ng-miam-recipe-pricing", 36);
|
|
154
71
|
i0.ɵɵelementEnd();
|
|
155
|
-
} }
|
|
156
|
-
function RecipeCardComponent_div_0_div_12_ng_container_6_Template(rf, ctx) { if (rf & 1) {
|
|
157
|
-
i0.ɵɵelementContainerStart(0);
|
|
158
|
-
i0.ɵɵtemplate(1, RecipeCardComponent_div_0_div_12_ng_container_6_span_1_Template, 2, 1, "span", 48);
|
|
159
|
-
i0.ɵɵtemplate(2, RecipeCardComponent_div_0_div_12_ng_container_6_ng_template_2_Template, 2, 0, "ng-template", null, 49, i0.ɵɵtemplateRefExtractor);
|
|
160
|
-
i0.ɵɵelementContainerEnd();
|
|
161
72
|
} if (rf & 2) {
|
|
162
|
-
const
|
|
163
|
-
const ctx_r29 = i0.ɵɵnextContext(3);
|
|
73
|
+
const ctx_r7 = i0.ɵɵnextContext(2);
|
|
164
74
|
i0.ɵɵadvance(1);
|
|
165
|
-
i0.ɵɵproperty("
|
|
75
|
+
i0.ɵɵproperty("recipeId", ctx_r7.recipe.id)("serves", ctx_r7.recipe.modifiedGuests);
|
|
166
76
|
} }
|
|
167
|
-
function
|
|
168
|
-
i0.ɵɵ
|
|
169
|
-
i0.ɵɵ
|
|
77
|
+
function RecipeCardComponent_div_1_ng_miam_recipe_card_cta_23_Template(rf, ctx) { if (rf & 1) {
|
|
78
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
79
|
+
i0.ɵɵelementStart(0, "ng-miam-recipe-card-cta", 37);
|
|
80
|
+
i0.ɵɵlistener("displayed", function RecipeCardComponent_div_1_ng_miam_recipe_card_cta_23_Template_ng_miam_recipe_card_cta_displayed_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r15 = i0.ɵɵnextContext(2); return ctx_r15.displayed.emit(); })("clicked", function RecipeCardComponent_div_1_ng_miam_recipe_card_cta_23_Template_ng_miam_recipe_card_cta_clicked_0_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r17 = i0.ɵɵnextContext(2); return ctx_r17.primaryButtonClicked$.emit($event); });
|
|
170
81
|
i0.ɵɵelementEnd();
|
|
171
82
|
} if (rf & 2) {
|
|
172
|
-
const
|
|
173
|
-
i0.ɵɵ
|
|
174
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r36.recipeService.difficultyLevels[1].label, " ");
|
|
83
|
+
const ctx_r8 = i0.ɵɵnextContext(2);
|
|
84
|
+
i0.ɵɵproperty("recipe", ctx_r8.recipe)("previewAllowed", ctx_r8.previewAllowed)("displayGuests", ctx_r8.displayGuests)("helpButtonAllowed", ctx_r8.helpButtonAllowed);
|
|
175
85
|
} }
|
|
176
|
-
function
|
|
177
|
-
i0.ɵɵ
|
|
178
|
-
i0.ɵɵ
|
|
86
|
+
function RecipeCardComponent_div_1_div_24_Template(rf, ctx) { if (rf & 1) {
|
|
87
|
+
const _r19 = i0.ɵɵgetCurrentView();
|
|
88
|
+
i0.ɵɵelementStart(0, "div", 38);
|
|
89
|
+
i0.ɵɵelementStart(1, "button", 39);
|
|
90
|
+
i0.ɵɵlistener("click", function RecipeCardComponent_div_1_div_24_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(2); return ctx_r18.removeFromMealsPlanner.emit(); });
|
|
91
|
+
i0.ɵɵelement(2, "ng-miam-icon", 27);
|
|
179
92
|
i0.ɵɵelementEnd();
|
|
180
|
-
|
|
181
|
-
function
|
|
182
|
-
i0.ɵɵ
|
|
183
|
-
i0.ɵɵ
|
|
184
|
-
i0.ɵɵtemplate(2, RecipeCardComponent_div_0_div_12_ng_container_7_ng_template_2_Template, 2, 0, "ng-template", null, 53, i0.ɵɵtemplateRefExtractor);
|
|
185
|
-
i0.ɵɵelementContainerEnd();
|
|
186
|
-
} if (rf & 2) {
|
|
187
|
-
const _r37 = i0.ɵɵreference(3);
|
|
188
|
-
const ctx_r30 = i0.ɵɵnextContext(3);
|
|
189
|
-
i0.ɵɵadvance(1);
|
|
190
|
-
i0.ɵɵproperty("ngIf", (ctx_r30.recipeService.difficultyLevels[1] == null ? null : ctx_r30.recipeService.difficultyLevels[1].label) !== "Chef interm\u00E9diaire")("ngIfElse", _r37);
|
|
191
|
-
} }
|
|
192
|
-
function RecipeCardComponent_div_0_div_12_ng_container_8_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
193
|
-
i0.ɵɵelementStart(0, "span", 58);
|
|
194
|
-
i0.ɵɵtext(1);
|
|
93
|
+
i0.ɵɵelementStart(3, "button", 40);
|
|
94
|
+
i0.ɵɵlistener("click", function RecipeCardComponent_div_1_div_24_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r19); const ctx_r20 = i0.ɵɵnextContext(2); return ctx_r20.openCatalog.emit(); });
|
|
95
|
+
i0.ɵɵelementStart(4, "span");
|
|
96
|
+
i0.ɵɵi18n(5, 41);
|
|
195
97
|
i0.ɵɵelementEnd();
|
|
196
|
-
} if (rf & 2) {
|
|
197
|
-
const ctx_r39 = i0.ɵɵnextContext(4);
|
|
198
|
-
i0.ɵɵadvance(1);
|
|
199
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r39.recipeService.difficultyLevels[2].label, " ");
|
|
200
|
-
} }
|
|
201
|
-
function RecipeCardComponent_div_0_div_12_ng_container_8_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
202
|
-
i0.ɵɵelementStart(0, "span", 58);
|
|
203
|
-
i0.ɵɵi18n(1, 59);
|
|
204
98
|
i0.ɵɵelementEnd();
|
|
205
|
-
} }
|
|
206
|
-
function RecipeCardComponent_div_0_div_12_ng_container_8_Template(rf, ctx) { if (rf & 1) {
|
|
207
|
-
i0.ɵɵelementContainerStart(0);
|
|
208
|
-
i0.ɵɵtemplate(1, RecipeCardComponent_div_0_div_12_ng_container_8_span_1_Template, 2, 1, "span", 56);
|
|
209
|
-
i0.ɵɵtemplate(2, RecipeCardComponent_div_0_div_12_ng_container_8_ng_template_2_Template, 2, 0, "ng-template", null, 57, i0.ɵɵtemplateRefExtractor);
|
|
210
|
-
i0.ɵɵelementContainerEnd();
|
|
211
|
-
} if (rf & 2) {
|
|
212
|
-
const _r40 = i0.ɵɵreference(3);
|
|
213
|
-
const ctx_r31 = i0.ɵɵnextContext(3);
|
|
214
|
-
i0.ɵɵadvance(1);
|
|
215
|
-
i0.ɵɵproperty("ngIf", (ctx_r31.recipeService.difficultyLevels[2] == null ? null : ctx_r31.recipeService.difficultyLevels[2].label) !== "Top chef")("ngIfElse", _r40);
|
|
216
|
-
} }
|
|
217
|
-
function RecipeCardComponent_div_0_div_12_ng_container_9_span_1_Template(rf, ctx) { if (rf & 1) {
|
|
218
|
-
i0.ɵɵelementStart(0, "span", 50);
|
|
219
|
-
i0.ɵɵtext(1);
|
|
220
|
-
i0.ɵɵelementEnd();
|
|
221
|
-
} if (rf & 2) {
|
|
222
|
-
const ctx_r42 = i0.ɵɵnextContext(4);
|
|
223
|
-
i0.ɵɵadvance(1);
|
|
224
|
-
i0.ɵɵtextInterpolate1(" ", ctx_r42.recipeService.difficultyLevels[0].label, " ");
|
|
225
|
-
} }
|
|
226
|
-
function RecipeCardComponent_div_0_div_12_ng_container_9_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
227
|
-
i0.ɵɵelementStart(0, "span", 50);
|
|
228
|
-
i0.ɵɵi18n(1, 61);
|
|
229
99
|
i0.ɵɵelementEnd();
|
|
230
|
-
} }
|
|
231
|
-
function RecipeCardComponent_div_0_div_12_ng_container_9_Template(rf, ctx) { if (rf & 1) {
|
|
232
|
-
i0.ɵɵelementContainerStart(0);
|
|
233
|
-
i0.ɵɵtemplate(1, RecipeCardComponent_div_0_div_12_ng_container_9_span_1_Template, 2, 1, "span", 48);
|
|
234
|
-
i0.ɵɵtemplate(2, RecipeCardComponent_div_0_div_12_ng_container_9_ng_template_2_Template, 2, 0, "ng-template", null, 60, i0.ɵɵtemplateRefExtractor);
|
|
235
|
-
i0.ɵɵelementContainerEnd();
|
|
236
100
|
} if (rf & 2) {
|
|
237
|
-
const
|
|
238
|
-
const ctx_r32 = i0.ɵɵnextContext(3);
|
|
239
|
-
i0.ɵɵadvance(1);
|
|
240
|
-
i0.ɵɵproperty("ngIf", (ctx_r32.recipeService.difficultyLevels[0] == null ? null : ctx_r32.recipeService.difficultyLevels[0].label) !== "Chef d\u00E9butant")("ngIfElse", _r43);
|
|
241
|
-
} }
|
|
242
|
-
const _c8 = function (a0, a1, a2) { return { "easy": a0, "medium": a1, "hard": a2 }; };
|
|
243
|
-
function RecipeCardComponent_div_0_div_12_Template(rf, ctx) { if (rf & 1) {
|
|
244
|
-
i0.ɵɵelementStart(0, "div", 43);
|
|
245
|
-
i0.ɵɵelementContainerStart(1, 44);
|
|
246
|
-
i0.ɵɵtemplate(2, RecipeCardComponent_div_0_div_12_ng_container_2_Template, 2, 3, "ng-container", 45);
|
|
247
|
-
i0.ɵɵtemplate(3, RecipeCardComponent_div_0_div_12_ng_container_3_Template, 2, 3, "ng-container", 45);
|
|
248
|
-
i0.ɵɵtemplate(4, RecipeCardComponent_div_0_div_12_ng_container_4_Template, 2, 3, "ng-container", 46);
|
|
249
|
-
i0.ɵɵelementContainerEnd();
|
|
250
|
-
i0.ɵɵelementContainerStart(5, 44);
|
|
251
|
-
i0.ɵɵtemplate(6, RecipeCardComponent_div_0_div_12_ng_container_6_Template, 4, 2, "ng-container", 45);
|
|
252
|
-
i0.ɵɵtemplate(7, RecipeCardComponent_div_0_div_12_ng_container_7_Template, 4, 2, "ng-container", 45);
|
|
253
|
-
i0.ɵɵtemplate(8, RecipeCardComponent_div_0_div_12_ng_container_8_Template, 4, 2, "ng-container", 45);
|
|
254
|
-
i0.ɵɵtemplate(9, RecipeCardComponent_div_0_div_12_ng_container_9_Template, 4, 2, "ng-container", 46);
|
|
255
|
-
i0.ɵɵelementContainerEnd();
|
|
256
|
-
i0.ɵɵelementEnd();
|
|
257
|
-
} if (rf & 2) {
|
|
258
|
-
const ctx_r10 = i0.ɵɵnextContext(2);
|
|
259
|
-
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(8, _c8, (ctx_r10.recipe == null ? null : ctx_r10.recipe.difficulty) === 1, (ctx_r10.recipe == null ? null : ctx_r10.recipe.difficulty) === 2, (ctx_r10.recipe == null ? null : ctx_r10.recipe.difficulty) === 3));
|
|
260
|
-
i0.ɵɵadvance(1);
|
|
261
|
-
i0.ɵɵproperty("ngSwitch", ctx_r10.recipe == null ? null : ctx_r10.recipe.difficulty);
|
|
262
|
-
i0.ɵɵadvance(1);
|
|
263
|
-
i0.ɵɵproperty("ngSwitchCase", 2);
|
|
264
|
-
i0.ɵɵadvance(1);
|
|
265
|
-
i0.ɵɵproperty("ngSwitchCase", 3);
|
|
101
|
+
const ctx_r9 = i0.ɵɵnextContext(2);
|
|
266
102
|
i0.ɵɵadvance(2);
|
|
267
|
-
i0.ɵɵproperty("
|
|
268
|
-
i0.ɵɵadvance(1);
|
|
269
|
-
i0.ɵɵproperty("ngSwitchCase", 1);
|
|
270
|
-
i0.ɵɵadvance(1);
|
|
271
|
-
i0.ɵɵproperty("ngSwitchCase", 2);
|
|
272
|
-
i0.ɵɵadvance(1);
|
|
273
|
-
i0.ɵɵproperty("ngSwitchCase", 3);
|
|
274
|
-
} }
|
|
275
|
-
function RecipeCardComponent_div_0_ng_template_13_Template(rf, ctx) { if (rf & 1) {
|
|
276
|
-
i0.ɵɵelement(0, "ng-miam-skeleton", 38);
|
|
277
|
-
} if (rf & 2) {
|
|
278
|
-
const ctx_r12 = i0.ɵɵnextContext(2);
|
|
279
|
-
i0.ɵɵproperty("type", ctx_r12.skeleton == null ? null : ctx_r12.skeleton.IconWithInfo);
|
|
280
|
-
} }
|
|
281
|
-
function RecipeCardComponent_div_0_div_20_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
282
|
-
i0.ɵɵelementStart(0, "div", 65);
|
|
283
|
-
i0.ɵɵtext(1);
|
|
284
|
-
i0.ɵɵelementEnd();
|
|
285
|
-
} if (rf & 2) {
|
|
286
|
-
const ctx_r45 = i0.ɵɵnextContext(3);
|
|
287
|
-
i0.ɵɵadvance(1);
|
|
288
|
-
i0.ɵɵtextInterpolate1(" + ", ctx_r45.recipe.modifiedIngredients.length - 2, " ");
|
|
103
|
+
i0.ɵɵproperty("iconName", ctx_r9.icon.Trash);
|
|
289
104
|
} }
|
|
290
|
-
function
|
|
291
|
-
i0.ɵɵ
|
|
292
|
-
i0.ɵɵelementStart(
|
|
293
|
-
i0.ɵɵ
|
|
294
|
-
i0.ɵɵ
|
|
295
|
-
i0.ɵɵ
|
|
296
|
-
i0.ɵɵelement(4, "img", 36);
|
|
105
|
+
function RecipeCardComponent_div_1_button_25_Template(rf, ctx) { if (rf & 1) {
|
|
106
|
+
const _r22 = i0.ɵɵgetCurrentView();
|
|
107
|
+
i0.ɵɵelementStart(0, "button", 40);
|
|
108
|
+
i0.ɵɵlistener("click", function RecipeCardComponent_div_1_button_25_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r21 = i0.ɵɵnextContext(2); return ctx_r21.addToMealsPlanner.emit(ctx_r21.recipe); });
|
|
109
|
+
i0.ɵɵelementStart(1, "span");
|
|
110
|
+
i0.ɵɵi18n(2, 42);
|
|
297
111
|
i0.ɵɵelementEnd();
|
|
298
|
-
i0.ɵɵtemplate(5, RecipeCardComponent_div_0_div_20_div_5_Template, 2, 1, "div", 64);
|
|
299
112
|
i0.ɵɵelementEnd();
|
|
300
|
-
} if (rf & 2) {
|
|
301
|
-
const ctx_r13 = i0.ɵɵnextContext(2);
|
|
302
|
-
i0.ɵɵadvance(2);
|
|
303
|
-
i0.ɵɵproperty("src", ctx_r13.ingredientPicture(ctx_r13.recipe.modifiedIngredients[0]), i0.ɵɵsanitizeUrl);
|
|
304
|
-
i0.ɵɵadvance(2);
|
|
305
|
-
i0.ɵɵproperty("src", ctx_r13.ingredientPicture(ctx_r13.recipe.modifiedIngredients[1]), i0.ɵɵsanitizeUrl);
|
|
306
|
-
i0.ɵɵadvance(1);
|
|
307
|
-
i0.ɵɵproperty("ngIf", ctx_r13.recipe.modifiedIngredients.length > 2);
|
|
308
113
|
} }
|
|
309
|
-
function
|
|
310
|
-
const
|
|
311
|
-
i0.ɵɵelementStart(0, "div",
|
|
312
|
-
i0.ɵɵelementStart(1, "
|
|
313
|
-
i0.ɵɵlistener("
|
|
114
|
+
function RecipeCardComponent_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
115
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
116
|
+
i0.ɵɵelementStart(0, "div", 4);
|
|
117
|
+
i0.ɵɵelementStart(1, "div", 5);
|
|
118
|
+
i0.ɵɵlistener("click", function RecipeCardComponent_div_1_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r24); const ctx_r23 = i0.ɵɵnextContext(); return ctx_r23.openRecipe(); });
|
|
119
|
+
i0.ɵɵelementStart(2, "div", 6);
|
|
120
|
+
i0.ɵɵelement(3, "img", 7);
|
|
314
121
|
i0.ɵɵelementEnd();
|
|
122
|
+
i0.ɵɵelement(4, "div", 8);
|
|
123
|
+
i0.ɵɵelementStart(5, "div", 9);
|
|
124
|
+
i0.ɵɵelementStart(6, "div", 10);
|
|
125
|
+
i0.ɵɵtemplate(7, RecipeCardComponent_div_1_div_7_Template, 2, 1, "div", 11);
|
|
126
|
+
i0.ɵɵtemplate(8, RecipeCardComponent_div_1_ng_template_8_Template, 2, 3, "ng-template", null, 12, i0.ɵɵtemplateRefExtractor);
|
|
315
127
|
i0.ɵɵelementEnd();
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
i0.ɵɵ
|
|
319
|
-
i0.ɵɵ
|
|
320
|
-
} }
|
|
321
|
-
function RecipeCardComponent_div_0_ng_template_22_Template(rf, ctx) { if (rf & 1) {
|
|
322
|
-
i0.ɵɵelement(0, "ng-miam-skeleton", 38);
|
|
323
|
-
} if (rf & 2) {
|
|
324
|
-
const ctx_r16 = i0.ɵɵnextContext(2);
|
|
325
|
-
i0.ɵɵproperty("type", ctx_r16.skeleton == null ? null : ctx_r16.skeleton.IconWithInfo);
|
|
326
|
-
} }
|
|
327
|
-
function RecipeCardComponent_div_0_div_25_Template(rf, ctx) { if (rf & 1) {
|
|
328
|
-
i0.ɵɵelementStart(0, "div", 68);
|
|
329
|
-
i0.ɵɵelement(1, "ng-miam-recipe-pricing", 69);
|
|
128
|
+
i0.ɵɵelementStart(10, "div", 13);
|
|
129
|
+
i0.ɵɵelementStart(11, "div", 14);
|
|
130
|
+
i0.ɵɵelementStart(12, "span");
|
|
131
|
+
i0.ɵɵtext(13);
|
|
330
132
|
i0.ɵɵelementEnd();
|
|
331
|
-
} if (rf & 2) {
|
|
332
|
-
const ctx_r17 = i0.ɵɵnextContext(2);
|
|
333
|
-
i0.ɵɵadvance(1);
|
|
334
|
-
i0.ɵɵproperty("recipe", ctx_r17.recipe)("serves", ctx_r17.recipe == null ? null : ctx_r17.recipe.modifiedGuests);
|
|
335
|
-
} }
|
|
336
|
-
function RecipeCardComponent_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
337
|
-
const _r49 = i0.ɵɵgetCurrentView();
|
|
338
|
-
i0.ɵɵelementStart(0, "div", 2);
|
|
339
|
-
i0.ɵɵelementStart(1, "div", 3);
|
|
340
|
-
i0.ɵɵelement(2, "img", 4);
|
|
341
133
|
i0.ɵɵelementEnd();
|
|
342
|
-
i0.ɵɵ
|
|
343
|
-
i0.ɵɵ
|
|
344
|
-
i0.ɵɵ
|
|
345
|
-
i0.ɵɵtemplate(7, RecipeCardComponent_div_0_div_7_Template, 3, 1, "div", 8);
|
|
346
|
-
i0.ɵɵtemplate(8, RecipeCardComponent_div_0_ng_template_8_Template, 1, 1, "ng-template", null, 9, i0.ɵɵtemplateRefExtractor);
|
|
347
|
-
i0.ɵɵelementStart(10, "div", 10);
|
|
348
|
-
i0.ɵɵtemplate(11, RecipeCardComponent_div_0_div_11_Template, 4, 4, "div", 11);
|
|
349
|
-
i0.ɵɵtemplate(12, RecipeCardComponent_div_0_div_12_Template, 10, 12, "div", 12);
|
|
350
|
-
i0.ɵɵtemplate(13, RecipeCardComponent_div_0_ng_template_13_Template, 1, 1, "ng-template", null, 13, i0.ɵɵtemplateRefExtractor);
|
|
134
|
+
i0.ɵɵelementStart(14, "div", 15);
|
|
135
|
+
i0.ɵɵelementStart(15, "span", 16);
|
|
136
|
+
i0.ɵɵtext(16);
|
|
351
137
|
i0.ɵɵelementEnd();
|
|
352
|
-
i0.ɵɵ
|
|
353
|
-
i0.ɵɵelementStart(16, "div", 15);
|
|
354
|
-
i0.ɵɵelementStart(17, "div", 16);
|
|
355
|
-
i0.ɵɵelementStart(18, "div", 17);
|
|
356
|
-
i0.ɵɵlistener("click", function RecipeCardComponent_div_0_Template_div_click_18_listener() { i0.ɵɵrestoreView(_r49); const ctx_r48 = i0.ɵɵnextContext(); return ctx_r48.toggleHelper(); });
|
|
357
|
-
i0.ɵɵelement(19, "ng-miam-icon", 18);
|
|
138
|
+
i0.ɵɵelement(17, "img", 17);
|
|
358
139
|
i0.ɵɵelementEnd();
|
|
359
|
-
i0.ɵɵtemplate(20, RecipeCardComponent_div_0_div_20_Template, 6, 3, "div", 19);
|
|
360
140
|
i0.ɵɵelementEnd();
|
|
361
|
-
i0.ɵɵtemplate(21, RecipeCardComponent_div_0_div_21_Template, 2, 1, "div", 20);
|
|
362
|
-
i0.ɵɵtemplate(22, RecipeCardComponent_div_0_ng_template_22_Template, 1, 1, "ng-template", null, 21, i0.ɵɵtemplateRefExtractor);
|
|
363
141
|
i0.ɵɵelementEnd();
|
|
364
|
-
i0.ɵɵelementStart(24, "div", 22);
|
|
365
|
-
i0.ɵɵtemplate(25, RecipeCardComponent_div_0_div_25_Template, 2, 2, "div", 23);
|
|
366
142
|
i0.ɵɵelementEnd();
|
|
143
|
+
i0.ɵɵelementStart(18, "div", 18);
|
|
144
|
+
i0.ɵɵlistener("click", function RecipeCardComponent_div_1_Template_div_click_18_listener() { i0.ɵɵrestoreView(_r24); const ctx_r25 = i0.ɵɵnextContext(); return ctx_r25.openRecipe(); });
|
|
145
|
+
i0.ɵɵtemplate(19, RecipeCardComponent_div_1_div_19_Template, 6, 3, "div", 19);
|
|
146
|
+
i0.ɵɵelementStart(20, "div", 20);
|
|
147
|
+
i0.ɵɵtemplate(21, RecipeCardComponent_div_1_div_21_Template, 2, 2, "div", 21);
|
|
148
|
+
i0.ɵɵelementStart(22, "div", 22);
|
|
149
|
+
i0.ɵɵtemplate(23, RecipeCardComponent_div_1_ng_miam_recipe_card_cta_23_Template, 1, 4, "ng-miam-recipe-card-cta", 23);
|
|
367
150
|
i0.ɵɵelementEnd();
|
|
368
|
-
i0.ɵɵ
|
|
369
|
-
i0.ɵɵ
|
|
151
|
+
i0.ɵɵtemplate(24, RecipeCardComponent_div_1_div_24_Template, 6, 1, "div", 24);
|
|
152
|
+
i0.ɵɵtemplate(25, RecipeCardComponent_div_1_button_25_Template, 3, 0, "button", 25);
|
|
370
153
|
i0.ɵɵelementEnd();
|
|
371
154
|
i0.ɵɵelementEnd();
|
|
372
155
|
i0.ɵɵelementEnd();
|
|
373
156
|
} if (rf & 2) {
|
|
374
|
-
const _r4 = i0.ɵɵreference(
|
|
375
|
-
const _r7 = i0.ɵɵreference(9);
|
|
376
|
-
const _r11 = i0.ɵɵreference(14);
|
|
377
|
-
const _r15 = i0.ɵɵreference(23);
|
|
157
|
+
const _r4 = i0.ɵɵreference(9);
|
|
378
158
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
379
159
|
i0.ɵɵadvance(3);
|
|
380
|
-
i0.ɵɵproperty("
|
|
381
|
-
i0.ɵɵadvance(4);
|
|
382
|
-
i0.ɵɵproperty("ngIf", ctx_r0.recipe)("ngIfElse", _r7);
|
|
160
|
+
i0.ɵɵproperty("src", ctx_r0.recipe == null ? null : ctx_r0.recipe.attributes["media-url"], i0.ɵɵsanitizeUrl);
|
|
383
161
|
i0.ɵɵadvance(4);
|
|
384
|
-
i0.ɵɵproperty("ngIf", ctx_r0.recipe)("ngIfElse",
|
|
385
|
-
i0.ɵɵadvance(
|
|
386
|
-
i0.ɵɵ
|
|
387
|
-
i0.ɵɵadvance(
|
|
388
|
-
i0.ɵɵ
|
|
389
|
-
i0.ɵɵadvance(
|
|
162
|
+
i0.ɵɵproperty("ngIf", (ctx_r0.recipe.relationships["recipe-provider"] == null ? null : ctx_r0.recipe.relationships["recipe-provider"].data.id) === "personal")("ngIfElse", _r4);
|
|
163
|
+
i0.ɵɵadvance(6);
|
|
164
|
+
i0.ɵɵtextInterpolate(ctx_r0.recipe.attributes["title"]);
|
|
165
|
+
i0.ɵɵadvance(3);
|
|
166
|
+
i0.ɵɵtextInterpolate(ctx_r0.recipe.modifiedGuests);
|
|
167
|
+
i0.ɵɵadvance(3);
|
|
390
168
|
i0.ɵɵproperty("ngIf", ctx_r0.contextService.displayIngredientPicturesOnRecipeCards && (ctx_r0.recipe == null ? null : ctx_r0.recipe.modifiedIngredients == null ? null : ctx_r0.recipe.modifiedIngredients.length) > 1);
|
|
391
|
-
i0.ɵɵadvance(
|
|
392
|
-
i0.ɵɵproperty("ngIf", ctx_r0.recipe)("ngIfElse", _r15);
|
|
393
|
-
i0.ɵɵadvance(4);
|
|
169
|
+
i0.ɵɵadvance(2);
|
|
394
170
|
i0.ɵɵproperty("ngIf", ctx_r0.recipe && ctx_r0.displayPricing);
|
|
171
|
+
i0.ɵɵadvance(2);
|
|
172
|
+
i0.ɵɵproperty("ngIf", ctx_r0.previewAllowed && !ctx_r0.addRecipeMode && !ctx_r0.replaceMode);
|
|
395
173
|
i0.ɵɵadvance(1);
|
|
396
|
-
i0.ɵɵproperty("
|
|
174
|
+
i0.ɵɵproperty("ngIf", ctx_r0.replaceMode);
|
|
175
|
+
i0.ɵɵadvance(1);
|
|
176
|
+
i0.ɵɵproperty("ngIf", ctx_r0.addRecipeMode);
|
|
397
177
|
} }
|
|
398
|
-
function
|
|
399
|
-
i0.ɵɵ
|
|
178
|
+
function RecipeCardComponent_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
179
|
+
i0.ɵɵelementStart(0, "div", 43);
|
|
180
|
+
i0.ɵɵelementStart(1, "div", 44);
|
|
181
|
+
i0.ɵɵelementStart(2, "span");
|
|
182
|
+
i0.ɵɵi18n(3, 45);
|
|
183
|
+
i0.ɵɵelementEnd();
|
|
184
|
+
i0.ɵɵelementEnd();
|
|
185
|
+
i0.ɵɵelementStart(4, "div", 46);
|
|
186
|
+
i0.ɵɵelement(5, "img", 32);
|
|
187
|
+
i0.ɵɵelementEnd();
|
|
188
|
+
i0.ɵɵelementEnd();
|
|
189
|
+
} if (rf & 2) {
|
|
190
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
191
|
+
i0.ɵɵadvance(5);
|
|
192
|
+
i0.ɵɵproperty("src", ctx_r1.recipe.sponsorLogoUrl, i0.ɵɵsanitizeUrl);
|
|
193
|
+
} }
|
|
194
|
+
function RecipeCardComponent_ng_miam_actions_popin_3_Template(rf, ctx) { if (rf & 1) {
|
|
195
|
+
const _r27 = i0.ɵɵgetCurrentView();
|
|
196
|
+
i0.ɵɵelementStart(0, "ng-miam-actions-popin", 47);
|
|
197
|
+
i0.ɵɵlistener("close", function RecipeCardComponent_ng_miam_actions_popin_3_Template_ng_miam_actions_popin_close_0_listener() { i0.ɵɵrestoreView(_r27); const ctx_r26 = i0.ɵɵnextContext(); return ctx_r26.closeMoreActions(); })("actionTriggered", function RecipeCardComponent_ng_miam_actions_popin_3_Template_ng_miam_actions_popin_actionTriggered_0_listener($event) { i0.ɵɵrestoreView(_r27); const ctx_r28 = i0.ɵɵnextContext(); return ctx_r28.actionTriggered.emit($event); });
|
|
198
|
+
i0.ɵɵelementEnd();
|
|
400
199
|
} }
|
|
401
200
|
const recipeIncludes = ['recipe-provider', 'sponsors'];
|
|
402
201
|
const recipeSparseFields = {
|
|
@@ -414,116 +213,219 @@ const recipeSparseFields = {
|
|
|
414
213
|
* and alsow style of the parent aplication that will use it
|
|
415
214
|
* doc -> https://angular.io/api/core/ViewEncapsulation
|
|
416
215
|
*/
|
|
417
|
-
export class RecipeCardComponent extends
|
|
418
|
-
constructor(cdr, recipeService,
|
|
419
|
-
super(
|
|
216
|
+
export class RecipeCardComponent extends EventTracerComponent {
|
|
217
|
+
constructor(cdr, recipeService, basketsService, userService, contextService, analyticsService, element, scrollService) {
|
|
218
|
+
super(analyticsService);
|
|
420
219
|
this.cdr = cdr;
|
|
421
220
|
this.recipeService = recipeService;
|
|
422
|
-
this.
|
|
423
|
-
this.groceriesListsService = groceriesListsService;
|
|
221
|
+
this.basketsService = basketsService;
|
|
424
222
|
this.userService = userService;
|
|
425
223
|
this.contextService = contextService;
|
|
426
224
|
this.analyticsService = analyticsService;
|
|
427
225
|
this.element = element;
|
|
226
|
+
this.scrollService = scrollService;
|
|
428
227
|
this.previewAllowed = true;
|
|
429
228
|
this.helpButtonAllowed = true;
|
|
229
|
+
this.displayPricing = true;
|
|
230
|
+
this.displayGuests = true;
|
|
231
|
+
this.addRecipeMode = false;
|
|
232
|
+
this.replaceMode = false;
|
|
430
233
|
this.removedFromFavorite = new EventEmitter();
|
|
431
234
|
this.displayed = new EventEmitter();
|
|
432
|
-
this.
|
|
235
|
+
this.actionTriggered = new EventEmitter();
|
|
236
|
+
this.removeFromMealsPlanner = new EventEmitter();
|
|
237
|
+
this.addToMealsPlanner = new EventEmitter();
|
|
238
|
+
this.openCatalog = new EventEmitter();
|
|
239
|
+
this.hide = new EventEmitter();
|
|
240
|
+
this.icon = Icon;
|
|
241
|
+
this.addButtonLoading = false;
|
|
242
|
+
this.actionsOpened = false;
|
|
433
243
|
this.isloaded = false;
|
|
434
|
-
this.
|
|
244
|
+
this.analyticsEventSent = false;
|
|
245
|
+
this.sendShowEventsOnScroll = true;
|
|
435
246
|
this.primaryButtonClicked$ = new EventEmitter();
|
|
436
|
-
this.subscriptions
|
|
247
|
+
this.subscriptions = [];
|
|
248
|
+
}
|
|
249
|
+
ngOnInit() {
|
|
250
|
+
this.subscriptions.push(this.recipeService.displayedRecipeChanged$.subscribe(() => this.cdr.detectChanges()));
|
|
251
|
+
}
|
|
252
|
+
currentPath() {
|
|
253
|
+
return '';
|
|
437
254
|
}
|
|
438
|
-
|
|
255
|
+
currentProps() {
|
|
256
|
+
var _a;
|
|
257
|
+
return { recipe_id: (_a = this.recipe) === null || _a === void 0 ? void 0 : _a.id };
|
|
258
|
+
}
|
|
259
|
+
ngOnChanges(simpleChanges) {
|
|
439
260
|
if (this.recipe) {
|
|
440
|
-
this.
|
|
261
|
+
this.updateGuestsIfNecessary();
|
|
262
|
+
this.isloaded = true;
|
|
441
263
|
}
|
|
442
264
|
else if (this.recipeId) {
|
|
443
|
-
this.
|
|
265
|
+
this.loadRecipeFromId();
|
|
266
|
+
}
|
|
267
|
+
if ((simpleChanges.productIds && !this.randomModeEnable) || !this.recipe) {
|
|
268
|
+
this.loadRecipeFromContext();
|
|
444
269
|
}
|
|
445
270
|
}
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
271
|
+
ngAfterViewInit() {
|
|
272
|
+
this.subscriptions.push(this.scrollService.scroll$.subscribe(() => {
|
|
273
|
+
if (this.sendShowEventsOnScroll) {
|
|
274
|
+
this.sendShowEvent();
|
|
275
|
+
}
|
|
276
|
+
}));
|
|
277
|
+
this.sendShowEvent();
|
|
278
|
+
this.subscriptions.push(this.basketsService.basket$.subscribe(() => this.cdr.detectChanges()));
|
|
279
|
+
this.subscriptions.push(this.recipeService.reloadRecipes$.subscribe(shouldReload => {
|
|
280
|
+
if (shouldReload) {
|
|
281
|
+
this.cdr.detectChanges();
|
|
282
|
+
}
|
|
283
|
+
}));
|
|
451
284
|
}
|
|
452
|
-
|
|
453
|
-
this.
|
|
285
|
+
ngOnDestroy() {
|
|
286
|
+
this.subscriptions.forEach(sub => sub.unsubscribe());
|
|
454
287
|
}
|
|
288
|
+
// //////////////////////////////////////// DISPLAY RECIPE DETAILS //////////////////////////////////////// //
|
|
455
289
|
openRecipe() {
|
|
456
|
-
const videoEvent = this.contextService.videoRecipesEnabled && this.recipe.videoId;
|
|
457
|
-
this.recipeService.displayObject(this.recipe, {
|
|
290
|
+
// const videoEvent = this.contextService.videoRecipesEnabled && this.recipe.videoId;
|
|
291
|
+
this.recipeService.displayObject(this.recipe, {
|
|
292
|
+
previewAllowed: this.previewAllowed,
|
|
293
|
+
guests: this.recipe.modifiedGuests,
|
|
294
|
+
displayGuests: this.displayGuests,
|
|
295
|
+
helpButtonAllowed: this.helpButtonAllowed
|
|
296
|
+
}, this.eventTrace());
|
|
458
297
|
this.displayed.emit();
|
|
459
298
|
}
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
299
|
+
// //////////////////////////////////////// DISPLAY RECIPE DETAILS //////////////////////////////////////// //
|
|
300
|
+
ingredientPicture(ingredient) {
|
|
301
|
+
return ingredient.picture || this.contextService.defaultIngredientPicture;
|
|
302
|
+
}
|
|
303
|
+
// //////////////////////////////////////// PERSONAL RECIPES ACTIONS POPUP //////////////////////////////////////// //
|
|
304
|
+
toggleMoreActions(event) {
|
|
305
|
+
var _a;
|
|
306
|
+
event.preventDefault();
|
|
307
|
+
event.stopPropagation();
|
|
308
|
+
if (((_a = this.recipe.relationships['recipe-provider']) === null || _a === void 0 ? void 0 : _a.data.id) === 'personal') {
|
|
309
|
+
this.actionsOpened = !this.actionsOpened;
|
|
310
|
+
this.cdr.detectChanges();
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
closeMoreActions() {
|
|
314
|
+
this.actionsOpened = false;
|
|
466
315
|
this.cdr.detectChanges();
|
|
467
316
|
}
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
}
|
|
476
|
-
})).subscribe(() => this.cdr.detectChanges()));
|
|
317
|
+
// //////////////////////////////////////// CHECK IF CARD ENTERS THE VIEWPORT //////////////////////////////////////// //
|
|
318
|
+
isInViewport() {
|
|
319
|
+
const rect = this.element.nativeElement.getBoundingClientRect();
|
|
320
|
+
return (rect.top >= 0 &&
|
|
321
|
+
rect.left >= 0 &&
|
|
322
|
+
rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&
|
|
323
|
+
rect.right <= (window.innerWidth || document.documentElement.clientWidth));
|
|
477
324
|
}
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
325
|
+
// Send analytics event when :
|
|
326
|
+
// - new recipe is to be displayed AND is already visible in viewport
|
|
327
|
+
// OR
|
|
328
|
+
// - user scrolls and recipe becomes visible in viewport
|
|
329
|
+
sendShowEvent() {
|
|
330
|
+
if (!this.recipe) {
|
|
331
|
+
return false;
|
|
483
332
|
}
|
|
484
|
-
|
|
333
|
+
if (!this.analyticsEventSent && this.isInViewport()) {
|
|
334
|
+
this.sendEvent(this.analyticsService.EVENT_RECIPE_SHOW);
|
|
335
|
+
this.analyticsEventSent = true;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
// //////////////////////////////////////// FETCH THE RECIPE //////////////////////////////////////// //
|
|
339
|
+
/**
|
|
340
|
+
* Fetch a recipe from its id.
|
|
341
|
+
* Hide the card if none is returned (could be because it does not exists or it is not shared with the supplier)
|
|
342
|
+
*/
|
|
343
|
+
loadRecipeFromId() {
|
|
344
|
+
this.subscriptions.push(this.recipeService.get(this.recipeId, { include: recipeIncludes, fields: recipeSparseFields }).pipe(skipWhile(result => result.is_loading), catchError(err => {
|
|
485
345
|
this.hide.emit();
|
|
486
346
|
return of(err);
|
|
487
|
-
})).subscribe(result => {
|
|
347
|
+
})).subscribe((result) => {
|
|
488
348
|
this.recipe = result;
|
|
489
|
-
|
|
490
|
-
|
|
349
|
+
this.updateGuestsIfNecessary();
|
|
350
|
+
this.isloaded = true;
|
|
351
|
+
this.cdr.detectChanges();
|
|
352
|
+
}));
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Get a suggestion based on context (either productIds or randomMode). Hide the card if none is returned
|
|
356
|
+
*/
|
|
357
|
+
loadRecipeFromContext() {
|
|
358
|
+
this.subscriptions.push(this.fetchSuggestionOrRandom().pipe(skipWhile(results => !results), catchError(err => {
|
|
359
|
+
this.hide.emit();
|
|
360
|
+
return of(err);
|
|
361
|
+
})).subscribe((results) => {
|
|
362
|
+
if ((results === null || results === void 0 ? void 0 : results.length) > 0) {
|
|
363
|
+
this.recipe = results[0];
|
|
364
|
+
this.updateGuestsIfNecessary();
|
|
365
|
+
this.isloaded = true;
|
|
366
|
+
}
|
|
367
|
+
else {
|
|
368
|
+
this.hide.emit();
|
|
491
369
|
}
|
|
492
370
|
this.cdr.detectChanges();
|
|
493
|
-
});
|
|
371
|
+
}));
|
|
372
|
+
}
|
|
373
|
+
fetchSuggestionOrRandom() {
|
|
374
|
+
if (this.randomModeEnable) {
|
|
375
|
+
return this.recipeService.getRandom(recipeIncludes, recipeSparseFields);
|
|
376
|
+
}
|
|
377
|
+
else {
|
|
378
|
+
return this.recipeService.getSuggestion(this.productIds, recipeIncludes, recipeSparseFields);
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Update guests from the value in the basket if the recipe is in the basket
|
|
383
|
+
*/
|
|
384
|
+
updateGuestsIfNecessary() {
|
|
385
|
+
this.subscriptions.push(this.basketsService.recipeIsInBasket(this.recipe.id).pipe(take(1)).subscribe(isInList => {
|
|
386
|
+
if (isInList) {
|
|
387
|
+
this.recipe.modifiedGuests = this.basketsService.guestsForRecipe(this.recipe.id) || +this.recipe.guests;
|
|
388
|
+
}
|
|
389
|
+
else if (!this.recipe.modifiedGuests) {
|
|
390
|
+
this.recipe.modifiedGuests = +this.recipe.guests;
|
|
391
|
+
}
|
|
392
|
+
this.cdr.detectChanges();
|
|
393
|
+
}));
|
|
494
394
|
}
|
|
495
395
|
}
|
|
496
|
-
RecipeCardComponent.ɵfac = function RecipeCardComponent_Factory(t) { return new (t || RecipeCardComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.RecipesService), i0.ɵɵdirectiveInject(i1.
|
|
497
|
-
RecipeCardComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeCardComponent, selectors: [["ng-miam-recipe-card"]], inputs: { recipeId: "recipeId", recipe: "recipe", previewAllowed: "previewAllowed", helpButtonAllowed: "helpButtonAllowed" }, outputs: { removedFromFavorite: "removedFromFavorite", displayed: "displayed",
|
|
498
|
-
const
|
|
499
|
-
i18n_0 =
|
|
396
|
+
RecipeCardComponent.ɵfac = function RecipeCardComponent_Factory(t) { return new (t || RecipeCardComponent)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.RecipesService), i0.ɵɵdirectiveInject(i1.BasketsService), i0.ɵɵdirectiveInject(i1.UserService), i0.ɵɵdirectiveInject(i1.ContextService), i0.ɵɵdirectiveInject(i1.AnalyticsService), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.ScrollingService)); };
|
|
397
|
+
RecipeCardComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeCardComponent, selectors: [["ng-miam-recipe-card"]], inputs: { recipeId: "recipeId", recipe: "recipe", randomModeEnable: "randomModeEnable", productIds: "productIds", previewAllowed: "previewAllowed", helpButtonAllowed: "helpButtonAllowed", displayPricing: "displayPricing", displayGuests: "displayGuests", addRecipeMode: "addRecipeMode", replaceMode: "replaceMode" }, outputs: { removedFromFavorite: "removedFromFavorite", displayed: "displayed", actionTriggered: "actionTriggered", removeFromMealsPlanner: "removeFromMealsPlanner", addToMealsPlanner: "addToMealsPlanner", openCatalog: "openCatalog", hide: "hide" }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 4, vars: 3, consts: function () { var i18n_0; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
|
398
|
+
const MSG_EXTERNAL_4705093661060921903$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS___1 = goog.getMsg("Remplacer");
|
|
399
|
+
i18n_0 = MSG_EXTERNAL_4705093661060921903$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS___1;
|
|
500
400
|
}
|
|
501
401
|
else {
|
|
502
|
-
i18n_0 = $localize `:␟
|
|
402
|
+
i18n_0 = $localize `:␟8e4fa20cb8b77c41c980ba077b80bc8ea128239a␟4705093661060921903:Remplacer`;
|
|
503
403
|
} var i18n_2; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
|
504
|
-
const
|
|
505
|
-
i18n_2 =
|
|
404
|
+
const MSG_EXTERNAL_70397346439942337$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS___3 = goog.getMsg("Ajouter");
|
|
405
|
+
i18n_2 = MSG_EXTERNAL_70397346439942337$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS___3;
|
|
506
406
|
}
|
|
507
407
|
else {
|
|
508
|
-
i18n_2 = $localize `:␟
|
|
408
|
+
i18n_2 = $localize `:␟8aa969e69241c7c5838b40348f913519d6349371␟70397346439942337:Ajouter`;
|
|
509
409
|
} var i18n_4; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
|
|
510
|
-
const
|
|
511
|
-
i18n_4 =
|
|
410
|
+
const MSG_EXTERNAL_2091641344398253510$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS__5 = goog.getMsg("Une recette propopos\u00E9e par");
|
|
411
|
+
i18n_4 = MSG_EXTERNAL_2091641344398253510$$LIB__WEB_COMPONENTS_RECIPE_CARDS_RECIPE_CARD_RECIPE_CARD_COMPONENT_TS__5;
|
|
512
412
|
}
|
|
513
413
|
else {
|
|
514
|
-
i18n_4 = $localize `:␟
|
|
515
|
-
}
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
} return [["class", "miam-recipe-card", 4, "ngIf"], ["cors", ""], [1, "miam-recipe-card"], [1, "miam-recipe-card__bookmark"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/recipe-card/Bookmark.svg", "alt", "Id\u00E9es repas"], ["class", "miam-recipe-card__picture", 3, "click", 4, "ngIf", "ngIfElse"], ["pictSkeleton", ""], [1, "miam-recipe-card__attributes"], [4, "ngIf", "ngIfElse"], ["textSkeleton", ""], [1, "miam-recipe-card__attributes__infos"], ["class", "miam-recipe-card__attributes__info recipe__total__time", 4, "ngIf", "ngIfElse"], ["class", "miam-recipe-card__attributes__info recipe__difficulty", 3, "ngClass", 4, "ngIf", "ngIfElse"], ["skeletonInfo", ""], [1, "miam-recipe-card__attributes__control"], [1, "miam-recipe-card__control__left__col"], [1, "miam-recipe-card__left__col__custom"], [1, "miam-recipe-card__help", 3, "click"], ["primaryColor", "var(--m-color-grey02)", "secondaryColor", "var(--m-color-grey07)", 3, "width", "height", "iconName"], ["class", "miam-recipe-card__ingredients__pictures", 4, "ngIf"], ["class", "miam-recipe-card__left__col__counter", 4, "ngIf", "ngIfElse"], ["skeletoncounter", ""], [1, "miam-recipe-card__control__right__col"], ["class", "miam-recipe-card__right__col__price", 4, "ngIf"], [3, "recipe", "cardType", "previewAllowed", "displayGuests", "helpButtonAllowed", "originTrace", "displayed", "clicked"], [1, "miam-recipe-card__picture", 3, "click"], ["loading", "lazy", 3, "src"], ["class", "miam-recipe-card__picture__video", 4, "ngIf"], [1, "miam-recipe-card__picture__actions"], ["class", "miam-recipe-card__actions__icon", 3, "recipe", "originTrace", 4, "ngIf"], ["class", "miam-recipe-card__picture__sponsor", 4, "ngIf"], ["class", "miam-recipe-card__picture__filigrane", 4, "ngIf"], [1, "miam-recipe-card__picture__video"], ["primaryColor", "black", 3, "iconName", "width", "height"], [1, "miam-recipe-card__actions__icon", 3, "recipe", "originTrace"], [1, "miam-recipe-card__picture__sponsor"], [3, "src"], [1, "miam-recipe-card__picture__filigrane"], [3, "type"], [1, "miam-recipe-card__attributes__title", 3, "click"], [1, "miam-recipe-card__attributes__info", "recipe__total__time"], [3, "width", "height", "iconName"], [1, "miam-recipe-card__info__label"], [1, "miam-recipe-card__attributes__info", "recipe__difficulty", 3, "ngClass"], [3, "ngSwitch"], [4, "ngSwitchCase"], [4, "ngSwitchDefault"], ["primaryColor", "var(--m-color-black)", 3, "width", "height", "iconName"], ["class", "miam-recipe-card__info__label easy", 4, "ngIf", "ngIfElse"], ["difficultyEasyDefault", ""], [1, "miam-recipe-card__info__label", "easy"], i18n_0, ["class", "miam-recipe-card__info__label medium", 4, "ngIf", "ngIfElse"], ["difficultyMediumDefault", ""], [1, "miam-recipe-card__info__label", "medium"], i18n_2, ["class", "miam-recipe-card__info__label hard", 4, "ngIf", "ngIfElse"], ["difficultyHardDefault", ""], [1, "miam-recipe-card__info__label", "hard"], i18n_4, ["difficultyDefault", ""], i18n_6, [1, "miam-recipe-card__ingredients__pictures"], [1, "miam-recipe-card__ingredients__picture"], ["class", "miam-recipe-card__ingredients__more", 4, "ngIf"], [1, "miam-recipe-card__ingredients__more"], [1, "miam-recipe-card__left__col__counter"], [3, "counter", "counterChange"], [1, "miam-recipe-card__right__col__price"], [3, "recipe", "serves"]]; }, template: function RecipeCardComponent_Template(rf, ctx) { if (rf & 1) {
|
|
522
|
-
i0.ɵɵtemplate(0, RecipeCardComponent_div_0_Template, 27, 21, "div", 0);
|
|
523
|
-
i0.ɵɵtemplate(1, RecipeCardComponent_ng_template_1_Template, 1, 0, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
|
|
414
|
+
i18n_4 = $localize `:␟46efff5fa5083a75f9b3497de381be0182e38fac␟2091641344398253510:Une recette propoposée par`;
|
|
415
|
+
} return [[1, "miam-recipe-card"], ["class", "miam-recipe-card__container", 4, "ngIf"], ["class", "miam-recipe-card__sponsor", 4, "ngIf"], [3, "close", "actionTriggered", 4, "ngIf"], [1, "miam-recipe-card__container"], [1, "miam-recipe-card__top", 3, "click"], [1, "miam-recipe-card__picture"], ["loading", "lazy", 3, "src"], [1, "miam-recipe-card__gradient"], [1, "miam-recipe-card__content"], [1, "miam-recipe-card__like"], ["class", "miam-recipe-card__actions__icon", 3, "click", 4, "ngIf", "ngIfElse"], ["like", ""], [1, "miam-recipe-card__picture__bottom"], [1, "miam-recipe-card__title", "miam-ds-text", "weight-xxl", "size-m"], [1, "miam-recipe-card__counter"], [1, "miam-ds-text", "weight-xxl", "size-m"], ["src", "https://storage.googleapis.com/assets.miam.tech/generic/icons/recipe-counter.svg", "alt", "people"], [1, "miam-recipe-card__bottom", 3, "click"], ["class", "miam-recipe-card__ingredients__pictures", 4, "ngIf"], [1, "miam-recipe-card__actions"], ["class", "miam-recipe-card__price", 4, "ngIf"], [1, "miam-recipe-card__cta"], [3, "recipe", "previewAllowed", "displayGuests", "helpButtonAllowed", "displayed", "clicked", 4, "ngIf"], ["class", "miam-recipe-card__actions__replace", 4, "ngIf"], ["class", "miam-ds-button primary reverse", 3, "click", 4, "ngIf"], [1, "miam-recipe-card__actions__icon", 3, "click"], ["primaryColor", "var(--m-color-primary)", 3, "iconName"], ["class", "miam-recipe-card__actions__icon", 3, "recipe", "originTrace", "width", "height", 4, "ngIf"], [1, "miam-recipe-card__actions__icon", 3, "recipe", "originTrace", "width", "height"], [1, "miam-recipe-card__ingredients__pictures"], [1, "miam-recipe-card__ingredients__picture"], [3, "src"], ["class", "miam-recipe-card__ingredients__more", 4, "ngIf"], [1, "miam-recipe-card__ingredients__more"], [1, "miam-recipe-card__price"], [1, "miam-ds-text", "weight-xxl", 3, "recipeId", "serves"], [3, "recipe", "previewAllowed", "displayGuests", "helpButtonAllowed", "displayed", "clicked"], [1, "miam-recipe-card__actions__replace"], [1, "miam-ds-button", "primary", "reverse", "square", 3, "click"], [1, "miam-ds-button", "primary", "reverse", 3, "click"], i18n_0, i18n_2, [1, "miam-recipe-card__sponsor"], [1, "miam-recipe-card__sponsor__text"], i18n_4, [1, "miam-recipe-card__sponsor__logo"], [3, "close", "actionTriggered"]]; }, template: function RecipeCardComponent_Template(rf, ctx) { if (rf & 1) {
|
|
416
|
+
i0.ɵɵelementStart(0, "div", 0);
|
|
417
|
+
i0.ɵɵtemplate(1, RecipeCardComponent_div_1_Template, 26, 10, "div", 1);
|
|
418
|
+
i0.ɵɵtemplate(2, RecipeCardComponent_div_2_Template, 6, 1, "div", 2);
|
|
419
|
+
i0.ɵɵtemplate(3, RecipeCardComponent_ng_miam_actions_popin_3_Template, 1, 0, "ng-miam-actions-popin", 3);
|
|
420
|
+
i0.ɵɵelementEnd();
|
|
524
421
|
} if (rf & 2) {
|
|
525
|
-
i0.ɵɵ
|
|
526
|
-
|
|
422
|
+
i0.ɵɵadvance(1);
|
|
423
|
+
i0.ɵɵproperty("ngIf", ctx.recipe);
|
|
424
|
+
i0.ɵɵadvance(1);
|
|
425
|
+
i0.ɵɵproperty("ngIf", ctx.recipe == null ? null : ctx.recipe.sponsorLogoUrl);
|
|
426
|
+
i0.ɵɵadvance(1);
|
|
427
|
+
i0.ɵɵproperty("ngIf", ctx.actionsOpened);
|
|
428
|
+
} }, directives: [i2.NgIf, i3.IconComponent, i4.LikeButtonComponent, i5.RecipePricingComponent, i6.RecipeCardCtaComponent, i7.ActionsPopinComponent], pipes: [i2.AsyncPipe], styles: [".miam-recipe-card{align-items:flex-start;border-radius:8px;cursor:pointer;display:flex;flex-direction:column;flex-shrink:0;height:500px;overflow:hidden;position:relative;width:308px}.miam-recipe-card .miam-recipe-card__container{align-self:stretch;display:flex;flex-direction:column;flex-shrink:0;height:100%;width:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top{flex:1;height:calc(100% - 72px);position:relative}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__picture{height:100%;width:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__picture img{-o-object-fit:cover;height:100%;object-fit:cover;width:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__gradient{background:linear-gradient(180deg,transparent 43.67%,rgba(0,0,0,.4) 91.33%);height:100%;left:0;position:absolute;top:0;width:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content{align-items:flex-end;display:flex;flex-direction:column;height:100%;justify-content:space-between;left:0;position:absolute;top:0;width:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__like{margin:16px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom{align-items:flex-end;box-sizing:border-box;display:flex;justify-content:space-between;padding:12px;width:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom .miam-recipe-card__title{-webkit-box-orient:vertical;-webkit-line-clamp:2;color:var(--miam-ds-color-neutral-white,#fff);display:-webkit-box;overflow:hidden;text-overflow:ellipsis;text-shadow:0 2px 8px rgba(0,0,0,.15)}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom .miam-recipe-card__counter{align-items:center;background:var(--miam-ds-color-neutral-white,#fff);border-radius:100px;color:var(--miam-color-neutral-black);display:flex;gap:4px;height:-moz-fit-content;height:fit-content;padding:4px 8px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom .miam-recipe-card__counter span{line-height:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__top .miam-recipe-card__content .miam-recipe-card__picture__bottom .miam-recipe-card__counter img{height:16px;width:16px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom{align-items:flex-start;border-bottom:1px solid var(--borders-default,#d9dde1);border-left:1px solid var(--borders-default,#d9dde1);border-radius:0 0 8px 8px;border-right:1px solid var(--borders-default,#d9dde1);box-sizing:border-box;display:flex;flex-direction:column;height:72px;justify-content:center;padding:12px;width:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions{align-items:center;align-self:stretch;display:flex;justify-content:space-between}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__price{color:var(--miam-ds-color-primary);line-height:100%;margin-right:4px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__price .miam-recipe-pricing{max-width:70px}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__price .miam-recipe-pricing .miam-recipe-pricing__wrapper .miam-recipe-pricing__wrapper__subline{color:rgba(31,53,67,.5);font-weight:500;line-height:100%}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__actions__replace{align-items:center;display:flex}.miam-recipe-card .miam-recipe-card__container .miam-recipe-card__bottom .miam-recipe-card__actions .miam-recipe-card__actions__replace button.square{margin-right:24px}"], encapsulation: 2, changeDetection: 0 });
|
|
527
429
|
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(RecipeCardComponent, [{
|
|
528
430
|
type: Component,
|
|
529
431
|
args: [{
|
|
@@ -533,19 +435,39 @@ RecipeCardComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeCardComponent,
|
|
|
533
435
|
encapsulation: ViewEncapsulation.None,
|
|
534
436
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
535
437
|
}]
|
|
536
|
-
}], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.RecipesService }, { type: i1.
|
|
438
|
+
}], function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.RecipesService }, { type: i1.BasketsService }, { type: i1.UserService }, { type: i1.ContextService }, { type: i1.AnalyticsService }, { type: i0.ElementRef }, { type: i1.ScrollingService }]; }, { recipeId: [{
|
|
537
439
|
type: Input
|
|
538
440
|
}], recipe: [{
|
|
539
441
|
type: Input
|
|
442
|
+
}], randomModeEnable: [{
|
|
443
|
+
type: Input
|
|
444
|
+
}], productIds: [{
|
|
445
|
+
type: Input
|
|
540
446
|
}], previewAllowed: [{
|
|
541
447
|
type: Input
|
|
542
448
|
}], helpButtonAllowed: [{
|
|
543
449
|
type: Input
|
|
450
|
+
}], displayPricing: [{
|
|
451
|
+
type: Input
|
|
452
|
+
}], displayGuests: [{
|
|
453
|
+
type: Input
|
|
454
|
+
}], addRecipeMode: [{
|
|
455
|
+
type: Input
|
|
456
|
+
}], replaceMode: [{
|
|
457
|
+
type: Input
|
|
544
458
|
}], removedFromFavorite: [{
|
|
545
459
|
type: Output
|
|
546
460
|
}], displayed: [{
|
|
547
461
|
type: Output
|
|
548
|
-
}],
|
|
462
|
+
}], actionTriggered: [{
|
|
463
|
+
type: Output
|
|
464
|
+
}], removeFromMealsPlanner: [{
|
|
465
|
+
type: Output
|
|
466
|
+
}], addToMealsPlanner: [{
|
|
467
|
+
type: Output
|
|
468
|
+
}], openCatalog: [{
|
|
469
|
+
type: Output
|
|
470
|
+
}], hide: [{
|
|
549
471
|
type: Output
|
|
550
472
|
}] }); })();
|
|
551
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNhcmRzL3JlY2lwZS1jYXJkL3JlY2lwZS1jYXJkLmNvbXBvbmVudC50cyIsImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNhcmRzL3JlY2lwZS1jYXJkL3JlY2lwZS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsS0FBSyxFQUVMLE1BQU0sRUFDTixZQUFZLEVBQ1osVUFBVSxFQUNYLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBQzVHLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLG1CQUFtQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMvSSxPQUFPLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFCLE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7Ozs7O0lDTnBFLCtCQUNFO0lBQUEsbUNBQXVHO0lBQ3pHLGlCQUFNOzs7SUFEVSxlQUF1QjtJQUF2Qiw2Q0FBdUIsY0FBQSxlQUFBOzs7SUFJckMsMENBQ3NCOzs7SUFENkUsdUNBQWlCLHFDQUFBOzs7SUFJdEgsK0JBQ0U7SUFBQSwwQkFDRjtJQUFBLGlCQUFNOzs7SUFEQyxlQUE2QjtJQUE3QixxRUFBNkI7OztJQUdwQywr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LENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2pCLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQ0gsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFDckIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFO2dCQUNmLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQzthQUN4QjtZQUNELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztzRkFyR1UsbUJBQW1CO3dEQUFuQixtQkFBbUI7Ozs7O2lCQzBCb0MsVUFBQSw4RUFBYTs7Ozs7O2lCQVFYLFVBQUEsbUZBQWtCOzs7Ozs7aUJBUXBCLFVBQUEseUVBQVE7Ozs7OztpQkFRUixVQUFBLDhFQUFhOztRQTVGakYsc0VBQ0U7UUFrSkYscUhBQ0U7O1FBcEpHLG1DQUFnQjs7a0REMENSLG1CQUFtQjtjQVIvQixTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLHFCQUFxQjtnQkFDL0IsV0FBVyxFQUFFLDhCQUE4QjtnQkFDM0MsU0FBUyxFQUFFLENBQUMsOEJBQThCLENBQUM7Z0JBQzNDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDtzUkFHVSxRQUFRO2tCQUFoQixLQUFLO1lBQ0csTUFBTTtrQkFBZCxLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLGlCQUFpQjtrQkFBekIsS0FBSztZQUNJLG1CQUFtQjtrQkFBNUIsTUFBTTtZQUNHLFNBQVM7a0JBQWxCLE1BQU07WUFDRyxhQUFhO2tCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgRWxlbWVudFJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFic3RyYWN0UmVjaXBlQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19jb21wb25lbnRzL2Fic3RyYWN0cy9hYnN0cmFjdC1yZWNpcGUtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVjaXBlIH0gZnJvbSAnLi4vLi4vLi4vX21vZGVscyc7XG5pbXBvcnQgeyBBbmFseXRpY3NTZXJ2aWNlLCBDb250ZXh0U2VydmljZSwgR3JvY2VyaWVzTGlzdHNTZXJ2aWNlLCBSZWNpcGVFdmVudHNTZXJ2aWNlLCBSZWNpcGVzU2VydmljZSwgVXNlclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9fc2VydmljZXMnO1xuaW1wb3J0IHsgb2YgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHNraXBXaGlsZSwgY2F0Y2hFcnJvciwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5jb25zdCByZWNpcGVJbmNsdWRlcyA9IFsncmVjaXBlLXByb3ZpZGVyJywgJ3Nwb25zb3JzJ107XG5jb25zdCByZWNpcGVTcGFyc2VGaWVsZHMgPSB7XG4gIHJlY2lwZXM6IFsndGl0bGUnLCAnbnVtYmVyLW9mLWd1ZXN0cycsICdtZWRpYS11cmwnLCAndmlkZW8taWQnLCAnZmlsaWdyYW5lLWxvZ28tdXJsJywgJ2RpZmZpY3VsdHknLCAncHJlcGFyYXRpb24tdGltZScsICdjb29raW5nLXRpbWUnLFxuICAgICAgICAgICAgJ3Jlc3RpbmctdGltZScsIC4uLnJlY2lwZUluY2x1ZGVzXSxcbiAgc3BvbnNvcnM6IFsnbG9nby11cmwnXSxcbiAgWydyZWNpcGUtcHJvdmlkZXInXTogWyduYW1lJ11cbn07XG5cbi8qKlxuICogVGhpcyBpcyBhbiBhbmd1bGFyIGNvbXBvbmVudCBkZXNpZ24gdG8gYmUgYSB3ZWIgY29tcG9uZW50XG4gKiB0aGF0J3Mgd2h5IHdlIHVzZSBvblB1c2hTdHJhdGVnaWUgd2l0aCB0aGUgY2hhbmdlRGV0ZXRlY3RvclJlZlxuICogdG8gYXZvaWQgY29tbW9uIGlzc3VlXG4gKiBndWlkZSAtPiBodHRwczovL25ldGJhc2FsLmNvbS9hLWNvbXByZWhlbnNpdmUtZ3VpZGUtdG8tYW5ndWxhci1vbnB1c2gtY2hhbmdlLWRldGVjdGlvbi1zdHJhdGVneS01YmFjNDkzMDc0YTRcbiAqIGFuZCBhbHNvdyB3ZSB1c2UgU2hhZG93RG9tIHRvIHByb3RlY3Qgc3R5bGUgb2Ygb3VyIGNvbXBvbmVudFxuICogYW5kIGFsc293IHN0eWxlIG9mIHRoZSBwYXJlbnQgYXBsaWNhdGlvbiB0aGF0IHdpbGwgdXNlIGl0XG4gKiBkb2MgLT4gaHR0cHM6Ly9hbmd1bGFyLmlvL2FwaS9jb3JlL1ZpZXdFbmNhcHN1bGF0aW9uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25nLW1pYW0tcmVjaXBlLWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVjaXBlLWNhcmQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZWNpcGUtY2FyZC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcblxuZXhwb3J0IGNsYXNzIFJlY2lwZUNhcmRDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdFJlY2lwZUNhcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSByZWNpcGVJZDogc3RyaW5nO1xuICBASW5wdXQoKSByZWNpcGU6IFJlY2lwZTtcbiAgQElucHV0KCkgcHJldmlld0FsbG93ZWQgPSB0cnVlO1xuICBASW5wdXQoKSBoZWxwQnV0dG9uQWxsb3dlZCA9IHRydWU7XG4gIEBPdXRwdXQoKSByZW1vdmVkRnJvbUZhdm9yaXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGRpc3BsYXllZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgQE91dHB1dCgpIGd1ZXN0c0NoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBpc2xvYWRlZCA9IGZhbHNlO1xuICBjYXJkVHlwZSA9ICdzdWdnZXN0aW9uLWNhcmQnO1xuICBwcmltYXJ5QnV0dG9uQ2xpY2tlZCQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHVibGljIHJlY2lwZVNlcnZpY2U6IFJlY2lwZXNTZXJ2aWNlLFxuICAgIHB1YmxpYyByZWNpcGVFdmVudHNTZXJ2aWNlOiBSZWNpcGVFdmVudHNTZXJ2aWNlLFxuICAgIHB1YmxpYyBncm9jZXJpZXNMaXN0c1NlcnZpY2U6IEdyb2Nlcmllc0xpc3RzU2VydmljZSxcbiAgICBwdWJsaWMgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UsXG4gICAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICkge1xuICAgIHN1cGVyKGNkciwgcmVjaXBlU2VydmljZSwgcmVjaXBlRXZlbnRzU2VydmljZSwgZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLCBjb250ZXh0U2VydmljZSxcbiAgICAgIGFuYWx5dGljc1NlcnZpY2UsIGVsZW1lbnQpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5yZWNpcGVTZXJ2aWNlLmRpc3BsYXllZFJlY2lwZUNoYW5nZWQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgaWYgKHRoaXMucmVjaXBlKSB7XG4gICAgICB0aGlzLnJlY2lwZVdhc0xvYWRlZCgpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLnJlY2lwZUlkKSB7XG4gICAgICB0aGlzLmxvYWRSZWNpcGUoKTtcbiAgICB9XG4gIH1cblxuICByZWNpcGVXYXNMb2FkZWQoKSB7XG4gICAgdGhpcy5yZWNpcGUubW9kaWZpZWRHdWVzdHMgfHw9ICt0aGlzLnJlY2lwZS5ndWVzdHM7XG4gICAgdGhpcy5pc2xvYWRlZCA9IHRydWU7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmVtb3ZlRnJvbUZhdm9yaXRlKCkge1xuICAgIHRoaXMucmVtb3ZlZEZyb21GYXZvcml0ZS5lbWl0KHRoaXMucmVjaXBlKTtcbiAgfVxuXG4gIG9wZW5SZWNpcGUoKSB7XG4gICAgY29uc3QgdmlkZW9FdmVudCA9IHRoaXMuY29udGV4dFNlcnZpY2UudmlkZW9SZWNpcGVzRW5hYmxlZCAmJiB0aGlzLnJlY2lwZS52aWRlb0lkO1xuICAgIHRoaXMucmVjaXBlU2VydmljZS5kaXNwbGF5T2JqZWN0KFxuICAgICAgdGhpcy5yZWNpcGUsXG4gICAgICB7IHByZXZpZXdBbGxvd2VkOiB0aGlzLnByZXZpZXdBbGxvd2VkLCBndWVzdHM6IHRoaXMucmVjaXBlLm1vZGlmaWVkR3Vlc3RzLCBkaXNwbGF5R3Vlc3RzOiB0aGlzLmRpc3BsYXlHdWVzdHMsIGhlbHBCdXR0b25BbGxvd2VkOiB0aGlzLmhlbHBCdXR0b25BbGxvd2VkIH0sXG4gICAgICB0aGlzLmV2ZW50VHJhY2UoKVxuICAgICk7XG4gICAgdGhpcy5kaXNwbGF5ZWQuZW1pdCgpO1xuICB9XG5cbiAgdXBkYXRlR3Vlc3RzKGNvdW50OiBudW1iZXIpIHtcbiAgICB0aGlzLnJlY2lwZS5tb2RpZmllZEd1ZXN0cyA9IGNvdW50O1xuICAgIGlmICh0aGlzLnJlY2lwZUlkKSB7IHRoaXMuX3VwZGF0ZUJhc2tldCgpOyB9IC8vIElmIHJlY2lwZSB3YXMgbG9hZGVkIGhlcmUsIHdlIG5lZWQgdG8gcHJvY2VzcyBiYXNrZXQgdXBkYXRlcyBoZXJlXG4gICAgdGhpcy5ndWVzdHNDaGFuZ2VkLmVtaXQoY291bnQpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIF91cGRhdGVCYXNrZXQoKSB7XG4gICAgLy8gSWYgcmVjaXBlIGFscmVhZHkgaW4gYmFza2V0LCB1cGRhdGUgdGhlIG51bWJlciBvZiBndWVzdHMgc28gdGhhdCB0aGUgcHJpY2luZyBnZXRzIHVwZGF0ZWQgYXMgd2VsbFxuICAgIC8vIChkaXNwbGF5ID0gZmFsc2Ugc28gdGhhdCB0aGUgcmVjaXBlIGRldGFpbHMgZG9uJ3Qgc2hvdyB1cClcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuZ3JvY2VyaWVzTGlzdHNTZXJ2aWNlLnJlY2lwZUlzSW5MaXN0KHRoaXMucmVjaXBlLmlkKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAocmVjaXBlSXNJbkxpc3QgPT4ge1xuICAgICAgICAgIGlmIChyZWNpcGVJc0luTGlzdCl7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ncm9jZXJpZXNMaXN0c1NlcnZpY2UuYXBwZW5kUmVjaXBlVG9MaXN0KHRoaXMucmVjaXBlLmlkLCB0aGlzLnJlY2lwZS5tb2RpZmllZEd1ZXN0cywgdGhpcy5ldmVudFRyYWNlKCkpXG4gICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUmVjaXBlKCkge1xuICAgIGlmICh0aGlzLmNvbnRleHRTZXJ2aWNlLmRpc3BsYXlJbmdyZWRpZW50UGljdHVyZXNPblJlY2lwZUNhcmRzICYmICFyZWNpcGVJbmNsdWRlcy5pbmNsdWRlcygnaW5ncmVkaWVudHMnKSkge1xuICAgICAgcmVjaXBlSW5jbHVkZXMucHVzaCgnaW5ncmVkaWVudHMnKTtcbiAgICAgIHJlY2lwZVNwYXJzZUZpZWxkcy5yZWNpcGVzLnB1c2goJ2luZ3JlZGllbnRzJyk7XG4gICAgICByZWNpcGVTcGFyc2VGaWVsZHNbJ2luZ3JlZGllbnRzJ10gPSBbJ25hbWUnLCAncXVhbnRpdHknLCAndW5pdCcsICdhY3RpdmUnLCAnZm9yY2VkLWVhbnMnLCAncGljdHVyZS11cmwnLCAncG9zaXRpb24nXTtcbiAgICB9XG4gICAgdGhpcy5yZWNpcGVTZXJ2aWNlLmdldCh0aGlzLnJlY2lwZUlkLFxuICAgICAgeyBpbmNsdWRlOiByZWNpcGVJbmNsdWRlcywgZmllbGRzOiByZWNpcGVTcGFyc2VGaWVsZHMgfVxuICAgICAgKS5waXBlKFxuICAgIHNraXBXaGlsZShyZXN1bHQgPT4gcmVzdWx0LmlzX2xvYWRpbmcpLFxuICAgIGNhdGNoRXJyb3IoIGVyciA9PiB7XG4gICAgICB0aGlzLmhpZGUuZW1pdCgpO1xuICAgICAgcmV0dXJuIG9mKGVycik7XG4gICAgICB9KSxcbiAgICApLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5yZWNpcGUgPSByZXN1bHQ7XG4gICAgICBpZiAodGhpcy5yZWNpcGUpIHtcbiAgICAgICAgdGhpcy5yZWNpcGVXYXNMb2FkZWQoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiAqbmdJZj0naXNsb2FkZWQnIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZFwiPlxuICA8IS0tIEJvb2ttYXJrIC0tPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fYm9va21hcmtcIj5cbiAgICA8aW1nIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvcmVjaXBlLWNhcmQvQm9va21hcmsuc3ZnXCIgYWx0PVwiSWTDqWVzIHJlcGFzXCI+XG4gIDwvZGl2PlxuICA8ZGl2ICpuZ0lmPVwicmVjaXBlIGVsc2UgcGljdFNrZWxldG9uXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19waWN0dXJlXCIgKGNsaWNrKT1cIm9wZW5SZWNpcGUoKVwiPlxuICAgIDwhLS0gUGljdHVyZSAtLT5cbiAgICA8aW1nIFtzcmNdPVwicmVjaXBlPy5hdHRyaWJ1dGVzWydtZWRpYS11cmwnXVwiIGxvYWRpbmc9XCJsYXp5XCI+XG4gICAgPCEtLSBWaWRlbyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwiY29udGV4dFNlcnZpY2UudmlkZW9SZWNpcGVzRW5hYmxlZCAmJiByZWNpcGU/LnZpZGVvSWRcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3BpY3R1cmVfX3ZpZGVvXCI+XG4gICAgICA8bmctbWlhbS1pY29uIFtpY29uTmFtZV09XCJpY29uLlZpZGVvXCIgW3dpZHRoXT1cIjEwMFwiIFtoZWlnaHRdPVwiMTAwXCIgcHJpbWFyeUNvbG9yPSdibGFjayc+PC9uZy1taWFtLWljb24+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBMaWtlIGJ1dHRvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fcGljdHVyZV9fYWN0aW9uc1wiPlxuICAgICAgPG5nLW1pYW0tbGlrZS1idXR0b24gKm5nSWY9XCJ1c2VyU2VydmljZS5pc0xvZ2dlZCQgfCBhc3luY1wiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fYWN0aW9uc19faWNvblwiIFtyZWNpcGVdPSdyZWNpcGUnIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlKClcIj5cbiAgICAgIDwvbmctbWlhbS1saWtlLWJ1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8IS0tIFNwb25zb3IgbG9nbyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlLnNwb25zb3JMb2dvVXJsXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19waWN0dXJlX19zcG9uc29yXCI+XG4gICAgICA8aW1nIFtzcmNdPVwicmVjaXBlLnNwb25zb3JMb2dvVXJsXCI+XG4gICAgPC9kaXY+XG4gICAgPCEtLSBGaWxpZ3JhbmUgbG9nbyAtLT5cbiAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlLmZpbGlncmFuZUxvZ29VcmxcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3BpY3R1cmVfX2ZpbGlncmFuZVwiPlxuICAgICAgPGltZyBbc3JjXT1cInJlY2lwZS5maWxpZ3JhbmVMb2dvVXJsXCI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI3BpY3RTa2VsZXRvbj5cbiAgICA8bmctbWlhbS1za2VsZXRvbiBbdHlwZV09J3NrZWxldG9uLlBpY3R1cmUnPjwvbmctbWlhbS1za2VsZXRvbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2F0dHJpYnV0ZXNcIj5cbiAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlIGVsc2UgdGV4dFNrZWxldG9uXCI+XG4gICAgICA8IS0tIFRpdGxlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2F0dHJpYnV0ZXNfX3RpdGxlXCIgKGNsaWNrKT1cIm9wZW5SZWNpcGUoKVwiPlxuICAgICAgICB7e3JlY2lwZT8uYXR0cmlidXRlc1sndGl0bGUnXX19XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8bmctdGVtcGxhdGUgI3RleHRTa2VsZXRvbj5cbiAgICAgIDxuZy1taWFtLXNrZWxldG9uIFt0eXBlXT0nc2tlbGV0b24uVGV4dCc+PC9uZy1taWFtLXNrZWxldG9uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2F0dHJpYnV0ZXNfX2luZm9zXCI+XG4gICAgICA8IS0tIFRvdGFsIHRpbWUgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPSdyZWNpcGUgZWxzZSBza2VsZXRvbkluZm8nIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fYXR0cmlidXRlc19faW5mbyAgcmVjaXBlX190b3RhbF9fdGltZVwiPlxuICAgICAgICA8bmctbWlhbS1pY29uIFt3aWR0aF09XCIyMFwiIFtoZWlnaHRdPVwiMjBcIiBbaWNvbk5hbWVdPVwiaWNvbi5UaW1lXCI+PC9uZy1taWFtLWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9faW5mb19fbGFiZWxcIj57eyByZWNpcGU/LnRvdGFsVGltZSB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLSBEaWZmaWN1bHR5IC0tPlxuICAgICAgPGRpdiAqbmdJZj0ncmVjaXBlIGVsc2Ugc2tlbGV0b25JbmZvJyBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2F0dHJpYnV0ZXNfX2luZm8gcmVjaXBlX19kaWZmaWN1bHR5XCIgW25nQ2xhc3NdPVwieyAnZWFzeSc6IHJlY2lwZT8uZGlmZmljdWx0eSA9PT0gMSxcbiAgICAgICdtZWRpdW0nOiByZWNpcGU/LmRpZmZpY3VsdHkgPT09IDIsICdoYXJkJzogcmVjaXBlPy5kaWZmaWN1bHR5ID09PSAzIH1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicmVjaXBlPy5kaWZmaWN1bHR5XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiMlwiPlxuICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBbd2lkdGhdPVwiNjBcIiBbaGVpZ2h0XT1cIjIwXCIgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLWJsYWNrKSdcbiAgICAgICAgICAgICAgW2ljb25OYW1lXT1cImljb24uRGlmZmljdWx0eU1lZGl1bVwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIjNcIj5cbiAgICAgICAgICAgIDxuZy1taWFtLWljb24gW3dpZHRoXT1cIjYwXCIgW2hlaWdodF09XCIyMFwiIHByaW1hcnlDb2xvcj0ndmFyKC0tbS1jb2xvci1ibGFjayknXG4gICAgICAgICAgICAgIFtpY29uTmFtZV09XCJpY29uLkRpZmZpY3VsdHlIaWdoXCI+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBbd2lkdGhdPVwiNjBcIiBbaGVpZ2h0XT1cIjIwXCIgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLWJsYWNrKSdcbiAgICAgICAgICAgICAgW2ljb25OYW1lXT1cImljb24uRGlmZmljdWx0eUxvd1wiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicmVjaXBlPy5kaWZmaWN1bHR5XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiMVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBlYXN5XCIgKm5nSWY9XCJyZWNpcGVTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHNbMF0/LmxhYmVsICE9PSAnQ2hlZiBkw6lidXRhbnQnIGVsc2UgZGlmZmljdWx0eUVhc3lEZWZhdWx0XCI+XG4gICAgICAgICAgICAgIHt7cmVjaXBlU2VydmljZS5kaWZmaWN1bHR5TGV2ZWxzWzBdLmxhYmVsfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGlmZmljdWx0eUVhc3lEZWZhdWx0PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZm9fX2xhYmVsIGVhc3lcIiBpMThuPkNoZWYgZMOpYnV0YW50PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZm9fX2xhYmVsIG1lZGl1bVwiICpuZ0lmPVwicmVjaXBlU2VydmljZS5kaWZmaWN1bHR5TGV2ZWxzWzFdPy5sYWJlbCAhPT0gJ0NoZWYgaW50ZXJtw6lkaWFpcmUnIGVsc2UgZGlmZmljdWx0eU1lZGl1bURlZmF1bHRcIj5cbiAgICAgICAgICAgICAge3tyZWNpcGVTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHNbMV0ubGFiZWx9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaWZmaWN1bHR5TWVkaXVtRGVmYXVsdD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBtZWRpdW1cIiBpMThuPkNoZWYgaW50ZXJtw6lkaWFpcmU8L3NwYW4+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIjNcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9faW5mb19fbGFiZWwgaGFyZFwiICpuZ0lmPVwicmVjaXBlU2VydmljZS5kaWZmaWN1bHR5TGV2ZWxzWzJdPy5sYWJlbCAhPT0gJ1RvcCBjaGVmJyBlbHNlIGRpZmZpY3VsdHlIYXJkRGVmYXVsdFwiPlxuICAgICAgICAgICAgICB7e3JlY2lwZVNlcnZpY2UuZGlmZmljdWx0eUxldmVsc1syXS5sYWJlbH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RpZmZpY3VsdHlIYXJkRGVmYXVsdD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBoYXJkXCIgaTE4bj5Ub3AgY2hlZjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBlYXN5XCIgKm5nSWY9XCJyZWNpcGVTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHNbMF0/LmxhYmVsICE9PSAnQ2hlZiBkw6lidXRhbnQnIGVsc2UgZGlmZmljdWx0eURlZmF1bHRcIj5cbiAgICAgICAgICAgICAge3tyZWNpcGVTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHNbMF0ubGFiZWx9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaWZmaWN1bHR5RGVmYXVsdD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBlYXN5XCIgaTE4bj5DaGVmIGTDqWJ1dGFudDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3NrZWxldG9uSW5mbz5cbiAgICAgICAgPG5nLW1pYW0tc2tlbGV0b24gW3R5cGVdPSdza2VsZXRvbj8uSWNvbldpdGhJbmZvJz48L25nLW1pYW0tc2tlbGV0b24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19hdHRyaWJ1dGVzX19jb250cm9sXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fY29udHJvbF9fbGVmdF9fY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19sZWZ0X19jb2xfX2N1c3RvbVwiPlxuICAgICAgICAgIDwhLS0gSGVscGVyIC0tPlxuICAgICAgICAgIDxkaXYgKGNsaWNrKT1cInRvZ2dsZUhlbHBlcigpXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19oZWxwXCI+XG4gICAgICAgICAgICA8bmctbWlhbS1pY29uIFt3aWR0aF09XCIyNFwiIFtoZWlnaHRdPVwiMjRcIiBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3ItZ3JleTAyKScgc2Vjb25kYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3ItZ3JleTA3KSdcbiAgICAgICAgICAgIFtpY29uTmFtZV09XCJpY29uLkhlbHBcIj48L25nLW1pYW0taWNvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIEluZ3JlZGllbnQgcGljdHVyZXMgLS0+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgKm5nSWY9XCJjb250ZXh0U2VydmljZS5kaXNwbGF5SW5ncmVkaWVudFBpY3R1cmVzT25SZWNpcGVDYXJkcyAmJiByZWNpcGU/Lm1vZGlmaWVkSW5ncmVkaWVudHM/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmdyZWRpZW50c19fcGljdHVyZXNcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmdyZWRpZW50c19fcGljdHVyZVwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaW5ncmVkaWVudFBpY3R1cmUocmVjaXBlLm1vZGlmaWVkSW5ncmVkaWVudHNbMF0pXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmdyZWRpZW50c19fcGljdHVyZVwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaW5ncmVkaWVudFBpY3R1cmUocmVjaXBlLm1vZGlmaWVkSW5ncmVkaWVudHNbMV0pXCI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmdyZWRpZW50c19fbW9yZVwiICpuZ0lmPVwicmVjaXBlLm1vZGlmaWVkSW5ncmVkaWVudHMubGVuZ3RoID4gMlwiPlxuICAgICAgICAgICAgICArIHt7cmVjaXBlLm1vZGlmaWVkSW5ncmVkaWVudHMubGVuZ3RoIC0gMn19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gQ291bnRlciBpbnB1dCAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj0ncmVjaXBlIGVsc2Ugc2tlbGV0b25jb3VudGVyJyBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2xlZnRfX2NvbF9fY291bnRlclwiPlxuICAgICAgICAgIDxuZy1taWFtLWNvdW50ZXItaW5wdXQgW2NvdW50ZXJdPVwicmVjaXBlLm1vZGlmaWVkR3Vlc3RzXCIgKGNvdW50ZXJDaGFuZ2UpPVwidXBkYXRlR3Vlc3RzKCRldmVudClcIj48L25nLW1pYW0tY291bnRlci1pbnB1dD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2tlbGV0b25jb3VudGVyPlxuICAgICAgICAgIDxuZy1taWFtLXNrZWxldG9uIFt0eXBlXT0nc2tlbGV0b24/Lkljb25XaXRoSW5mbyc+PC9uZy1taWFtLXNrZWxldG9uPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fY29udHJvbF9fcmlnaHRfX2NvbFwiPlxuICAgICAgICA8IS0tIFByaWNlIC0tPlxuICAgICAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlICYmIGRpc3BsYXlQcmljaW5nXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19yaWdodF9fY29sX19wcmljZVwiPlxuICAgICAgICAgIDxuZy1taWFtLXJlY2lwZS1wcmljaW5nIFtyZWNpcGVdPVwicmVjaXBlXCIgW3NlcnZlc109XCJyZWNpcGU/Lm1vZGlmaWVkR3Vlc3RzXCI+PC9uZy1taWFtLXJlY2lwZS1wcmljaW5nPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS0gQWRkIHRvIGJhc2tldCAtLT5cbiAgICA8bmctbWlhbS1yZWNpcGUtY2FyZC1jdGEgW3JlY2lwZV09XCJyZWNpcGVcIiBbY2FyZFR5cGVdPVwiY2FyZFR5cGVcIiBbcHJldmlld0FsbG93ZWRdPVwicHJldmlld0FsbG93ZWRcIlxuICAgICAgW2Rpc3BsYXlHdWVzdHNdPVwiZGlzcGxheUd1ZXN0c1wiIFtoZWxwQnV0dG9uQWxsb3dlZF09XCJoZWxwQnV0dG9uQWxsb3dlZFwiIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlKClcIlxuICAgICAgKGRpc3BsYXllZCk9XCJkaXNwbGF5ZWQuZW1pdCgpXCIgKGNsaWNrZWQpPVwicHJpbWFyeUJ1dHRvbkNsaWNrZWQkLmVtaXQoJGV2ZW50KVwiPlxuICAgIDwvbmctbWlhbS1yZWNpcGUtY2FyZC1jdGE+XG4gIDwvZGl2PlxuPC9kaXY+XG48bmctdGVtcGxhdGUgI2NvcnM+XG4gIDxuZy1taWFtLWNvcnMtb3ZlcmxheT48L25nLW1pYW0tY29ycy1vdmVybGF5PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
473
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWNhcmQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNhcmRzL3JlY2lwZS1jYXJkL3JlY2lwZS1jYXJkLmNvbXBvbmVudC50cyIsImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNhcmRzL3JlY2lwZS1jYXJkL3JlY2lwZS1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsaUJBQWlCLEVBQUUsdUJBQXVCLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUNsRixNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQTRCLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUM3RixPQUFPLEVBQUUsTUFBTSxFQUF3QixNQUFNLGtCQUFrQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUVySSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7Ozs7Ozs7Ozs7O0lDb0p2QywrQkFFRTtJQURBLGlOQUFtQztJQUNuQyxtQ0FBaUk7SUFDbkksaUJBQU07OztJQURVLGVBQTZEO0lBQTdELGdHQUE2RDs7O0lBRzNFLDBDQUVzQjs7O0lBRDBELHVDQUFpQixxQ0FBQSxhQUFBLGNBQUE7OztJQURqRyx5SEFFQTs7OztJQURFLHlFQUFx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ZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07YUFDaEQ7NFFBR1UsUUFBUTtrQkFBaEIsS0FBSztZQUNHLE1BQU07a0JBQWQsS0FBSztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0csaUJBQWlCO2tCQUF6QixLQUFLO1lBQ0csY0FBYztrQkFBdEIsS0FBSztZQUNHLGFBQWE7a0JBQXJCLEtBQUs7WUFDRyxhQUFhO2tCQUFyQixLQUFLO1lBQ0csV0FBVztrQkFBbkIsS0FBSztZQUNJLG1CQUFtQjtrQkFBNUIsTUFBTTtZQUNHLFNBQVM7a0JBQWxCLE1BQU07WUFDRyxlQUFlO2tCQUF4QixNQUFNO1lBQ0csc0JBQXNCO2tCQUEvQixNQUFNO1lBQ0csaUJBQWlCO2tCQUExQixNQUFNO1lBQ0csV0FBVztrQkFBcEIsTUFBTTtZQUNHLElBQUk7a0JBQWIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdG9yUmVmLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIEVsZW1lbnRSZWYsXG4gIFNpbXBsZUNoYW5nZXMsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24sIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBza2lwV2hpbGUsIGNhdGNoRXJyb3IsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBFdmVudFRyYWNlckNvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL19jb21wb25lbnRzL2Fic3RyYWN0cy9ldmVudC10cmFjZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFJlY2lwZSwgU2ltcGxpZmllZEluZ3JlZGllbnQgfSBmcm9tICcuLi8uLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7IEFuYWx5dGljc1NlcnZpY2UsIEJhc2tldHNTZXJ2aWNlLCBDb250ZXh0U2VydmljZSwgUmVjaXBlc1NlcnZpY2UsIFNjcm9sbGluZ1NlcnZpY2UsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IEN1c3RvbVByb3BlcnRpZXMgfSBmcm9tICcuLi8uLi8uLi9fdHlwZXMvZXZlbnQtdHJhY2UnO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gJy4uLy4uLy4uL190eXBlcy9pY29uLmVudW0nO1xuXG5jb25zdCByZWNpcGVJbmNsdWRlcyA9IFsncmVjaXBlLXByb3ZpZGVyJywgJ3Nwb25zb3JzJ107XG5jb25zdCByZWNpcGVTcGFyc2VGaWVsZHMgPSB7XG4gIHJlY2lwZXM6IFsndGl0bGUnLCAnbnVtYmVyLW9mLWd1ZXN0cycsICdtZWRpYS11cmwnLCAndmlkZW8taWQnLCAnZmlsaWdyYW5lLWxvZ28tdXJsJywgJ2RpZmZpY3VsdHknLCAncHJlcGFyYXRpb24tdGltZScsICdjb29raW5nLXRpbWUnLFxuICAgICdyZXN0aW5nLXRpbWUnLCAuLi5yZWNpcGVJbmNsdWRlc10sXG4gIHNwb25zb3JzOiBbJ2xvZ28tdXJsJ10sXG4gIFsncmVjaXBlLXByb3ZpZGVyJ106IFsnbmFtZSddXG59O1xuXG4vKipcbiAqIFRoaXMgaXMgYW4gYW5ndWxhciBjb21wb25lbnQgZGVzaWduIHRvIGJlIGEgd2ViIGNvbXBvbmVudFxuICogdGhhdCdzIHdoeSB3ZSB1c2Ugb25QdXNoU3RyYXRlZ2llIHdpdGggdGhlIGNoYW5nZURldGV0ZWN0b3JSZWZcbiAqIHRvIGF2b2lkIGNvbW1vbiBpc3N1ZVxuICogZ3VpZGUgLT4gaHR0cHM6Ly9uZXRiYXNhbC5jb20vYS1jb21wcmVoZW5zaXZlLWd1aWRlLXRvLWFuZ3VsYXItb25wdXNoLWNoYW5nZS1kZXRlY3Rpb24tc3RyYXRlZ3ktNWJhYzQ5MzA3NGE0XG4gKiBhbmQgYWxzb3cgd2UgdXNlIFNoYWRvd0RvbSB0byBwcm90ZWN0IHN0eWxlIG9mIG91ciBjb21wb25lbnRcbiAqIGFuZCBhbHNvdyBzdHlsZSBvZiB0aGUgcGFyZW50IGFwbGljYXRpb24gdGhhdCB3aWxsIHVzZSBpdFxuICogZG9jIC0+IGh0dHBzOi8vYW5ndWxhci5pby9hcGkvY29yZS9WaWV3RW5jYXBzdWxhdGlvblxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLXJlY2lwZS1jYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlY2lwZS1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVjaXBlLWNhcmQuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5cbmV4cG9ydCBjbGFzcyBSZWNpcGVDYXJkQ29tcG9uZW50IGV4dGVuZHMgRXZlbnRUcmFjZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcmVjaXBlSWQ6IHN0cmluZztcbiAgQElucHV0KCkgcmVjaXBlOiBSZWNpcGU7XG4gIEBJbnB1dCgpIHJhbmRvbU1vZGVFbmFibGU6IGJvb2xlYW47XG4gIEBJbnB1dCgpIHByb2R1Y3RJZHM6IHtpZDogc3RyaW5nOyBoYXNIaWdoV2VpZ2h0PzogYm9vbGVhbn1bXTtcbiAgQElucHV0KCkgcHJldmlld0FsbG93ZWQgPSB0cnVlO1xuICBASW5wdXQoKSBoZWxwQnV0dG9uQWxsb3dlZCA9IHRydWU7XG4gIEBJbnB1dCgpIGRpc3BsYXlQcmljaW5nID0gdHJ1ZTtcbiAgQElucHV0KCkgZGlzcGxheUd1ZXN0cyA9IHRydWU7XG4gIEBJbnB1dCgpIGFkZFJlY2lwZU1vZGUgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVwbGFjZU1vZGUgPSBmYWxzZTtcbiAgQE91dHB1dCgpIHJlbW92ZWRGcm9tRmF2b3JpdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgZGlzcGxheWVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgYWN0aW9uVHJpZ2dlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSByZW1vdmVGcm9tTWVhbHNQbGFubmVyID0gbmV3IEV2ZW50RW1pdHRlcjxudWxsPigpO1xuICBAT3V0cHV0KCkgYWRkVG9NZWFsc1BsYW5uZXIgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY2lwZT4oKTtcbiAgQE91dHB1dCgpIG9wZW5DYXRhbG9nID0gbmV3IEV2ZW50RW1pdHRlcjxudWxsPigpO1xuICBAT3V0cHV0KCkgaGlkZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBpY29uID0gSWNvbjtcbiAgYWRkQnV0dG9uTG9hZGluZyA9IGZhbHNlO1xuICBhY3Rpb25zT3BlbmVkID0gZmFsc2U7XG4gIGlzbG9hZGVkID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIGFuYWx5dGljc0V2ZW50U2VudCA9IGZhbHNlO1xuICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW107XG4gIHByb3RlY3RlZCBzZW5kU2hvd0V2ZW50c09uU2Nyb2xsID0gdHJ1ZTtcbiAgcHJpdmF0ZSBvYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7XG4gIHByaW1hcnlCdXR0b25DbGlja2VkJCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgcmVjaXBlU2VydmljZTogUmVjaXBlc1NlcnZpY2UsXG4gICAgcHVibGljIGJhc2tldHNTZXJ2aWNlOiBCYXNrZXRzU2VydmljZSxcbiAgICBwdWJsaWMgdXNlclNlcnZpY2U6IFVzZXJTZXJ2aWNlLFxuICAgIHB1YmxpYyBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGFuYWx5dGljc1NlcnZpY2U6IEFuYWx5dGljc1NlcnZpY2UsXG4gICAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgIHByaXZhdGUgc2Nyb2xsU2VydmljZTogU2Nyb2xsaW5nU2VydmljZVxuICApIHtcbiAgICBzdXBlcihhbmFseXRpY3NTZXJ2aWNlKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMucmVjaXBlU2VydmljZS5kaXNwbGF5ZWRSZWNpcGVDaGFuZ2VkJC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKSk7XG4gIH1cblxuICBjdXJyZW50UGF0aCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHByb3RlY3RlZCBjdXJyZW50UHJvcHMoKTogQ3VzdG9tUHJvcGVydGllcyB7XG4gICAgcmV0dXJuIHsgcmVjaXBlX2lkOiB0aGlzLnJlY2lwZT8uaWQgfTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKHNpbXBsZUNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yZWNpcGUpIHtcbiAgICAgIHRoaXMudXBkYXRlR3Vlc3RzSWZOZWNlc3NhcnkoKTtcbiAgICAgIHRoaXMuaXNsb2FkZWQgPSB0cnVlO1xuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLnJlY2lwZUlkKSB7XG4gICAgICB0aGlzLmxvYWRSZWNpcGVGcm9tSWQoKTtcbiAgICB9XG4gICAgaWYgKCggc2ltcGxlQ2hhbmdlcy5wcm9kdWN0SWRzICYmICF0aGlzLnJhbmRvbU1vZGVFbmFibGUpIHx8ICF0aGlzLnJlY2lwZSkge1xuICAgICAgdGhpcy5sb2FkUmVjaXBlRnJvbUNvbnRleHQoKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnNjcm9sbFNlcnZpY2Uuc2Nyb2xsJC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5zZW5kU2hvd0V2ZW50c09uU2Nyb2xsKSB7IHRoaXMuc2VuZFNob3dFdmVudCgpOyB9XG4gICAgICB9KVxuICAgICk7XG5cbiAgICB0aGlzLnNlbmRTaG93RXZlbnQoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmJhc2tldHNTZXJ2aWNlLmJhc2tldCQuc3Vic2NyaWJlKCgpID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSkpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMucmVjaXBlU2VydmljZS5yZWxvYWRSZWNpcGVzJC5zdWJzY3JpYmUoc2hvdWxkUmVsb2FkID0+IHtcbiAgICAgIGlmIChzaG91bGRSZWxvYWQpIHtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0pKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHN1YiA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIERJU1BMQVkgUkVDSVBFIERFVEFJTFMgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLyAvL1xuXG4gIG9wZW5SZWNpcGUoKTogdm9pZCB7XG4gICAgLy8gY29uc3QgdmlkZW9FdmVudCA9IHRoaXMuY29udGV4dFNlcnZpY2UudmlkZW9SZWNpcGVzRW5hYmxlZCAmJiB0aGlzLnJlY2lwZS52aWRlb0lkO1xuICAgIHRoaXMucmVjaXBlU2VydmljZS5kaXNwbGF5T2JqZWN0KFxuICAgICAgdGhpcy5yZWNpcGUsXG4gICAgICB7XG4gICAgICAgIHByZXZpZXdBbGxvd2VkOiB0aGlzLnByZXZpZXdBbGxvd2VkLFxuICAgICAgICBndWVzdHM6IHRoaXMucmVjaXBlLm1vZGlmaWVkR3Vlc3RzLFxuICAgICAgICBkaXNwbGF5R3Vlc3RzOiB0aGlzLmRpc3BsYXlHdWVzdHMsXG4gICAgICAgIGhlbHBCdXR0b25BbGxvd2VkOiB0aGlzLmhlbHBCdXR0b25BbGxvd2VkXG4gICAgICB9LFxuICAgICAgdGhpcy5ldmVudFRyYWNlKClcbiAgICApO1xuICAgIHRoaXMuZGlzcGxheWVkLmVtaXQoKTtcbiAgfVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gRElTUExBWSBSRUNJUEUgREVUQUlMUyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIC8vXG5cbiAgaW5ncmVkaWVudFBpY3R1cmUoaW5ncmVkaWVudDogU2ltcGxpZmllZEluZ3JlZGllbnQpOiBzdHJpbmcge1xuICAgIHJldHVybiBpbmdyZWRpZW50LnBpY3R1cmUgfHwgdGhpcy5jb250ZXh0U2VydmljZS5kZWZhdWx0SW5ncmVkaWVudFBpY3R1cmU7XG4gIH1cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIFBFUlNPTkFMIFJFQ0lQRVMgQUNUSU9OUyBQT1BVUCAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIC8vXG5cbiAgdG9nZ2xlTW9yZUFjdGlvbnMoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5yZWNpcGUucmVsYXRpb25zaGlwc1sncmVjaXBlLXByb3ZpZGVyJ10/LmRhdGEuaWQgPT09ICdwZXJzb25hbCcpIHtcbiAgICAgIHRoaXMuYWN0aW9uc09wZW5lZCA9ICF0aGlzLmFjdGlvbnNPcGVuZWQ7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VNb3JlQWN0aW9ucygpOiB2b2lkIHtcbiAgICB0aGlzLmFjdGlvbnNPcGVuZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIENIRUNLIElGIENBUkQgRU5URVJTIFRIRSBWSUVXUE9SVCAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIC8vXG5cblxuICBwcml2YXRlIGlzSW5WaWV3cG9ydCgpOiBib29sZWFuIHtcbiAgICBjb25zdCByZWN0ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgcmV0dXJuIChcbiAgICAgIHJlY3QudG9wID49IDAgJiZcbiAgICAgIHJlY3QubGVmdCA+PSAwICYmXG4gICAgICByZWN0LmJvdHRvbSA8PSAod2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpICYmXG4gICAgICByZWN0LnJpZ2h0IDw9ICh3aW5kb3cuaW5uZXJXaWR0aCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGgpXG4gICAgKTtcbiAgfVxuXG4gIC8vIFNlbmQgYW5hbHl0aWNzIGV2ZW50IHdoZW4gOlxuICAvLyAtIG5ldyByZWNpcGUgaXMgdG8gYmUgZGlzcGxheWVkIEFORCBpcyBhbHJlYWR5IHZpc2libGUgaW4gdmlld3BvcnRcbiAgLy8gT1JcbiAgLy8gLSB1c2VyIHNjcm9sbHMgYW5kIHJlY2lwZSBiZWNvbWVzIHZpc2libGUgaW4gdmlld3BvcnRcbiAgcHJpdmF0ZSBzZW5kU2hvd0V2ZW50KCk6IGJvb2xlYW4ge1xuICAgIGlmICghdGhpcy5yZWNpcGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLmFuYWx5dGljc0V2ZW50U2VudCAmJiB0aGlzLmlzSW5WaWV3cG9ydCgpKSB7XG4gICAgICB0aGlzLnNlbmRFdmVudCh0aGlzLmFuYWx5dGljc1NlcnZpY2UuRVZFTlRfUkVDSVBFX1NIT1cpO1xuICAgICAgdGhpcy5hbmFseXRpY3NFdmVudFNlbnQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8vIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gRkVUQ0ggVEhFIFJFQ0lQRSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIC8vXG5cbiAgLyoqXG4gICAqIEZldGNoIGEgcmVjaXBlIGZyb20gaXRzIGlkLlxuICAgKiBIaWRlIHRoZSBjYXJkIGlmIG5vbmUgaXMgcmV0dXJuZWQgKGNvdWxkIGJlIGJlY2F1c2UgaXQgZG9lcyBub3QgZXhpc3RzIG9yIGl0IGlzIG5vdCBzaGFyZWQgd2l0aCB0aGUgc3VwcGxpZXIpXG4gICAqL1xuICBwcml2YXRlIGxvYWRSZWNpcGVGcm9tSWQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnJlY2lwZVNlcnZpY2UuZ2V0KHRoaXMucmVjaXBlSWQsIHsgaW5jbHVkZTogcmVjaXBlSW5jbHVkZXMsIGZpZWxkczogcmVjaXBlU3BhcnNlRmllbGRzIH0pLnBpcGUoXG4gICAgICAgIHNraXBXaGlsZShyZXN1bHQgPT4gcmVzdWx0LmlzX2xvYWRpbmcpLFxuICAgICAgICBjYXRjaEVycm9yKCBlcnIgPT4ge1xuICAgICAgICAgIHRoaXMuaGlkZS5lbWl0KCk7XG4gICAgICAgICAgcmV0dXJuIG9mKGVycik7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgocmVzdWx0OiBSZWNpcGUpID0+IHtcbiAgICAgICAgdGhpcy5yZWNpcGUgPSByZXN1bHQ7XG4gICAgICAgIHRoaXMudXBkYXRlR3Vlc3RzSWZOZWNlc3NhcnkoKTtcbiAgICAgICAgdGhpcy5pc2xvYWRlZCA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBzdWdnZXN0aW9uIGJhc2VkIG9uIGNvbnRleHQgKGVpdGhlciBwcm9kdWN0SWRzIG9yIHJhbmRvbU1vZGUpLiBIaWRlIHRoZSBjYXJkIGlmIG5vbmUgaXMgcmV0dXJuZWRcbiAgICovXG4gIHByaXZhdGUgbG9hZFJlY2lwZUZyb21Db250ZXh0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5mZXRjaFN1Z2dlc3Rpb25PclJhbmRvbSgpLnBpcGUoXG4gICAgICAgIHNraXBXaGlsZShyZXN1bHRzID0+ICFyZXN1bHRzKSxcbiAgICAgICAgY2F0Y2hFcnJvciggZXJyID0+IHtcbiAgICAgICAgICB0aGlzLmhpZGUuZW1pdCgpO1xuICAgICAgICAgIHJldHVybiBvZihlcnIpO1xuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUoKHJlc3VsdHM6IFJlY2lwZVtdKSA9PiB7XG4gICAgICAgIGlmIChyZXN1bHRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5yZWNpcGUgPSByZXN1bHRzWzBdO1xuICAgICAgICAgIHRoaXMudXBkYXRlR3Vlc3RzSWZOZWNlc3NhcnkoKTtcbiAgICAgICAgICB0aGlzLmlzbG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmhpZGUuZW1pdCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hTdWdnZXN0aW9uT3JSYW5kb20oKTogT2JzZXJ2YWJsZTxSZWNpcGVbXT4ge1xuICAgIGlmICh0aGlzLnJhbmRvbU1vZGVFbmFibGUpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlY2lwZVNlcnZpY2UuZ2V0UmFuZG9tKHJlY2lwZUluY2x1ZGVzLCByZWNpcGVTcGFyc2VGaWVsZHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWNpcGVTZXJ2aWNlLmdldFN1Z2dlc3Rpb24odGhpcy5wcm9kdWN0SWRzLCByZWNpcGVJbmNsdWRlcywgcmVjaXBlU3BhcnNlRmllbGRzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGd1ZXN0cyBmcm9tIHRoZSB2YWx1ZSBpbiB0aGUgYmFza2V0IGlmIHRoZSByZWNpcGUgaXMgaW4gdGhlIGJhc2tldFxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVHdWVzdHNJZk5lY2Vzc2FyeSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmJhc2tldHNTZXJ2aWNlLnJlY2lwZUlzSW5CYXNrZXQodGhpcy5yZWNpcGUuaWQpLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGlzSW5MaXN0ID0+IHtcbiAgICAgIGlmIChpc0luTGlzdCkge1xuICAgICAgICB0aGlzLnJlY2lwZS5tb2RpZmllZEd1ZXN0cyA9IHRoaXMuYmFza2V0c1NlcnZpY2UuZ3Vlc3RzRm9yUmVjaXBlKHRoaXMucmVjaXBlLmlkKSB8fCArdGhpcy5yZWNpcGUuZ3Vlc3RzO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoIXRoaXMucmVjaXBlLm1vZGlmaWVkR3Vlc3RzKSB7XG4gICAgICAgIHRoaXMucmVjaXBlLm1vZGlmaWVkR3Vlc3RzID0gK3RoaXMucmVjaXBlLmd1ZXN0cztcbiAgICAgIH1cbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KSk7XG4gIH1cbn1cbiIsIjwhLS0gPGRpdiAqbmdJZj0naXNsb2FkZWQnIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZFwiPlxuICAvLyBCb29rbWFyayBcbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2Jvb2ttYXJrXCI+XG4gICAgPGltZyBzcmM9XCJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL3JlY2lwZS1jYXJkL0Jvb2ttYXJrLnN2Z1wiIGFsdD1cIklkw6llcyByZXBhc1wiPlxuICA8L2Rpdj5cbiAgPGRpdiAqbmdJZj1cInJlY2lwZSBlbHNlIHBpY3RTa2VsZXRvblwiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fcGljdHVyZVwiIChjbGljayk9XCJvcGVuUmVjaXBlKClcIj5cbiAgICAvLyBQaWN0dXJlIFxuICAgIDxpbWcgW3NyY109XCJyZWNpcGU/LmF0dHJpYnV0ZXNbJ21lZGlhLXVybCddXCIgbG9hZGluZz1cImxhenlcIj5cbiAgICAvLyBWaWRlbyBcbiAgICA8ZGl2ICpuZ0lmPVwiY29udGV4dFNlcnZpY2UudmlkZW9SZWNpcGVzRW5hYmxlZCAmJiByZWNpcGU/LnZpZGVvSWRcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3BpY3R1cmVfX3ZpZGVvXCI+XG4gICAgICA8bmctbWlhbS1pY29uIFtpY29uTmFtZV09XCJpY29uLlZpZGVvXCIgW3dpZHRoXT1cIjEwMFwiIFtoZWlnaHRdPVwiMTAwXCIgcHJpbWFyeUNvbG9yPSdibGFjayc+PC9uZy1taWFtLWljb24+XG4gICAgPC9kaXY+XG4gICAgLy8gTGlrZSBidXR0b24gXG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3BpY3R1cmVfX2FjdGlvbnNcIj5cbiAgICAgIDxuZy1taWFtLWxpa2UtYnV0dG9uICpuZ0lmPVwidXNlclNlcnZpY2UuaXNMb2dnZWQkIHwgYXN5bmNcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2FjdGlvbnNfX2ljb25cIiBbcmVjaXBlXT0ncmVjaXBlJyBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZSgpXCI+XG4gICAgICA8L25nLW1pYW0tbGlrZS1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgLy8gU3BvbnNvciBsb2dvIFxuICAgIDxkaXYgKm5nSWY9XCJyZWNpcGUuc3BvbnNvckxvZ29VcmxcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3BpY3R1cmVfX3Nwb25zb3JcIj5cbiAgICAgIDxpbWcgW3NyY109XCJyZWNpcGUuc3BvbnNvckxvZ29VcmxcIj5cbiAgICA8L2Rpdj5cbiAgICAvLyBGaWxpZ3JhbmUgbG9nbyBcbiAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlLmZpbGlncmFuZUxvZ29VcmxcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3BpY3R1cmVfX2ZpbGlncmFuZVwiPlxuICAgICAgPGltZyBbc3JjXT1cInJlY2lwZS5maWxpZ3JhbmVMb2dvVXJsXCI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8bmctdGVtcGxhdGUgI3BpY3RTa2VsZXRvbj5cbiAgICA8bmctbWlhbS1za2VsZXRvbiBbdHlwZV09J3NrZWxldG9uLlBpY3R1cmUnPjwvbmctbWlhbS1za2VsZXRvbj5cbiAgPC9uZy10ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2F0dHJpYnV0ZXNcIj5cbiAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlIGVsc2UgdGV4dFNrZWxldG9uXCI+XG4gICAgICAvLyBUaXRsZSBcbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19hdHRyaWJ1dGVzX190aXRsZVwiIChjbGljayk9XCJvcGVuUmVjaXBlKClcIj5cbiAgICAgICAge3tyZWNpcGU/LmF0dHJpYnV0ZXNbJ3RpdGxlJ119fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPG5nLXRlbXBsYXRlICN0ZXh0U2tlbGV0b24+XG4gICAgICA8bmctbWlhbS1za2VsZXRvbiBbdHlwZV09J3NrZWxldG9uLlRleHQnPjwvbmctbWlhbS1za2VsZXRvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19hdHRyaWJ1dGVzX19pbmZvc1wiPlxuICAgICAgLy8gVG90YWwgdGltZSBcbiAgICAgIDxkaXYgKm5nSWY9J3JlY2lwZSBlbHNlIHNrZWxldG9uSW5mbycgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19hdHRyaWJ1dGVzX19pbmZvICByZWNpcGVfX3RvdGFsX190aW1lXCI+XG4gICAgICAgIDxuZy1taWFtLWljb24gW3dpZHRoXT1cIjIwXCIgW2hlaWdodF09XCIyMFwiIFtpY29uTmFtZV09XCJpY29uLlRpbWVcIj48L25nLW1pYW0taWNvbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbFwiPnt7IHJlY2lwZT8udG90YWxUaW1lIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICAvLyBEaWZmaWN1bHR5IFxuICAgICAgPGRpdiAqbmdJZj0ncmVjaXBlIGVsc2Ugc2tlbGV0b25JbmZvJyBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2F0dHJpYnV0ZXNfX2luZm8gcmVjaXBlX19kaWZmaWN1bHR5XCIgW25nQ2xhc3NdPVwieyAnZWFzeSc6IHJlY2lwZT8uZGlmZmljdWx0eSA9PT0gMSxcbiAgICAgICdtZWRpdW0nOiByZWNpcGU/LmRpZmZpY3VsdHkgPT09IDIsICdoYXJkJzogcmVjaXBlPy5kaWZmaWN1bHR5ID09PSAzIH1cIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicmVjaXBlPy5kaWZmaWN1bHR5XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiMlwiPlxuICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBbd2lkdGhdPVwiNjBcIiBbaGVpZ2h0XT1cIjIwXCIgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLWJsYWNrKSdcbiAgICAgICAgICAgICAgW2ljb25OYW1lXT1cImljb24uRGlmZmljdWx0eU1lZGl1bVwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIjNcIj5cbiAgICAgICAgICAgIDxuZy1taWFtLWljb24gW3dpZHRoXT1cIjYwXCIgW2hlaWdodF09XCIyMFwiIHByaW1hcnlDb2xvcj0ndmFyKC0tbS1jb2xvci1ibGFjayknXG4gICAgICAgICAgICAgIFtpY29uTmFtZV09XCJpY29uLkRpZmZpY3VsdHlIaWdoXCI+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBbd2lkdGhdPVwiNjBcIiBbaGVpZ2h0XT1cIjIwXCIgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLWJsYWNrKSdcbiAgICAgICAgICAgICAgW2ljb25OYW1lXT1cImljb24uRGlmZmljdWx0eUxvd1wiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicmVjaXBlPy5kaWZmaWN1bHR5XCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiMVwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBlYXN5XCIgKm5nSWY9XCJyZWNpcGVTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHNbMF0/LmxhYmVsICE9PSAnQ2hlZiBkw6lidXRhbnQnIGVsc2UgZGlmZmljdWx0eUVhc3lEZWZhdWx0XCI+XG4gICAgICAgICAgICAgIHt7cmVjaXBlU2VydmljZS5kaWZmaWN1bHR5TGV2ZWxzWzBdLmxhYmVsfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGlmZmljdWx0eUVhc3lEZWZhdWx0PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZm9fX2xhYmVsIGVhc3lcIiBpMThuPkNoZWYgZMOpYnV0YW50PC9zcGFuPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCIyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZm9fX2xhYmVsIG1lZGl1bVwiICpuZ0lmPVwicmVjaXBlU2VydmljZS5kaWZmaWN1bHR5TGV2ZWxzWzFdPy5sYWJlbCAhPT0gJ0NoZWYgaW50ZXJtw6lkaWFpcmUnIGVsc2UgZGlmZmljdWx0eU1lZGl1bURlZmF1bHRcIj5cbiAgICAgICAgICAgICAge3tyZWNpcGVTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHNbMV0ubGFiZWx9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaWZmaWN1bHR5TWVkaXVtRGVmYXVsdD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBtZWRpdW1cIiBpMThuPkNoZWYgaW50ZXJtw6lkaWFpcmU8L3NwYW4+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIjNcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9faW5mb19fbGFiZWwgaGFyZFwiICpuZ0lmPVwicmVjaXBlU2VydmljZS5kaWZmaWN1bHR5TGV2ZWxzWzJdPy5sYWJlbCAhPT0gJ1RvcCBjaGVmJyBlbHNlIGRpZmZpY3VsdHlIYXJkRGVmYXVsdFwiPlxuICAgICAgICAgICAgICB7e3JlY2lwZVNlcnZpY2UuZGlmZmljdWx0eUxldmVsc1syXS5sYWJlbH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RpZmZpY3VsdHlIYXJkRGVmYXVsdD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBoYXJkXCIgaTE4bj5Ub3AgY2hlZjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBlYXN5XCIgKm5nSWY9XCJyZWNpcGVTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHNbMF0/LmxhYmVsICE9PSAnQ2hlZiBkw6lidXRhbnQnIGVsc2UgZGlmZmljdWx0eURlZmF1bHRcIj5cbiAgICAgICAgICAgICAge3tyZWNpcGVTZXJ2aWNlLmRpZmZpY3VsdHlMZXZlbHNbMF0ubGFiZWx9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaWZmaWN1bHR5RGVmYXVsdD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmZvX19sYWJlbCBlYXN5XCIgaTE4bj5DaGVmIGTDqWJ1dGFudDwvc3Bhbj5cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8bmctdGVtcGxhdGUgI3NrZWxldG9uSW5mbz5cbiAgICAgICAgPG5nLW1pYW0tc2tlbGV0b24gW3R5cGVdPSdza2VsZXRvbj8uSWNvbldpdGhJbmZvJz48L25nLW1pYW0tc2tlbGV0b24+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19hdHRyaWJ1dGVzX19jb250cm9sXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fY29udHJvbF9fbGVmdF9fY29sXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19sZWZ0X19jb2xfX2N1c3RvbVwiPlxuICAgICAgICAgIC8vIEhlbHBlciBcbiAgICAgICAgICA8ZGl2IChjbGljayk9XCJ0b2dnbGVIZWxwZXIoKVwiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9faGVscFwiPlxuICAgICAgICAgICAgPG5nLW1pYW0taWNvbiBbd2lkdGhdPVwiMjRcIiBbaGVpZ2h0XT1cIjI0XCIgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLWdyZXkwMiknIHNlY29uZGFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLWdyZXkwNyknXG4gICAgICAgICAgICBbaWNvbk5hbWVdPVwiaWNvbi5IZWxwXCI+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgLy8gSW5ncmVkaWVudCBwaWN0dXJlcyBcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cImNvbnRleHRTZXJ2aWNlLmRpc3BsYXlJbmdyZWRpZW50UGljdHVyZXNPblJlY2lwZUNhcmRzICYmIHJlY2lwZT8ubW9kaWZpZWRJbmdyZWRpZW50cz8ubGVuZ3RoID4gMVwiXG4gICAgICAgICAgICBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZ3JlZGllbnRzX19waWN0dXJlc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZ3JlZGllbnRzX19waWN0dXJlXCI+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbmdyZWRpZW50UGljdHVyZShyZWNpcGUubW9kaWZpZWRJbmdyZWRpZW50c1swXSlcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZ3JlZGllbnRzX19waWN0dXJlXCI+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJpbmdyZWRpZW50UGljdHVyZShyZWNpcGUubW9kaWZpZWRJbmdyZWRpZW50c1sxXSlcIj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZ3JlZGllbnRzX19tb3JlXCIgKm5nSWY9XCJyZWNpcGUubW9kaWZpZWRJbmdyZWRpZW50cy5sZW5ndGggPiAyXCI+XG4gICAgICAgICAgICAgICsge3tyZWNpcGUubW9kaWZpZWRJbmdyZWRpZW50cy5sZW5ndGggLSAyfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2NvbnRyb2xfX3JpZ2h0X19jb2xcIj5cbiAgICAgICAgLy8gUHJpY2UgXG4gICAgICAgIDxkaXYgKm5nSWY9XCJyZWNpcGUgJiYgZGlzcGxheVByaWNpbmdcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3JpZ2h0X19jb2xfX3ByaWNlXCI+XG4gICAgICAgICAgPG5nLW1pYW0tcmVjaXBlLXByaWNpbmcgW3JlY2lwZV09XCJyZWNpcGVcIiBbc2VydmVzXT1cInJlY2lwZT8ubW9kaWZpZWRHdWVzdHNcIj48L25nLW1pYW0tcmVjaXBlLXByaWNpbmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgLy8gQWRkIHRvIGJhc2tldCBcbiAgICA8bmctbWlhbS1yZWNpcGUtY2FyZC1jdGEgW3JlY2lwZV09XCJyZWNpcGVcIiBbY2FyZFR5cGVdPVwiY2FyZFR5cGVcIiBbcHJldmlld0FsbG93ZWRdPVwicHJldmlld0FsbG93ZWRcIiBbZGlzcGxheUd1ZXN0c109XCJkaXNwbGF5R3Vlc3RzXCJcbiAgICAgIFtoZWxwQnV0dG9uQWxsb3dlZF09XCJoZWxwQnV0dG9uQWxsb3dlZFwiIChkaXNwbGF5ZWQpPVwiZGlzcGxheWVkLmVtaXQoKVwiIChjbGlja2VkKT1cInByaW1hcnlCdXR0b25DbGlja2VkJC5lbWl0KCRldmVudClcIj5cbiAgICA8L25nLW1pYW0tcmVjaXBlLWNhcmQtY3RhPlxuICA8L2Rpdj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNjb3JzPlxuICA8bmctbWlhbS1jb3JzLW92ZXJsYXk+PC9uZy1taWFtLWNvcnMtb3ZlcmxheT5cbjwvbmctdGVtcGxhdGU+IC0tPlxuXG48ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZFwiPlxuICA8IS0tIE1BSU4gQ09OVEFJTkVSIC0tPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fY29udGFpbmVyXCIgKm5nSWY9XCJyZWNpcGVcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fdG9wXCIgKGNsaWNrKT1cIm9wZW5SZWNpcGUoKVwiPlxuICAgICAgPCEtLSBQSUNUVVJFIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3BpY3R1cmVcIj5cbiAgICAgICAgPGltZyBbc3JjXT1cInJlY2lwZT8uYXR0cmlidXRlc1snbWVkaWEtdXJsJ11cIiBsb2FkaW5nPVwibGF6eVwiPlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIEdSQURJRU5UIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2dyYWRpZW50XCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fY29udGVudFwiPlxuICAgICAgICA8IS0tIExJS0UgJiBQRVJTT05BTCBSRUNJUEVTIEFDVElPTlMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19saWtlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2FjdGlvbnNfX2ljb25cIiAqbmdJZj1cInJlY2lwZS5yZWxhdGlvbnNoaXBzWydyZWNpcGUtcHJvdmlkZXInXT8uZGF0YS5pZCA9PT0gJ3BlcnNvbmFsJyBlbHNlIGxpa2VcIlxuICAgICAgICAgICAgKGNsaWNrKT0ndG9nZ2xlTW9yZUFjdGlvbnMoJGV2ZW50KSc+XG4gICAgICAgICAgICA8bmctbWlhbS1pY29uIFtpY29uTmFtZV09XCJhY3Rpb25zT3BlbmVkID8gaWNvbi5DbGVhciA6IGljb24uSG9yaXpvbnRhbERvdHNcIiBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3ItcHJpbWFyeSknPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbGlrZT5cbiAgICAgICAgICAgIDxuZy1taWFtLWxpa2UtYnV0dG9uXG4gICAgICAgICAgICAgICpuZ0lmPVwidXNlclNlcnZpY2UuaXNMb2dnZWQkIHwgYXN5bmNcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2FjdGlvbnNfX2ljb25cIiBbcmVjaXBlXT0ncmVjaXBlJyBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZSgpXCIgW3dpZHRoXT1cIjI0XCIgW2hlaWdodF09XCIyNFwiPlxuICAgICAgICAgICAgPC9uZy1taWFtLWxpa2UtYnV0dG9uPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fcGljdHVyZV9fYm90dG9tXCI+XG4gICAgICAgICAgPCEtLSBUSVRMRSAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fdGl0bGUgbWlhbS1kcy10ZXh0IHdlaWdodC14eGwgc2l6ZS1tXCI+XG4gICAgICAgICAgICA8c3Bhbj57e3JlY2lwZS5hdHRyaWJ1dGVzWyd0aXRsZSddfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPCEtLSBDT1VOVEVSIC0tPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19jb3VudGVyXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tZHMtdGV4dCB3ZWlnaHQteHhsIHNpemUtbVwiPnt7cmVjaXBlLm1vZGlmaWVkR3Vlc3RzfX08L3NwYW4+XG4gICAgICAgICAgICA8aW1nIHNyYz1cImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9hc3NldHMubWlhbS50ZWNoL2dlbmVyaWMvaWNvbnMvcmVjaXBlLWNvdW50ZXIuc3ZnXCIgYWx0PVwicGVvcGxlXCI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2JvdHRvbVwiIChjbGljayk9XCJvcGVuUmVjaXBlKClcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJjb250ZXh0U2VydmljZS5kaXNwbGF5SW5ncmVkaWVudFBpY3R1cmVzT25SZWNpcGVDYXJkcyAmJiByZWNpcGU/Lm1vZGlmaWVkSW5ncmVkaWVudHM/Lmxlbmd0aCA+IDFcIlxuICAgICAgICBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX2luZ3JlZGllbnRzX19waWN0dXJlc1wiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmdyZWRpZW50c19fcGljdHVyZVwiPlxuICAgICAgICAgIDxpbWcgW3NyY109XCJpbmdyZWRpZW50UGljdHVyZShyZWNpcGUubW9kaWZpZWRJbmdyZWRpZW50c1swXSlcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmdyZWRpZW50c19fcGljdHVyZVwiPlxuICAgICAgICAgIDxpbWcgW3NyY109XCJpbmdyZWRpZW50UGljdHVyZShyZWNpcGUubW9kaWZpZWRJbmdyZWRpZW50c1sxXSlcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19pbmdyZWRpZW50c19fbW9yZVwiICpuZ0lmPVwicmVjaXBlLm1vZGlmaWVkSW5ncmVkaWVudHMubGVuZ3RoID4gMlwiPlxuICAgICAgICAgICsge3tyZWNpcGUubW9kaWZpZWRJbmdyZWRpZW50cy5sZW5ndGggLSAyfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19hY3Rpb25zXCI+XG4gICAgICAgIDwhLS0gUFJJQ0UgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyZWNpcGUgJiYgZGlzcGxheVByaWNpbmdcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhcmRfX3ByaWNlXCI+XG4gICAgICAgICAgPG5nLW1pYW0tcmVjaXBlLXByaWNpbmcgY2xhc3M9XCJtaWFtLWRzLXRleHQgd2VpZ2h0LXh4bFwiIFtyZWNpcGVJZF09XCJyZWNpcGUuaWRcIiBbc2VydmVzXT1cInJlY2lwZS5tb2RpZmllZEd1ZXN0c1wiPjwvbmctbWlhbS1yZWNpcGUtcHJpY2luZz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gQ1RBIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fY3RhXCI+XG4gICAgICAgICAgPG5nLW1pYW0tcmVjaXBlLWNhcmQtY3RhIFxuICAgICAgICAgICAgKm5nSWY9XCJwcmV2aWV3QWxsb3dlZCAmJiAhYWRkUmVjaXBlTW9kZSAmJiAhcmVwbGFjZU1vZGVcIlxuICAgICAgICAgICAgW3JlY2lwZV09XCJyZWNpcGVcIlxuICAgICAgICAgICAgW3ByZXZpZXdBbGxvd2VkXT1cInByZXZpZXdBbGxvd2VkXCJcbiAgICAgICAgICAgIFtkaXNwbGF5R3Vlc3RzXT1cImRpc3BsYXlHdWVzdHNcIlxuICAgICAgICAgICAgW2hlbHBCdXR0b25BbGxvd2VkXT1cImhlbHBCdXR0b25BbGxvd2VkXCJcbiAgICAgICAgICAgIChkaXNwbGF5ZWQpPVwiZGlzcGxheWVkLmVtaXQoKVwiXG4gICAgICAgICAgICAoY2xpY2tlZCk9XCJwcmltYXJ5QnV0dG9uQ2xpY2tlZCQuZW1pdCgkZXZlbnQpXCI+XG4gICAgICAgICAgPC9uZy1taWFtLXJlY2lwZS1jYXJkLWN0YT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDwhLS0gT1BUSU9OTkFMIENUQVMgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJyZXBsYWNlTW9kZVwiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fYWN0aW9uc19fcmVwbGFjZVwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtaWFtLWRzLWJ1dHRvbiBwcmltYXJ5IHJldmVyc2Ugc3F1YXJlXCIgKGNsaWNrKT1cInJlbW92ZUZyb21NZWFsc1BsYW5uZXIuZW1pdCgpXCI+XG4gICAgICAgICAgICA8bmctbWlhbS1pY29uIFtpY29uTmFtZV09XCJpY29uLlRyYXNoXCIgcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1wcmltYXJ5KVwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtaWFtLWRzLWJ1dHRvbiBwcmltYXJ5IHJldmVyc2VcIiAoY2xpY2spPVwib3BlbkNhdGFsb2cuZW1pdCgpXCI+XG4gICAgICAgICAgICA8c3BhbiBpMThuPlJlbXBsYWNlcjwvc3Bhbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b24gKm5nSWY9XCJhZGRSZWNpcGVNb2RlXCIgY2xhc3M9XCJtaWFtLWRzLWJ1dHRvbiBwcmltYXJ5IHJldmVyc2VcIiAoY2xpY2spPVwiYWRkVG9NZWFsc1BsYW5uZXIuZW1pdChyZWNpcGUpXCI+XG4gICAgICAgICAgPHNwYW4gaTE4bj5Bam91dGVyPC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPCEtLSBTUE9OU09SIC0tPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fc3BvbnNvclwiICpuZ0lmPVwicmVjaXBlPy5zcG9uc29yTG9nb1VybFwiPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXJkX19zcG9uc29yX190ZXh0XCI+XG4gICAgICA8c3BhbiBpMThuPlVuZSByZWNldHRlIHByb3BvcG9zw6llIHBhcjwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2FyZF9fc3BvbnNvcl9fbG9nb1wiPlxuICAgICAgPGltZyBbc3JjXT1cInJlY2lwZS5zcG9uc29yTG9nb1VybFwiPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPCEtLSBNb3JlIGFjdGlvbnMgcG9waW4gLS0+XG4gIDxuZy1taWFtLWFjdGlvbnMtcG9waW4gXG4gICAgKm5nSWY9XCJhY3Rpb25zT3BlbmVkXCIgKGNsb3NlKT1cImNsb3NlTW9yZUFjdGlvbnMoKVwiIChhY3Rpb25UcmlnZ2VyZWQpPVwiYWN0aW9uVHJpZ2dlcmVkLmVtaXQoJGV2ZW50KVwiPlxuICA8L25nLW1pYW0tYWN0aW9ucy1wb3Bpbj5cbjwvZGl2PiJdfQ==
|