ng-miam 4.3.2 → 4.3.3
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 +105 -80
- package/bundles/ng-miam.umd.js.map +1 -1
- package/bundles/ng-miam.umd.min.js +1 -1
- package/bundles/ng-miam.umd.min.js.map +1 -1
- package/esm2015/lib/_components/explaine-banner/explaine-banner.component.js +2 -2
- package/esm2015/lib/_models/basket-preview-line.js +2 -2
- package/esm2015/lib/_web-components/catalog-header/catalog-header.component.js +17 -17
- package/esm2015/lib/_web-components/catalog-list/catalog-list.component.js +61 -52
- package/esm2015/lib/_web-components/recipe-catalog/recipe-catalog.component.js +15 -9
- package/esm2015/lib/_web-components/recipe-details/recipe-details.component.js +1 -1
- package/esm2015/lib/_web-components/recipe-tags/recipe-tags.component.js +4 -4
- package/fesm2015/ng-miam.js +94 -79
- package/fesm2015/ng-miam.js.map +1 -1
- package/lib/_web-components/catalog-list/catalog-list.component.d.ts +8 -7
- package/lib/_web-components/recipe-catalog/recipe-catalog.component.d.ts +2 -0
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Component, ViewEncapsulation, ChangeDetectionStrategy, ChangeDetectorRef, Output, EventEmitter, Input, ViewChildren, QueryList } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject, forkJoin, of } from 'rxjs';
|
|
3
3
|
import { filter, map, switchMap, take } from 'rxjs/operators';
|
|
4
|
-
import { ArticlesService, ContextService, RecipeLikesService, RecipesService } from '../../_services';
|
|
4
|
+
import { ArticlesService, ContextService, RecipeLikesService, RecipesService, UserService } from '../../_services';
|
|
5
5
|
import { Icon } from '../../_types/icon.enum';
|
|
6
6
|
import pick from 'lodash-es/pick';
|
|
7
7
|
import { CatalogRecipeCardComponent } from '..';
|
|
@@ -13,68 +13,67 @@ import * as i4 from "../../_components/card-create-recipe/card-create-recipe.com
|
|
|
13
13
|
import * as i5 from "../catalog-recipe-card/catalog-recipe-card.component";
|
|
14
14
|
import * as i6 from "../catalog-article-card/catalog-article-card.component";
|
|
15
15
|
import * as i7 from "../loader/loader.component";
|
|
16
|
-
function
|
|
16
|
+
function CatalogListComponent_div_1_div_2_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
17
17
|
i0.ɵɵelementStart(0, "span");
|
|
18
18
|
i0.ɵɵtext(1);
|
|
19
19
|
i0.ɵɵelementEnd();
|
|
20
20
|
} if (rf & 2) {
|
|
21
|
-
const
|
|
21
|
+
const ctx_r10 = i0.ɵɵnextContext(3);
|
|
22
22
|
i0.ɵɵadvance(1);
|
|
23
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
23
|
+
i0.ɵɵtextInterpolate1("pour \"", ctx_r10.filters.search, "\"");
|
|
24
24
|
} }
|
|
25
|
-
function
|
|
26
|
-
i0.ɵɵelementStart(0, "
|
|
27
|
-
i0.ɵɵ
|
|
25
|
+
function CatalogListComponent_div_1_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
+
i0.ɵɵelementStart(0, "div");
|
|
27
|
+
i0.ɵɵelementStart(1, "div", 12);
|
|
28
|
+
i0.ɵɵelementStart(2, "span");
|
|
29
|
+
i0.ɵɵtext(3, "D\u00E9sol\u00E9, aucune proposition trouv\u00E9e");
|
|
30
|
+
i0.ɵɵelementEnd();
|
|
31
|
+
i0.ɵɵtemplate(4, CatalogListComponent_div_1_div_2_span_4_Template, 2, 1, "span", 13);
|
|
32
|
+
i0.ɵɵelementEnd();
|
|
33
|
+
i0.ɵɵelementStart(5, "div", 14);
|
|
34
|
+
i0.ɵɵtext(6, "Veuillez modifier les termes de votre recherche ou r\u00E9gler les filtres");
|
|
28
35
|
i0.ɵɵelementEnd();
|
|
29
|
-
} if (rf & 2) {
|
|
30
|
-
const ctx_r11 = i0.ɵɵnextContext(3);
|
|
31
|
-
i0.ɵɵadvance(1);
|
|
32
|
-
i0.ɵɵtextInterpolate1("pour \"", ctx_r11.filters.search, "\"");
|
|
33
|
-
} }
|
|
34
|
-
function CatalogListComponent_div_1_ng_template_4_Template(rf, ctx) { if (rf & 1) {
|
|
35
|
-
i0.ɵɵelementStart(0, "span");
|
|
36
|
-
i0.ɵɵtext(1, "D\u00E9sol\u00E9, aucune proposition trouv\u00E9e ");
|
|
37
36
|
i0.ɵɵelementEnd();
|
|
38
|
-
i0.ɵɵtemplate(2, CatalogListComponent_div_1_ng_template_4_span_2_Template, 2, 1, "span", 14);
|
|
39
37
|
} if (rf & 2) {
|
|
40
|
-
const
|
|
41
|
-
i0.ɵɵadvance(
|
|
42
|
-
i0.ɵɵproperty("ngIf",
|
|
38
|
+
const ctx_r5 = i0.ɵɵnextContext(2);
|
|
39
|
+
i0.ɵɵadvance(4);
|
|
40
|
+
i0.ɵɵproperty("ngIf", ctx_r5.isSearching());
|
|
43
41
|
} }
|
|
44
|
-
function
|
|
45
|
-
i0.ɵɵelementStart(0, "
|
|
46
|
-
i0.ɵɵ
|
|
42
|
+
function CatalogListComponent_div_1_ng_template_3_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
43
|
+
i0.ɵɵelementStart(0, "div");
|
|
44
|
+
i0.ɵɵelementStart(1, "span", 12);
|
|
45
|
+
i0.ɵɵtext(2, "D\u00E9sol\u00E9, vous n'avez pas encore d'id\u00E9es repas sauvegard\u00E9es");
|
|
46
|
+
i0.ɵɵelementEnd();
|
|
47
47
|
i0.ɵɵelementEnd();
|
|
48
|
+
} }
|
|
49
|
+
function CatalogListComponent_div_1_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
50
|
+
i0.ɵɵtemplate(0, CatalogListComponent_div_1_ng_template_3_div_0_Template, 3, 0, "div", 9);
|
|
51
|
+
i0.ɵɵpipe(1, "async");
|
|
48
52
|
} if (rf & 2) {
|
|
49
|
-
|
|
50
|
-
i0.ɵɵ
|
|
51
|
-
i0.ɵɵ
|
|
53
|
+
i0.ɵɵnextContext();
|
|
54
|
+
const _r8 = i0.ɵɵreference(6);
|
|
55
|
+
const ctx_r7 = i0.ɵɵnextContext();
|
|
56
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(1, 2, ctx_r7.userService.isLogged$))("ngIfElse", _r8);
|
|
52
57
|
} }
|
|
53
|
-
function
|
|
54
|
-
i0.ɵɵ
|
|
58
|
+
function CatalogListComponent_div_1_ng_template_5_Template(rf, ctx) { if (rf & 1) {
|
|
59
|
+
i0.ɵɵelementStart(0, "span", 12);
|
|
60
|
+
i0.ɵɵtext(1, "D\u00E9sol\u00E9, vous devez \u00EAtre connect\u00E9 pour acc\u00E9der au contenu de cette page.");
|
|
61
|
+
i0.ɵɵelementEnd();
|
|
55
62
|
} }
|
|
56
63
|
function CatalogListComponent_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
57
64
|
i0.ɵɵelementStart(0, "div", 7);
|
|
58
65
|
i0.ɵɵelement(1, "ng-miam-icon", 8);
|
|
59
|
-
i0.ɵɵ
|
|
60
|
-
i0.ɵɵtemplate(3,
|
|
61
|
-
i0.ɵɵtemplate(
|
|
62
|
-
i0.ɵɵelementEnd();
|
|
63
|
-
i0.ɵɵelementStart(6, "div", 12);
|
|
64
|
-
i0.ɵɵtemplate(7, CatalogListComponent_div_1_span_7_Template, 2, 1, "span", 10);
|
|
65
|
-
i0.ɵɵtemplate(8, CatalogListComponent_div_1_ng_template_8_Template, 1, 0, "ng-template", null, 13, i0.ɵɵtemplateRefExtractor);
|
|
66
|
-
i0.ɵɵelementEnd();
|
|
66
|
+
i0.ɵɵtemplate(2, CatalogListComponent_div_1_div_2_Template, 7, 1, "div", 9);
|
|
67
|
+
i0.ɵɵtemplate(3, CatalogListComponent_div_1_ng_template_3_Template, 2, 4, "ng-template", null, 10, i0.ɵɵtemplateRefExtractor);
|
|
68
|
+
i0.ɵɵtemplate(5, CatalogListComponent_div_1_ng_template_5_Template, 2, 0, "ng-template", null, 11, i0.ɵɵtemplateRefExtractor);
|
|
67
69
|
i0.ɵɵelementEnd();
|
|
68
70
|
} if (rf & 2) {
|
|
69
|
-
const _r6 = i0.ɵɵreference(
|
|
70
|
-
const _r9 = i0.ɵɵreference(9);
|
|
71
|
+
const _r6 = i0.ɵɵreference(4);
|
|
71
72
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
72
73
|
i0.ɵɵadvance(1);
|
|
73
74
|
i0.ɵɵproperty("width", 279)("height", 243)("iconName", ctx_r0.icon.NoRecipeFound);
|
|
74
|
-
i0.ɵɵadvance(
|
|
75
|
-
i0.ɵɵproperty("ngIf", ctx_r0.
|
|
76
|
-
i0.ɵɵadvance(4);
|
|
77
|
-
i0.ɵɵproperty("ngIf", ctx_r0.noRecipeTextSecondLine && ctx_r0.filtersAreEmpty)("ngIfElse", _r9);
|
|
75
|
+
i0.ɵɵadvance(1);
|
|
76
|
+
i0.ɵɵproperty("ngIf", ctx_r0.isFiltering())("ngIfElse", _r6);
|
|
78
77
|
} }
|
|
79
78
|
function CatalogListComponent_ng_miam_card_create_recipe_3_Template(rf, ctx) { if (rf & 1) {
|
|
80
79
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
@@ -106,10 +105,11 @@ function CatalogListComponent_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
|
106
105
|
i0.ɵɵelementEnd();
|
|
107
106
|
} }
|
|
108
107
|
export class CatalogListComponent {
|
|
109
|
-
constructor(recipesService, recipeLikesService, articlesService, context, cdr) {
|
|
108
|
+
constructor(recipesService, recipeLikesService, articlesService, userService, context, cdr) {
|
|
110
109
|
this.recipesService = recipesService;
|
|
111
110
|
this.recipeLikesService = recipeLikesService;
|
|
112
111
|
this.articlesService = articlesService;
|
|
112
|
+
this.userService = userService;
|
|
113
113
|
this.context = context;
|
|
114
114
|
this.cdr = cdr;
|
|
115
115
|
this.insertCreateCard = false;
|
|
@@ -123,7 +123,6 @@ export class CatalogListComponent {
|
|
|
123
123
|
this.icon = Icon;
|
|
124
124
|
this.noMoreRecipes = false;
|
|
125
125
|
this.noMoreArticles = false;
|
|
126
|
-
this.filtersAreEmpty = true;
|
|
127
126
|
this.filtersToDisplay = [];
|
|
128
127
|
this.articles = [];
|
|
129
128
|
this.subscriptions = [];
|
|
@@ -259,16 +258,30 @@ export class CatalogListComponent {
|
|
|
259
258
|
this.cdr.detectChanges();
|
|
260
259
|
}));
|
|
261
260
|
}
|
|
261
|
+
isSearching() {
|
|
262
|
+
return this.filters.search && this.filters.search != '';
|
|
263
|
+
}
|
|
264
|
+
isFieldEmpty(filter) {
|
|
265
|
+
for (const f of filter) {
|
|
266
|
+
if (f.value) {
|
|
267
|
+
return false;
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return true;
|
|
271
|
+
}
|
|
272
|
+
isFiltering() {
|
|
273
|
+
return this.isSearching() || !this.isFieldEmpty(this.filters.difficulty) || !this.isFieldEmpty(this.filters.cost) || !this.isFieldEmpty(this.filters.time);
|
|
274
|
+
}
|
|
262
275
|
}
|
|
263
|
-
CatalogListComponent.ɵfac = function CatalogListComponent_Factory(t) { return new (t || CatalogListComponent)(i0.ɵɵdirectiveInject(i1.RecipesService), i0.ɵɵdirectiveInject(i1.RecipeLikesService), i0.ɵɵdirectiveInject(i1.ArticlesService), i0.ɵɵdirectiveInject(i1.ContextService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
276
|
+
CatalogListComponent.ɵfac = function CatalogListComponent_Factory(t) { return new (t || CatalogListComponent)(i0.ɵɵdirectiveInject(i1.RecipesService), i0.ɵɵdirectiveInject(i1.RecipeLikesService), i0.ɵɵdirectiveInject(i1.ArticlesService), i0.ɵɵdirectiveInject(i1.UserService), i0.ɵɵdirectiveInject(i1.ContextService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
264
277
|
CatalogListComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CatalogListComponent, selectors: [["ng-miam-catalog-list"]], viewQuery: function CatalogListComponent_Query(rf, ctx) { if (rf & 1) {
|
|
265
278
|
i0.ɵɵviewQuery(CatalogRecipeCardComponent, true);
|
|
266
279
|
} if (rf & 2) {
|
|
267
280
|
var _t;
|
|
268
281
|
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.recipeCards = _t);
|
|
269
|
-
} }, inputs: { filters: "filters",
|
|
282
|
+
} }, inputs: { filters: "filters", insertCreateCard: "insertCreateCard", randomMode: "randomMode", modifiedGuests: "modifiedGuests" }, outputs: { retrievedRecipes: "retrievedRecipes", filterRemoved: "filterRemoved", recipeActionTriggered: "recipeActionTriggered", loading: "loading" }, features: [i0.ɵɵNgOnChangesFeature], decls: 9, vars: 9, consts: [[1, "miam-catalog-list__cards"], ["class", "miam-catalog-list__notFound", 4, "ngIf"], ["class", "miam-catalog-list__card", 3, "clicked", 4, "ngIf"], [3, "recipe", "actionTriggered", 4, "ngFor", "ngForOf"], [3, "article", 4, "ngFor", "ngForOf"], ["class", "miam-catalog-list__loader", 4, "ngIf"], ["id", "miam-catalog-list__anchor"], [1, "miam-catalog-list__notFound"], [1, "miam-catalog-list__notFound__icon", 3, "width", "height", "iconName"], [4, "ngIf", "ngIfElse"], ["notFiltering", ""], ["notLogged", ""], [1, "miam-catalog-list__notFound__title1"], [4, "ngIf"], [1, "miam-catalog-list__notFound__title2"], [1, "miam-catalog-list__card", 3, "clicked"], [3, "recipe", "actionTriggered"], [3, "article"], [1, "miam-catalog-list__loader"]], template: function CatalogListComponent_Template(rf, ctx) { if (rf & 1) {
|
|
270
283
|
i0.ɵɵelementStart(0, "div", 0);
|
|
271
|
-
i0.ɵɵtemplate(1, CatalogListComponent_div_1_Template,
|
|
284
|
+
i0.ɵɵtemplate(1, CatalogListComponent_div_1_Template, 7, 5, "div", 1);
|
|
272
285
|
i0.ɵɵpipe(2, "async");
|
|
273
286
|
i0.ɵɵtemplate(3, CatalogListComponent_ng_miam_card_create_recipe_3_Template, 1, 0, "ng-miam-card-create-recipe", 2);
|
|
274
287
|
i0.ɵɵtemplate(4, CatalogListComponent_ng_miam_catalog_recipe_card_4_Template, 1, 1, "ng-miam-catalog-recipe-card", 3);
|
|
@@ -298,11 +311,7 @@ CatalogListComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CatalogListComponent
|
|
|
298
311
|
encapsulation: ViewEncapsulation.None,
|
|
299
312
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
300
313
|
}]
|
|
301
|
-
}], function () { return [{ type: i1.RecipesService }, { type: i1.RecipeLikesService }, { type: i1.ArticlesService }, { type: i1.ContextService }, { type: i0.ChangeDetectorRef }]; }, { filters: [{
|
|
302
|
-
type: Input
|
|
303
|
-
}], noRecipeTextFirstLine: [{
|
|
304
|
-
type: Input
|
|
305
|
-
}], noRecipeTextSecondLine: [{
|
|
314
|
+
}], function () { return [{ type: i1.RecipesService }, { type: i1.RecipeLikesService }, { type: i1.ArticlesService }, { type: i1.UserService }, { type: i1.ContextService }, { type: i0.ChangeDetectorRef }]; }, { filters: [{
|
|
306
315
|
type: Input
|
|
307
316
|
}], insertCreateCard: [{
|
|
308
317
|
type: Input
|
|
@@ -322,4 +331,4 @@ CatalogListComponent.ɵcmp = i0.ɵɵdefineComponent({ type: CatalogListComponent
|
|
|
322
331
|
type: ViewChildren,
|
|
323
332
|
args: [CatalogRecipeCardComponent]
|
|
324
333
|
}] }); })();
|
|
325
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvYnVpbGRzL21pYW0vbmctbWlhbS1zZGsvcHJvamVjdHMvbmctbWlhbS9zcmMvIiwic291cmNlcyI6WyJsaWIvX3dlYi1jb21wb25lbnRzL2NhdGFsb2ctbGlzdC9jYXRhbG9nLWxpc3QuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9jYXRhbG9nLWxpc3QvY2F0YWxvZy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFHakIsTUFBTSxFQUNOLFlBQVksRUFDWixLQUFLLEVBRUwsWUFBWSxFQUNaLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFhLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN0RyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFOUMsT0FBTyxJQUFJLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEMsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sSUFBSSxDQUFDOzs7Ozs7Ozs7O0lDTDFDLDRCQUNFO0lBQUEsWUFDRjtJQUFBLGlCQUFPOzs7SUFETCxlQUNGO0lBREUsNkRBQ0Y7OztJQUdFLDRCQUE2QjtJQUFBLFlBQXlCO0lBQUEsaUJBQU87OztJQUFoQyxlQUF5QjtJQUF6Qiw4REFBeUI7OztJQUR0RCw0QkFBTTtJQUFBLGtFQUFtQztJQUFBLGlCQUFPO0lBQ2hELDRG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LEVBQUUsK0JBQStCO2dCQUM1QyxTQUFTLEVBQUUsQ0FBQywrQkFBK0IsQ0FBQztnQkFDNUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7Z0JBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO2FBQ2hEOzZMQUVVLE9BQU87a0JBQWYsS0FBSztZQUNHLHFCQUFxQjtrQkFBN0IsS0FBSztZQUNHLHNCQUFzQjtrQkFBOUIsS0FBSztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUNHLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0ksZ0JBQWdCO2tCQUF6QixNQUFNO1lBQ0csYUFBYTtrQkFBdEIsTUFBTTtZQUNHLHFCQUFxQjtrQkFBOUIsTUFBTTtZQUNHLE9BQU87a0JBQWhCLE1BQU07WUFZbUMsV0FBVztrQkFBcEQsWUFBWTttQkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgVmlld0NoaWxkcmVuLFxuICBRdWVyeUxpc3Rcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEb2N1bWVudENvbGxlY3Rpb24gfSBmcm9tICduZ3gtanNvbmFwaSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZvcmtKb2luLCBPYnNlcnZhYmxlLCBvZiwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgc2tpcFdoaWxlLCBzd2l0Y2hNYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBBcnRpY2xlIH0gZnJvbSAnLi4vLi4vX21vZGVscyc7XG5pbXBvcnQgeyBSZWNpcGUgfSBmcm9tICcuLi8uLi9fbW9kZWxzL3JlY2lwZSc7XG5pbXBvcnQgeyBBcnRpY2xlc1NlcnZpY2UsIENvbnRleHRTZXJ2aWNlLCBSZWNpcGVMaWtlc1NlcnZpY2UsIFJlY2lwZXNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi9fdHlwZXMvaWNvbi5lbnVtJztcbmltcG9ydCB7IFJlY2lwZUZpbHRlciwgUmVjaXBlRmlsdGVycyB9IGZyb20gJy4uLy4uL190eXBlcy9yZWNpcGUtZmlsdGVycyc7XG5pbXBvcnQgcGljayBmcm9tICdsb2Rhc2gtZXMvcGljayc7XG5pbXBvcnQgeyBDYXRhbG9nUmVjaXBlQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1jYXRhbG9nLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2F0YWxvZy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2F0YWxvZy1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENhdGFsb2dMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGZpbHRlcnM6IFJlY2lwZUZpbHRlcnM7XG4gIEBJbnB1dCgpIG5vUmVjaXBlVGV4dEZpcnN0TGluZTogc3RyaW5nO1xuICBASW5wdXQoKSBub1JlY2lwZVRleHRTZWNvbmRMaW5lOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGluc2VydENyZWF0ZUNhcmQgPSBmYWxzZTtcbiAgQElucHV0KCkgcmFuZG9tTW9kZSA9IGZhbHNlO1xuICBASW5wdXQoKSBtb2RpZmllZEd1ZXN0cztcbiAgQE91dHB1dCgpIHJldHJpZXZlZFJlY2lwZXMgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY2lwZVtdPigpO1xuICBAT3V0cHV0KCkgZmlsdGVyUmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgcmVjaXBlQWN0aW9uVHJpZ2dlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjx7YWN0aW9uOiBzdHJpbmcsIHJlY2lwZTogUmVjaXBlfT4oKTtcbiAgQE91dHB1dCgpIGxvYWRpbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gIGN1cnJlbnRSZWNpcGVzOiBSZWNpcGVbXSA9IFtdO1xuICBsYXN0UGFnZSA9IDA7XG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdO1xuICBpY29uID0gSWNvbjtcbiAgbm9Nb3JlUmVjaXBlcyA9IGZhbHNlO1xuICBub01vcmVBcnRpY2xlcyA9IGZhbHNlO1xuICBib3R0b21BbmNob3I6IEhUTUxFbGVtZW50O1xuICBmaWx0ZXJzQXJlRW1wdHkgPSB0cnVlO1xuICBmaWx0ZXJzVG9EaXNwbGF5ID0gW107XG4gIGFydGljbGVzOiBBcnRpY2xlW10gPSBbXTtcbiAgQFZpZXdDaGlsZHJlbihDYXRhbG9nUmVjaXBlQ2FyZENvbXBvbmVudCkgcmVjaXBlQ2FyZHMhOiBRdWVyeUxpc3Q8Q2F0YWxvZ1JlY2lwZUNhcmRDb21wb25lbnQ+O1xuXG4gIHByaXZhdGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyO1xuICBwcml2YXRlIG11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWNpcGVzU2VydmljZTogUmVjaXBlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVMaWtlc1NlcnZpY2U6IFJlY2lwZUxpa2VzU2VydmljZSxcbiAgICBwcml2YXRlIGFydGljbGVzU2VydmljZTogQXJ0aWNsZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dDogQ29udGV4dFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucyA9IFtdO1xuICAgIHRoaXMuY3VycmVudFJlY2lwZXMgPSBbXTtcbiAgICB0aGlzLmZpbHRlcnMgPSB7IHNlYXJjaDogJycgfTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuYm90dG9tQW5jaG9yID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21pYW0tY2F0YWxvZy1saXN0X19hbmNob3InKTtcbiAgICB0aGlzLmluaXRMb2FkT25TY3JvbGwoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCkge1xuICAgIHRoaXMuZmlsdGVyc1RvRGlzcGxheSA9IHRoaXMuYnVpbGRGaWx0ZXJzQXJyYXkoKTtcbiAgICB0aGlzLnJlbG9hZFBhZ2UoKTtcbiAgfVxuXG4gIGluaXRMb2FkT25TY3JvbGwoKSB7XG4gICAgLy8gUmVjZWl2ZSBhbiBldmVudCBlYWNoIHRpbWUgdGhlIGFuY2hvciBlbnRlcnMvbGVhdmVzIHRoZSB2aWV3cG9ydFxuICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKFtlbnRyeV0pID0+IHsgdGhpcy5hdXRvbG9hZENvbnRlbnRJZk5lY2Vzc2FyeSgpOyB9LCB7fSk7XG4gICAgLy8gUmVjZWl2ZSBhbiBldmVudCBlYWNoIHRpbWUgYW4gYXR0cmlidXRlL2NoaWxkIGlzIGFkZGVkL2RlbGV0ZWQvdXBkYXRlZCBpbiB0aGUgcGFyZW50IGRpdiBvZiB0aGUgcmVjaXBlc1xuICAgIC8vIGkuZS4gd2lsbCBiZSB0cmlnZ2VyZWQgZWFjaCB0aW1lIG5ldyByZWNpcGVzIGFyZSBkaXNwbGF5ZWRcbiAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcigoKSA9PiB7IHRoaXMuYXV0b2xvYWRDb250ZW50SWZOZWNlc3NhcnkoKTsgfSk7XG5cbiAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLm9ic2VydmUodGhpcy5ib3R0b21BbmNob3IpO1xuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5vYnNlcnZlKFxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnbWlhbS1jYXRhbG9nLWxpc3RfX2NhcmRzJylbMF0sXG4gICAgICB7IGF0dHJpYnV0ZXM6IHRydWUsIGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogZmFsc2UgfSAvLyBzdWJ0cmVlIGZhbHNlID0+IGNoYW5nZXMgb24gY2hpbGRyZW4gd29uJ3QgdHJpZ2dlciB0aGUgY2FsbGJhY2tcbiAgICApO1xuICB9XG5cbiAgYW5jaG9ySXNPblNjcmVlbigpIHtcbiAgICBjb25zdCB2aWV3cG9ydEhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICAgIGNvbnN0IHJlY3QgPSB0aGlzLmJvdHRvbUFuY2hvci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICByZXR1cm4gKHJlY3QudG9wIDw9IHZpZXdwb3J0SGVpZ2h0ICYmIHJlY3QuYm90dG9tID49IDApO1xuICB9XG5cbiAgYXV0b2xvYWRDb250ZW50SWZOZWNlc3NhcnkoKSB7XG4gICAgdGhpcy5sb2FkaW5nLnBpcGUodGFrZSgxKSwgZmlsdGVyKGxvYWRpbmcgPT4gIWxvYWRpbmcpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmFuY2hvcklzT25TY3JlZW4oKSAmJiAoXG4gICAgICAgICAgKHRoaXMuY3VycmVudFJlY2lwZXMubGVuZ3RoID4gMCAmJiAhdGhpcy5ub01vcmVSZWNpcGVzKSB8fFxuICAgICAgICAgICh0aGlzLmFydGljbGVzLmxlbmd0aCA+IDAgJiYgIXRoaXMubm9Nb3JlQXJ0aWNsZXMpXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICAvLyBBdCBjb21wb25lbnQgaW5pdGlhbCBsb2FkLCAyIGNhbGxzIHdpbGwgYmUgbWFkZSBmb3IgdGhlIGZpcnN0IHR3byByZWNpcGVzIHBhZ2VcbiAgICAgICAgLy8gVGhpcyBpcyB0byBhdm9pZCBtYWtpbmcgdGhlIGxvYWRlciBzcGluIHR3aWNlXG4gICAgICAgIHRoaXMubG9hZE1vcmUodGhpcy5sYXN0UGFnZSA+IDIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbG9hZE1vcmUobG9hZGVyID0gdHJ1ZSkge1xuICAgIGlmIChsb2FkZXIpIHsgdGhpcy5sb2FkaW5nLm5leHQodHJ1ZSk7IH1cbiAgICB0aGlzLmxhc3RQYWdlKys7XG4gICAgdGhpcy5sb2FkQ29udGVudCgpO1xuICB9XG5cbiAgbG9hZFJlY2lwZXNQYWdlKHBhZ2U6IG51bWJlcik6IE9ic2VydmFibGU8UmVjaXBlW10+IHtcbiAgICBpZiAodGhpcy5ub01vcmVSZWNpcGVzKSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cblxuICAgIC8vIGtlZXAgYSBjb3B5IG9mIHRoZSBmaWx0ZXJzIHdoZW4gcmVxdWVzdCBpcyBzZW50LCBzbyB3ZSBjYW4gY2hlY2sgdGhleSBhcmUgc3RpbGwgdGhlIHNhbWUgd2hlbiBpdCBpcyByZWNlaXZlZFxuICAgIC8vIEJlY2F1c2UgaWYgaXQncyBub3QgdGhlIGNhc2Ugd2UgaGF2ZSB0byBpZ25vcmUgdGhlIHJlc3VsdHNcbiAgICBjb25zdCByZXF1ZXN0RmlsdGVycyA9IHsgLi4udGhpcy5maWx0ZXJzIH07XG4gICAgcmV0dXJuIHRoaXMucmVjaXBlc1NlcnZpY2UuZmlsdGVyKHJlcXVlc3RGaWx0ZXJzLCB7IHNpemU6IDIwLCBudW1iZXI6IHBhZ2UgfSwgbnVsbCwgdGhpcy5yYW5kb21Nb2RlKS5waXBlKFxuICAgICAgc3dpdGNoTWFwKChyZXN1bHQ6IFJlY2lwZVtdKSA9PiB0aGlzLnByb2Nlc3NSZXN1bHRzKHJlc3VsdCwgcmVxdWVzdEZpbHRlcnMsIHBhZ2UpKVxuICAgICk7XG4gIH1cblxuICBwcm9jZXNzUmVzdWx0cyhyZXN1bHRzOiBSZWNpcGVbXSwgcmVxdWVzdEZpbHRlcnMsIHBhZ2UpOiBPYnNlcnZhYmxlPFJlY2lwZVtdPiB7XG4gICAgLy8gQmVjYXVzZSBGaWx0ZXIgaXMgYSB0eXBlLCBhdHRyaWJ1dGVzIGFyZSBhbHdheXMgaW4gdGhlIHNhbWUgb3JkZXIsIHNvIHN0cmluZ2lmeSB3b24ndCBiZSBmYWxzZSBmb3Igb2JqZWN0cyB3aXRoIHNhbWUgYXR0cmlidXRlc1xuICAgIGlmIChKU09OLnN0cmluZ2lmeShyZXF1ZXN0RmlsdGVycykgPT09IEpTT04uc3RyaW5naWZ5KHRoaXMuZmlsdGVycykpIHtcbiAgICAgIC8vIGlmIHlvdSBzcGFtIGNsaWNrIG9uIGZpbHRlcnMsIG11bHRpcGxlIHJlcXVlc3RzIHdpdGggcGFnZSA9PSAxIGNvdWxkIGJlIHNlbnQgZm9yIHRoZSBzYW1lIGZpbHRlcnMgLT4gb25seSBrZWVwIHRoZSBsYXN0IHJlc3VsdFxuICAgICAgdGhpcy5jdXJyZW50UmVjaXBlcyA9IHBhZ2UgPT09IDEgPyByZXN1bHRzIDogWy4uLnRoaXMuY3VycmVudFJlY2lwZXMsIC4uLnJlc3VsdHNdO1xuICAgICAgdGhpcy5jdXJyZW50UmVjaXBlcy5mb3JFYWNoKChyOiBSZWNpcGUpID0+IHtcbiAgICAgICAgaWYgKHRoaXMubW9kaWZpZWRHdWVzdHMgJiYgcGFyc2VJbnQodGhpcy5tb2RpZmllZEd1ZXN0cywgMTApID4gMCkge1xuICAgICAgICAgIHIubW9kaWZpZWRHdWVzdHMgPSBwYXJzZUludCh0aGlzLm1vZGlmaWVkR3Vlc3RzLCAxMCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5ub01vcmVSZWNpcGVzID0gcmVzdWx0cy5sZW5ndGggPT09IDA7XG5cbiAgICAgIC8vIEdldCBhbGwgcmVjaXBlLWxpa2VzIGJlZm9yZSBkaXNwbGF5aW5nXG4gICAgICByZXR1cm4gdGhpcy5yZWNpcGVMaWtlc1NlcnZpY2UuYWRkTGlrZXNUb1JlY2lwZXMocmVzdWx0cykucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLnJldHJpZXZlZFJlY2lwZXMuZW1pdCh0aGlzLmN1cnJlbnRSZWNpcGVzKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50UmVjaXBlcztcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmRlYnVnKCdGaWx0ZXJpbmcgYWJvcnRlZCA6ICcgKyBKU09OLnN0cmluZ2lmeShyZXF1ZXN0RmlsdGVycykgKyAnYW5kJyArIEpTT04uc3RyaW5naWZ5KHRoaXMuZmlsdGVycykgKyAnYXJlIGRpZmZlcmVudCcpO1xuICAgICAgcmV0dXJuIG9mKFtdKTtcbiAgICB9XG4gIH1cblxuICByZW1vdmVGaWx0ZXIoZmlsdGVyTmFtZSkge1xuICAgIHRoaXMuZmlsdGVyUmVtb3ZlZC5lbWl0KGZpbHRlck5hbWUpO1xuICB9XG5cbiAgYnVpbGRGaWx0ZXJzQXJyYXkoKTogc3RyaW5nW10ge1xuICAgIGxldCBmaWx0ZXJOYW1lcyA9IFtdO1xuICAgIGZpbHRlck5hbWVzID0gWy4uLmZpbHRlck5hbWVzLCAuLi50aGlzLmdldFNlbGVjdGVkRmlsdGVycyh0aGlzLmZpbHRlcnMuY29zdCksIC4uLnRoaXMuZ2V0U2VsZWN0ZWRGaWx0ZXJzKHRoaXMuZmlsdGVycy5kaWZmaWN1bHR5KSxcbiAgICAgIC4uLnRoaXMuZ2V0U2VsZWN0ZWRGaWx0ZXJzKHRoaXMuZmlsdGVycy50aW1lKV07XG4gICAgaWYgKHRoaXMuZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycyAmJiB0aGlzLmZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnMudGl0bGUgIT09ICcnKSB7XG4gICAgICBmaWx0ZXJOYW1lcyA9IFt0aGlzLmZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnMudGl0bGVdLmNvbmNhdChmaWx0ZXJOYW1lcyk7XG4gICAgfVxuICAgIHJldHVybiBmaWx0ZXJOYW1lcztcbiAgfVxuXG4gIGdldFNlbGVjdGVkRmlsdGVycyhmaWx0ZXJzQXJyYXkpOiBzdHJpbmdbXSB7XG4gICAgaWYgKCFmaWx0ZXJzQXJyYXkpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICByZXR1cm4gZmlsdGVyc0FycmF5LmZpbHRlcihlbCA9PiBlbC52YWx1ZSkubWFwKGVsID0+IGVsLnRleHQpO1xuICB9XG5cbiAgcmVsb2FkUGFnZSgpIHtcbiAgICB0aGlzLmxvYWRpbmcubmV4dCh0cnVlKTtcbiAgICB0aGlzLmxhc3RQYWdlID0gMTtcbiAgICB0aGlzLm5vTW9yZVJlY2lwZXMgPSBmYWxzZTtcbiAgICB0aGlzLm5vTW9yZUFydGljbGVzID0gZmFsc2U7XG4gICAgdGhpcy5jdXJyZW50UmVjaXBlcyA9IFtdO1xuICAgIHRoaXMuYXJ0aWNsZXMgPSBbXTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5sb2FkQ29udGVudCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3ViID0+IHN1Yi51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLmludGVyc2VjdGlvbk9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLm11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICB9XG5cbiAgLy8gQXJ0aWNsZXMgd2lsbCBiZSBsb2FkZWQgb25seSBpZiBhIGZpbHRlciBpcyBhcHBsaWVkIG9uIHBhY2thZ2VzXG4gIC8vIFRoaXMgaXMgdG8gYXZvaWQgYXJ0aWNsZXMgYmVpbmcgbG9hZGVkIGluIHNwZWNpYWwgcGFnZXMgd2hlcmUgb25seSBmaWx0ZXJzIG9uIHJlY2lwZXMgYXJlIHBhc3NlZCAoZmF2b3JpdGVzLCBzdWdnZXN0ZWQsIGV0Yy4pXG4gIC8vID0+IFBhY2thZ2VzIG1peGluZyBhcnRpY2xlcyB3aXRoIHJlY2lwZXMgaXMgbm90IHN1cHBvcnRlZCB5ZXRcbiAgcHJpdmF0ZSBsb2FkQXJ0aWNsZXMocGFnZTogbnVtYmVyKTogT2JzZXJ2YWJsZTxBcnRpY2xlW10+IHtcbiAgICBpZiAoIXRoaXMuY29udGV4dC5hcnRpY2xlc0luQ2F0YWxvZ0VuYWJsZWQgfHwgdGhpcy5ub01vcmVBcnRpY2xlcyB8fCAhdGhpcy5maWx0ZXJzWydwYWNrYWdlcyddKSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cblxuICAgIGNvbnN0IHJlcXVlc3RGaWx0ZXJzID0gcGljayh0aGlzLmZpbHRlcnMsICdwYWNrYWdlcycsICdzZWFyY2gnKTtcbiAgICByZXR1cm4gdGhpcy5hcnRpY2xlc1NlcnZpY2UuYWxsKHtcbiAgICAgIHJlbW90ZWZpbHRlcjogcmVxdWVzdEZpbHRlcnMsXG4gICAgICBwYWdlOiB7IHNpemU6IDIwLCBudW1iZXI6IHBhZ2UgfSxcbiAgICAgIHNvcnQ6IFsnLWRhdGUnXSB9KS5waXBlKFxuICAgICAgbWFwKChyZXN1bHQ6IERvY3VtZW50Q29sbGVjdGlvbjxBcnRpY2xlPikgPT4ge1xuICAgICAgICB0aGlzLmFydGljbGVzID0gcGFnZSA9PT0gMSA/IHJlc3VsdC5kYXRhIDogWy4uLnRoaXMuYXJ0aWNsZXMsIC4uLnJlc3VsdC5kYXRhXTtcbiAgICAgICAgdGhpcy5ub01vcmVBcnRpY2xlcyA9IHJlc3VsdC5kYXRhLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgcmV0dXJuIHRoaXMuYXJ0aWNsZXM7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRDb250ZW50KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgZm9ya0pvaW4oW3RoaXMubG9hZFJlY2lwZXNQYWdlKHRoaXMubGFzdFBhZ2UpLCB0aGlzLmxvYWRBcnRpY2xlcyh0aGlzLmxhc3RQYWdlKV0pLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMubG9hZGluZy5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwibWlhbS1jYXRhbG9nLWxpc3RfX2NhcmRzXCI+XG5cbiAgPCEtLSA8ZGl2ICpuZ0lmPVwiZmlsdGVyc1RvRGlzcGxheS5sZW5ndGggPiAwXCIgY2xhc3M9XCJtaWFtLWNhdGFsb2ctbGlzdF9fZmlsdGVyc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLWNhdGFsb2ctbGlzdF9fZmlsdGVyX190aXRsZVwiPlZvcyBmaWx0cmVzPC9kaXY+XG4gICAgPGRpdiAqbmdGb3I9XCJsZXQgZmlsdGVyIG9mIGZpbHRlcnNUb0Rpc3BsYXlcIiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1saXN0X19maWx0ZXJcIj5cbiAgICAgIDxzcGFuPnt7ZmlsdGVyfX08L3NwYW4+XG4gICAgICA8bmctbWlhbS1pY29uIFxuICAgICAgICBjbGFzcz1cIm1pYW0tY2F0YWxvZy1saXN0X19maWx0ZXJfX2ljb25cIiBcbiAgICAgICAgKGNsaWNrKT1cInJlbW92ZUZpbHRlcihmaWx0ZXIpXCIgXG4gICAgICAgIFtpY29uTmFtZV09XCJpY29uLkNsZWFyXCJcbiAgICAgICAgcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1wcmltYXJ5KVwiPlxuICAgICAgPC9uZy1taWFtLWljb24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PiAtLT5cblxuICA8ZGl2ICpuZ0lmPVwiIShsb2FkaW5nIHwgYXN5bmMpICYmIGN1cnJlbnRSZWNpcGVzLmxlbmd0aCA9PT0gMCAmJiBhcnRpY2xlcy5sZW5ndGggPT09IDBcIiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1saXN0X19ub3RGb3VuZFwiPlxuICAgIDxuZy1taWFtLWljb24gY2xhc3M9XCJtaWFtLWNhdGFsb2ctbGlzdF9fbm90Rm91bmRfX2ljb25cIiBbd2lkdGhdPVwiMjc5XCIgW2hlaWdodF09XCIyNDNcIiBbaWNvbk5hbWVdPVwiaWNvbi5Ob1JlY2lwZUZvdW5kXCI+PC9uZy1taWFtLWljb24+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1saXN0X19ub3RGb3VuZF9fdGl0bGUxXCI+XG4gICAgICA8c3BhbiAqbmdJZj1cIm5vUmVjaXBlVGV4dEZpcnN0TGluZSAmJiBmaWx0ZXJzQXJlRW1wdHkgZWxzZSBkZWZhdWx0Rmlyc3RMaW5lXCI+XG4gICAgICAgIHt7bm9SZWNpcGVUZXh0Rmlyc3RMaW5lfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEZpcnN0TGluZT5cbiAgICAgICAgPHNwYW4+RMOpc29sw6ksIGF1Y3VuZSBwcm9wb3NpdGlvbiB0cm91dsOpZSA8L3NwYW4+IFxuICAgICAgICA8c3BhbiAqbmdJZj1cImZpbHRlcnMuc2VhcmNoXCI+cG91ciBcInt7ZmlsdGVycy5zZWFyY2h9fVwiPC9zcGFuPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1jYXRhbG9nLWxpc3RfX25vdEZvdW5kX190aXRsZTJcIj5cbiAgICAgIDxzcGFuICpuZ0lmPVwibm9SZWNpcGVUZXh0U2Vjb25kTGluZSAmJiBmaWx0ZXJzQXJlRW1wdHkgZWxzZSBkZWZhdWx0U2Vjb25kTGluZVwiPlxuICAgICAgICB7e25vUmVjaXBlVGV4dFNlY29uZExpbmV9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U2Vjb25kTGluZT5cbiAgICAgICAgVmV1aWxsZXogbW9kaWZpZXIgbGVzIHRlcm1lcyBkZSB2b3RyZSByZWNoZXJjaGUgb3UgcsOpZ2xlciBsZXMgZmlsdHJlc1xuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy1taWFtLWNhcmQtY3JlYXRlLXJlY2lwZSAqbmdJZj1cImluc2VydENyZWF0ZUNhcmQgJiYgY3VycmVudFJlY2lwZXMubGVuZ3RoICE9PSAwXCIgKGNsaWNrZWQpPVwicmVjaXBlQWN0aW9uVHJpZ2dlcmVkLmVtaXQoe2FjdGlvbjogJ0NSRUFURScsIHJlY2lwZTogbnVsbH0pXCIgY2xhc3M9XCJtaWFtLWNhdGFsb2ctbGlzdF9fY2FyZFwiPjwvbmctbWlhbS1jYXJkLWNyZWF0ZS1yZWNpcGU+XG4gIDxuZy1taWFtLWNhdGFsb2ctcmVjaXBlLWNhcmRcbiAgICAqbmdGb3I9XCJsZXQgcmVjaXBlIG9mIGN1cnJlbnRSZWNpcGVzXCJcbiAgICBbcmVjaXBlXT0ncmVjaXBlJ1xuICAgIChhY3Rpb25UcmlnZ2VyZWQpPVwicmVjaXBlQWN0aW9uVHJpZ2dlcmVkLmVtaXQoe2FjdGlvbjogJGV2ZW50LCByZWNpcGU6IHJlY2lwZX0pXCJcbiAgPjwvbmctbWlhbS1jYXRhbG9nLXJlY2lwZS1jYXJkPlxuICA8bmctbWlhbS1jYXRhbG9nLWFydGljbGUtY2FyZCAqbmdGb3I9XCJsZXQgYXJ0aWNsZSBvZiBhcnRpY2xlc1wiIFthcnRpY2xlXT1cImFydGljbGVcIj48L25nLW1pYW0tY2F0YWxvZy1hcnRpY2xlLWNhcmQ+XG4gIDxkaXYgKm5nSWY9XCJsb2FkaW5nIHwgYXN5bmNcIiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1saXN0X19sb2FkZXJcIj5cbiAgICA8bmctbWlhbS1sb2FkZXI+PC9uZy1taWFtLWxvYWRlcj5cbiAgICA8ZGl2PlxuICAgICAgQ2hhcmdlbWVudCBkZXMgcsOpc3VsdGF0cy4uLlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBpZD1cIm1pYW0tY2F0YWxvZy1saXN0X19hbmNob3JcIj48L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
334
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0YWxvZy1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIvYnVpbGRzL21pYW0vbmctbWlhbS1zZGsvcHJvamVjdHMvbmctbWlhbS9zcmMvIiwic291cmNlcyI6WyJsaWIvX3dlYi1jb21wb25lbnRzL2NhdGFsb2ctbGlzdC9jYXRhbG9nLWxpc3QuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9jYXRhbG9nLWxpc3QvY2F0YWxvZy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFHakIsTUFBTSxFQUNOLFlBQVksRUFDWixLQUFLLEVBRUwsWUFBWSxFQUNaLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFhLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUd6RSxPQUFPLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkgsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRTlDLE9BQU8sSUFBSSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLElBQUksQ0FBQzs7Ozs7Ozs7OztJQ0h4Qyw0QkFBNEI7SUFBQSxZQUF5QjtJQUFBLGlCQUFPOzs7SUFBaEMsZUFBeUI7SUFBekIsOERBQXlCOzs7SUFIekQsMkJBQ0U7SUFBQSwrQkFDRTtJQUFBLDRCQUFNO0lBQUEsaUVBQWtDO0lBQUEsaUJBQU87SUFDL0Msb0ZBQTRCO0lBQzlCLGlCQUFNO0lBQ04sK0JBQWlEO0lBQUEsMEZBQXFFO0lBQUEsaUJBQU07SUFDOUgsaUJBQU07OztJQUhJLGVBQXFCO0lBQXJCLDJDQUFxQjs7O0lBSzdCLDJCQUNFO0lBQUEsZ0NBQWtEO0lBQUEsNkZBQXlEO0lBQUEsaUJBQU87SUFDcEgsaUJBQU07OztJQUZOLHlGQUNFOzs7Ozs7SUFERyx5RUFBeUQsaUJBQUE7OztJQUs5RCxnQ0FBa0Q7SUFBQSxnSEFBdUU7SUFBQSxpQkFBTzs7O0lBZnBJLDhCQUNFO0lBQUEsa0NBQW9JO0lBQ3BJLDJFQUNFO0lBTUYsNkhBQ0U7SUFJRiw2SEFDRTtJQUVKLGlCQUFNOzs7O0lBaEJvRCxlQUFhO0lBQWIsMkJBQWEsZUFBQSx1Q0FBQTtJQUNoRSxlQUF1QztJQUF2QywyQ0FBdUMsaUJBQUE7Ozs7SUFnQjlDLHNEQUEwTjtJQUF0SSxrTkFBVyw2Q0FBb0MsUUFBUSxVQUFVLElBQUksR0FBRSxJQUFDO0lBQWlDLGlCQUE2Qjs7OztJQUMxTix1REFJK0I7SUFEN0IsNFFBQW1CLDBFQUE0RCxJQUFDO0lBQ2pGLGlCQUE4Qjs7O0lBRjdCLG1DQUFpQjs7O0lBR25CLG1EQUFrSDs7O0lBQW5ELHFDQUFtQjs7O0lBQ2xGLCtCQUNFO0lBQUEsaUNBQWlDO0lBQ2pDLDJCQUNFO0lBQUEsa0RBQ0Y7SUFBQSxpQkFBTTtJQUNSLGlCQUFNOztBRGJSLE1BQU0sT0FBTyxvQkFBb0I7SUF3Qi9CLFlBQ1UsY0FBOEIsRUFDOUIsa0JBQXNDLEVBQ3RDLGVBQWdDLEVBQ2pDLFdBQXdCLEVBQ3ZCLE9BQXVCLEVBQ3ZCLEdBQXNCO1FBTHRCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3RDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNqQyxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN2QixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUN2QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQTVCdkIscUJBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFFbEIscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQVksQ0FBQztRQUNoRCxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDM0MsMEJBQXFCLEdBQUcsSUFBSSxZQUFZLEVBQW9DLENBQUM7UUFDN0UsWUFBTyxHQUFHLElBQUksZUFBZSxDQUFVLElBQUksQ0FBQyxDQUFDO1FBRXZELG1CQUFjLEdBQWEsRUFBRSxDQUFDO1FBQzlCLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFFYixTQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ1osa0JBQWEsR0FBRyxLQUFLLENBQUM7UUFDdEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFFdkIscUJBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLGFBQVEsR0FBYyxFQUFFLENBQUM7UUFjdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsbUVBQW1FO1FBQ25FLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUcsMEdBQTBHO1FBQzFHLDZEQUE2RDtRQUM3RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTNGLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQzNCLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUM5RCxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLENBQUMsa0VBQWtFO1NBQ3pILENBQUM7SUFDSixDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxRQUFRLENBQUMsZUFBZSxDQUFDLFlBQVksQ0FBQztRQUNuRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDdkQsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksY0FBYyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELDBCQUEwQjtRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDckUsSUFDRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUN6QixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7Z0JBQ3ZELENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUNuRCxFQUNEO2dCQUNBLGlGQUFpRjtnQkFDakYsZ0RBQWdEO2dCQUNoRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDbEM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBTSxHQUFHLElBQUk7UUFDcEIsSUFBSSxNQUFNLEVBQUU7WUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUFFO1FBQ3hDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGVBQWUsQ0FBQyxJQUFZO1FBQzFCLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNmO1FBRUQsK0dBQStHO1FBQy9HLDZEQUE2RDtRQUM3RCxNQUFNLGNBQWMscUJBQVEsSUFBSSxDQUFDLE9BQU8sQ0FBRSxDQUFDO1FBQzNDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQ3ZHLFNBQVMsQ0FBQyxDQUFDLE1BQWdCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUNuRixDQUFDO0lBQ0osQ0FBQztJQUVELGNBQWMsQ0FBQyxPQUFpQixFQUFFLGNBQWMsRUFBRSxJQUFJO1FBQ3BELGtJQUFrSTtRQUNsSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEtBQUssSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDbkUsaUlBQWlJO1lBQ2pJLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLE9BQU8sQ0FBQyxDQUFDO1lBQ2xGLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBUyxFQUFFLEVBQUU7Z0JBQ3hDLElBQUksSUFBSSxDQUFDLGNBQWMsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUU7b0JBQ2hFLENBQUMsQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLENBQUM7aUJBQ3REO1lBQ0gsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1lBRTFDLHlDQUF5QztZQUN6QyxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQzVELEdBQUcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ1AsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQ2hELE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztZQUM3QixDQUFDLENBQUMsQ0FDSCxDQUFDO1NBQ0g7YUFDSTtZQUNILHVDQUF1QztZQUN2QyxPQUFPLENBQUMsS0FBSyxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDO1lBQ2hJLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLFVBQVU7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUNyQixXQUFXLEdBQUcsQ0FBQyxHQUFHLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1lBQy9ILEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNqRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEtBQUssRUFBRSxFQUFFO1lBQ2pGLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQzFFO1FBQ0QsT0FBTyxXQUFXLENBQUM7SUFDckIsQ0FBQztJQUVELGtCQUFrQixDQUFDLFlBQVk7UUFDN0IsSUFBSSxDQUFDLFlBQVksRUFBRTtZQUFFLE9BQU8sRUFBRSxDQUFDO1NBQUU7UUFFakMsT0FBTyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1FBQ2xCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO1FBQzVCLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3JDLENBQUM7SUFFRCxrRUFBa0U7SUFDbEUsZ0lBQWdJO0lBQ2hJLGdFQUFnRTtJQUN4RCxZQUFZLENBQUMsSUFBWTtRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsSUFBSSxJQUFJLENBQUMsY0FBYyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM5RixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNmO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUM7WUFDOUIsWUFBWSxFQUFFLGNBQWM7WUFDNUIsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ2hDLElBQUksRUFBRSxDQUFDLE9BQU8sQ0FBQztTQUFFLENBQUMsQ0FBQyxJQUFJLENBQ3ZCLEdBQUcsQ0FBQyxDQUFDLE1BQW1DLEVBQUUsRUFBRTtZQUMxQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlFLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1lBQy9DLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQy9GLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUE7SUFDekQsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFzQjtRQUNqQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLE1BQU0sRUFBRTtZQUN0QixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7Z0JBQ1gsT0FBTyxLQUFLLENBQUM7YUFDZDtTQUNGO1FBQ0QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQzVKLENBQUM7O3dGQWxOVSxvQkFBb0I7eURBQXBCLG9CQUFvQjt1QkFtQmpCLDBCQUEwQjs7Ozs7UUNuRDFDLDhCQUVFO1FBYUEscUVBQ0U7O1FBaUJGLG1IQUE2TDtRQUM3TCxxSEFJQztRQUNELHVIQUFtRjtRQUNuRixxRUFDRTs7UUFLRix5QkFBMEM7UUFDNUMsaUJBQU07O1FBaENDLGVBQWtGO1FBQWxGLHlIQUFrRjtRQWtCM0QsZUFBdUQ7UUFBdkQsOEVBQXVEO1FBRWpGLGVBQXFDO1FBQXJDLDRDQUFxQztRQUlULGVBQWdDO1FBQWhDLHNDQUFnQztRQUN6RCxlQUF1QjtRQUF2Qix3REFBdUI7O2tERFJqQixvQkFBb0I7Y0FQaEMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSxzQkFBc0I7Z0JBQ2hDLFdBQVcsRUFBRSwrQkFBK0I7Z0JBQzVDLFNBQVMsRUFBRSxDQUFDLCtCQUErQixDQUFDO2dCQUM1QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07YUFDaEQ7dU5BRVUsT0FBTztrQkFBZixLQUFLO1lBQ0csZ0JBQWdCO2tCQUF4QixLQUFLO1lBQ0csVUFBVTtrQkFBbEIsS0FBSztZQUNHLGNBQWM7a0JBQXRCLEtBQUs7WUFDSSxnQkFBZ0I7a0JBQXpCLE1BQU07WUFDRyxhQUFhO2tCQUF0QixNQUFNO1lBQ0cscUJBQXFCO2tCQUE5QixNQUFNO1lBQ0csT0FBTztrQkFBaEIsTUFBTTtZQVdtQyxXQUFXO2tCQUFwRCxZQUFZO21CQUFDLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBWaWV3Q2hpbGRyZW4sXG4gIFF1ZXJ5TGlzdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvY3VtZW50Q29sbGVjdGlvbiB9IGZyb20gJ25neC1qc29uYXBpJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBza2lwV2hpbGUsIHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEFydGljbGUgfSBmcm9tICcuLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7IFJlY2lwZSB9IGZyb20gJy4uLy4uL19tb2RlbHMvcmVjaXBlJztcbmltcG9ydCB7IEFydGljbGVzU2VydmljZSwgQ29udGV4dFNlcnZpY2UsIFJlY2lwZUxpa2VzU2VydmljZSwgUmVjaXBlc1NlcnZpY2UsIFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi9fdHlwZXMvaWNvbi5lbnVtJztcbmltcG9ydCB7IFJlY2lwZUZpbHRlciwgUmVjaXBlRmlsdGVycyB9IGZyb20gJy4uLy4uL190eXBlcy9yZWNpcGUtZmlsdGVycyc7XG5pbXBvcnQgcGljayBmcm9tICdsb2Rhc2gtZXMvcGljayc7XG5pbXBvcnQgeyBDYXRhbG9nUmVjaXBlQ2FyZENvbXBvbmVudCB9IGZyb20gJy4uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmctbWlhbS1jYXRhbG9nLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vY2F0YWxvZy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2F0YWxvZy1saXN0LmNvbXBvbmVudC5zY3NzJ10sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENhdGFsb2dMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95LCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGZpbHRlcnM6IFJlY2lwZUZpbHRlcnM7XG4gIEBJbnB1dCgpIGluc2VydENyZWF0ZUNhcmQgPSBmYWxzZTtcbiAgQElucHV0KCkgcmFuZG9tTW9kZSA9IGZhbHNlO1xuICBASW5wdXQoKSBtb2RpZmllZEd1ZXN0cztcbiAgQE91dHB1dCgpIHJldHJpZXZlZFJlY2lwZXMgPSBuZXcgRXZlbnRFbWl0dGVyPFJlY2lwZVtdPigpO1xuICBAT3V0cHV0KCkgZmlsdGVyUmVtb3ZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgcmVjaXBlQWN0aW9uVHJpZ2dlcmVkID0gbmV3IEV2ZW50RW1pdHRlcjx7YWN0aW9uOiBzdHJpbmcsIHJlY2lwZTogUmVjaXBlfT4oKTtcbiAgQE91dHB1dCgpIGxvYWRpbmcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xuXG4gIGN1cnJlbnRSZWNpcGVzOiBSZWNpcGVbXSA9IFtdO1xuICBsYXN0UGFnZSA9IDA7XG4gIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdO1xuICBpY29uID0gSWNvbjtcbiAgbm9Nb3JlUmVjaXBlcyA9IGZhbHNlO1xuICBub01vcmVBcnRpY2xlcyA9IGZhbHNlO1xuICBib3R0b21BbmNob3I6IEhUTUxFbGVtZW50O1xuICBmaWx0ZXJzVG9EaXNwbGF5ID0gW107XG4gIGFydGljbGVzOiBBcnRpY2xlW10gPSBbXTtcbiAgQFZpZXdDaGlsZHJlbihDYXRhbG9nUmVjaXBlQ2FyZENvbXBvbmVudCkgcmVjaXBlQ2FyZHMhOiBRdWVyeUxpc3Q8Q2F0YWxvZ1JlY2lwZUNhcmRDb21wb25lbnQ+O1xuXG4gIHByaXZhdGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyO1xuICBwcml2YXRlIG11dGF0aW9uT2JzZXJ2ZXI6IE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWNpcGVzU2VydmljZTogUmVjaXBlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVMaWtlc1NlcnZpY2U6IFJlY2lwZUxpa2VzU2VydmljZSxcbiAgICBwcml2YXRlIGFydGljbGVzU2VydmljZTogQXJ0aWNsZXNTZXJ2aWNlLFxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb250ZXh0OiBDb250ZXh0U2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zID0gW107XG4gICAgdGhpcy5jdXJyZW50UmVjaXBlcyA9IFtdO1xuICAgIHRoaXMuZmlsdGVycyA9IHsgc2VhcmNoOiAnJyB9O1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5ib3R0b21BbmNob3IgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWlhbS1jYXRhbG9nLWxpc3RfX2FuY2hvcicpO1xuICAgIHRoaXMuaW5pdExvYWRPblNjcm9sbCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgdGhpcy5maWx0ZXJzVG9EaXNwbGF5ID0gdGhpcy5idWlsZEZpbHRlcnNBcnJheSgpO1xuICAgIHRoaXMucmVsb2FkUGFnZSgpO1xuICB9XG5cbiAgaW5pdExvYWRPblNjcm9sbCgpIHtcbiAgICAvLyBSZWNlaXZlIGFuIGV2ZW50IGVhY2ggdGltZSB0aGUgYW5jaG9yIGVudGVycy9sZWF2ZXMgdGhlIHZpZXdwb3J0XG4gICAgdGhpcy5pbnRlcnNlY3Rpb25PYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcigoW2VudHJ5XSkgPT4geyB0aGlzLmF1dG9sb2FkQ29udGVudElmTmVjZXNzYXJ5KCk7IH0sIHt9KTtcbiAgICAvLyBSZWNlaXZlIGFuIGV2ZW50IGVhY2ggdGltZSBhbiBhdHRyaWJ1dGUvY2hpbGQgaXMgYWRkZWQvZGVsZXRlZC91cGRhdGVkIGluIHRoZSBwYXJlbnQgZGl2IG9mIHRoZSByZWNpcGVzXG4gICAgLy8gaS5lLiB3aWxsIGJlIHRyaWdnZXJlZCBlYWNoIHRpbWUgbmV3IHJlY2lwZXMgYXJlIGRpc3BsYXllZFxuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHsgdGhpcy5hdXRvbG9hZENvbnRlbnRJZk5lY2Vzc2FyeSgpOyB9KTtcblxuICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmJvdHRvbUFuY2hvcik7XG4gICAgdGhpcy5tdXRhdGlvbk9ic2VydmVyLm9ic2VydmUoXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCdtaWFtLWNhdGFsb2ctbGlzdF9fY2FyZHMnKVswXSxcbiAgICAgIHsgYXR0cmlidXRlczogdHJ1ZSwgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiBmYWxzZSB9IC8vIHN1YnRyZWUgZmFsc2UgPT4gY2hhbmdlcyBvbiBjaGlsZHJlbiB3b24ndCB0cmlnZ2VyIHRoZSBjYWxsYmFja1xuICAgICk7XG4gIH1cblxuICBhbmNob3JJc09uU2NyZWVuKCkge1xuICAgIGNvbnN0IHZpZXdwb3J0SGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgY29uc3QgcmVjdCA9IHRoaXMuYm90dG9tQW5jaG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIHJldHVybiAocmVjdC50b3AgPD0gdmlld3BvcnRIZWlnaHQgJiYgcmVjdC5ib3R0b20gPj0gMCk7XG4gIH1cblxuICBhdXRvbG9hZENvbnRlbnRJZk5lY2Vzc2FyeSgpIHtcbiAgICB0aGlzLmxvYWRpbmcucGlwZSh0YWtlKDEpLCBmaWx0ZXIobG9hZGluZyA9PiAhbG9hZGluZykpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMuYW5jaG9ySXNPblNjcmVlbigpICYmIChcbiAgICAgICAgICAodGhpcy5jdXJyZW50UmVjaXBlcy5sZW5ndGggPiAwICYmICF0aGlzLm5vTW9yZVJlY2lwZXMpIHx8XG4gICAgICAgICAgKHRoaXMuYXJ0aWNsZXMubGVuZ3RoID4gMCAmJiAhdGhpcy5ub01vcmVBcnRpY2xlcylcbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIC8vIEF0IGNvbXBvbmVudCBpbml0aWFsIGxvYWQsIDIgY2FsbHMgd2lsbCBiZSBtYWRlIGZvciB0aGUgZmlyc3QgdHdvIHJlY2lwZXMgcGFnZVxuICAgICAgICAvLyBUaGlzIGlzIHRvIGF2b2lkIG1ha2luZyB0aGUgbG9hZGVyIHNwaW4gdHdpY2VcbiAgICAgICAgdGhpcy5sb2FkTW9yZSh0aGlzLmxhc3RQYWdlID4gMik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBsb2FkTW9yZShsb2FkZXIgPSB0cnVlKSB7XG4gICAgaWYgKGxvYWRlcikgeyB0aGlzLmxvYWRpbmcubmV4dCh0cnVlKTsgfVxuICAgIHRoaXMubGFzdFBhZ2UrKztcbiAgICB0aGlzLmxvYWRDb250ZW50KCk7XG4gIH1cblxuICBsb2FkUmVjaXBlc1BhZ2UocGFnZTogbnVtYmVyKTogT2JzZXJ2YWJsZTxSZWNpcGVbXT4ge1xuICAgIGlmICh0aGlzLm5vTW9yZVJlY2lwZXMpIHtcbiAgICAgIHJldHVybiBvZihbXSk7XG4gICAgfVxuXG4gICAgLy8ga2VlcCBhIGNvcHkgb2YgdGhlIGZpbHRlcnMgd2hlbiByZXF1ZXN0IGlzIHNlbnQsIHNvIHdlIGNhbiBjaGVjayB0aGV5IGFyZSBzdGlsbCB0aGUgc2FtZSB3aGVuIGl0IGlzIHJlY2VpdmVkXG4gICAgLy8gQmVjYXVzZSBpZiBpdCdzIG5vdCB0aGUgY2FzZSB3ZSBoYXZlIHRvIGlnbm9yZSB0aGUgcmVzdWx0c1xuICAgIGNvbnN0IHJlcXVlc3RGaWx0ZXJzID0geyAuLi50aGlzLmZpbHRlcnMgfTtcbiAgICByZXR1cm4gdGhpcy5yZWNpcGVzU2VydmljZS5maWx0ZXIocmVxdWVzdEZpbHRlcnMsIHsgc2l6ZTogMjAsIG51bWJlcjogcGFnZSB9LCBudWxsLCB0aGlzLnJhbmRvbU1vZGUpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKHJlc3VsdDogUmVjaXBlW10pID0+IHRoaXMucHJvY2Vzc1Jlc3VsdHMocmVzdWx0LCByZXF1ZXN0RmlsdGVycywgcGFnZSkpXG4gICAgKTtcbiAgfVxuXG4gIHByb2Nlc3NSZXN1bHRzKHJlc3VsdHM6IFJlY2lwZVtdLCByZXF1ZXN0RmlsdGVycywgcGFnZSk6IE9ic2VydmFibGU8UmVjaXBlW10+IHtcbiAgICAvLyBCZWNhdXNlIEZpbHRlciBpcyBhIHR5cGUsIGF0dHJpYnV0ZXMgYXJlIGFsd2F5cyBpbiB0aGUgc2FtZSBvcmRlciwgc28gc3RyaW5naWZ5IHdvbid0IGJlIGZhbHNlIGZvciBvYmplY3RzIHdpdGggc2FtZSBhdHRyaWJ1dGVzXG4gICAgaWYgKEpTT04uc3RyaW5naWZ5KHJlcXVlc3RGaWx0ZXJzKSA9PT0gSlNPTi5zdHJpbmdpZnkodGhpcy5maWx0ZXJzKSkge1xuICAgICAgLy8gaWYgeW91IHNwYW0gY2xpY2sgb24gZmlsdGVycywgbXVsdGlwbGUgcmVxdWVzdHMgd2l0aCBwYWdlID09IDEgY291bGQgYmUgc2VudCBmb3IgdGhlIHNhbWUgZmlsdGVycyAtPiBvbmx5IGtlZXAgdGhlIGxhc3QgcmVzdWx0XG4gICAgICB0aGlzLmN1cnJlbnRSZWNpcGVzID0gcGFnZSA9PT0gMSA/IHJlc3VsdHMgOiBbLi4udGhpcy5jdXJyZW50UmVjaXBlcywgLi4ucmVzdWx0c107XG4gICAgICB0aGlzLmN1cnJlbnRSZWNpcGVzLmZvckVhY2goKHI6IFJlY2lwZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5tb2RpZmllZEd1ZXN0cyAmJiBwYXJzZUludCh0aGlzLm1vZGlmaWVkR3Vlc3RzLCAxMCkgPiAwKSB7XG4gICAgICAgICAgci5tb2RpZmllZEd1ZXN0cyA9IHBhcnNlSW50KHRoaXMubW9kaWZpZWRHdWVzdHMsIDEwKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLm5vTW9yZVJlY2lwZXMgPSByZXN1bHRzLmxlbmd0aCA9PT0gMDtcblxuICAgICAgLy8gR2V0IGFsbCByZWNpcGUtbGlrZXMgYmVmb3JlIGRpc3BsYXlpbmdcbiAgICAgIHJldHVybiB0aGlzLnJlY2lwZUxpa2VzU2VydmljZS5hZGRMaWtlc1RvUmVjaXBlcyhyZXN1bHRzKS5waXBlKFxuICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmV0cmlldmVkUmVjaXBlcy5lbWl0KHRoaXMuY3VycmVudFJlY2lwZXMpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRSZWNpcGVzO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6IG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUuZGVidWcoJ0ZpbHRlcmluZyBhYm9ydGVkIDogJyArIEpTT04uc3RyaW5naWZ5KHJlcXVlc3RGaWx0ZXJzKSArICdhbmQnICsgSlNPTi5zdHJpbmdpZnkodGhpcy5maWx0ZXJzKSArICdhcmUgZGlmZmVyZW50Jyk7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cbiAgfVxuXG4gIHJlbW92ZUZpbHRlcihmaWx0ZXJOYW1lKSB7XG4gICAgdGhpcy5maWx0ZXJSZW1vdmVkLmVtaXQoZmlsdGVyTmFtZSk7XG4gIH1cblxuICBidWlsZEZpbHRlcnNBcnJheSgpOiBzdHJpbmdbXSB7XG4gICAgbGV0IGZpbHRlck5hbWVzID0gW107XG4gICAgZmlsdGVyTmFtZXMgPSBbLi4uZmlsdGVyTmFtZXMsIC4uLnRoaXMuZ2V0U2VsZWN0ZWRGaWx0ZXJzKHRoaXMuZmlsdGVycy5jb3N0KSwgLi4udGhpcy5nZXRTZWxlY3RlZEZpbHRlcnModGhpcy5maWx0ZXJzLmRpZmZpY3VsdHkpLFxuICAgICAgLi4udGhpcy5nZXRTZWxlY3RlZEZpbHRlcnModGhpcy5maWx0ZXJzLnRpbWUpXTtcbiAgICBpZiAodGhpcy5maWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzICYmIHRoaXMuZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycy50aXRsZSAhPT0gJycpIHtcbiAgICAgIGZpbHRlck5hbWVzID0gW3RoaXMuZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycy50aXRsZV0uY29uY2F0KGZpbHRlck5hbWVzKTtcbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlck5hbWVzO1xuICB9XG5cbiAgZ2V0U2VsZWN0ZWRGaWx0ZXJzKGZpbHRlcnNBcnJheSk6IHN0cmluZ1tdIHtcbiAgICBpZiAoIWZpbHRlcnNBcnJheSkgeyByZXR1cm4gW107IH1cblxuICAgIHJldHVybiBmaWx0ZXJzQXJyYXkuZmlsdGVyKGVsID0+IGVsLnZhbHVlKS5tYXAoZWwgPT4gZWwudGV4dCk7XG4gIH1cblxuICByZWxvYWRQYWdlKCkge1xuICAgIHRoaXMubG9hZGluZy5uZXh0KHRydWUpO1xuICAgIHRoaXMubGFzdFBhZ2UgPSAxO1xuICAgIHRoaXMubm9Nb3JlUmVjaXBlcyA9IGZhbHNlO1xuICAgIHRoaXMubm9Nb3JlQXJ0aWNsZXMgPSBmYWxzZTtcbiAgICB0aGlzLmN1cnJlbnRSZWNpcGVzID0gW107XG4gICAgdGhpcy5hcnRpY2xlcyA9IFtdO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLmxvYWRDb250ZW50KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzdWIgPT4gc3ViLnVuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMuaW50ZXJzZWN0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIHRoaXMubXV0YXRpb25PYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gIH1cblxuICAvLyBBcnRpY2xlcyB3aWxsIGJlIGxvYWRlZCBvbmx5IGlmIGEgZmlsdGVyIGlzIGFwcGxpZWQgb24gcGFja2FnZXNcbiAgLy8gVGhpcyBpcyB0byBhdm9pZCBhcnRpY2xlcyBiZWluZyBsb2FkZWQgaW4gc3BlY2lhbCBwYWdlcyB3aGVyZSBvbmx5IGZpbHRlcnMgb24gcmVjaXBlcyBhcmUgcGFzc2VkIChmYXZvcml0ZXMsIHN1Z2dlc3RlZCwgZXRjLilcbiAgLy8gPT4gUGFja2FnZXMgbWl4aW5nIGFydGljbGVzIHdpdGggcmVjaXBlcyBpcyBub3Qgc3VwcG9ydGVkIHlldFxuICBwcml2YXRlIGxvYWRBcnRpY2xlcyhwYWdlOiBudW1iZXIpOiBPYnNlcnZhYmxlPEFydGljbGVbXT4ge1xuICAgIGlmICghdGhpcy5jb250ZXh0LmFydGljbGVzSW5DYXRhbG9nRW5hYmxlZCB8fCB0aGlzLm5vTW9yZUFydGljbGVzIHx8ICF0aGlzLmZpbHRlcnNbJ3BhY2thZ2VzJ10pIHtcbiAgICAgIHJldHVybiBvZihbXSk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVxdWVzdEZpbHRlcnMgPSBwaWNrKHRoaXMuZmlsdGVycywgJ3BhY2thZ2VzJywgJ3NlYXJjaCcpO1xuICAgIHJldHVybiB0aGlzLmFydGljbGVzU2VydmljZS5hbGwoe1xuICAgICAgcmVtb3RlZmlsdGVyOiByZXF1ZXN0RmlsdGVycyxcbiAgICAgIHBhZ2U6IHsgc2l6ZTogMjAsIG51bWJlcjogcGFnZSB9LFxuICAgICAgc29ydDogWyctZGF0ZSddIH0pLnBpcGUoXG4gICAgICBtYXAoKHJlc3VsdDogRG9jdW1lbnRDb2xsZWN0aW9uPEFydGljbGU+KSA9PiB7XG4gICAgICAgIHRoaXMuYXJ0aWNsZXMgPSBwYWdlID09PSAxID8gcmVzdWx0LmRhdGEgOiBbLi4udGhpcy5hcnRpY2xlcywgLi4ucmVzdWx0LmRhdGFdO1xuICAgICAgICB0aGlzLm5vTW9yZUFydGljbGVzID0gcmVzdWx0LmRhdGEubGVuZ3RoID09PSAwO1xuICAgICAgICByZXR1cm4gdGhpcy5hcnRpY2xlcztcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZENvbnRlbnQoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICBmb3JrSm9pbihbdGhpcy5sb2FkUmVjaXBlc1BhZ2UodGhpcy5sYXN0UGFnZSksIHRoaXMubG9hZEFydGljbGVzKHRoaXMubGFzdFBhZ2UpXSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nLm5leHQoZmFsc2UpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBpc1NlYXJjaGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJzLnNlYXJjaCAmJiB0aGlzLmZpbHRlcnMuc2VhcmNoICE9ICcnXG4gIH1cblxuICBpc0ZpZWxkRW1wdHkoZmlsdGVyOiBSZWNpcGVGaWx0ZXJbXSk6IGJvb2xlYW4ge1xuICAgIGZvciAoY29uc3QgZiBvZiBmaWx0ZXIpIHtcbiAgICAgIGlmIChmLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpc0ZpbHRlcmluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1NlYXJjaGluZygpIHx8ICF0aGlzLmlzRmllbGRFbXB0eSh0aGlzLmZpbHRlcnMuZGlmZmljdWx0eSkgfHwgIXRoaXMuaXNGaWVsZEVtcHR5KHRoaXMuZmlsdGVycy5jb3N0KSB8fCAhdGhpcy5pc0ZpZWxkRW1wdHkodGhpcy5maWx0ZXJzLnRpbWUpXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtaWFtLWNhdGFsb2ctbGlzdF9fY2FyZHNcIj5cblxuICA8IS0tIDxkaXYgKm5nSWY9XCJmaWx0ZXJzVG9EaXNwbGF5Lmxlbmd0aCA+IDBcIiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1saXN0X19maWx0ZXJzXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1saXN0X19maWx0ZXJfX3RpdGxlXCI+Vm9zIGZpbHRyZXM8L2Rpdj5cbiAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmaWx0ZXIgb2YgZmlsdGVyc1RvRGlzcGxheVwiIGNsYXNzPVwibWlhbS1jYXRhbG9nLWxpc3RfX2ZpbHRlclwiPlxuICAgICAgPHNwYW4+e3tmaWx0ZXJ9fTwvc3Bhbj5cbiAgICAgIDxuZy1taWFtLWljb24gXG4gICAgICAgIGNsYXNzPVwibWlhbS1jYXRhbG9nLWxpc3RfX2ZpbHRlcl9faWNvblwiIFxuICAgICAgICAoY2xpY2spPVwicmVtb3ZlRmlsdGVyKGZpbHRlcilcIiBcbiAgICAgICAgW2ljb25OYW1lXT1cImljb24uQ2xlYXJcIlxuICAgICAgICBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLXByaW1hcnkpXCI+XG4gICAgICA8L25nLW1pYW0taWNvbj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+IC0tPlxuXG4gIDxkaXYgKm5nSWY9XCIhKGxvYWRpbmcgfCBhc3luYykgJiYgY3VycmVudFJlY2lwZXMubGVuZ3RoID09PSAwICYmIGFydGljbGVzLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwibWlhbS1jYXRhbG9nLWxpc3RfX25vdEZvdW5kXCI+XG4gICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1saXN0X19ub3RGb3VuZF9faWNvblwiIFt3aWR0aF09XCIyNzlcIiBbaGVpZ2h0XT1cIjI0M1wiIFtpY29uTmFtZV09XCJpY29uLk5vUmVjaXBlRm91bmRcIj48L25nLW1pYW0taWNvbj5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNGaWx0ZXJpbmcoKSBlbHNlIG5vdEZpbHRlcmluZ1wiPlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1saXN0X19ub3RGb3VuZF9fdGl0bGUxXCI+XG4gICAgICAgIDxzcGFuPkTDqXNvbMOpLCBhdWN1bmUgcHJvcG9zaXRpb24gdHJvdXbDqWU8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXNTZWFyY2hpbmcoKVwiPnBvdXIgXCJ7e2ZpbHRlcnMuc2VhcmNofX1cIjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1saXN0X19ub3RGb3VuZF9fdGl0bGUyXCI+VmV1aWxsZXogbW9kaWZpZXIgbGVzIHRlcm1lcyBkZSB2b3RyZSByZWNoZXJjaGUgb3UgcsOpZ2xlciBsZXMgZmlsdHJlczwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxuZy10ZW1wbGF0ZSAjbm90RmlsdGVyaW5nPlxuICAgICAgPGRpdiAqbmdJZj1cInRoaXMudXNlclNlcnZpY2UuaXNMb2dnZWQkIHwgYXN5bmMgZWxzZSBub3RMb2dnZWRcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLWNhdGFsb2ctbGlzdF9fbm90Rm91bmRfX3RpdGxlMVwiPkTDqXNvbMOpLCB2b3VzIG4nYXZleiBwYXMgZW5jb3JlIGQnaWTDqWVzIHJlcGFzIHNhdXZlZ2FyZMOpZXM8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIDxuZy10ZW1wbGF0ZSAjbm90TG9nZ2VkPlxuICAgICAgPHNwYW4gY2xhc3M9XCJtaWFtLWNhdGFsb2ctbGlzdF9fbm90Rm91bmRfX3RpdGxlMVwiPkTDqXNvbMOpLCB2b3VzIGRldmV6IMOqdHJlIGNvbm5lY3TDqSBwb3VyIGFjY8OpZGVyIGF1IGNvbnRlbnUgZGUgY2V0dGUgcGFnZS48L3NwYW4+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG4gIDxuZy1taWFtLWNhcmQtY3JlYXRlLXJlY2lwZSAqbmdJZj1cImluc2VydENyZWF0ZUNhcmQgJiYgY3VycmVudFJlY2lwZXMubGVuZ3RoICE9PSAwXCIgKGNsaWNrZWQpPVwicmVjaXBlQWN0aW9uVHJpZ2dlcmVkLmVtaXQoe2FjdGlvbjogJ0NSRUFURScsIHJlY2lwZTogbnVsbH0pXCIgY2xhc3M9XCJtaWFtLWNhdGFsb2ctbGlzdF9fY2FyZFwiPjwvbmctbWlhbS1jYXJkLWNyZWF0ZS1yZWNpcGU+XG4gIDxuZy1taWFtLWNhdGFsb2ctcmVjaXBlLWNhcmRcbiAgICAqbmdGb3I9XCJsZXQgcmVjaXBlIG9mIGN1cnJlbnRSZWNpcGVzXCJcbiAgICBbcmVjaXBlXT0ncmVjaXBlJ1xuICAgIChhY3Rpb25UcmlnZ2VyZWQpPVwicmVjaXBlQWN0aW9uVHJpZ2dlcmVkLmVtaXQoe2FjdGlvbjogJGV2ZW50LCByZWNpcGU6IHJlY2lwZX0pXCJcbiAgPjwvbmctbWlhbS1jYXRhbG9nLXJlY2lwZS1jYXJkPlxuICA8bmctbWlhbS1jYXRhbG9nLWFydGljbGUtY2FyZCAqbmdGb3I9XCJsZXQgYXJ0aWNsZSBvZiBhcnRpY2xlc1wiIFthcnRpY2xlXT1cImFydGljbGVcIj48L25nLW1pYW0tY2F0YWxvZy1hcnRpY2xlLWNhcmQ+XG4gIDxkaXYgKm5nSWY9XCJsb2FkaW5nIHwgYXN5bmNcIiBjbGFzcz1cIm1pYW0tY2F0YWxvZy1saXN0X19sb2FkZXJcIj5cbiAgICA8bmctbWlhbS1sb2FkZXI+PC9uZy1taWFtLWxvYWRlcj5cbiAgICA8ZGl2PlxuICAgICAgQ2hhcmdlbWVudCBkZXMgcsOpc3VsdGF0cy4uLlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBpZD1cIm1pYW0tY2F0YWxvZy1saXN0X19hbmNob3JcIj48L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Component, ViewEncapsulation, ChangeDetectionStrategy, ViewChild, ChangeDetectorRef, ElementRef, ViewChildren, QueryList, Input } from '@angular/core';
|
|
2
|
-
import { skipWhile, switchMap, take, tap } from 'rxjs/operators';
|
|
2
|
+
import { map, skipWhile, switchMap, take, tap } from 'rxjs/operators';
|
|
3
3
|
import { CatalogCategoryComponent } from '../catalog-category/catalog-category.component';
|
|
4
4
|
import { RecipeTypeService, SponsorService, PackageService, SuppliersService, RecipesService, UserService, GroceriesListsService, BasketsService, ContextService } from '../../_services';
|
|
5
5
|
import { Icon } from '../../_types/icon.enum';
|
|
@@ -55,8 +55,9 @@ function RecipeCatalogComponent_div_2_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
|
55
55
|
i0.ɵɵelementEnd();
|
|
56
56
|
i0.ɵɵelementEnd();
|
|
57
57
|
i0.ɵɵtemplate(5, RecipeCatalogComponent_div_2_div_5_div_5_Template, 4, 1, "div", 18);
|
|
58
|
-
i0.ɵɵ
|
|
59
|
-
i0.ɵɵ
|
|
58
|
+
i0.ɵɵpipe(6, "async");
|
|
59
|
+
i0.ɵɵelementStart(7, "ng-miam-catalog-list", 19);
|
|
60
|
+
i0.ɵɵlistener("filterRemoved", function RecipeCatalogComponent_div_2_div_5_Template_ng_miam_catalog_list_filterRemoved_7_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r15 = i0.ɵɵnextContext(2); return ctx_r15.removeFilter($event); })("recipeActionTriggered", function RecipeCatalogComponent_div_2_div_5_Template_ng_miam_catalog_list_recipeActionTriggered_7_listener($event) { i0.ɵɵrestoreView(_r14); const ctx_r16 = i0.ɵɵnextContext(2); return ctx_r16.manageRecipeAction($event); });
|
|
60
61
|
i0.ɵɵelementEnd();
|
|
61
62
|
i0.ɵɵelementEnd();
|
|
62
63
|
} if (rf & 2) {
|
|
@@ -66,8 +67,8 @@ function RecipeCatalogComponent_div_2_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
|
66
67
|
i0.ɵɵadvance(2);
|
|
67
68
|
i0.ɵɵtextInterpolate(ctx_r5.assessTitle());
|
|
68
69
|
i0.ɵɵadvance(1);
|
|
69
|
-
i0.ɵɵproperty("ngIf", (
|
|
70
|
-
i0.ɵɵadvance(
|
|
70
|
+
i0.ɵɵproperty("ngIf", i0.ɵɵpipeBind1(6, 4, ctx_r5.canDisplayCreationButton()));
|
|
71
|
+
i0.ɵɵadvance(2);
|
|
71
72
|
i0.ɵɵproperty("filters", ctx_r5.filters);
|
|
72
73
|
} }
|
|
73
74
|
function RecipeCatalogComponent_div_2_ng_template_7_div_0_ng_container_1_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
@@ -115,7 +116,7 @@ function RecipeCatalogComponent_div_2_Template(rf, ctx) { if (rf & 1) {
|
|
|
115
116
|
i0.ɵɵpipe(3, "async");
|
|
116
117
|
i0.ɵɵelementEnd();
|
|
117
118
|
i0.ɵɵtemplate(4, RecipeCatalogComponent_div_2_div_4_Template, 5, 3, "div", 7);
|
|
118
|
-
i0.ɵɵtemplate(5, RecipeCatalogComponent_div_2_div_5_Template,
|
|
119
|
+
i0.ɵɵtemplate(5, RecipeCatalogComponent_div_2_div_5_Template, 8, 6, "div", 8);
|
|
119
120
|
i0.ɵɵelementEnd();
|
|
120
121
|
i0.ɵɵelementStart(6, "ng-miam-recipe-filters", 9);
|
|
121
122
|
i0.ɵɵlistener("filterChanged", function RecipeCatalogComponent_div_2_Template_ng_miam_recipe_filters_filterChanged_6_listener($event) { i0.ɵɵrestoreView(_r25); const ctx_r30 = i0.ɵɵnextContext(); return ctx_r30.updateFilters($event); })("filterCollapsed", function RecipeCatalogComponent_div_2_Template_ng_miam_recipe_filters_filterCollapsed_6_listener() { i0.ɵɵrestoreView(_r25); const ctx_r31 = i0.ɵɵnextContext(); return ctx_r31.onFilterCollapsed(); })("preferencesChanged", function RecipeCatalogComponent_div_2_Template_ng_miam_recipe_filters_preferencesChanged_6_listener() { i0.ɵɵrestoreView(_r25); const ctx_r32 = i0.ɵɵnextContext(); return ctx_r32.reloadPackages(); });
|
|
@@ -341,6 +342,11 @@ export class RecipeCatalogComponent {
|
|
|
341
342
|
return 'Votre sélection';
|
|
342
343
|
}
|
|
343
344
|
}
|
|
345
|
+
canDisplayCreationButton() {
|
|
346
|
+
var _a, _b;
|
|
347
|
+
const isPersonal = ((_b = (_a = this.filters) === null || _a === void 0 ? void 0 : _a.additionalFilters) === null || _b === void 0 ? void 0 : _b.filters['personal']) === true;
|
|
348
|
+
return this.usersService.isLogged$.asObservable().pipe(map(isLogged => isLogged && isPersonal));
|
|
349
|
+
}
|
|
344
350
|
assessIsFavoritesPage() {
|
|
345
351
|
return this.filters.additionalFilters && this.filters.additionalFilters.title === 'Mes idées repas';
|
|
346
352
|
}
|
|
@@ -357,8 +363,8 @@ export class RecipeCatalogComponent {
|
|
|
357
363
|
setPersonalFilter() {
|
|
358
364
|
const filters = Object.assign(this.filters, {
|
|
359
365
|
additionalFilters: {
|
|
360
|
-
filters: { personal: true },
|
|
361
|
-
title: '
|
|
366
|
+
filters: { personal: true, active: 'true,false' },
|
|
367
|
+
title: 'Mon carnet perso'
|
|
362
368
|
}
|
|
363
369
|
});
|
|
364
370
|
this.returnToTop();
|
|
@@ -483,4 +489,4 @@ RecipeCatalogComponent.ɵcmp = i0.ɵɵdefineComponent({ type: RecipeCatalogCompo
|
|
|
483
489
|
}], homeLabel: [{
|
|
484
490
|
type: Input
|
|
485
491
|
}] }); })();
|
|
486
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWNhdGFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNhdGFsb2cvcmVjaXBlLWNhdGFsb2cuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtY2F0YWxvZy9yZWNpcGUtY2F0YWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBaUIsaUJBQWlCLEVBQVUsVUFBVSxFQUM3SCxZQUFZLEVBQUUsU0FBUyxFQUFhLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFFMUYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxxQkFBcUIsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUwsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxhQUFhLEVBQTRCLE1BQU0sTUFBTSxDQUFDO0FBQy9ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7OztJQ083QywrQkFDRTtJQURnRixzTUFBOEI7SUFDOUcsbUNBQTBJO0lBQzFJLGdDQUF3RDtJQUFBLFlBRXhEO0lBQUEs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QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDs2V0FFb0MsYUFBYTtrQkFBL0MsU0FBUzttQkFBQyxzQkFBc0I7WUFDRSxTQUFTO2tCQUEzQyxTQUFTO21CQUFDLHNCQUFzQjtZQUNRLGNBQWM7a0JBQXRELFlBQVk7bUJBQUMsd0JBQXdCO1lBRTdCLGdCQUFnQjtrQkFBeEIsS0FBSztZQUNHLG1CQUFtQjtrQkFBM0IsS0FBSztZQUNHLFlBQVk7a0JBQXBCLEtBQUs7WUFDRyxlQUFlO2tCQUF2QixLQUFLO1lBQ0csU0FBUztrQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgVmlld0VuY2Fwc3VsYXRpb24sIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3Q2hpbGQsIEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdG9yUmVmLCBPbkluaXQsIEVsZW1lbnRSZWYsXG4gIFZpZXdDaGlsZHJlbiwgUXVlcnlMaXN0LCBPbkRlc3Ryb3ksIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBza2lwV2hpbGUsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2F0YWxvZ0NhdGVnb3J5Q29tcG9uZW50IH0gZnJvbSAnLi4vY2F0YWxvZy1jYXRlZ29yeS9jYXRhbG9nLWNhdGVnb3J5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWNpcGUgfSBmcm9tICcuLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7IFJlY2lwZVR5cGVTZXJ2aWNlLCBTcG9uc29yU2VydmljZSwgUGFja2FnZVNlcnZpY2UsIFN1cHBsaWVyc1NlcnZpY2UsIFJlY2lwZXNTZXJ2aWNlLCBVc2VyU2VydmljZSwgR3JvY2VyaWVzTGlzdHNTZXJ2aWNlLCBCYXNrZXRzU2VydmljZSwgQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMnO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gJy4uLy4uL190eXBlcy9pY29uLmVudW0nO1xuaW1wb3J0IHsgQ2F0YWxvZ0hlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2NhdGFsb2ctaGVhZGVyL2NhdGFsb2ctaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWNpcGVGaWx0ZXIsIFJlY2lwZUZpbHRlcnMgfSBmcm9tICcuLi8uLi9fdHlwZXMvcmVjaXBlLWZpbHRlcnMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNZWRpYU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IERvY3VtZW50Q29sbGVjdGlvbiB9IGZyb20gJ25neC1qc29uYXBpJztcbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tICcuLi8uLi9fbW9kZWxzL3BhY2thZ2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLXJlY2lwZS1jYXRhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlY2lwZS1jYXRhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVjaXBlLWNhdGFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUmVjaXBlQ2F0YWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZChDYXRhbG9nSGVhZGVyQ29tcG9uZW50KSBjYXRhbG9nSGVhZGVyOiBDYXRhbG9nSGVhZGVyQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdtaWFtQ2F0YWxvZ1RvcEFuY2hvcicpIHRvcEFuY2hvcjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZHJlbihDYXRhbG9nQ2F0ZWdvcnlDb21wb25lbnQpICBjYXRlZ29yaWVzQ29tcCE6IFF1ZXJ5TGlzdDxDYXRhbG9nQ2F0ZWdvcnlDb21wb25lbnQ+O1xuXG4gIEBJbnB1dCgpIGhlYWRlclBpY3R1cmVVcmwgPSAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Fzc2V0cy5taWFtLnRlY2gvZ2VuZXJpYy9pbWFnZXMvZGVmYXVsdC1jYXRhbG9nLXBpY3R1cmUucG5nJztcbiAgQElucHV0KCkgaG9tZVRpdGxlUGljdHVyZVVybCA9ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ltYWdlcy9kZWZhdWx0LWNhdGFsb2ctdGl0bGUucG5nJztcbiAgQElucHV0KCkgaW5pdGlhbFJvdXRlID0gJyc7XG4gIEBJbnB1dCgpIGZpbHRlcnNQb3NpdGlvbiA9ICdsZWZ0JztcbiAgQElucHV0KCkgaG9tZUxhYmVsID0gJ0lkw6llcyByZXBhcyc7XG5cbiAgZmlsdGVyczogUmVjaXBlRmlsdGVycztcbiAgaXNGaWx0ZXJDb2xsYXBzZWQgPSB0cnVlO1xuICBkaXNwbGF5SG9tZVBhZ2UgPSB0cnVlO1xuICBpY29uID0gSWNvbjtcbiAgY2F0ZWdvcmllcyA9IFtdO1xuICBjcmVhdGluZ1JlY2lwZSA9IGZhbHNlO1xuICByZWNpcGVUb1VwZGF0ZTogUmVjaXBlO1xuICBmaWx0ZXJUb1JlbW92ZTogc3RyaW5nO1xuICBpc01vYmlsZSA9IGZhbHNlO1xuICBsaXN0SXNFbXB0eSA9IGZhbHNlO1xuICBzaG93VXNlckZlZWRiYWNrID0gZmFsc2U7XG4gIHJlY2lwZUNvdW50ID0gMDtcbiAgdG90YWxQcmljZSA9IDA7XG4gIGlzTXlNZWFsQ2xvc2UgPSB0cnVlO1xuICBcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgc3VwcGxpZXJJZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgcmVjaXBlVHlwZXNTZXJ2aWNlOiBSZWNpcGVUeXBlU2VydmljZSxcbiAgICBwdWJsaWMgc3BvbnNvclNlcnZpY2U6IFNwb25zb3JTZXJ2aWNlLFxuICAgIHB1YmxpYyBzdXBwbGllclNlcnZpY2U6IFN1cHBsaWVyc1NlcnZpY2UsXG4gICAgcHVibGljIHBhY2thZ2VTZXJ2aWNlOiBQYWNrYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZXNTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwdWJsaWMgbWVkaWFNYXRjaGVyOiBNZWRpYU1hdGNoZXIsXG4gICAgcHVibGljIHVzZXJzU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHVibGljIGdyb2Nlcmllc0xpc3RTZXJ2aWNlOiBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsXG4gICAgcHVibGljIGJhc2tldHNTZXJ2aWNlOiBCYXNrZXRzU2VydmljZSxcbiAgICBwdWJsaWMgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaXNNb2JpbGUgPSBtZWRpYU1hdGNoZXIubWF0Y2hNZWRpYSgnKG1heC13aWR0aDogMTAyMnB4KScpLm1hdGNoZXM7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXRGaWx0ZXJzKCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXG4gICAgICB0aGlzLnN1cHBsaWVyU2VydmljZS5zdXBwbGllciQuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgICAgc2tpcFdoaWxlKHN1cHAgPT4gc3VwcCA9PT0gdW5kZWZpbmVkIHx8IHN1cHAgPT0gbnVsbCksXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHN3aXRjaE1hcChzdXBwbGllciA9PiB7XG4gICAgICAgICAgdGhpcy5zdXBwbGllcklkID0gc3VwcGxpZXIuaWQ7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubG9hZFBhY2thZ2VzKCk7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgpLFxuICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5iYXNrZXRTdGF0cyQuc3Vic2NyaWJlKGJzID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coYnMpXG4gICAgICAgIHRoaXMucmVjaXBlQ291bnQgPSBicy5yZWNpcGVzQ291bnQ7XG4gICAgICAgIHRoaXMudG90YWxQcmljZSA9IGJzLnRvdGFsUHJpY2U7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgIHRoaXMuYXNzZXNzU2hvd1VzZXJGZWVkYmFjaygpXG4gICAgXTtcblxuICAgIHRoaXMuc2V0RGlyZWN0QWNjZXNzKHRoaXMuaW5pdGlhbFJvdXRlKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICAvLyBVc2VkIG9uIGxvYWQgdG8gYnVpbGQgdGhlIGZpbHRlcnMgYXR0cmlidXRlLCBhbmQgb24gY2xpY2sgb24gdGhlIGxpbmsgdG8gcmVzZXQgdGhlIGZpbHRlcnNcbiAgaW5pdEZpbHRlcnMoKSB7XG4gICAgdGhpcy5maWx0ZXJzID0ge1xuICAgICAgZGlmZmljdWx0eTogW1xuICAgICAgICB7bmFtZTogJzEnLCB2YWx1ZTogZmFsc2UsIHRleHQ6ICdDaGVmIGTDqWJ1dGFudCd9LFxuICAgICAgICB7bmFtZTogJzInLCB2YWx1ZTogZmFsc2UsIHRleHQ6ICdDaGVmIGludGVybcOpZGlhaXJlJ30sXG4gICAgICAgIHtuYW1lOiAnMycsIHZhbHVlOiBmYWxzZSwgdGV4dDogJ1RvcCBjaGVmJ31cbiAgICAgIF0sXG4gICAgICBjb3N0OiBbXG4gICAgICAgIHtuYW1lOiAnMC01JywgdmFsdWU6IGZhbHNlLCB0ZXh0OiAnTW9pbnMgZGUgNeKCrCd9LFxuICAgICAgICB7bmFtZTogJzUtMTAnLCB2YWx1ZTogZmFsc2UsIHRleHQ6ICdFbnRyZSA14oKsIGV0IDEw4oKsJ30sXG4gICAgICAgIHtuYW1lOiAnMTAtMTAwMCcsIHZhbHVlOiBmYWxzZSwgdGV4dDogJ1BsdXMgZGUgMTDigqwnfVxuICAgICAgICAvLyB3ZSBzZXQgYSBsaW1pdCBhdCAxMDAw4oKsIG1heCwgaWYgYSByZWNpcGUgY29zdCBtb3JlIHNob3VsZCBiZSBub24gc2Vuc2UgYW55d2F5XG4gICAgICBdLFxuICAgICAgdGltZTogW1xuICAgICAgICB7bmFtZTogJzE1JywgdmFsdWU6IGZhbHNlLCB0ZXh0OiAnTW9pbnMgZGUgMTUgbWluJ30sXG4gICAgICAgIHtuYW1lOiAnMzAnLCB2YWx1ZTogZmFsc2UsIHRleHQ6ICdNb2lucyBkZSAzMCBtaW4nfSxcbiAgICAgICAge25hbWU6ICc2MCcsIHZhbHVlOiBmYWxzZSwgdGV4dDogJ01vaW5zIGRlIDEgaCd9LFxuICAgICAgICB7bmFtZTogJzEyMCcsIHZhbHVlOiBmYWxzZSwgdGV4dDogJ01vaW5zIGRlIDIgaCd9XG4gICAgICBdLFxuICAgIH07XG4gICAgdGhpcy5yZXNldFNlYXJjaEFuZEFkZGl0aW9uYWxGaWx0ZXJzKCk7XG4gIH1cblxuICB1cGRhdGVTZWFyY2goc2VhcmNoOiBzdHJpbmcpIHtcbiAgICBpZiAoc2VhcmNoICE9PSB0aGlzLmZpbHRlcnMuc2VhcmNoKSB7XG4gICAgICB0aGlzLmZpbHRlcnMuc2VhcmNoID0gc2VhcmNoO1xuICAgICAgdGhpcy5yZWxvYWRMaXN0KCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRmlsdGVycyhmaWx0ZXJzOiBSZWNpcGVGaWx0ZXJzKSB7XG4gICAgdGhpcy5maWx0ZXJzID0geyAuLi5maWx0ZXJzIH07IC8vIE5lY2Vzc2FyeSB0byB0cmlnZ2VyIHRoZSBuZ09uQ2hhbmdlc1xuICAgIHRoaXMuZmlsdGVyVG9SZW1vdmUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5saXN0SXNFbXB0eSA9IGZhbHNlO1xuICAgIHRoaXMucmV0dXJuVG9Ub3AoKTtcbiAgICB0aGlzLnJlbG9hZExpc3QoKTtcbiAgfVxuXG4gIHJlbG9hZExpc3QoKSB7XG4gICAgdGhpcy5maWx0ZXJzID0geyAuLi50aGlzLmZpbHRlcnMgfTsgLy8gTmVjZXNzYXJ5IHRvIHRyaWdnZXIgdGhlIG5nT25DaGFuZ2VzXG4gICAgdGhpcy5kaXNwbGF5SG9tZVBhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjYXRlZ29yeVRpdGxlQ2xpY2tlZChldmVudDoge3RpdGxlOiBzdHJpbmcsIGZpbHRlcnM6IGFueX0pIHtcbiAgICB0aGlzLnJldHVyblRvVG9wKCk7XG4gICAgdGhpcy5maWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzID0geyBmaWx0ZXJzOiBldmVudC5maWx0ZXJzLCB0aXRsZTogZXZlbnQudGl0bGUgfTtcbiAgICB0aGlzLnJlbG9hZExpc3QoKTtcbiAgfVxuXG4gIGFyZUZpbHRlcnNFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RhYmxlRmlsdGVyc0NvdW50KCkgPCAxICYmIHRoaXMuZmlsdGVycy5zZWFyY2ggPT09ICcnICYmICF0aGlzLmZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnM/LmZpbHRlcnM7XG4gIH1cblxuICBzZWxlY3RhYmxlRmlsdGVyc0NvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuaXNGaWVsZEVtcHR5KHRoaXMuZmlsdGVycy5kaWZmaWN1bHR5KSxcbiAgICAgIHRoaXMuaXNGaWVsZEVtcHR5KHRoaXMuZmlsdGVycy5jb3N0KSxcbiAgICAgIHRoaXMuaXNGaWVsZEVtcHR5KHRoaXMuZmlsdGVycy50aW1lKVxuICAgIF0ucmVkdWNlKChhLCBiKSA9PiBhICsgKCsgIWIpLCAwKTtcbiAgfVxuXG4gIGlzRmllbGRFbXB0eShmaWx0ZXI6IFJlY2lwZUZpbHRlcltdKSB7XG4gICAgaWYgKCFmaWx0ZXIpIHsgcmV0dXJuIHRydWU7IH1cblxuICAgIGZvciAoY29uc3QgZiBvZiBmaWx0ZXIpIHtcbiAgICAgIGlmIChmLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZW1vdmVGaWx0ZXIoZmlsdGVyVGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5maWx0ZXJUb1JlbW92ZSA9IGZpbHRlclRleHQ7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmV0dXJuVG9Ub3AoKSB7XG4gICAgaWYgKHRoaXMudG9wQW5jaG9yKSB7XG4gICAgICB0aGlzLnRvcEFuY2hvci5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuVG9Ib21lUGFnZSgpIHtcbiAgICB0aGlzLmRpc3BsYXlIb21lUGFnZSA9IHRydWU7XG4gICAgdGhpcy5yZXNldFNlYXJjaEFuZEFkZGl0aW9uYWxGaWx0ZXJzKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25GaWx0ZXJDb2xsYXBzZWQoKSB7XG4gICAgdGhpcy5pc0ZpbHRlckNvbGxhcHNlZCA9ICF0aGlzLmlzRmlsdGVyQ29sbGFwc2VkO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAvLyB0byB0cmlnZ2VyIGFmdGVyIHRoZSBkZXRlY3RDaGFuZ2VzIGJlY2F1c2Ugd2UgbmVlZCB0byBhbHJlYWQgaGF2ZSB0aGUgZGlzcGxheSBjaGFuZ2UgdG8gdXBkYXRlIGNhcmRzXG4gICAgdGhpcy5jYXRlZ29yaWVzQ29tcC5mb3JFYWNoKCBjYXQgPT4ge1xuICAgICAgY2F0LnVwZGF0ZVdpZHRoKCk7XG4gICAgfSk7XG4gIH1cblxuICBnb1RvQ3JlYXRlUGFnZShyZWNpcGUgPSBudWxsKSB7XG4gICAgdGhpcy5jcmVhdGluZ1JlY2lwZSA9IHRydWU7XG4gICAgdGhpcy5yZWNpcGVUb1VwZGF0ZSA9IHJlY2lwZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5yZXR1cm5Ub1RvcCgpO1xuICB9XG5cbiAgbGVhdmVDcmVhdGVQYWdlKCkge1xuICAgIHRoaXMuY3JlYXRpbmdSZWNpcGUgPSBmYWxzZTtcbiAgICB0aGlzLnJlbG9hZExpc3QoKTtcbiAgICB0aGlzLnJldHVyblRvVG9wKCk7XG4gIH1cblxuICBtYW5hZ2VSZWNpcGVBY3Rpb24oZXZlbnQ6IHthY3Rpb246IHN0cmluZywgcmVjaXBlOiBSZWNpcGV9KSB7XG4gICAgc3dpdGNoIChldmVudC5hY3Rpb24pIHtcbiAgICAgIGNhc2UgJ0NSRUFURSc6IHtcbiAgICAgICAgdGhpcy5nb1RvQ3JlYXRlUGFnZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSAnRURJVCc6IHtcbiAgICAgICAgdGhpcy5nb1RvQ3JlYXRlUGFnZShldmVudC5yZWNpcGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSAnREVMRVRFJzoge1xuICAgICAgICBpZiAoZXZlbnQucmVjaXBlPy5pZCAmJiBldmVudC5yZWNpcGUucmVsYXRpb25zaGlwc1sncmVjaXBlLXByb3ZpZGVyJ10/LmRhdGEuaWQgPT09ICdwZXJzb25hbCcpIHtcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgIHRoaXMucmVjaXBlc1NlcnZpY2UuZGVsZXRlKGV2ZW50LnJlY2lwZS5pZCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5yZWxvYWRMaXN0KCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaXNMaXN0RW1wdHkocmVjaXBlczogUmVjaXBlW10pIHtcbiAgICB0aGlzLmxpc3RJc0VtcHR5ID0gcmVjaXBlcy5sZW5ndGggPT09IDA7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmVsb2FkUGFja2FnZXMoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmxvYWRQYWNrYWdlcygpLnN1YnNjcmliZSgpXG4gICAgKTtcbiAgfVxuXG4gIGFzc2Vzc1RpdGxlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZGlzcGxheUhvbWVQYWdlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMuZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycyAmJiB0aGlzLmZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnMudGl0bGUgIT09ICcnKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzLnRpdGxlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5maWx0ZXJzLnNlYXJjaCkge1xuICAgICAgcmV0dXJuIGBWb3RyZSByZWNoZXJjaGUgOiBcIiR7dGhpcy5maWx0ZXJzLnNlYXJjaH1cImA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnVm90cmUgc8OpbGVjdGlvbic7XG4gICAgfVxuICB9XG5cbiAgYXNzZXNzSXNGYXZvcml0ZXNQYWdlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnMgJiYgdGhpcy5maWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzLnRpdGxlID09PSAnTWVzIGlkw6llcyByZXBhcyc7XG4gIH1cblxuICBzZXRGYXZvcml0ZXNGaWx0ZXIoKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVycyA9IE9iamVjdC5hc3NpZ24odGhpcy5maWx0ZXJzLCB7XG4gICAgICBhZGRpdGlvbmFsRmlsdGVyczoge1xuICAgICAgICBmaWx0ZXJzOiB7IGxpa2VkOiB0cnVlIH0sXG4gICAgICAgIHRpdGxlOiAnTWVzIGlkw6llcyByZXBhcydcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnJldHVyblRvVG9wKCk7XG4gICAgdGhpcy51cGRhdGVGaWx0ZXJzKGZpbHRlcnMpO1xuICB9XG5cbiAgc2V0UGVyc29uYWxGaWx0ZXIoKTogdm9pZCB7XG4gICAgY29uc3QgZmlsdGVycyA9IE9iamVjdC5hc3NpZ24odGhpcy5maWx0ZXJzLCB7XG4gICAgICBhZGRpdGlvbmFsRmlsdGVyczoge1xuICAgICAgICBmaWx0ZXJzOiB7IHBlcnNvbmFsOiB0cnVlIH0sXG4gICAgICAgIHRpdGxlOiAnTWVzIHJlY2V0dGVzIHBlcnNvbm5lbGxlcydcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLnJldHVyblRvVG9wKCk7XG4gICAgdGhpcy51cGRhdGVGaWx0ZXJzKGZpbHRlcnMpO1xuICB9XG5cbiAgdG9nZ2xlTXlNZWFsRHJhd2VyKCk6IHZvaWQge1xuICAgIHRoaXMucmVjaXBlc1NlcnZpY2Uub3BlbkJhc2tldCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUGFja2FnZXMoKTogT2JzZXJ2YWJsZTxEb2N1bWVudENvbGxlY3Rpb248UGFja2FnZT4+IHtcbiAgICByZXR1cm4gdGhpcy5wYWNrYWdlU2VydmljZS5jYXRlZ29yaWVzX2ZvcihbdGhpcy5zdXBwbGllcklkXSkucGlwZShcbiAgICAgIHNraXBXaGlsZShwYWNrYWdlcyA9PiBwYWNrYWdlcy5pc19sb2FkaW5nKSxcbiAgICAgIHRhcCgocGFja2FnZXM6IERvY3VtZW50Q29sbGVjdGlvbjxQYWNrYWdlPikgPT4ge1xuICAgICAgICB0aGlzLmluaXRDYXRlZ29yaWVzKHBhY2thZ2VzKTtcbiAgICAgICAgdGhpcy5zZWxlY3RDYXRlZ29yeUZyb21VcmwoKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0Q2F0ZWdvcmllcyhwYWNrYWdlcykge1xuICAgIHRoaXMuY2F0ZWdvcmllcyA9IHBhY2thZ2VzLmRhdGEubWFwKGNhdGVnb3J5UGFja2FnZSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBrZXk6IGNhdGVnb3J5UGFja2FnZS50aXRsZS50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtekEtWjAtOSAtXS8sICcnKS5yZXBsYWNlKC9cXHMvZywgJy0nKSxcbiAgICAgICAgdGl0bGU6IGNhdGVnb3J5UGFja2FnZS50aXRsZSxcbiAgICAgICAgc3VidGl0bGU6IGNhdGVnb3J5UGFja2FnZS5zdWJ0aXRsZSxcbiAgICAgICAgZmlsdGVyczogeyBhZGRpdGlvbmFsRmlsdGVyczogeyBmaWx0ZXJzOiB7IHBhY2thZ2VzOiBjYXRlZ29yeVBhY2thZ2UuaWQgfSwgdGl0bGU6ICcnIH0gfVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0Q2F0ZWdvcnlGcm9tVXJsKCkge1xuICAgIGNvbnN0IHBhcmFtc0FycmF5ID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICBpZiAocGFyYW1zQXJyYXkuZ2V0KCdjYXRhbG9nQ2F0ZWdvcnknKSA9PT0gJ2Zhdm9yaXRlcycpIHtcbiAgICAgIHJldHVybiB0aGlzLnNldEZhdm9yaXRlc0ZpbHRlcigpO1xuICAgIH1cbiAgICBjb25zdCBzZWxlY3RlZENhdGVnb3J5ID0gdGhpcy5jYXRlZ29yaWVzLmZpbmQoKGNhdCkgPT4gY2F0LmtleSA9PT0gcGFyYW1zQXJyYXkuZ2V0KCdjYXRhbG9nQ2F0ZWdvcnknKSk7XG4gICAgaWYgKHNlbGVjdGVkQ2F0ZWdvcnkpIHsgcmV0dXJuIHRoaXMuY2F0ZWdvcnlUaXRsZUNsaWNrZWQoc2VsZWN0ZWRDYXRlZ29yeSk7IH1cbiAgfVxuXG4gIC8vIFNob3cgZmVlZGJhY2sgYmxvY2sgb25seSBpZiB1c2VyIGlzIGxvZ2dlZCBhbmQgdGhlIGNoaWxkcmVuIHByZWZlcmVuY2UgaXMgdW5rbm93blxuICBwcml2YXRlIGFzc2Vzc1Nob3dVc2VyRmVlZGJhY2soKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLnVzZXJzU2VydmljZS5pc0xvZ2dlZCQsXG4gICAgICB0aGlzLnVzZXJzU2VydmljZS5wcmVmZXJlbmNlRGVmaW5lZCgnaGFzX2NoaWxkcmVuJyksXG4gICAgICB0aGlzLnVzZXJzU2VydmljZS5wcmVmZXJlbmNlc0FjdGl2YXRlZCRcbiAgICBdKS5zdWJzY3JpYmUocmVzdWx0cyA9PiB7XG4gICAgICBjb25zdCBsb2dnZWQgPSByZXN1bHRzWzBdO1xuICAgICAgY29uc3QgcHJlZmVyZW5jZURlZmluZWQgPSByZXN1bHRzWzFdO1xuICAgICAgY29uc3QgcHJlZmVyZW5jZXNBY3RpdmF0ZWQgPSByZXN1bHRzWzJdO1xuICAgICAgdGhpcy5zaG93VXNlckZlZWRiYWNrID0gbG9nZ2VkICYmICFwcmVmZXJlbmNlRGVmaW5lZCAmJiBwcmVmZXJlbmNlc0FjdGl2YXRlZDtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRTZWFyY2hBbmRBZGRpdGlvbmFsRmlsdGVycygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYXRhbG9nSGVhZGVyKSB7IHRoaXMuY2F0YWxvZ0hlYWRlci5yZXNldFNlYXJjaFN0cmluZygpOyB9XG4gICAgdGhpcy5maWx0ZXJzLnNlYXJjaCA9ICcnO1xuICAgIHRoaXMuZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycyA9IG51bGw7XG4gICAgdGhpcy5saXN0SXNFbXB0eSA9IGZhbHNlO1xuICAgIGlmICghdGhpcy5kaXNwbGF5SG9tZVBhZ2UpeyB0aGlzLnJldHVyblRvSG9tZVBhZ2UoKTsgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXREaXJlY3RBY2Nlc3Mocm91dGU6IHN0cmluZyl7XG4gICAgaWYodGhpcy5pbml0aWFsUm91dGUgIT09ICcnKXtcbiAgICAgIHN3aXRjaCh0aGlzLmluaXRpYWxSb3V0ZSl7XG4gICAgICAgIGNhc2UgJ21lcy1yZXBhcyc6XG4gICAgICAgICAgdGhpcy50b2dnbGVNeU1lYWxEcmF3ZXIoKVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtZXMtcmVjZXR0ZXMtcGVyc29ubmVsbGVzJzpcbiAgICAgICAgICB0aGlzLnNldFBlcnNvbmFsRmlsdGVyKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3JlY2V0dGVzLWZhdm9yaXRlcyc6XG4gICAgICAgICAgdGhpcy5zZXRGYXZvcml0ZXNGaWx0ZXIoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBVbnVzZWQgZm9yIG5vdy4uLlxuICAvLyBzZXRVc2VyUHJlZmVyZW5jZShwcmVmLCBzdGF0ZSkge1xuICAvLyAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAvLyAgICAgdGhpcy51c2Vyc1NlcnZpY2Uuc2V0UHJlZmVyZW5jZShwcmVmLCBzdGF0ZSkucGlwZShcbiAgLy8gICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMubG9hZFBhY2thZ2VzKCkpXG4gIC8vICAgICApLnN1YnNjcmliZSgpXG4gIC8vICAgKTtcbiAgLy8gICB0aGlzLmNsb3NlTW9kYWwoKTtcbiAgLy8gfVxuXG4gIC8vIHByaXZhdGUgY2xvc2VNb2RhbCgpIHtcbiAgLy8gICB0aGlzLnNob3dVc2VyRmVlZGJhY2sgPSAhdGhpcy5zaG93VXNlckZlZWRiYWNrO1xuICAvLyAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgLy8gfVxufVxuIiwiPGRpdiAjbWlhbUNhdGFsb2dUb3BBbmNob3IgY2xhc3M9XCJtaWFtLWNhdGFsb2ctYW5jaG9yXCI+PC9kaXY+XG4gIDxkaXYgKm5nSWY9XCIhY3JlYXRpbmdSZWNpcGUgZWxzZSBjcmVhdGlvblBhZ2VcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudFwiPlxuICAgICAgPG5nLW1pYW0tY2F0YWxvZy1oZWFkZXIgXG4gICAgICAgIFt0aXRsZV09XCJhc3Nlc3NUaXRsZSgpXCJcbiAgICAgICAgW2hvbWVMYWJlbF09XCJob21lTGFiZWxcIlxuICAgICAgICBbcGljdHVyZVVybF09XCJkaXNwbGF5SG9tZVBhZ2UgPyBoZWFkZXJQaWN0dXJlVXJsIDogbnVsbFwiXG4gICAgICAgIFt0aXRsZVBpY3R1cmVVcmxdPVwiZGlzcGxheUhvbWVQYWdlID8gaG9tZVRpdGxlUGljdHVyZVVybCA6IG51bGxcIlxuICAgICAgICBbZmF2b3JpdGVzQnV0dG9uSGlkZGVuXT1cImFzc2Vzc0lzRmF2b3JpdGVzUGFnZSgpXCJcbiAgICAgICAgW3BlcnNvbmFsQnV0dG9uSGlkZGVuXT1cImNvbnRleHRTZXJ2aWNlLmRpc2FibGVQZXJzb25hbFJlY2lwZSQgfCBhc3luY1wiXG4gICAgICAgIFtmaWx0ZXJCYWRnZUNvdW50XT1cInNlbGVjdGFibGVGaWx0ZXJzQ291bnQoKVwiXG4gICAgICAgIChyZXR1cm5CdXR0b25QcmVzc2VkKT1cInJldHVyblRvSG9tZVBhZ2UoKVwiXG4gICAgICAgIChmaWx0ZXJCdXR0b25QcmVzc2VkKT1cIm9uRmlsdGVyQ29sbGFwc2VkKClcIlxuICAgICAgICAoc2VhcmNoU3RyaW5nQ2hhbmdlZCk9XCJ1cGRhdGVTZWFyY2goJGV2ZW50KVwiXG4gICAgICAgIChwZXJzb25hbEJ1dHRvblByZXNzZWQpPVwic2V0UGVyc29uYWxGaWx0ZXIoKVwiXG4gICAgICAgIChmYXZvcml0ZXNCdXR0b25QcmVzc2VkKT1cInNldEZhdm9yaXRlc0ZpbHRlcigpXCI+XG4gICAgICA8L25nLW1pYW0tY2F0YWxvZy1oZWFkZXI+XG4gICAgICA8ZGl2ICpuZ0lmPVwicmVjaXBlQ291bnQgPiAwXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X19teU1lYWxfX2J1dHRvblwiIChjbGljayk9XCJ0b2dnbGVNeU1lYWxEcmF3ZXIoKVwiID5cbiAgICAgICAgPG5nLW1pYW0taWNvbiBbaWNvbk5hbWVdPVwiaWNvbi5DYXJ0XCIgcHJpbWFyeUNvbG9yPSd2YXIoLS1tLWNvbG9yLXdoaXRlKScgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19teU1lYWxfX2ZpcnN0X19pY29uXCIgPjwvbmctbWlhbS1pY29uPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX215TWVhbF9fYnV0dG9uX190ZXh0XCI+e3tyZWNpcGVDb3VudH19IFxuICAgICAgICAgIHJlcGFzXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPG5nLW1pYW0taWNvbiAgW2ljb25OYW1lXT1cImljb24uQ2hldnJvbkRvd25cIiBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3Itd2hpdGUpJyBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX215TWVhbF9fc2Vjb25kX19pY29uXCI+PC9uZy1taWFtLWljb24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBVc2VyIGZlZWRiYWNrIGJhbm5lciAodW51c2VkIGZvciBub3cgLyBtYXliZSByZWFjdGl2YXRlZCBsYXRlcikgLS0+XG4gICAgICA8IS0tIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X191c2VyLWZlZWRiYWNrX19tb2RhbFwiICpuZ0lmPVwic2hvd1VzZXJGZWVkYmFja1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudF9fdXNlci1mZWVkYmFja1wiPlxuICAgICAgICAgIDxuZy1taWFtLWljb24gY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X191c2VyLWZlZWRiYWNrX19pY29uLWNyb3NzXCIgKGNsaWNrKT1cImNsb3NlTW9kYWwoKVwiIFtpY29uTmFtZV09XCJpY29uLkNyb3NzXCIgW3dpZHRoXT1cIjMwXCIgW2hlaWdodF09XCIzMFwiIHByaW1hcnlDb2xvcj1cIm5vbmVcIj48L25nLW1pYW0taWNvbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudF9fdXNlci1mZWVkYmFja19fdGl0bGVcIj5cbiAgICAgICAgICAgICAgPHNwYW4+UG91ciBtaWV1eCB2b3VzIGNvbm5hw650cmU8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX3VzZXItZmVlZGJhY2tfX3F1ZXN0aW9uXCI+XG4gICAgICAgICAgICAgIDxzcGFuPkF2ZXotdm91cyBsJ2hhYml0dWRlIGRlIGN1aXNpbmVyIHBvdXIgb3UgYXZlYyBkZXMgZW5mYW50cyA/PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX3VzZXItZmVlZGJhY2tfX2FjdGlvbnNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtLWZlZWRiYWNrLWJ1dHRvblwiIChjbGljayk9XCJzZXRVc2VyUHJlZmVyZW5jZSgnaGFzX2NoaWxkcmVuJywgZmFsc2UpXCI+Tm9uPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwibS1mZWVkYmFjay1idXR0b25cIiAoY2xpY2spPVwic2V0VXNlclByZWZlcmVuY2UoJ2hhc19jaGlsZHJlbicsIHRydWUpXCI+T3VpPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+IC0tPlxuXG4gICAgICA8IS0tIENhdGFsb2cgcGFnZSBjb250ZW50IHdoZW4gZmlsdGVycyBhcHBsaWVkIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cIiFkaXNwbGF5SG9tZVBhZ2UgZWxzZSBjYXRlZ29yaWVzQ29tcG9uZW50c1wiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fbGlzdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudF9fdGl0bGVcIj5cbiAgICAgICAgICA8bmctbWlhbS1pY29uIFtpY29uTmFtZV09XCJpY29uLkFycm93RG93blwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIChjbGljayk9XCJyZXR1cm5Ub0hvbWVQYWdlKClcIj48L25nLW1pYW0taWNvbj5cbiAgICAgICAgICA8c3Bhbj57eyBhc3Nlc3NUaXRsZSgpIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2xpc3RfX2NyZWF0ZV9fX2J1dHRvblwiICpuZ0lmPVwiZmlsdGVycz8uYWRkaXRpb25hbEZpbHRlcnM/LmZpbHRlcnNbJ3BlcnNvbmFsJ10gPT09IHRydWVcIiBcbiAgICAgICAgKGNsaWNrKT1cIm1hbmFnZVJlY2lwZUFjdGlvbih7YWN0aW9uOiAnQ1JFQVRFJywgcmVjaXBlOiBudWxsfSlcIj5cbiAgICAgICAgICA8bmctbWlhbS1pY29uIFtpY29uTmFtZV09XCJpY29uLlBsdXNcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBwcmltYXJ5Q29sb3I9XCJ2YXIoLS1tLWNvbG9yLXByaW1hcnkpXCI+PC9uZy1taWFtLWljb24+XG4gICAgICAgICAgPHNwYW4+QWpvdXRlciB1bmUgaWTDqWUgcmVwYXM8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxuZy1taWFtLWNhdGFsb2ctbGlzdFxuICAgICAgICAgIFtmaWx0ZXJzXT1cImZpbHRlcnNcIlxuICAgICAgICAgIChmaWx0ZXJSZW1vdmVkKT1cInJlbW92ZUZpbHRlcigkZXZlbnQpXCJcbiAgICAgICAgICAocmVjaXBlQWN0aW9uVHJpZ2dlcmVkKT1cIm1hbmFnZVJlY2lwZUFjdGlvbigkZXZlbnQpXCI+XG4gICAgICAgIDwvbmctbWlhbS1jYXRhbG9nLWxpc3Q+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1taWFtLXJlY2lwZS1maWx0ZXJzXG4gICAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcbiAgICAgIFtpc0ZpbHRlckNvbGxhcHNlZF09XCJpc0ZpbHRlckNvbGxhcHNlZFwiXG4gICAgICBbZmlsdGVyVG9SZW1vdmVdPVwiZmlsdGVyVG9SZW1vdmVcIlxuICAgICAgW3Bvc2l0aW9uXT1cImZpbHRlcnNQb3NpdGlvblwiXG4gICAgICAoZmlsdGVyQ2hhbmdlZCk9XCJ1cGRhdGVGaWx0ZXJzKCRldmVudClcIlxuICAgICAgKGZpbHRlckNvbGxhcHNlZCk9XCJvbkZpbHRlckNvbGxhcHNlZCgpXCJcbiAgICAgIChwcmVmZXJlbmNlc0NoYW5nZWQpPVwicmVsb2FkUGFja2FnZXMoKVwiXG4gICAgPlxuICAgIDwvbmctbWlhbS1yZWNpcGUtZmlsdGVycz5cbiAgICA8IS0tIENhdGFsb2cgaG9tZSBwYWdlIGNvbnRlbnQgLS0+XG4gICAgPG5nLXRlbXBsYXRlICNjYXRlZ29yaWVzQ29tcG9uZW50cz5cbiAgICAgIDxkaXYgKm5nSWY9XCJjYXRlZ29yaWVzLmxlbmd0aCA+IDBcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NhdGVnb3JpZXNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY2F0ZWdvcnkgb2YgY2F0ZWdvcmllcyBsZXQgaSA9IGluZGV4XCIgPlxuICAgICAgICA8bmctbWlhbS1jYXRhbG9nLWNhdGVnb3J5IFxuICAgICAgICAgIFt0aXRsZV09XCJjYXRlZ29yeS50aXRsZVwiXG4gICAgICAgICAgW3N1YnRpdGxlXT1cImNhdGVnb3J5LnN1YnRpdGxlXCJcbiAgICAgICAgICBbZmlsdGVyc109XCJjYXRlZ29yeS5maWx0ZXJzXCIgXG4gICAgICAgICAgKGRpc3BsYXlMaXN0KT1cImNhdGVnb3J5VGl0bGVDbGlja2VkKCRldmVudClcIj5cbiAgICAgICAgPC9uZy1taWFtLWNhdGFsb2ctY2F0ZWdvcnk+XG4gICAgICAgIDxkaXYgIGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fZXhwbGFpbmVfYmFubmVyXCIgKm5nSWY9XCJpID09PSAwXCI+XG4gICAgICAgICAgPG5nLW1pYW0tZXhwbGFpbmUtYmFubmVyPjwvbmctbWlhbS1leHBsYWluZS1iYW5uZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNjcmVhdGlvblBhZ2U+XG4gIDxuZy1taWFtLXJlY2lwZS1zdGVwcGVyIFtyZWNpcGVdPVwicmVjaXBlVG9VcGRhdGVcIiAocmVjaXBlQ2hhbmdlKT1cImxlYXZlQ3JlYXRlUGFnZSgpXCIgKGNhbmNlbGVkKT1cImxlYXZlQ3JlYXRlUGFnZSgpXCI+PC9uZy1taWFtLXJlY2lwZS1zdGVwcGVyPlxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
492
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjaXBlLWNhdGFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9idWlsZHMvbWlhbS9uZy1taWFtLXNkay9wcm9qZWN0cy9uZy1taWFtL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9fd2ViLWNvbXBvbmVudHMvcmVjaXBlLWNhdGFsb2cvcmVjaXBlLWNhdGFsb2cuY29tcG9uZW50LnRzIiwibGliL193ZWItY29tcG9uZW50cy9yZWNpcGUtY2F0YWxvZy9yZWNpcGUtY2F0YWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBaUIsaUJBQWlCLEVBQVUsVUFBVSxFQUM3SCxZQUFZLEVBQUUsU0FBUyxFQUFhLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRTFGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxjQUFjLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFMLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVwRixPQUFPLEVBQUUsYUFBYSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7Ozs7SUNPN0MsK0JBQ0U7SUFEZ0Ysc01BQThCO0lBQzlHLG1DQUEwSTtJQUMxSSxnQ0FBd0Q7SUFBQSxZ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REFBdEIsc0JBQXNCO3VCQUN0QixzQkFBc0I7O3VCQUVuQix3QkFBd0I7Ozs7Ozs7UUN4QnhDLDRCQUE2RDtRQUMzRCx3RUFDRTtRQXlGSix3SEFDRTs7O1FBM0ZLLGVBQXlDO1FBQXpDLDBDQUF5QyxpQkFBQTs7a0REb0JuQyxzQkFBc0I7Y0FQbEMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSx3QkFBd0I7Z0JBQ2xDLFdBQVcsRUFBRSxpQ0FBaUM7Z0JBQzlDLFNBQVMsRUFBRSxDQUFDLGlDQUFpQyxDQUFDO2dCQUM5QyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtnQkFDckMsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07YUFDaEQ7NldBRW9DLGFBQWE7a0JBQS9DLFNBQVM7bUJBQUMsc0JBQXNCO1lBQ0UsU0FBUztrQkFBM0MsU0FBUzttQkFBQyxzQkFBc0I7WUFDUSxjQUFjO2tCQUF0RCxZQUFZO21CQUFDLHdCQUF3QjtZQUU3QixnQkFBZ0I7a0JBQXhCLEtBQUs7WUFDRyxtQkFBbUI7a0JBQTNCLEtBQUs7WUFDRyxZQUFZO2tCQUFwQixLQUFLO1lBQ0csZUFBZTtrQkFBdkIsS0FBSztZQUNHLFNBQVM7a0JBQWpCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIFZpZXdFbmNhcHN1bGF0aW9uLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0NoaWxkLCBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgT25Jbml0LCBFbGVtZW50UmVmLFxuICBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgT25EZXN0cm95LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgbWFwLCBza2lwV2hpbGUsIHN3aXRjaE1hcCwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2F0YWxvZ0NhdGVnb3J5Q29tcG9uZW50IH0gZnJvbSAnLi4vY2F0YWxvZy1jYXRlZ29yeS9jYXRhbG9nLWNhdGVnb3J5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWNpcGUgfSBmcm9tICcuLi8uLi9fbW9kZWxzJztcbmltcG9ydCB7IFJlY2lwZVR5cGVTZXJ2aWNlLCBTcG9uc29yU2VydmljZSwgUGFja2FnZVNlcnZpY2UsIFN1cHBsaWVyc1NlcnZpY2UsIFJlY2lwZXNTZXJ2aWNlLCBVc2VyU2VydmljZSwgR3JvY2VyaWVzTGlzdHNTZXJ2aWNlLCBCYXNrZXRzU2VydmljZSwgQ29udGV4dFNlcnZpY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMnO1xuaW1wb3J0IHsgSWNvbiB9IGZyb20gJy4uLy4uL190eXBlcy9pY29uLmVudW0nO1xuaW1wb3J0IHsgQ2F0YWxvZ0hlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2NhdGFsb2ctaGVhZGVyL2NhdGFsb2ctaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZWNpcGVGaWx0ZXIsIFJlY2lwZUZpbHRlcnMgfSBmcm9tICcuLi8uLi9fdHlwZXMvcmVjaXBlLWZpbHRlcnMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBNZWRpYU1hdGNoZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcbmltcG9ydCB7IERvY3VtZW50Q29sbGVjdGlvbiB9IGZyb20gJ25neC1qc29uYXBpJztcbmltcG9ydCB7IFBhY2thZ2UgfSBmcm9tICcuLi8uLi9fbW9kZWxzL3BhY2thZ2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLXJlY2lwZS1jYXRhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlY2lwZS1jYXRhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVjaXBlLWNhdGFsb2cuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgUmVjaXBlQ2F0YWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQFZpZXdDaGlsZChDYXRhbG9nSGVhZGVyQ29tcG9uZW50KSBjYXRhbG9nSGVhZGVyOiBDYXRhbG9nSGVhZGVyQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdtaWFtQ2F0YWxvZ1RvcEFuY2hvcicpIHRvcEFuY2hvcjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZHJlbihDYXRhbG9nQ2F0ZWdvcnlDb21wb25lbnQpICBjYXRlZ29yaWVzQ29tcCE6IFF1ZXJ5TGlzdDxDYXRhbG9nQ2F0ZWdvcnlDb21wb25lbnQ+O1xuXG4gIEBJbnB1dCgpIGhlYWRlclBpY3R1cmVVcmwgPSAnaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Fzc2V0cy5taWFtLnRlY2gvZ2VuZXJpYy9pbWFnZXMvZGVmYXVsdC1jYXRhbG9nLXBpY3R1cmUucG5nJztcbiAgQElucHV0KCkgaG9tZVRpdGxlUGljdHVyZVVybCA9ICdodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vYXNzZXRzLm1pYW0udGVjaC9nZW5lcmljL2ltYWdlcy9kZWZhdWx0LWNhdGFsb2ctdGl0bGUucG5nJztcbiAgQElucHV0KCkgaW5pdGlhbFJvdXRlID0gJyc7XG4gIEBJbnB1dCgpIGZpbHRlcnNQb3NpdGlvbiA9ICdsZWZ0JztcbiAgQElucHV0KCkgaG9tZUxhYmVsID0gJ0lkw6llcyByZXBhcyc7XG5cbiAgZmlsdGVyczogUmVjaXBlRmlsdGVycztcbiAgaXNGaWx0ZXJDb2xsYXBzZWQgPSB0cnVlO1xuICBkaXNwbGF5SG9tZVBhZ2UgPSB0cnVlO1xuICBpY29uID0gSWNvbjtcbiAgY2F0ZWdvcmllcyA9IFtdO1xuICBjcmVhdGluZ1JlY2lwZSA9IGZhbHNlO1xuICByZWNpcGVUb1VwZGF0ZTogUmVjaXBlO1xuICBmaWx0ZXJUb1JlbW92ZTogc3RyaW5nO1xuICBpc01vYmlsZSA9IGZhbHNlO1xuICBsaXN0SXNFbXB0eSA9IGZhbHNlO1xuICBzaG93VXNlckZlZWRiYWNrID0gZmFsc2U7XG4gIHJlY2lwZUNvdW50ID0gMDtcbiAgdG90YWxQcmljZSA9IDA7XG4gIGlzTXlNZWFsQ2xvc2UgPSB0cnVlO1xuICBcblxuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgc3VwcGxpZXJJZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwdWJsaWMgcmVjaXBlVHlwZXNTZXJ2aWNlOiBSZWNpcGVUeXBlU2VydmljZSxcbiAgICBwdWJsaWMgc3BvbnNvclNlcnZpY2U6IFNwb25zb3JTZXJ2aWNlLFxuICAgIHB1YmxpYyBzdXBwbGllclNlcnZpY2U6IFN1cHBsaWVyc1NlcnZpY2UsXG4gICAgcHVibGljIHBhY2thZ2VTZXJ2aWNlOiBQYWNrYWdlU2VydmljZSxcbiAgICBwcml2YXRlIHJlY2lwZXNTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwdWJsaWMgbWVkaWFNYXRjaGVyOiBNZWRpYU1hdGNoZXIsXG4gICAgcHVibGljIHVzZXJzU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHVibGljIGdyb2Nlcmllc0xpc3RTZXJ2aWNlOiBHcm9jZXJpZXNMaXN0c1NlcnZpY2UsXG4gICAgcHVibGljIGJhc2tldHNTZXJ2aWNlOiBCYXNrZXRzU2VydmljZSxcbiAgICBwdWJsaWMgY29udGV4dFNlcnZpY2U6IENvbnRleHRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuaXNNb2JpbGUgPSBtZWRpYU1hdGNoZXIubWF0Y2hNZWRpYSgnKG1heC13aWR0aDogMTAyMnB4KScpLm1hdGNoZXM7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXRGaWx0ZXJzKCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMgPSBbXG4gICAgICB0aGlzLnN1cHBsaWVyU2VydmljZS5zdXBwbGllciQuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgICAgc2tpcFdoaWxlKHN1cHAgPT4gc3VwcCA9PT0gdW5kZWZpbmVkIHx8IHN1cHAgPT0gbnVsbCksXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHN3aXRjaE1hcChzdXBwbGllciA9PiB7XG4gICAgICAgICAgdGhpcy5zdXBwbGllcklkID0gc3VwcGxpZXIuaWQ7XG4gICAgICAgICAgcmV0dXJuIHRoaXMubG9hZFBhY2thZ2VzKCk7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgpLFxuICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5iYXNrZXRTdGF0cyQuc3Vic2NyaWJlKGJzID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coYnMpXG4gICAgICAgIHRoaXMucmVjaXBlQ291bnQgPSBicy5yZWNpcGVzQ291bnQ7XG4gICAgICAgIHRoaXMudG90YWxQcmljZSA9IGJzLnRvdGFsUHJpY2U7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgIHRoaXMuYXNzZXNzU2hvd1VzZXJGZWVkYmFjaygpXG4gICAgXTtcblxuICAgIHRoaXMuc2V0RGlyZWN0QWNjZXNzKHRoaXMuaW5pdGlhbFJvdXRlKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaChzID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICAvLyBVc2VkIG9uIGxvYWQgdG8gYnVpbGQgdGhlIGZpbHRlcnMgYXR0cmlidXRlLCBhbmQgb24gY2xpY2sgb24gdGhlIGxpbmsgdG8gcmVzZXQgdGhlIGZpbHRlcnNcbiAgaW5pdEZpbHRlcnMoKSB7XG4gICAgdGhpcy5maWx0ZXJzID0ge1xuICAgICAgZGlmZmljdWx0eTogW1xuICAgICAgICB7bmFtZTogJzEnLCB2YWx1ZTogZmFsc2UsIHRleHQ6ICdDaGVmIGTDqWJ1dGFudCd9LFxuICAgICAgICB7bmFtZTogJzInLCB2YWx1ZTogZmFsc2UsIHRleHQ6ICdDaGVmIGludGVybcOpZGlhaXJlJ30sXG4gICAgICAgIHtuYW1lOiAnMycsIHZhbHVlOiBmYWxzZSwgdGV4dDogJ1RvcCBjaGVmJ31cbiAgICAgIF0sXG4gICAgICBjb3N0OiBbXG4gICAgICAgIHtuYW1lOiAnMC01JywgdmFsdWU6IGZhbHNlLCB0ZXh0OiAnTW9pbnMgZGUgNeKCrCd9LFxuICAgICAgICB7bmFtZTogJzUtMTAnLCB2YWx1ZTogZmFsc2UsIHRleHQ6ICdFbnRyZSA14oKsIGV0IDEw4oKsJ30sXG4gICAgICAgIHtuYW1lOiAnMTAtMTAwMCcsIHZhbHVlOiBmYWxzZSwgdGV4dDogJ1BsdXMgZGUgMTDigqwnfVxuICAgICAgICAvLyB3ZSBzZXQgYSBsaW1pdCBhdCAxMDAw4oKsIG1heCwgaWYgYSByZWNpcGUgY29zdCBtb3JlIHNob3VsZCBiZSBub24gc2Vuc2UgYW55d2F5XG4gICAgICBdLFxuICAgICAgdGltZTogW1xuICAgICAgICB7bmFtZTogJzE1JywgdmFsdWU6IGZhbHNlLCB0ZXh0OiAnTW9pbnMgZGUgMTUgbWluJ30sXG4gICAgICAgIHtuYW1lOiAnMzAnLCB2YWx1ZTogZmFsc2UsIHRleHQ6ICdNb2lucyBkZSAzMCBtaW4nfSxcbiAgICAgICAge25hbWU6ICc2MCcsIHZhbHVlOiBmYWxzZSwgdGV4dDogJ01vaW5zIGRlIDEgaCd9LFxuICAgICAgICB7bmFtZTogJzEyMCcsIHZhbHVlOiBmYWxzZSwgdGV4dDogJ01vaW5zIGRlIDIgaCd9XG4gICAgICBdLFxuICAgIH07XG4gICAgdGhpcy5yZXNldFNlYXJjaEFuZEFkZGl0aW9uYWxGaWx0ZXJzKCk7XG4gIH1cblxuICB1cGRhdGVTZWFyY2goc2VhcmNoOiBzdHJpbmcpIHtcbiAgICBpZiAoc2VhcmNoICE9PSB0aGlzLmZpbHRlcnMuc2VhcmNoKSB7XG4gICAgICB0aGlzLmZpbHRlcnMuc2VhcmNoID0gc2VhcmNoO1xuICAgICAgdGhpcy5yZWxvYWRMaXN0KCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRmlsdGVycyhmaWx0ZXJzOiBSZWNpcGVGaWx0ZXJzKSB7XG4gICAgdGhpcy5maWx0ZXJzID0geyAuLi5maWx0ZXJzIH07IC8vIE5lY2Vzc2FyeSB0byB0cmlnZ2VyIHRoZSBuZ09uQ2hhbmdlc1xuICAgIHRoaXMuZmlsdGVyVG9SZW1vdmUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5saXN0SXNFbXB0eSA9IGZhbHNlO1xuICAgIHRoaXMucmV0dXJuVG9Ub3AoKTtcbiAgICB0aGlzLnJlbG9hZExpc3QoKTtcbiAgfVxuXG4gIHJlbG9hZExpc3QoKSB7XG4gICAgdGhpcy5maWx0ZXJzID0geyAuLi50aGlzLmZpbHRlcnMgfTsgLy8gTmVjZXNzYXJ5IHRvIHRyaWdnZXIgdGhlIG5nT25DaGFuZ2VzXG4gICAgdGhpcy5kaXNwbGF5SG9tZVBhZ2UgPSBmYWxzZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBjYXRlZ29yeVRpdGxlQ2xpY2tlZChldmVudDoge3RpdGxlOiBzdHJpbmcsIGZpbHRlcnM6IGFueX0pIHtcbiAgICB0aGlzLnJldHVyblRvVG9wKCk7XG4gICAgdGhpcy5maWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzID0geyBmaWx0ZXJzOiBldmVudC5maWx0ZXJzLCB0aXRsZTogZXZlbnQudGl0bGUgfTtcbiAgICB0aGlzLnJlbG9hZExpc3QoKTtcbiAgfVxuXG4gIGFyZUZpbHRlcnNFbXB0eSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RhYmxlRmlsdGVyc0NvdW50KCkgPCAxICYmIHRoaXMuZmlsdGVycy5zZWFyY2ggPT09ICcnICYmICF0aGlzLmZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnM/LmZpbHRlcnM7XG4gIH1cblxuICBzZWxlY3RhYmxlRmlsdGVyc0NvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuaXNGaWVsZEVtcHR5KHRoaXMuZmlsdGVycy5kaWZmaWN1bHR5KSxcbiAgICAgIHRoaXMuaXNGaWVsZEVtcHR5KHRoaXMuZmlsdGVycy5jb3N0KSxcbiAgICAgIHRoaXMuaXNGaWVsZEVtcHR5KHRoaXMuZmlsdGVycy50aW1lKVxuICAgIF0ucmVkdWNlKChhLCBiKSA9PiBhICsgKCsgIWIpLCAwKTtcbiAgfVxuXG4gIGlzRmllbGRFbXB0eShmaWx0ZXI6IFJlY2lwZUZpbHRlcltdKSB7XG4gICAgaWYgKCFmaWx0ZXIpIHsgcmV0dXJuIHRydWU7IH1cblxuICAgIGZvciAoY29uc3QgZiBvZiBmaWx0ZXIpIHtcbiAgICAgIGlmIChmLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZW1vdmVGaWx0ZXIoZmlsdGVyVGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5maWx0ZXJUb1JlbW92ZSA9IGZpbHRlclRleHQ7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmV0dXJuVG9Ub3AoKSB7XG4gICAgaWYgKHRoaXMudG9wQW5jaG9yKSB7XG4gICAgICB0aGlzLnRvcEFuY2hvci5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuVG9Ib21lUGFnZSgpIHtcbiAgICB0aGlzLmRpc3BsYXlIb21lUGFnZSA9IHRydWU7XG4gICAgdGhpcy5yZXNldFNlYXJjaEFuZEFkZGl0aW9uYWxGaWx0ZXJzKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgb25GaWx0ZXJDb2xsYXBzZWQoKSB7XG4gICAgdGhpcy5pc0ZpbHRlckNvbGxhcHNlZCA9ICF0aGlzLmlzRmlsdGVyQ29sbGFwc2VkO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAvLyB0byB0cmlnZ2VyIGFmdGVyIHRoZSBkZXRlY3RDaGFuZ2VzIGJlY2F1c2Ugd2UgbmVlZCB0byBhbHJlYWQgaGF2ZSB0aGUgZGlzcGxheSBjaGFuZ2UgdG8gdXBkYXRlIGNhcmRzXG4gICAgdGhpcy5jYXRlZ29yaWVzQ29tcC5mb3JFYWNoKCBjYXQgPT4ge1xuICAgICAgY2F0LnVwZGF0ZVdpZHRoKCk7XG4gICAgfSk7XG4gIH1cblxuICBnb1RvQ3JlYXRlUGFnZShyZWNpcGUgPSBudWxsKSB7XG4gICAgdGhpcy5jcmVhdGluZ1JlY2lwZSA9IHRydWU7XG4gICAgdGhpcy5yZWNpcGVUb1VwZGF0ZSA9IHJlY2lwZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5yZXR1cm5Ub1RvcCgpO1xuICB9XG5cbiAgbGVhdmVDcmVhdGVQYWdlKCkge1xuICAgIHRoaXMuY3JlYXRpbmdSZWNpcGUgPSBmYWxzZTtcbiAgICB0aGlzLnJlbG9hZExpc3QoKTtcbiAgICB0aGlzLnJldHVyblRvVG9wKCk7XG4gIH1cblxuICBtYW5hZ2VSZWNpcGVBY3Rpb24oZXZlbnQ6IHthY3Rpb246IHN0cmluZywgcmVjaXBlOiBSZWNpcGV9KSB7XG4gICAgc3dpdGNoIChldmVudC5hY3Rpb24pIHtcbiAgICAgIGNhc2UgJ0NSRUFURSc6IHtcbiAgICAgICAgdGhpcy5nb1RvQ3JlYXRlUGFnZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSAnRURJVCc6IHtcbiAgICAgICAgdGhpcy5nb1RvQ3JlYXRlUGFnZShldmVudC5yZWNpcGUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgY2FzZSAnREVMRVRFJzoge1xuICAgICAgICBpZiAoZXZlbnQucmVjaXBlPy5pZCAmJiBldmVudC5yZWNpcGUucmVsYXRpb25zaGlwc1sncmVjaXBlLXByb3ZpZGVyJ10/LmRhdGEuaWQgPT09ICdwZXJzb25hbCcpIHtcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgIHRoaXMucmVjaXBlc1NlcnZpY2UuZGVsZXRlKGV2ZW50LnJlY2lwZS5pZCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5yZWxvYWRMaXN0KCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaXNMaXN0RW1wdHkocmVjaXBlczogUmVjaXBlW10pIHtcbiAgICB0aGlzLmxpc3RJc0VtcHR5ID0gcmVjaXBlcy5sZW5ndGggPT09IDA7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcmVsb2FkUGFja2FnZXMoKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmxvYWRQYWNrYWdlcygpLnN1YnNjcmliZSgpXG4gICAgKTtcbiAgfVxuXG4gIGFzc2Vzc1RpdGxlKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZGlzcGxheUhvbWVQYWdlKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGVsc2UgaWYgKHRoaXMuZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycyAmJiB0aGlzLmZpbHRlcnMuYWRkaXRpb25hbEZpbHRlcnMudGl0bGUgIT09ICcnKSB7XG4gICAgICByZXR1cm4gdGhpcy5maWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzLnRpdGxlO1xuICAgIH0gZWxzZSBpZiAodGhpcy5maWx0ZXJzLnNlYXJjaCkge1xuICAgICAgcmV0dXJuIGBWb3RyZSByZWNoZXJjaGUgOiBcIiR7dGhpcy5maWx0ZXJzLnNlYXJjaH1cImA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAnVm90cmUgc8OpbGVjdGlvbic7XG4gICAgfVxuICB9XG5cbiAgY2FuRGlzcGxheUNyZWF0aW9uQnV0dG9uKCk6IE9ic2VydmFibGU8Qm9vbGVhbj4ge1xuICAgIGNvbnN0IGlzUGVyc29uYWwgPSB0aGlzLmZpbHRlcnM/LmFkZGl0aW9uYWxGaWx0ZXJzPy5maWx0ZXJzWydwZXJzb25hbCddID09PSB0cnVlXG4gICAgcmV0dXJuIHRoaXMudXNlcnNTZXJ2aWNlLmlzTG9nZ2VkJC5hc09ic2VydmFibGUoKS5waXBlKG1hcChpc0xvZ2dlZCA9PiBpc0xvZ2dlZCAmJiBpc1BlcnNvbmFsKSlcbiAgfVxuXG4gIGFzc2Vzc0lzRmF2b3JpdGVzUGFnZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzICYmIHRoaXMuZmlsdGVycy5hZGRpdGlvbmFsRmlsdGVycy50aXRsZSA9PT0gJ01lcyBpZMOpZXMgcmVwYXMnO1xuICB9XG5cbiAgc2V0RmF2b3JpdGVzRmlsdGVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlcnMgPSBPYmplY3QuYXNzaWduKHRoaXMuZmlsdGVycywge1xuICAgICAgYWRkaXRpb25hbEZpbHRlcnM6IHtcbiAgICAgICAgZmlsdGVyczogeyBsaWtlZDogdHJ1ZSB9LFxuICAgICAgICB0aXRsZTogJ01lcyBpZMOpZXMgcmVwYXMnXG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5yZXR1cm5Ub1RvcCgpO1xuICAgIHRoaXMudXBkYXRlRmlsdGVycyhmaWx0ZXJzKTtcbiAgfVxuXG4gIHNldFBlcnNvbmFsRmlsdGVyKCk6IHZvaWQge1xuICAgIGNvbnN0IGZpbHRlcnMgPSBPYmplY3QuYXNzaWduKHRoaXMuZmlsdGVycywge1xuICAgICAgYWRkaXRpb25hbEZpbHRlcnM6IHtcbiAgICAgICAgZmlsdGVyczogeyBwZXJzb25hbDogdHJ1ZSwgYWN0aXZlOiAndHJ1ZSxmYWxzZScgfSxcbiAgICAgICAgdGl0bGU6ICdNb24gY2FybmV0IHBlcnNvJ1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMucmV0dXJuVG9Ub3AoKTtcbiAgICB0aGlzLnVwZGF0ZUZpbHRlcnMoZmlsdGVycyk7XG4gIH1cblxuICB0b2dnbGVNeU1lYWxEcmF3ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5yZWNpcGVzU2VydmljZS5vcGVuQmFza2V0KCk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRQYWNrYWdlcygpOiBPYnNlcnZhYmxlPERvY3VtZW50Q29sbGVjdGlvbjxQYWNrYWdlPj4ge1xuICAgIHJldHVybiB0aGlzLnBhY2thZ2VTZXJ2aWNlLmNhdGVnb3JpZXNfZm9yKFt0aGlzLnN1cHBsaWVySWRdKS5waXBlKFxuICAgICAgc2tpcFdoaWxlKHBhY2thZ2VzID0+IHBhY2thZ2VzLmlzX2xvYWRpbmcpLFxuICAgICAgdGFwKChwYWNrYWdlczogRG9jdW1lbnRDb2xsZWN0aW9uPFBhY2thZ2U+KSA9PiB7XG4gICAgICAgIHRoaXMuaW5pdENhdGVnb3JpZXMocGFja2FnZXMpO1xuICAgICAgICB0aGlzLnNlbGVjdENhdGVnb3J5RnJvbVVybCgpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGluaXRDYXRlZ29yaWVzKHBhY2thZ2VzKSB7XG4gICAgdGhpcy5jYXRlZ29yaWVzID0gcGFja2FnZXMuZGF0YS5tYXAoY2F0ZWdvcnlQYWNrYWdlID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtleTogY2F0ZWdvcnlQYWNrYWdlLnRpdGxlLnRyaW0oKS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1teYS16QS1aMC05IC1dLywgJycpLnJlcGxhY2UoL1xccy9nLCAnLScpLFxuICAgICAgICB0aXRsZTogY2F0ZWdvcnlQYWNrYWdlLnRpdGxlLFxuICAgICAgICBzdWJ0aXRsZTogY2F0ZWdvcnlQYWNrYWdlLnN1YnRpdGxlLFxuICAgICAgICBmaWx0ZXJzOiB7IGFkZGl0aW9uYWxGaWx0ZXJzOiB7IGZpbHRlcnM6IHsgcGFja2FnZXM6IGNhdGVnb3J5UGFja2FnZS5pZCB9LCB0aXRsZTogJycgfSB9XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RDYXRlZ29yeUZyb21VcmwoKSB7XG4gICAgY29uc3QgcGFyYW1zQXJyYXkgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIGlmIChwYXJhbXNBcnJheS5nZXQoJ2NhdGFsb2dDYXRlZ29yeScpID09PSAnZmF2b3JpdGVzJykge1xuICAgICAgcmV0dXJuIHRoaXMuc2V0RmF2b3JpdGVzRmlsdGVyKCk7XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdGVkQ2F0ZWdvcnkgPSB0aGlzLmNhdGVnb3JpZXMuZmluZCgoY2F0KSA9PiBjYXQua2V5ID09PSBwYXJhbXNBcnJheS5nZXQoJ2NhdGFsb2dDYXRlZ29yeScpKTtcbiAgICBpZiAoc2VsZWN0ZWRDYXRlZ29yeSkgeyByZXR1cm4gdGhpcy5jYXRlZ29yeVRpdGxlQ2xpY2tlZChzZWxlY3RlZENhdGVnb3J5KTsgfVxuICB9XG5cbiAgLy8gU2hvdyBmZWVkYmFjayBibG9jayBvbmx5IGlmIHVzZXIgaXMgbG9nZ2VkIGFuZCB0aGUgY2hpbGRyZW4gcHJlZmVyZW5jZSBpcyB1bmtub3duXG4gIHByaXZhdGUgYXNzZXNzU2hvd1VzZXJGZWVkYmFjaygpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgIHRoaXMudXNlcnNTZXJ2aWNlLmlzTG9nZ2VkJCxcbiAgICAgIHRoaXMudXNlcnNTZXJ2aWNlLnByZWZlcmVuY2VEZWZpbmVkKCdoYXNfY2hpbGRyZW4nKSxcbiAgICAgIHRoaXMudXNlcnNTZXJ2aWNlLnByZWZlcmVuY2VzQWN0aXZhdGVkJFxuICAgIF0pLnN1YnNjcmliZShyZXN1bHRzID0+IHtcbiAgICAgIGNvbnN0IGxvZ2dlZCA9IHJlc3VsdHNbMF07XG4gICAgICBjb25zdCBwcmVmZXJlbmNlRGVmaW5lZCA9IHJlc3VsdHNbMV07XG4gICAgICBjb25zdCBwcmVmZXJlbmNlc0FjdGl2YXRlZCA9IHJlc3VsdHNbMl07XG4gICAgICB0aGlzLnNob3dVc2VyRmVlZGJhY2sgPSBsb2dnZWQgJiYgIXByZWZlcmVuY2VEZWZpbmVkICYmIHByZWZlcmVuY2VzQWN0aXZhdGVkO1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldFNlYXJjaEFuZEFkZGl0aW9uYWxGaWx0ZXJzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNhdGFsb2dIZWFkZXIpIHsgdGhpcy5jYXRhbG9nSGVhZGVyLnJlc2V0U2VhcmNoU3RyaW5nKCk7IH1cbiAgICB0aGlzLmZpbHRlcnMuc2VhcmNoID0gJyc7XG4gICAgdGhpcy5maWx0ZXJzLmFkZGl0aW9uYWxGaWx0ZXJzID0gbnVsbDtcbiAgICB0aGlzLmxpc3RJc0VtcHR5ID0gZmFsc2U7XG4gICAgaWYgKCF0aGlzLmRpc3BsYXlIb21lUGFnZSl7IHRoaXMucmV0dXJuVG9Ib21lUGFnZSgpOyB9XG4gIH1cblxuICBwcml2YXRlIHNldERpcmVjdEFjY2Vzcyhyb3V0ZTogc3RyaW5nKXtcbiAgICBpZih0aGlzLmluaXRpYWxSb3V0ZSAhPT0gJycpe1xuICAgICAgc3dpdGNoKHRoaXMuaW5pdGlhbFJvdXRlKXtcbiAgICAgICAgY2FzZSAnbWVzLXJlcGFzJzpcbiAgICAgICAgICB0aGlzLnRvZ2dsZU15TWVhbERyYXdlcigpXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ21lcy1yZWNldHRlcy1wZXJzb25uZWxsZXMnOlxuICAgICAgICAgIHRoaXMuc2V0UGVyc29uYWxGaWx0ZXIoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmVjZXR0ZXMtZmF2b3JpdGVzJzpcbiAgICAgICAgICB0aGlzLnNldEZhdm9yaXRlc0ZpbHRlcigpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFVudXNlZCBmb3Igbm93Li4uXG4gIC8vIHNldFVzZXJQcmVmZXJlbmNlKHByZWYsIHN0YXRlKSB7XG4gIC8vICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gIC8vICAgICB0aGlzLnVzZXJzU2VydmljZS5zZXRQcmVmZXJlbmNlKHByZWYsIHN0YXRlKS5waXBlKFxuICAvLyAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5sb2FkUGFja2FnZXMoKSlcbiAgLy8gICAgICkuc3Vic2NyaWJlKClcbiAgLy8gICApO1xuICAvLyAgIHRoaXMuY2xvc2VNb2RhbCgpO1xuICAvLyB9XG5cbiAgLy8gcHJpdmF0ZSBjbG9zZU1vZGFsKCkge1xuICAvLyAgIHRoaXMuc2hvd1VzZXJGZWVkYmFjayA9ICF0aGlzLnNob3dVc2VyRmVlZGJhY2s7XG4gIC8vICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAvLyB9XG59XG4iLCI8ZGl2ICNtaWFtQ2F0YWxvZ1RvcEFuY2hvciBjbGFzcz1cIm1pYW0tY2F0YWxvZy1hbmNob3JcIj48L2Rpdj5cbiAgPGRpdiAqbmdJZj1cIiFjcmVhdGluZ1JlY2lwZSBlbHNlIGNyZWF0aW9uUGFnZVwiIGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ1wiPlxuICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50XCI+XG4gICAgICA8bmctbWlhbS1jYXRhbG9nLWhlYWRlciBcbiAgICAgICAgW3RpdGxlXT1cImFzc2Vzc1RpdGxlKClcIlxuICAgICAgICBbaG9tZUxhYmVsXT1cImhvbWVMYWJlbFwiXG4gICAgICAgIFtwaWN0dXJlVXJsXT1cImRpc3BsYXlIb21lUGFnZSA/IGhlYWRlclBpY3R1cmVVcmwgOiBudWxsXCJcbiAgICAgICAgW3RpdGxlUGljdHVyZVVybF09XCJkaXNwbGF5SG9tZVBhZ2UgPyBob21lVGl0bGVQaWN0dXJlVXJsIDogbnVsbFwiXG4gICAgICAgIFtmYXZvcml0ZXNCdXR0b25IaWRkZW5dPVwiYXNzZXNzSXNGYXZvcml0ZXNQYWdlKClcIlxuICAgICAgICBbcGVyc29uYWxCdXR0b25IaWRkZW5dPVwiY29udGV4dFNlcnZpY2UuZGlzYWJsZVBlcnNvbmFsUmVjaXBlJCB8IGFzeW5jXCJcbiAgICAgICAgW2ZpbHRlckJhZGdlQ291bnRdPVwic2VsZWN0YWJsZUZpbHRlcnNDb3VudCgpXCJcbiAgICAgICAgKHJldHVybkJ1dHRvblByZXNzZWQpPVwicmV0dXJuVG9Ib21lUGFnZSgpXCJcbiAgICAgICAgKGZpbHRlckJ1dHRvblByZXNzZWQpPVwib25GaWx0ZXJDb2xsYXBzZWQoKVwiXG4gICAgICAgIChzZWFyY2hTdHJpbmdDaGFuZ2VkKT1cInVwZGF0ZVNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgKHBlcnNvbmFsQnV0dG9uUHJlc3NlZCk9XCJzZXRQZXJzb25hbEZpbHRlcigpXCJcbiAgICAgICAgKGZhdm9yaXRlc0J1dHRvblByZXNzZWQpPVwic2V0RmF2b3JpdGVzRmlsdGVyKClcIj5cbiAgICAgIDwvbmctbWlhbS1jYXRhbG9nLWhlYWRlcj5cbiAgICAgIDxkaXYgKm5nSWY9XCJyZWNpcGVDb3VudCA+IDBcIiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX215TWVhbF9fYnV0dG9uXCIgKGNsaWNrKT1cInRvZ2dsZU15TWVhbERyYXdlcigpXCIgPlxuICAgICAgICA8bmctbWlhbS1pY29uIFtpY29uTmFtZV09XCJpY29uLkNhcnRcIiBwcmltYXJ5Q29sb3I9J3ZhcigtLW0tY29sb3Itd2hpdGUpJyBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX215TWVhbF9fZmlyc3RfX2ljb25cIiA+PC9uZy1taWFtLWljb24+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fbXlNZWFsX19idXR0b25fX3RleHRcIj57e3JlY2lwZUNvdW50fX0gXG4gICAgICAgICAgcmVwYXNcbiAgICAgICAgPC9zcGFuPlxuICAgICAgICA8bmctbWlhbS1pY29uICBbaWNvbk5hbWVdPVwiaWNvbi5DaGV2cm9uRG93blwiIHByaW1hcnlDb2xvcj0ndmFyKC0tbS1jb2xvci13aGl0ZSknIGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fbXlNZWFsX19zZWNvbmRfX2ljb25cIj48L25nLW1pYW0taWNvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFVzZXIgZmVlZGJhY2sgYmFubmVyICh1bnVzZWQgZm9yIG5vdyAvIG1heWJlIHJlYWN0aXZhdGVkIGxhdGVyKSAtLT5cbiAgICAgIDwhLS0gPGRpdiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX3VzZXItZmVlZGJhY2tfX21vZGFsXCIgKm5nSWY9XCJzaG93VXNlckZlZWRiYWNrXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X191c2VyLWZlZWRiYWNrXCI+XG4gICAgICAgICAgPG5nLW1pYW0taWNvbiBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2NvbnRlbnRfX3VzZXItZmVlZGJhY2tfX2ljb24tY3Jvc3NcIiAoY2xpY2spPVwiY2xvc2VNb2RhbCgpXCIgW2ljb25OYW1lXT1cImljb24uQ3Jvc3NcIiBbd2lkdGhdPVwiMzBcIiBbaGVpZ2h0XT1cIjMwXCIgcHJpbWFyeUNvbG9yPVwibm9uZVwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X191c2VyLWZlZWRiYWNrX190aXRsZVwiPlxuICAgICAgICAgICAgICA8c3Bhbj5Qb3VyIG1pZXV4IHZvdXMgY29ubmHDrnRyZTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudF9fdXNlci1mZWVkYmFja19fcXVlc3Rpb25cIj5cbiAgICAgICAgICAgICAgPHNwYW4+QXZlei12b3VzIGwnaGFiaXR1ZGUgZGUgY3Vpc2luZXIgcG91ciBvdSBhdmVjIGRlcyBlbmZhbnRzID88L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICBcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fY29udGVudF9fdXNlci1mZWVkYmFja19fYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm0tZmVlZGJhY2stYnV0dG9uXCIgKGNsaWNrKT1cInNldFVzZXJQcmVmZXJlbmNlKCdoYXNfY2hpbGRyZW4nLCBmYWxzZSlcIj5Ob248L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJtLWZlZWRiYWNrLWJ1dHRvblwiIChjbGljayk9XCJzZXRVc2VyUHJlZmVyZW5jZSgnaGFzX2NoaWxkcmVuJywgdHJ1ZSlcIj5PdWk8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj4gLS0+XG5cbiAgICAgIDwhLS0gQ2F0YWxvZyBwYWdlIGNvbnRlbnQgd2hlbiBmaWx0ZXJzIGFwcGxpZWQgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIWRpc3BsYXlIb21lUGFnZSBlbHNlIGNhdGVnb3JpZXNDb21wb25lbnRzXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19saXN0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jb250ZW50X190aXRsZVwiPlxuICAgICAgICAgIDxuZy1taWFtLWljb24gW2ljb25OYW1lXT1cImljb24uQXJyb3dEb3duXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgKGNsaWNrKT1cInJldHVyblRvSG9tZVBhZ2UoKVwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDxzcGFuPnt7IGFzc2Vzc1RpdGxlKCkgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwibWlhbS1yZWNpcGUtY2F0YWxvZ19fbGlzdF9fY3JlYXRlX19fYnV0dG9uXCIgKm5nSWY9XCJjYW5EaXNwbGF5Q3JlYXRpb25CdXR0b24oKSB8IGFzeW5jXCIgXG4gICAgICAgIChjbGljayk9XCJtYW5hZ2VSZWNpcGVBY3Rpb24oe2FjdGlvbjogJ0NSRUFURScsIHJlY2lwZTogbnVsbH0pXCI+XG4gICAgICAgICAgPG5nLW1pYW0taWNvbiBbaWNvbk5hbWVdPVwiaWNvbi5QbHVzXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgcHJpbWFyeUNvbG9yPVwidmFyKC0tbS1jb2xvci1wcmltYXJ5KVwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgICAgIDxzcGFuPkFqb3V0ZXIgdW5lIGlkw6llIHJlcGFzPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctbWlhbS1jYXRhbG9nLWxpc3RcbiAgICAgICAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcbiAgICAgICAgICAoZmlsdGVyUmVtb3ZlZCk9XCJyZW1vdmVGaWx0ZXIoJGV2ZW50KVwiXG4gICAgICAgICAgKHJlY2lwZUFjdGlvblRyaWdnZXJlZCk9XCJtYW5hZ2VSZWNpcGVBY3Rpb24oJGV2ZW50KVwiPlxuICAgICAgICA8L25nLW1pYW0tY2F0YWxvZy1saXN0PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctbWlhbS1yZWNpcGUtZmlsdGVyc1xuICAgICAgW2ZpbHRlcnNdPVwiZmlsdGVyc1wiXG4gICAgICBbaXNGaWx0ZXJDb2xsYXBzZWRdPVwiaXNGaWx0ZXJDb2xsYXBzZWRcIlxuICAgICAgW2ZpbHRlclRvUmVtb3ZlXT1cImZpbHRlclRvUmVtb3ZlXCJcbiAgICAgIFtwb3NpdGlvbl09XCJmaWx0ZXJzUG9zaXRpb25cIlxuICAgICAgKGZpbHRlckNoYW5nZWQpPVwidXBkYXRlRmlsdGVycygkZXZlbnQpXCJcbiAgICAgIChmaWx0ZXJDb2xsYXBzZWQpPVwib25GaWx0ZXJDb2xsYXBzZWQoKVwiXG4gICAgICAocHJlZmVyZW5jZXNDaGFuZ2VkKT1cInJlbG9hZFBhY2thZ2VzKClcIlxuICAgID5cbiAgICA8L25nLW1pYW0tcmVjaXBlLWZpbHRlcnM+XG4gICAgPCEtLSBDYXRhbG9nIGhvbWUgcGFnZSBjb250ZW50IC0tPlxuICAgIDxuZy10ZW1wbGF0ZSAjY2F0ZWdvcmllc0NvbXBvbmVudHM+XG4gICAgICA8ZGl2ICpuZ0lmPVwiY2F0ZWdvcmllcy5sZW5ndGggPiAwXCIgY2xhc3M9XCJtaWFtLXJlY2lwZS1jYXRhbG9nX19jYXRlZ29yaWVzXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNhdGVnb3J5IG9mIGNhdGVnb3JpZXMgbGV0IGkgPSBpbmRleFwiID5cbiAgICAgICAgPG5nLW1pYW0tY2F0YWxvZy1jYXRlZ29yeSBcbiAgICAgICAgICBbdGl0bGVdPVwiY2F0ZWdvcnkudGl0bGVcIlxuICAgICAgICAgIFtzdWJ0aXRsZV09XCJjYXRlZ29yeS5zdWJ0aXRsZVwiXG4gICAgICAgICAgW2ZpbHRlcnNdPVwiY2F0ZWdvcnkuZmlsdGVyc1wiIFxuICAgICAgICAgIChkaXNwbGF5TGlzdCk9XCJjYXRlZ29yeVRpdGxlQ2xpY2tlZCgkZXZlbnQpXCI+XG4gICAgICAgIDwvbmctbWlhbS1jYXRhbG9nLWNhdGVnb3J5PlxuICAgICAgICA8ZGl2ICBjbGFzcz1cIm1pYW0tcmVjaXBlLWNhdGFsb2dfX2V4cGxhaW5lX2Jhbm5lclwiICpuZ0lmPVwiaSA9PT0gMFwiPlxuICAgICAgICAgIDxuZy1taWFtLWV4cGxhaW5lLWJhbm5lcj48L25nLW1pYW0tZXhwbGFpbmUtYmFubmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG5cbjxuZy10ZW1wbGF0ZSAjY3JlYXRpb25QYWdlPlxuICA8bmctbWlhbS1yZWNpcGUtc3RlcHBlciBbcmVjaXBlXT1cInJlY2lwZVRvVXBkYXRlXCIgKHJlY2lwZUNoYW5nZSk9XCJsZWF2ZUNyZWF0ZVBhZ2UoKVwiIChjYW5jZWxlZCk9XCJsZWF2ZUNyZWF0ZVBhZ2UoKVwiPjwvbmctbWlhbS1yZWNpcGUtc3RlcHBlcj5cbjwvbmctdGVtcGxhdGU+Il19
|