ng-miam 9.3.13 → 9.3.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,7 +15,42 @@ import * as i1 from "../../_services";
15
15
  import * as i2 from "@angular/forms";
16
16
  import * as i3 from "../../_services/planner-ssr.service";
17
17
  import * as i4 from "@angular/platform-browser";
18
+ import * as i5 from "@angular/common";
18
19
  const _c0 = ["miamMealsPlannerTopAnchor"];
20
+ function MealsPlannerComponent_ng_template_0_Template(rf, ctx) { if (rf & 1) {
21
+ i0.ɵɵelementStart(0, "div", 4);
22
+ i0.ɵɵelementStart(1, "span", 5);
23
+ i0.ɵɵtext(2, "Chargement");
24
+ i0.ɵɵelementEnd();
25
+ i0.ɵɵnamespaceSVG();
26
+ i0.ɵɵelementStart(3, "svg", 6);
27
+ i0.ɵɵelement(4, "path", 7);
28
+ i0.ɵɵelement(5, "path", 8);
29
+ i0.ɵɵelement(6, "path", 9);
30
+ i0.ɵɵelement(7, "path", 10);
31
+ i0.ɵɵelement(8, "path", 11);
32
+ i0.ɵɵelement(9, "path", 12);
33
+ i0.ɵɵelement(10, "path", 13);
34
+ i0.ɵɵelement(11, "path", 14);
35
+ i0.ɵɵelementEnd();
36
+ i0.ɵɵelementEnd();
37
+ } }
38
+ function MealsPlannerComponent_div_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
39
+ i0.ɵɵelementContainer(0);
40
+ } }
41
+ function MealsPlannerComponent_div_3_Template(rf, ctx) { if (rf & 1) {
42
+ i0.ɵɵelementStart(0, "div", 15);
43
+ i0.ɵɵtemplate(1, MealsPlannerComponent_div_3_ng_container_1_Template, 1, 0, "ng-container", 16);
44
+ i0.ɵɵelementStart(2, "span", 17);
45
+ i0.ɵɵi18n(3, 18);
46
+ i0.ɵɵelementEnd();
47
+ i0.ɵɵelementEnd();
48
+ } if (rf & 2) {
49
+ i0.ɵɵnextContext();
50
+ const _r0 = i0.ɵɵreference(1);
51
+ i0.ɵɵadvance(1);
52
+ i0.ɵɵproperty("ngTemplateOutlet", _r0);
53
+ } }
19
54
  const recipeIncludes = ['recipe-provider', 'sponsors', 'tags'];
20
55
  const recipeSparseFields = {
21
56
  recipes: ['title', 'number-of-guests', 'media-url', 'video-id', 'filigrane-logo-url', 'difficulty', 'preparation-time', 'cooking-time',
@@ -49,6 +84,7 @@ export class MealsPlannerComponent extends EventTracerComponent {
49
84
  this.timeOnStart = Date.now();
50
85
  this.featureIsAuthorized = false;
51
86
  this.previousBasketEntries = [];
87
+ this.plannerDashboardLoading = false;
52
88
  // Progress bar
53
89
  this.usedBudget = 0;
54
90
  this.maxBudget = 0;
@@ -83,9 +119,18 @@ export class MealsPlannerComponent extends EventTracerComponent {
83
119
  this.initForm();
84
120
  this.pageview();
85
121
  this.subscriptions.push(this.initRecipesPricing());
86
- this.subscriptions.push(this.loadPlannerDashboardHTML().subscribe(plannerDashboardHTML => {
87
- this.plannerDashboardHTML = plannerDashboardHTML;
88
- this.cdr.detectChanges();
122
+ this.plannerDashboardLoading = true;
123
+ this.cdr.detectChanges();
124
+ this.subscriptions.push(this.loadPlannerDashboardHTML().subscribe({
125
+ next: plannerDashboardHTML => {
126
+ this.plannerDashboardHTML = plannerDashboardHTML;
127
+ this.plannerDashboardLoading = false;
128
+ this.cdr.detectChanges();
129
+ },
130
+ error: () => {
131
+ this.plannerDashboardLoading = false;
132
+ this.cdr.detectChanges();
133
+ }
89
134
  }));
90
135
  }));
91
136
  }
@@ -301,11 +346,24 @@ MealsPlannerComponent.ɵcmp = i0.ɵɵdefineComponent({ type: MealsPlannerCompone
301
346
  } if (rf & 2) {
302
347
  let _t;
303
348
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.topAnchor = _t.first);
304
- } }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 1, vars: 1, consts: [[1, "mealz-planner-dashboard-container", 3, "innerHTML"]], template: function MealsPlannerComponent_Template(rf, ctx) { if (rf & 1) {
305
- i0.ɵɵelement(0, "div", 0);
349
+ } }, features: [i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 5, vars: 2, consts: function () { let i18n_1; if (typeof ngI18nClosureMode !== "undefined" && ngI18nClosureMode) {
350
+ const MSG_EXTERNAL_7273104079436475690$$LIB__WEB_COMPONENTS_MEALS_PLANNER_MEALS_PLANNER_COMPONENT_TS__2 = goog.getMsg(" Nous pr\u00E9parons vos recettes... ");
351
+ i18n_1 = MSG_EXTERNAL_7273104079436475690$$LIB__WEB_COMPONENTS_MEALS_PLANNER_MEALS_PLANNER_COMPONENT_TS__2;
352
+ }
353
+ else {
354
+ i18n_1 = $localize `:␟5ad4fd8232f99c98138cc45a650f52787ffd9271␟7273104079436475690: Nous préparons vos recettes... `;
355
+ } return [["plannerDashboardLoader", ""], [1, "mealz-planner-dashboard__wrapper"], ["class", "mealz-planner-dashboard__loader-container", 4, "ngIf"], [1, "mealz-planner-dashboard__container", 3, "innerHTML"], ["role", "status", "aria-live", "polite", 1, "mealz-planner-dashboard__loader"], [1, "mealz-planner-dashboard__loader__label"], ["viewBox", "0 0 80 80", "aria-hidden", "true", "focusable", "false", 1, "mealz-planner-dashboard__loader__icon"], ["d", "M43.75 20V10C43.75 9.00544 43.3549 8.05161 42.6516 7.34835C41.9484 6.64509 40.9946 6.25 40 6.25C39.0054 6.25 38.0516 6.64509 37.3483 7.34835C36.6451 8.05161 36.25 9.00544 36.25 10V20C36.25 20.9946 36.6451 21.9484 37.3483 22.6516C38.0516 23.3549 39.0054 23.75 40 23.75C40.9946 23.75 41.9484 23.3549 42.6516 22.6516C43.3549 21.9484 43.75 20.9946 43.75 20Z", 1, "mealz-planner-dashboard__loader__segment", 2, "animation-delay", "0s"], ["d", "M55.5765 29.3234C55.1213 29.5122 54.6333 29.6094 54.1405 29.6094C53.3986 29.6093 52.6734 29.3893 52.0567 28.977C51.4399 28.5648 50.9593 27.9789 50.6756 27.2934C50.392 26.6079 50.318 25.8537 50.463 25.1262C50.608 24.3987 50.9656 23.7305 51.4905 23.2063L58.5529 16.125C59.2574 15.4205 60.2129 15.0247 61.2092 15.0247C62.2055 15.0247 63.161 15.4205 63.8654 16.125C64.5699 16.8295 64.9657 17.785 64.9657 18.7813C64.9657 19.7775 64.5699 20.733 63.8654 21.4375L56.7936 28.5094C56.4453 28.8581 56.0317 29.1347 55.5765 29.3234Z", 1, "mealz-planner-dashboard__loader__segment", 2, "animation-delay", "0.15s"], ["d", "M60 36.25H70C70.9946 36.25 71.9484 36.6451 72.6516 37.3484C73.3549 38.0516 73.75 39.0054 73.75 40C73.75 40.9946 73.3549 41.9484 72.6516 42.6516C71.9484 43.3549 70.9946 43.75 70 43.75H60C59.0054 43.75 58.0516 43.3549 57.3484 42.6516C56.6451 41.9484 56.25 40.9946 56.25 40C56.25 39.0054 56.6451 38.0516 57.3484 37.3484C58.0516 36.6451 59.0054 36.25 60 36.25Z", 1, "mealz-planner-dashboard__loader__segment", 2, "animation-delay", "0.3s"], ["d", "M55.5749 50.6763C56.0307 50.8651 56.4448 51.1418 56.7936 51.4906L63.8655 58.5625C64.57 59.267 64.9657 60.2225 64.9657 61.2188C64.9657 62.215 64.57 63.1705 63.8655 63.875C63.161 64.5795 62.2055 64.9753 61.2092 64.9753C60.213 64.9753 59.2575 64.5795 58.553 63.875L51.4811 56.8031C51.1323 56.4543 50.8556 56.0402 50.6668 55.5844C50.478 55.1287 50.3809 54.6402 50.3809 54.1469C50.3809 53.6536 50.478 53.1651 50.6668 52.7093C50.8556 52.2536 51.1323 51.8395 51.4811 51.4906C51.8299 51.1418 52.2441 50.8651 52.6998 50.6763C53.1556 50.4875 53.6441 50.3904 54.1374 50.3904C54.6307 50.3904 55.1192 50.4875 55.5749 50.6763Z", 1, "mealz-planner-dashboard__loader__segment", 2, "animation-delay", "0.45s"], ["d", "M37.3483 57.3484C38.0516 56.6451 39.0054 56.25 40 56.25C40.9946 56.25 41.9484 56.6451 42.6516 57.3484C43.3549 58.0516 43.75 59.0054 43.75 60V70C43.75 70.9946 43.3549 71.9484 42.6516 72.6516C41.9484 73.3549 40.9946 73.75 40 73.75C39.0054 73.75 38.0516 73.3549 37.3483 72.6516C36.6451 71.9484 36.25 70.9946 36.25 70V60C36.25 59.0054 36.6451 58.0516 37.3483 57.3484Z", 1, "mealz-planner-dashboard__loader__segment", 2, "animation-delay", "0.6s"], ["d", "M16.1344 58.5625L23.2063 51.4906C23.9108 50.7862 24.8663 50.3904 25.8626 50.3904C26.8588 50.3904 27.8143 50.7862 28.5188 51.4906C29.2233 52.1951 29.6191 53.1506 29.6191 54.1469C29.6191 55.1432 29.2233 56.0987 28.5188 56.8031L21.4469 63.875C20.7425 64.5795 19.787 64.9753 18.7907 64.9753C17.7944 64.9753 16.8389 64.5795 16.1344 63.875C15.43 63.1705 15.0342 62.215 15.0342 61.2188C15.0342 60.2225 15.43 59.267 16.1344 58.5625Z", 1, "mealz-planner-dashboard__loader__segment", 2, "animation-delay", "0.75s"], ["d", "M23.75 40C23.75 39.0054 23.3549 38.0516 22.6516 37.3484C21.9484 36.6451 20.9946 36.25 20 36.25H10C9.00544 36.25 8.05161 36.6451 7.34835 37.3484C6.64509 38.0516 6.25 39.0054 6.25 40C6.25 40.9946 6.64509 41.9484 7.34835 42.6516C8.05161 43.3549 9.00544 43.75 10 43.75H20C20.9946 43.75 21.9484 43.3549 22.6516 42.6516C23.3549 41.9484 23.75 40.9946 23.75 40Z", 1, "mealz-planner-dashboard__loader__segment", 2, "animation-delay", "0.9s"], ["d", "M18.7809 15.0341C19.7772 15.0341 20.7327 15.4299 21.4372 16.1344L28.5184 23.1969C29.2229 23.9014 29.6187 24.8568 29.6187 25.8531C29.6187 26.8494 29.2229 27.8049 28.5184 28.5094C27.8139 29.2139 26.8585 29.6096 25.8622 29.6096C24.8659 29.6096 23.9104 29.2139 23.2059 28.5094L16.1247 21.4469C15.4202 20.7424 15.0244 19.7869 15.0244 18.7906C15.0244 17.7943 15.4202 16.8389 16.1247 16.1344C16.8291 15.4299 17.7846 15.0341 18.7809 15.0341Z", 1, "mealz-planner-dashboard__loader__segment", 2, "animation-delay", "1.05s"], [1, "mealz-planner-dashboard__loader-container"], [4, "ngTemplateOutlet"], [1, "miam-ds-text", "size-xs", "weight-l"], i18n_1]; }, template: function MealsPlannerComponent_Template(rf, ctx) { if (rf & 1) {
356
+ i0.ɵɵtemplate(0, MealsPlannerComponent_ng_template_0_Template, 12, 0, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
357
+ i0.ɵɵelementStart(2, "div", 1);
358
+ i0.ɵɵtemplate(3, MealsPlannerComponent_div_3_Template, 4, 1, "div", 2);
359
+ i0.ɵɵelement(4, "div", 3);
360
+ i0.ɵɵelementEnd();
306
361
  } if (rf & 2) {
362
+ i0.ɵɵadvance(3);
363
+ i0.ɵɵproperty("ngIf", ctx.plannerDashboardLoading);
364
+ i0.ɵɵadvance(1);
307
365
  i0.ɵɵproperty("innerHTML", ctx.plannerDashboardHTML, i0.ɵɵsanitizeHtml);
308
- } }, styles: [".miam-meals-planner{display:flex;flex-direction:column;width:100%;height:100%;border-bottom:1px solid #d9dde1}.miam-meals-planner .miam-meals-planner__header .miam-meals-planner__header__breadcrumb{display:flex;align-items:center;padding:24px;background:#fff;border-bottom:1px solid #d9dde1}.miam-meals-planner .miam-meals-planner__header .miam-meals-planner__header__breadcrumb.hidden{display:none}.miam-meals-planner .miam-meals-planner__header .miam-meals-planner__header__breadcrumb a{margin:0 4px;font-weight:500;font-size:14px;line-height:150%}.miam-meals-planner .miam-meals-planner__header .miam-meals-planner__header__breadcrumb a.inactive{color:#0f191f}.miam-meals-planner .miam-meals-planner__header .miam-meals-planner__header__breadcrumb a.active{font-weight:900;color:var(--m-color-primary)}.miam-meals-planner .miam-meals-planner__header .miam-meals-planner__header__breadcrumb .chevron-right{transform:rotate(-90deg)}.miam-meals-planner .miam-meals-planner__header .miam-meals-planner__header__breadcrumb .chevron-right .icon-container svg path:last-child{fill:#0f191f}.miam-meals-planner .miam-meals-planner__content{display:flex;height:100%;width:100%}.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-form{width:100%}.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-form.reduced{max-width:300px;border-right:1px solid #d9dde1}.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-basket-preview,.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-result{width:100%}.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-basket-preview.reduced{width:0}.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-catalog{width:100%}.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-basket-confirmation{width:100%;padding:0 80px}@media (max-width:1023px){.miam-meals-planner .miam-meals-planner__header{display:none}.miam-meals-planner .miam-meals-planner__content{flex-direction:column}.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-form{width:100%}.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-form.reduced{max-width:unset;border-right:unset}.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-basket-confirmation{padding:0 15px}}.miam-meals-planner .miam-meals-planner__catalog{padding:16px}.miam-meals-planner ng-miam-recipe-card .miam-recipe-card{height:var(--m-catalog-card-height);width:var(--m-catalog-card-width)}"], encapsulation: 2, changeDetection: 0 });
366
+ } }, directives: [i5.NgIf, i5.NgTemplateOutlet], styles: [".mealz-planner-dashboard__wrapper .mealz-planner-dashboard__loader-container{overflow:hidden;background-color:#fff;animation:planner-loader-expand .25s ease-in-out forwards;width:100%;display:flex;justify-content:center;align-items:center;flex-direction:column;gap:8px}.mealz-planner-dashboard__wrapper .mealz-planner-dashboard__loader-container .mealz-planner-dashboard__loader{width:40px;height:40px;background-position-x:20px;background-size:20px 20px}.mealz-planner-dashboard__wrapper .mealz-planner-dashboard__container{position:relative}@keyframes planner-loader-expand{0%{height:0}to{height:90dvh}}.mealz-planner-dashboard__loader{display:flex;align-items:center;justify-content:center;color:var(--m-color-primary,#24748f)}.mealz-planner-dashboard__loader .mealz-planner-dashboard__loader__icon{width:80px;height:80px}.mealz-planner-dashboard__loader .mealz-planner-dashboard__loader__segment{fill:#e4edf1;animation:loader-pulse 1.2s linear infinite}.mealz-planner-dashboard__loader .mealz-planner-dashboard__loader__label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;white-space:nowrap;border:0;clip:rect(0,0,0,0)}@keyframes loader-pulse{0%,to{fill:#e4edf1}15%,85%{fill:currentColor}}@media (prefers-reduced-motion:reduce){.loader .loader__segment{animation:none;fill:currentColor;opacity:.6}}.miam-meals-planner{display:flex;flex-direction:column;width:100%;height:100%;border-bottom:1px solid #d9dde1}.miam-meals-planner .miam-meals-planner__header .miam-meals-planner__header__breadcrumb{display:flex;align-items:center;padding:24px;background:#fff;border-bottom:1px solid #d9dde1}.miam-meals-planner .miam-meals-planner__header .miam-meals-planner__header__breadcrumb.hidden{display:none}.miam-meals-planner .miam-meals-planner__header .miam-meals-planner__header__breadcrumb a{margin:0 4px;font-weight:500;font-size:14px;line-height:150%}.miam-meals-planner .miam-meals-planner__header .miam-meals-planner__header__breadcrumb a.inactive{color:#0f191f}.miam-meals-planner .miam-meals-planner__header .miam-meals-planner__header__breadcrumb a.active{font-weight:900;color:var(--m-color-primary)}.miam-meals-planner .miam-meals-planner__header .miam-meals-planner__header__breadcrumb .chevron-right{transform:rotate(-90deg)}.miam-meals-planner .miam-meals-planner__header .miam-meals-planner__header__breadcrumb .chevron-right .icon-container svg path:last-child{fill:#0f191f}.miam-meals-planner .miam-meals-planner__content{display:flex;height:100%;width:100%}.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-form{width:100%}.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-form.reduced{max-width:300px;border-right:1px solid #d9dde1}.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-basket-preview,.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-result{width:100%}.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-basket-preview.reduced{width:0}.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-catalog{width:100%}.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-basket-confirmation{width:100%;padding:0 80px}@media (max-width:1023px){.miam-meals-planner .miam-meals-planner__header{display:none}.miam-meals-planner .miam-meals-planner__content{flex-direction:column}.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-form{width:100%}.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-form.reduced{max-width:unset;border-right:unset}.miam-meals-planner .miam-meals-planner__content ng-miam-meals-planner-basket-confirmation{padding:0 15px}}.miam-meals-planner .miam-meals-planner__catalog{padding:16px}.miam-meals-planner ng-miam-recipe-card .miam-recipe-card{height:var(--m-catalog-card-height);width:var(--m-catalog-card-width)}"], encapsulation: 2, changeDetection: 0 });
309
367
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MealsPlannerComponent, [{
310
368
  type: Component,
311
369
  args: [{
@@ -319,4 +377,4 @@ MealsPlannerComponent.ɵcmp = i0.ɵɵdefineComponent({ type: MealsPlannerCompone
319
377
  type: ViewChild,
320
378
  args: ['miamMealsPlannerTopAnchor']
321
379
  }] }); })();
322
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhbHMtcGxhbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1taWFtL3NyYy9saWIvX3dlYi1jb21wb25lbnRzL21lYWxzLXBsYW5uZXIvbWVhbHMtcGxhbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1taWFtL3NyYy9saWIvX3dlYi1jb21wb25lbnRzL21lYWxzLXBsYW5uZXIvbWVhbHMtcGxhbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUlWLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakYsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRzFGLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLDBCQUEwQixFQUMxQixjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUs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N0MsU0FBUyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7Z0JBQzdDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDs0WkFHeUMsU0FBUztrQkFBaEQsU0FBUzttQkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2tpcFdoaWxlLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEV2ZW50VHJhY2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vX2NvbXBvbmVudHMvYWJzdHJhY3RzL2V2ZW50LXRyYWNlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFza2V0RW50cnksIEJhc2tldFByZXZpZXdMaW5lLCBQb2ludE9mU2FsZSwgUmVjaXBlIH0gZnJvbSAnLi4vLi4vX21vZGVscyc7XG5pbXBvcnQgeyBSZWNpcGVQcmljaW5nIH0gZnJvbSAnLi4vLi4vX21vZGVscy9yZWNpcGUtcHJpY2luZyc7XG5pbXBvcnQge1xuICBBbmFseXRpY3NTZXJ2aWNlLFxuICBCYXNrZXRzU2VydmljZSxcbiAgQmFza2V0c1N5bmNocm9uaXplclNlcnZpY2UsXG4gIENvbnRleHRTZXJ2aWNlLFxuICBQb2ludE9mU2FsZXNTZXJ2aWNlLFxuICBSZWNpcGVEZXRhaWxzU2VydmljZSxcbiAgUmVjaXBlc1NlcnZpY2UsXG4gIFN1cHBsaWVyc1NlcnZpY2Vcbn0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi9fdHlwZXMvaWNvbi5lbnVtJztcbmltcG9ydCB7IEV2ZW50VHJhY2UgfSBmcm9tICcuLi8uLi9fdHlwZXMvZXZlbnQtdHJhY2UnO1xuaW1wb3J0IHsgQWRkUmVjaXBlRnJvbVBsYW5uZXJBY3Rpb24gfSBmcm9tICcuLi8uLi9fbW9kZWxzL2Jhc2tldC1hY3Rpb25zL2FkZC1yZWNpcGUtZnJvbS1wbGFubmVyLWFjdGlvbic7XG5pbXBvcnQgeyBkZWVwQ2xvbmVXaXRoQ2xhc3MgfSBmcm9tICcuLi8uLi9fdXRpbHMvbWV0aG9kcy9kZWVwQ2xvbmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgUGxhbm5lclNTUlNlcnZpY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMvcGxhbm5lci1zc3Iuc2VydmljZSc7XG5cbmNvbnN0IHJlY2lwZUluY2x1ZGVzID0gWydyZWNpcGUtcHJvdmlkZXInLCAnc3BvbnNvcnMnLCAndGFncyddO1xuY29uc3QgcmVjaXBlU3BhcnNlRmllbGRzID0ge1xuICByZWNpcGVzOiBbJ3RpdGxlJywgJ251bWJlci1vZi1ndWVzdHMnLCAnbWVkaWEtdXJsJywgJ3ZpZGVvLWlkJywgJ2ZpbGlncmFuZS1sb2dvLXVybCcsICdkaWZmaWN1bHR5JywgJ3ByZXBhcmF0aW9uLXRpbWUnLCAnY29va2luZy10aW1lJyxcbiAgICAncmVzdGluZy10aW1lJywgLi4ucmVjaXBlSW5jbHVkZXNdLFxuICBzcG9uc29yczogWydsb2dvLXVybCddLFxuICB0YWdzOiBbJ3RhZy10eXBlLWlkJ10sXG4gICdyZWNpcGUtcHJvdmlkZXInOiBbJ25hbWUnXVxufTtcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLW1lYWxzLXBsYW5uZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVhbHMtcGxhbm5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21lYWxzLXBsYW5uZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5cbmV4cG9ydCBjbGFzcyBNZWFsc1BsYW5uZXJDb21wb25lbnQgZXh0ZW5kcyBFdmVudFRyYWNlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0LCBPbkNoYW5nZXMge1xuICBAVmlld0NoaWxkKCdtaWFtTWVhbHNQbGFubmVyVG9wQW5jaG9yJykgdG9wQW5jaG9yOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBidWRnZXR0ZWRSZWNpcGVzOiBSZWNpcGVbXSA9IFtdO1xuICBidWRnZXR0ZWRSZWNpcGVzUHJpY2VzOiB7XG4gICAgW3JlY2lwZUlkOiBzdHJpbmddOiBudW1iZXI7XG4gIH0gPSB7fTtcbiAgYWRkZWRSZWNpcGVzSWRzOiBzdHJpbmdbXSA9IFtdO1xuICBpY29uID0gSWNvbjtcbiAgZm9ybTogRm9ybUdyb3VwO1xuICBjYXRhbG9nTW9kZSA9IGZhbHNlO1xuICByZWNpcGVUb0NoYW5nZUluZGV4OiBudW1iZXI7XG4gIGJhc2tldENvbmZpcm1lZCA9IGZhbHNlO1xuICBsb2FkaW5nID0gZmFsc2U7XG4gIGluZ3JlZGllbnRzUmVncm91cGVkID0gZmFsc2U7XG4gIHRpbWVPblN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgZmVhdHVyZUlzQXV0aG9yaXplZCA9IGZhbHNlO1xuICBwcmV2aW91c0Jhc2tldEVudHJpZXM6IEJhc2tldEVudHJ5W10gPSBbXTtcbiAgcGxhbm5lckRhc2hib2FyZEhUTUw6IFNhZmVIdG1sO1xuXG4gIC8vIFByb2dyZXNzIGJhclxuICB1c2VkQnVkZ2V0ID0gMDtcbiAgbWF4QnVkZ2V0ID0gMDtcblxuICBwcml2YXRlIHBvczogUG9pbnRPZlNhbGU7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHVibGljIHJlY2lwZXNTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwcml2YXRlIGJhc2tldHNTZXJ2aWNlOiBCYXNrZXRzU2VydmljZSxcbiAgICBwcml2YXRlIHBvc1NlcnZpY2U6IFBvaW50T2ZTYWxlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVEZXRhaWxzU2VydmljZTogUmVjaXBlRGV0YWlsc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdXBwbGllcnNTZXJ2aWNlOiBTdXBwbGllcnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFza2V0U3luY2hyb1NlcnZpY2U6IEJhc2tldHNTeW5jaHJvbml6ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGxhbm5lclNTUlNlcnZpY2U6IFBsYW5uZXJTU1JTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgKSB7XG4gICAgc3VwZXIoYW5hbHl0aWNzU2VydmljZSk7XG4gIH1cblxuICBnZXQgcmVtYWluaW5nQnVkZ2V0KCk6IG51bWJlciB7XG4gICAgY29uc3QgcmVjaXBlVG9DaGFuZ2VJZCA9IHRoaXMuYnVkZ2V0dGVkUmVjaXBlc1t0aGlzLnJlY2lwZVRvQ2hhbmdlSW5kZXhdPy5pZDtcbiAgICBsZXQgcmVtYWluaW5nQnVkZ2V0ID0gdGhpcy5tYXhCdWRnZXQgLSB0aGlzLnVzZWRCdWRnZXQ7XG4gICAgaWYgKHJlY2lwZVRvQ2hhbmdlSWQpIHtcbiAgICAgIHJlbWFpbmluZ0J1ZGdldCArPSB0aGlzLmJ1ZGdldHRlZFJlY2lwZXNQcmljZXNbcmVjaXBlVG9DaGFuZ2VJZF07XG4gICAgfVxuICAgIGlmIChyZW1haW5pbmdCdWRnZXQgPiAwKSB7XG4gICAgICByZXR1cm4gcmVtYWluaW5nQnVkZ2V0O1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGdldCByZW1haW5pbmdSZWNpcGVzTnVtYmVyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYnVkZ2V0dGVkUmVjaXBlcy5yZWR1Y2UoKGFjYywgcmVjaXBlLCBpKSA9PlxuICAgICAgICAvLyBEb24ndCBjb3VudCBudWxsIHJlY2lwZXMgYW5kIGN1cnJlbnRseSByZXBsYWNpbmcgcmVjaXBlXG4gICAgICAgIHJlY2lwZSAmJiBpICE9PSB0aGlzLnJlY2lwZVRvQ2hhbmdlSW5kZXggPyBhY2MgOiBhY2MgKyAxXG4gICAgICAsIDApO1xuICB9XG5cbiAgZ2V0IGV4Y2x1ZGVkUmVjaXBlc0lkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuYnVkZ2V0dGVkUmVjaXBlcy5maWx0ZXIocmVjaXBlID0+IHJlY2lwZSkubWFwKHJlY2lwZSA9PiByZWNpcGUuaWQpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmlzTWVhbHpQYWdlID0gdHJ1ZTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UuZW5hYmxlTWVhbHNQbGFubmVyJC5waXBlKFxuICAgICAgICBza2lwV2hpbGUoZW5hYmxlZCA9PiAhZW5hYmxlZCksXG4gICAgICAgIHRha2UoMSlcbiAgICAgICkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuZmVhdHVyZUlzQXV0aG9yaXplZCA9IHRydWU7XG4gICAgICAgIHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2Uub25seVNob3dQcmVwYXJhdGlvbiA9IHRydWU7XG4gICAgICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICAgICAgdGhpcy5wYWdldmlldygpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmluaXRSZWNpcGVzUHJpY2luZygpKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5sb2FkUGxhbm5lckRhc2hib2FyZEhUTUwoKS5zdWJzY3JpYmUocGxhbm5lckRhc2hib2FyZEhUTUwgPT4ge1xuICAgICAgICAgIHRoaXMucGxhbm5lckRhc2hib2FyZEhUTUwgPSBwbGFubmVyRGFzaGJvYXJkSFRNTDtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKCk6IHZvaWQge1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGluaXRGb3JtKCk6IHZvaWQge1xuICAgIGNvbnN0IHN0b3JlZEZvcm06IHsgYnVkZ2V0OiBudW1iZXI7IGd1ZXN0c0NvdW50OiBudW1iZXI7IHJlY2lwZXNDb3VudDogbnVtYmVyIH0gPVxuICAgICAgSlNPTi5wYXJzZShzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKCdtaWFtLW1lYWxzLXBsYW5uZXItZm9ybScpKSBhcyB7IGJ1ZGdldDogbnVtYmVyOyBndWVzdHNDb3VudDogbnVtYmVyOyByZWNpcGVzQ291bnQ6IG51bWJlciB9O1xuICAgIHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oJ21pYW0tbWVhbHMtcGxhbm5lci1mb3JtJyk7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBidWRnZXQ6IG5ldyBGb3JtQ29udHJvbChzdG9yZWRGb3JtPy5idWRnZXQgfHwgdW5kZWZpbmVkLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW4oMSldKSxcbiAgICAgIGd1ZXN0c0NvdW50OiBuZXcgRm9ybUNvbnRyb2woc3RvcmVkRm9ybT8uZ3Vlc3RzQ291bnQgfHwgMCwgVmFsaWRhdG9ycy5taW4oMSkpLFxuICAgICAgcmVjaXBlc0NvdW50OiBuZXcgRm9ybUNvbnRyb2woc3RvcmVkRm9ybT8ucmVjaXBlc0NvdW50IHx8ICh0aGlzLmNvbnRleHRTZXJ2aWNlLmFudGlJbmZsYXRpb24gPyAwIDogNCksIFZhbGlkYXRvcnMubWluKDEpKVxuICAgIH0pO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGZldGNoUmVjaXBlcyhpbnB1dHM6IHsgYnVkZ2V0OiBudW1iZXI7IGd1ZXN0c0NvdW50OiBudW1iZXI7IHJlY2lwZXNDb3VudDogbnVtYmVyIH0pOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMucmVjaXBlc1NlcnZpY2UucGxhbihcbiAgICAgICAgaW5wdXRzLmJ1ZGdldCwgaW5wdXRzLmd1ZXN0c0NvdW50LCBpbnB1dHMucmVjaXBlc0NvdW50LCByZWNpcGVJbmNsdWRlcywgcmVjaXBlU3BhcnNlRmllbGRzLCBmYWxzZVxuICAgICAgKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAocmVjaXBlcyA9PiB7XG4gICAgICAgICAgdGhpcy5idWRnZXR0ZWRSZWNpcGVzID0gW107IC8vIFJlZnJlc2ggdGhlIHJlc3VsdCB2aWV3XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIHRoaXMuYnVkZ2V0dGVkUmVjaXBlcyA9IHJlY2lwZXMubWFwKHIgPT4ge1xuICAgICAgICAgICAgci5tb2RpZmllZEd1ZXN0cyA9IGlucHV0cy5ndWVzdHNDb3VudDtcbiAgICAgICAgICAgIHJldHVybiByO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICByZXR1cm4gdGhpcy5mZXRjaFJlY2lwZXNQcmljaW5nKCk7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZShwcmljaW5ncyA9PiB7XG4gICAgICAgIHRoaXMudXNlZEJ1ZGdldCA9IHByaWNpbmdzLnJlZHVjZSgoYWNjLCBwcmljaW5nKSA9PiBhY2MgKyBwcmljaW5nLnByaWNlLCAwKTtcbiAgICAgICAgdGhpcy51c2VkQnVkZ2V0ID0gTWF0aC5yb3VuZCh0aGlzLnVzZWRCdWRnZXQgKiAxMDApIC8gMTAwO1xuICAgICAgICB0aGlzLm1heEJ1ZGdldCA9ICh0aGlzLmZvcm0udmFsdWUgYXMgeyBidWRnZXQ6IG51bWJlciB9KS5idWRnZXQ7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmlzTWVhbHpQYWdlID0gZmFsc2U7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2gocyA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgIHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2Uub25seVNob3dQcmVwYXJhdGlvbiA9IGZhbHNlO1xuICB9XG5cbiAgY3VycmVudFBhdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ21lYWxzLXBsYW5uZXInO1xuICB9XG5cbiAgYWRkUmVjaXBlcygpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXJ0TG9hZGluZygpO1xuICAgIGNvbnN0IHJlY2lwZXNUb0FkZCA9IHRoaXMuZ2V0VmFsaWRSZWNpcGVzKCk7XG5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2Uud2FpdEZvckJhc2tldEVudHJpZXMucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgbWFwKChlbnRyaWVzOiBCYXNrZXRFbnRyeVtdKSA9PiB7XG4gICAgICAgICAgdGhpcy5wcmV2aW91c0Jhc2tldEVudHJpZXMgPSBkZWVwQ2xvbmVXaXRoQ2xhc3MoZW50cmllcyk7XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuYWRkUmVjaXBlc1RvQmFza2V0KHJlY2lwZXNUb0FkZCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuYmFza2V0c1NlcnZpY2UucmVjaXBlc1dpbGxCZUFkZGVkKCkucGlwZShcbiAgICAgICAgICAgIHNraXBXaGlsZSh3aWxsQmVBZGRlZCA9PiB3aWxsQmVBZGRlZCksXG4gICAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMuaGFuZGxlQmFza2V0UHJldmlldyhyZWNpcGVzVG9BZGQpKSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB0aGlzLnVwZGF0ZVJldGFpbGVyQmFza2V0KCkpXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5zdG9wTG9hZGluZygpO1xuICAgICAgfSlcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGFydExvYWRpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wTG9hZGluZygpOiB2b2lkIHtcbiAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFZhbGlkUmVjaXBlcygpOiBSZWNpcGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuYnVkZ2V0dGVkUmVjaXBlcy5maWx0ZXIociA9PiByPy5pZCk7XG4gIH1cblxuICBwcml2YXRlIGFkZFJlY2lwZXNUb0Jhc2tldChyZWNpcGVzVG9BZGQ6IFJlY2lwZVtdKTogdm9pZCB7XG4gICAgY29uc3QgcmVjaXBlSWRzID0gcmVjaXBlc1RvQWRkLm1hcChyID0+IHIuaWQpO1xuICAgIGNvbnN0IG1vZGlmaWVkR3Vlc3RzID0gcmVjaXBlc1RvQWRkWzBdPy5tb2RpZmllZEd1ZXN0cztcbiAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmFkZFJlY2lwZXNUb0Jhc2tldChyZWNpcGVJZHMsIG1vZGlmaWVkR3Vlc3RzLCB0aGlzLmV2ZW50VHJhY2UpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVCYXNrZXRQcmV2aWV3KHJlY2lwZXNUb0FkZDogUmVjaXBlW10pIHtcbiAgICB0aGlzLmFkZGVkUmVjaXBlc0lkcyA9IHJlY2lwZXNUb0FkZC5tYXAociA9PiByLmlkKTtcbiAgICByZXR1cm4gdGhpcy5iYXNrZXRzU2VydmljZS5iYXNrZXRQcmV2aWV3JC5waXBlKFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHRhcChiYXNrZXRQcmV2aWV3TGluZXMgPT4ge1xuICAgICAgICBpZiAoYmFza2V0UHJldmlld0xpbmVzICE9PSBudWxsKSB7XG4gICAgICAgICAgdGhpcy5pbmdyZWRpZW50c1JlZ3JvdXBlZCA9IHRoaXMuaGFzTXV0dWFsaXplZEVudHJ5KGJhc2tldFByZXZpZXdMaW5lcyk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGhhbmRsZUFjdGlvbkVycm9ycyhhY3Rpb246IEFkZFJlY2lwZUZyb21QbGFubmVyQWN0aW9uKSB7XG4gICAgYWN0aW9uLm9uVGltZW91dC5waXBlKHRha2UoMSkpLnN1YnNjcmliZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5iYXNrZXRzU2VydmljZS5yZW1vdmVQcm9kdWN0KGFjdGlvbi5iYXNrZXRFbnRyeSwgbmV3IEV2ZW50VHJhY2UoKSk7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZmlsdGVyTmV3QW5kVXBkYXRlZEVudHJpZXMoZW50cmllczogQmFza2V0RW50cnlbXSkge1xuICAgIGNvbnN0IG5ld0VudHJpZXMgPSBlbnRyaWVzLmZpbHRlcihlbnRyeSA9PlxuICAgICAgIXRoaXMucHJldmlvdXNCYXNrZXRFbnRyaWVzLmZpbmQocHJldkVudHJ5ID0+IHByZXZFbnRyeS5pZCA9PT0gZW50cnkuaWQpKTtcbiAgICBjb25zdCB1cGRhdGVkRW50cmllcyA9IGVudHJpZXMuZmlsdGVyKFxuICAgICAgZW50cnkgPT4gdGhpcy5wcmV2aW91c0Jhc2tldEVudHJpZXMuZmluZChcbiAgICAgICAgcHJldkVudHJ5ID0+IHByZXZFbnRyeS5pZCA9PT0gZW50cnkuaWQgJiYgcHJldkVudHJ5LnF1YW50aXR5ICE9PSBlbnRyeS5xdWFudGl0eVxuICAgICAgKVxuICAgICk7XG4gICAgcmV0dXJuIFsuLi5uZXdFbnRyaWVzLCAuLi51cGRhdGVkRW50cmllc107XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVJldGFpbGVyQmFza2V0KCk6IHZvaWQge1xuICAgIHRoaXMuYmFza2V0c1NlcnZpY2UuYWN0aXZlQmFza2V0RW50cmllcygpLnBpcGUoXG4gICAgICB0YWtlKDEpLFxuICAgICAgc3dpdGNoTWFwKChlbnRyaWVzOiBCYXNrZXRFbnRyeVtdKSA9PiB7XG4gICAgICAgIGNvbnN0IGFkZFJlY2lwZUZyb21QbGFubmVyQWN0aW9ucyA9IHRoaXMuZmlsdGVyTmV3QW5kVXBkYXRlZEVudHJpZXMoZW50cmllcykubWFwKChiYXNrZXRFbnRyeTogQmFza2V0RW50cnkpID0+IHtcbiAgICAgICAgICBjb25zdCBhZGRSZWNpcGVGcm9tUGxhbm5lckFjdGlvbiA9IG5ldyBBZGRSZWNpcGVGcm9tUGxhbm5lckFjdGlvbihcbiAgICAgICAgICAgIGJhc2tldEVudHJ5LFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdGhpcy5zdXBwbGllcnNTZXJ2aWNlXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmhhbmRsZUFjdGlvbkVycm9ycyhhZGRSZWNpcGVGcm9tUGxhbm5lckFjdGlvbik7XG4gICAgICAgICAgcmV0dXJuIGFkZFJlY2lwZUZyb21QbGFubmVyQWN0aW9uO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5iYXNrZXRTeW5jaHJvU2VydmljZS5hZGRUb0FjdGlvbkxpc3QoYWRkUmVjaXBlRnJvbVBsYW5uZXJBY3Rpb25zKTtcblxuICAgICAgICByZXR1cm4gZW50cmllcztcbiAgICAgIH0pXG4gICAgKS5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzTXV0dWFsaXplZEVudHJ5KGJhc2tldFByZXZpZXdMaW5lczogQmFza2V0UHJldmlld0xpbmVbXSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBiYXNrZXRQcmV2aWV3TGluZXMuc29tZShsaW5lID0+IHtcbiAgICAgIGlmIChsaW5lLmlzUmVjaXBlKSB7XG4gICAgICAgIHJldHVybiBsaW5lLmVudHJpZXMuZm91bmQuc29tZSgoZW50cnk6IEJhc2tldEVudHJ5KSA9PiB0aGlzLmlzRW50cnlNdXR1YWxpemVkKGVudHJ5KSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGlzRW50cnlNdXR1YWxpemVkKGVudHJ5OiBCYXNrZXRFbnRyeSk6IGJvb2xlYW4ge1xuICAgIGlmIChlbnRyeS5zdGF0dXMgIT09ICdhY3RpdmUnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBlbnRyeS5yZWNpcGVzSWRzLmxlbmd0aCA+IDE7XG4gIH1cblxuICBwcml2YXRlIGluaXRSZWNpcGVzUHJpY2luZygpOiBTdWJzY3JpcHRpb24ge1xuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLnBvc1NlcnZpY2Uud2FpdEZvclBvcywgdGhpcy5iYXNrZXRzU2VydmljZS5iYXNrZXQkXSkucGlwZShcbiAgICAgIHNraXBXaGlsZShyZXN1bHQgPT4gIXJlc3VsdFsxXSlcbiAgICApLnN1YnNjcmliZShyZXN1bHQgPT4ge1xuICAgICAgdGhpcy5wb3MgPSByZXN1bHRbMF07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZldGNoUmVjaXBlc1ByaWNpbmcoKTogT2JzZXJ2YWJsZTxSZWNpcGVQcmljaW5nW10+IHtcbiAgICBpZiAodGhpcy5idWRnZXR0ZWRSZWNpcGVzLmxlbmd0aCA9PT0gMCB8fCAhdGhpcy5wb3MgfHwgISh0aGlzLmZvcm0udmFsdWUgYXMgeyBndWVzdHNDb3VudDogbnVtYmVyIH0pLmd1ZXN0c0NvdW50KSB7XG4gICAgICByZXR1cm4gb2YoW10gYXMgUmVjaXBlUHJpY2luZ1tdKTtcbiAgICB9XG4gICAgY29uc3QgcmVxdWVzdHM6IE9ic2VydmFibGU8UmVjaXBlUHJpY2luZz5bXSA9IFtdO1xuICAgIHRoaXMuYnVkZ2V0dGVkUmVjaXBlc1ByaWNlcyA9IHt9O1xuICAgIHRoaXMuYnVkZ2V0dGVkUmVjaXBlcy5mb3JFYWNoKHJlY2lwZSA9PiB7XG4gICAgICBpZiAocmVjaXBlKSB7XG4gICAgICAgIHJlcXVlc3RzLnB1c2goXG4gICAgICAgICAgdGhpcy5yZWNpcGVzU2VydmljZS5nZXRQcmljaW5nKFxuICAgICAgICAgICAgcmVjaXBlLmlkLFxuICAgICAgICAgICAgdGhpcy5wb3MuaWQsXG4gICAgICAgICAgICAodGhpcy5mb3JtLnZhbHVlIGFzIHsgZ3Vlc3RzQ291bnQ6IG51bWJlciB9KS5ndWVzdHNDb3VudFxuICAgICAgICAgICkucGlwZShcbiAgICAgICAgICAgIHNraXBXaGlsZShyZXN1bHQgPT4gIXJlc3VsdD8ucHJpY2UpLFxuICAgICAgICAgICAgdGFwKHByaWNpbmcgPT4gdGhpcy5idWRnZXR0ZWRSZWNpcGVzUHJpY2VzW3JlY2lwZS5pZF0gPSBwcmljaW5nLnByaWNlKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVxdWVzdHMubGVuZ3RoID4gMCA/IGZvcmtKb2luKHJlcXVlc3RzKSA6IG9mKFtdIGFzIFJlY2lwZVByaWNpbmdbXSk7XG4gIH1cblxuICB1cGRhdGVCdWRnZXRWYWx1ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5mZXRjaEJ1ZGdldFZhbHVlcygpLnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hCdWRnZXRWYWx1ZXMoKTogT2JzZXJ2YWJsZTxSZWNpcGVQcmljaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5mZXRjaFJlY2lwZXNQcmljaW5nKCkucGlwZSh0YXAocHJpY2luZ3MgPT4ge1xuICAgICAgdGhpcy51c2VkQnVkZ2V0ID0gcHJpY2luZ3MubGVuZ3RoID4gMCA/IHByaWNpbmdzLnJlZHVjZSgoYWNjLCBwcmljaW5nKSA9PiBhY2MgKyBwcmljaW5nLnByaWNlLCAwKSA6IDA7XG4gICAgICB0aGlzLnVzZWRCdWRnZXQgPSBNYXRoLnJvdW5kKHRoaXMudXNlZEJ1ZGdldCAqIDEwMCkgLyAxMDA7XG4gICAgICB0aGlzLm1heEJ1ZGdldCA9ICh0aGlzLmZvcm0udmFsdWUgYXMgeyBidWRnZXQ6IG51bWJlciB9KS5idWRnZXQ7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfSkpO1xuICB9XG5cbiAgb3BlbkNhdGFsb2cocmVjaXBlVG9DaGFuZ2VJbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5yZWNpcGVUb0NoYW5nZUluZGV4ID0gcmVjaXBlVG9DaGFuZ2VJbmRleDtcbiAgICB0aGlzLmNhdGFsb2dNb2RlID0gdHJ1ZTtcbiAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgY2xvc2VDYXRhbG9nKCk6IHZvaWQge1xuICAgIHRoaXMucmVjaXBlVG9DaGFuZ2VJbmRleCA9IG51bGw7XG4gICAgdGhpcy5jYXRhbG9nTW9kZSA9IGZhbHNlO1xuICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBlZGl0UmVjaXBlKHJlY2lwZTogUmVjaXBlKTogdm9pZCB7XG4gICAgdGhpcy5idWRnZXR0ZWRSZWNpcGVzW3RoaXMucmVjaXBlVG9DaGFuZ2VJbmRleF0gPSByZWNpcGU7XG4gICAgdGhpcy51cGRhdGVCdWRnZXRWYWx1ZXMoKTtcbiAgICB0aGlzLmNsb3NlQ2F0YWxvZygpO1xuICB9XG5cbiAgb3BlbkJhc2tldENvbmZpcm1hdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnJlY2lwZVRvQ2hhbmdlSW5kZXggPSBudWxsO1xuICAgIHRoaXMuYmFza2V0Q29uZmlybWVkID0gdHJ1ZTtcbiAgICB0aGlzLnNlbmRDb25maXJtYXRpb25FdmVudCgpO1xuICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICAvKipcbiAgICogQHRvZG8gbm90IHN1cmUgaXQgaXMgY2FsbGVkIGNvcnJlY3RseVxuICAgKiBAdG9kbyBpbXBsZW1lbnQgb3RoZXIgcGxhbm5lciBldmVudHNcbiAgICovXG4gIHNlbmRDb25maXJtYXRpb25FdmVudCgpOiB2b2lkIHtcbiAgICB0aGlzLmFuYWx5dGljc1NlcnZpY2Uuc2VuZEV2ZW50KFxuICAgICAgJ3BsYW5uZXIuY29uZmlybScsXG4gICAgICB0aGlzLnBhdGgsXG4gICAgICB7XG4gICAgICAgIGJ1ZGdldF91c2VyOiB0aGlzLnVzZWRCdWRnZXQudG9TdHJpbmcoKSxcbiAgICAgICAgYnVkZ2V0X3BsYW5uZXI6ICh0aGlzLmZvcm0uZ2V0KCdidWRnZXQnKS52YWx1ZSBhcyBudW1iZXIpLnRvU3RyaW5nKCksXG4gICAgICAgIHJlY2lwZV9jb3VudDogKHRoaXMuZm9ybS5nZXQoJ3JlY2lwZXNDb3VudCcpLnZhbHVlIGFzIG51bWJlcikudG9TdHJpbmcoKSxcbiAgICAgICAgZ3Vlc3RzOiAodGhpcy5mb3JtLmdldCgnZ3Vlc3RzQ291bnQnKS52YWx1ZSBhcyBudW1iZXIpLnRvU3RyaW5nKCksXG4gICAgICAgIHVzZXNfY291bnQ6IHRoaXMudXBkYXRlVXNlc0NvdW50KCkudG9TdHJpbmcoKSxcbiAgICAgICAgdGltZV9wYXNzZWQ6ICgoRGF0ZS5ub3coKSAtIHRoaXMudGltZU9uU3RhcnQpIC8gMTAwMCkudG9TdHJpbmcoKVxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICB1cGRhdGVVc2VzQ291bnQoKTogbnVtYmVyIHtcbiAgICBjb25zdCBvbGRDb3VudCA9IHBhcnNlSW50KGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdtaWFtLW1lYWxzLXBsYW5uZXItdXNlcy1jb3VudCcpLCAxMCk7XG4gICAgY29uc3QgbmV3Q291bnQgPSBOdW1iZXIuaXNOYU4ob2xkQ291bnQpID8gMSA6IG9sZENvdW50ICsgMTtcbiAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnbWlhbS1tZWFscy1wbGFubmVyLXVzZXMtY291bnQnLCBuZXdDb3VudC50b1N0cmluZygpKTtcbiAgICByZXR1cm4gbmV3Q291bnQ7XG4gIH1cblxuICBzY3JvbGxUb1RvcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50b3BBbmNob3IpIHtcbiAgICAgIHRoaXMudG9wQW5jaG9yLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICB9XG4gIH1cblxuICB1cGRhdGVVc2VkQnVkZ2V0KHVzZWRCdWRnZXQ6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMudXNlZEJ1ZGdldCA9IHVzZWRCdWRnZXQ7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkUGxhbm5lckRhc2hib2FyZEhUTUwoKTogT2JzZXJ2YWJsZTxTYWZlSHRtbD4ge1xuICAgIGNvbnN0IHVybFBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3Qgc2tpcERhc2hib2FyZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdfbWVhbHovcGxhbm5lci9mcm9tLWVudHJ5JykgPT09ICd0cnVlJyB8fCB1cmxQYXJhbXMuZ2V0KCdmcm9tRmVhdHVyZWQnKSA9PT0gJ3RydWUnO1xuICAgIGlmIChza2lwRGFzaGJvYXJkKSB7XG4gICAgICByZXR1cm4gdGhpcy5wbGFubmVyU1NSU2VydmljZS5nZXRDdXJyZW50TWVudSgpLnBpcGUoXG4gICAgICAgIG1hcChjdXJyZW50TWVudSA9PiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChjdXJyZW50TWVudSkpXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnBsYW5uZXJTU1JTZXJ2aWNlLmdldFBsYW5uZXJEYXNoYm9hcmQoKS5waXBlKFxuICAgICAgbWFwKGRhc2hib2FyZCA9PiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChkYXNoYm9hcmQpKVxuICAgICk7XG4gIH1cbn1cbiIsIjwhLS0gPGRpdiAjbWlhbU1lYWxzUGxhbm5lclRvcEFuY2hvciBjbGFzcz1cIm1pYW0tbWVhbHMtcGxhbm5lci1hbmNob3JcIj48L2Rpdj4gLS0+XG48IS0tIDxkaXYgY2xhc3M9XCJtaWFtLW1lYWxzLXBsYW5uZXJcIiAqbmdJZj1cImZlYXR1cmVJc0F1dGhvcml6ZWRcIj5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tbWVhbHMtcGxhbm5lcl9faGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1pYW0tbWVhbHMtcGxhbm5lcl9faGVhZGVyX19icmVhZGNydW1iXCIgW25nQ2xhc3NdPVwieyAnaGlkZGVuJzogYnVkZ2V0dGVkUmVjaXBlcy5sZW5ndGggPT09IDAgfVwiPlxuICAgICAgPGEgaHJlZj1cIi9cIj5cbiAgICAgICAgPG5nLW1pYW0taWNvblxuICAgICAgICAgIFtpY29uTmFtZV09XCJpY29uLkhvbWVcIlxuICAgICAgICAgIHdpZHRoPVwiMThcIlxuICAgICAgICAgIGhlaWdodD1cIjE4XCJcbiAgICAgICAgICBwcmltYXJ5Q29sb3I9XCIjMEYxOTFGXCJcbiAgICAgICAgPjwvbmctbWlhbS1pY29uPlxuICAgICAgPC9hPlxuICAgICAgPG5nLW1pYW0taWNvbiBbaWNvbk5hbWVdPVwiaWNvbi5DaGV2cm9uRG93blwiIGNsYXNzPVwiY2hldnJvbi1yaWdodFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgPGEgW2hyZWZdPVwiY29udGV4dFNlcnZpY2UuY2F0YWxvZ1VybFwiIGNsYXNzPVwiaW5hY3RpdmVcIj5cbiAgICAgICAgPHNwYW4gaTE4bj5JZMOpZXMgcmVwYXM8L3NwYW4+XG4gICAgICA8L2E+XG4gICAgICA8bmctbWlhbS1pY29uIFtpY29uTmFtZV09XCJpY29uLkNoZXZyb25Eb3duXCIgY2xhc3M9XCJjaGV2cm9uLXJpZ2h0XCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+PC9uZy1taWFtLWljb24+XG4gICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJhY3RpdmVcIj5cbiAgICAgICAgPHNwYW4gaTE4bj5QbGFuaWZpZXIgbWVzIHJlcGFzPC9zcGFuPlxuICAgICAgPC9hPlxuICAgICAgPG5nLW1pYW0taWNvbiAqbmdJZj1cImNhdGFsb2dNb2RlICYmICFiYXNrZXRDb25maXJtZWRcIiBbaWNvbk5hbWVdPVwiaWNvbi5DaGV2cm9uRG93blwiIGNsYXNzPVwiY2hldnJvbi1yaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPjwvbmctbWlhbS1pY29uPlxuICAgICAgPGEgKm5nSWY9XCJjYXRhbG9nTW9kZSAmJiAhYmFza2V0Q29uZmlybWVkXCIgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwic3ViQ2F0ZWdvcnlcIj5cbiAgICAgICAgPHNwYW4gaTE4bj5Bam91dGVyIHVuZSBpZMOpZSByZXBhczwvc3Bhbj5cbiAgICAgIDwvYT5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtaWFtLW1lYWxzLXBsYW5uZXJfX2NvbnRlbnRcIiAqbmdJZj1cImZvcm1cIj5cbiAgICA8bmctbWlhbS1tZWFscy1wbGFubmVyLWZvcm1cbiAgICAgICpuZ0lmPVwiYWRkZWRSZWNpcGVzSWRzLmxlbmd0aCA9PT0gMCAmJiAhY2F0YWxvZ01vZGUgJiYgIWJhc2tldENvbmZpcm1lZFwiXG4gICAgICBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZVwiXG4gICAgICBbcmVkdWNlZF09XCJidWRnZXR0ZWRSZWNpcGVzLmxlbmd0aCA+IDBcIiBbZm9ybV09XCJmb3JtXCIgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgICAoc3VibWl0dGVkKT1cImZldGNoUmVjaXBlcygkZXZlbnQpXCJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ3JlZHVjZWQnOiBidWRnZXR0ZWRSZWNpcGVzLmxlbmd0aCA+IDAgfVwiPjwvbmctbWlhbS1tZWFscy1wbGFubmVyLWZvcm0+XG4gICAgPG5nLW1pYW0tbWVhbHMtcGxhbm5lci1yZXN1bHRcbiAgICAgICpuZ0lmPVwiYnVkZ2V0dGVkUmVjaXBlcy5sZW5ndGggPiAwICYmIGFkZGVkUmVjaXBlc0lkcy5sZW5ndGggPT09IDAgJiYgIWNhdGFsb2dNb2RlICYmICFiYXNrZXRDb25maXJtZWRcIlxuICAgICAgW29yaWdpblRyYWNlXT1cImV2ZW50VHJhY2VcIlxuICAgICAgW3JlY2lwZXNdPVwiYnVkZ2V0dGVkUmVjaXBlc1wiIFt1c2VkQnVkZ2V0XT1cInVzZWRCdWRnZXRcIiBbbWF4QnVkZ2V0XT1cIm1heEJ1ZGdldFwiIFtsb2FkaW5nXT1cImxvYWRpbmdcIlxuICAgICAgKHJlY2lwZVJlbW92YWwpPVwidXBkYXRlQnVkZ2V0VmFsdWVzKClcIlxuICAgICAgKGNvbmZpcm1lZCk9XCJhZGRSZWNpcGVzKClcIiAob3BlbkNhdGFsb2cpPVwib3BlbkNhdGFsb2coJGV2ZW50KVwiPjwvbmctbWlhbS1tZWFscy1wbGFubmVyLXJlc3VsdD5cbiAgICA8bmctbWlhbS1tZWFscy1wbGFubmVyLWJhc2tldC1wcmV2aWV3XG4gICAgICAqbmdJZj1cImFkZGVkUmVjaXBlc0lkcy5sZW5ndGggPiAwICYmICFjYXRhbG9nTW9kZSAmJiAhYmFza2V0Q29uZmlybWVkXCJcbiAgICAgIFtyZWNpcGVzSWRzXT1cImFkZGVkUmVjaXBlc0lkc1wiXG4gICAgICBbdXNlZEJ1ZGdldF09XCJ1c2VkQnVkZ2V0XCJcbiAgICAgIFttYXhCdWRnZXRdPVwibWF4QnVkZ2V0XCJcbiAgICAgIFtndWVzdHNdPVwiZm9ybS52YWx1ZS5ndWVzdHNDb3VudFwiXG4gICAgICBbaW5ncmVkaWVudHNSZWdyb3VwZWRdPVwiaW5ncmVkaWVudHNSZWdyb3VwZWRcIlxuICAgICAgW29yaWdpblRyYWNlXT1cImV2ZW50VHJhY2VcIlxuICAgICAgW25nQ2xhc3NdPVwieyAncmVkdWNlZCc6IGFkZGVkUmVjaXBlc0lkcy5sZW5ndGggPT09IDAgJiYgIWNhdGFsb2dNb2RlICYmICFiYXNrZXRDb25maXJtZWR9XCJcbiAgICAgIChjbG9zZWQpPVwib3BlbkJhc2tldENvbmZpcm1hdGlvbigpXCJcbiAgICAgICh1c2VkQnVkZ2V0Q2hhbmdlZCk9XCJ1cGRhdGVVc2VkQnVkZ2V0KCRldmVudClcIj5cbiAgICA8L25nLW1pYW0tbWVhbHMtcGxhbm5lci1iYXNrZXQtcHJldmlldz5cbiAgICA8bmctbWlhbS1tZWFscy1wbGFubmVyLWNhdGFsb2dcbiAgICAgICpuZ0lmPVwiY2F0YWxvZ01vZGUgJiYgIWJhc2tldENvbmZpcm1lZFwiXG4gICAgICBbbW9kaWZpZWRHdWVzdHNdPVwiZm9ybS52YWx1ZS5ndWVzdHNDb3VudFwiXG4gICAgICBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZVwiXG4gICAgICBbcmVtYWluaW5nQnVkZ2V0XT1cInJlbWFpbmluZ0J1ZGdldFwiXG4gICAgICBbcmVtYWluaW5nUmVjaXBlc051bWJlcl09XCJyZW1haW5pbmdSZWNpcGVzTnVtYmVyXCJcbiAgICAgIFtleGNsdWRlZFJlY2lwZXNJZHNdPVwiZXhjbHVkZWRSZWNpcGVzSWRzXCJcbiAgICAgIChlZGl0UmVjaXBlKT1cImVkaXRSZWNpcGUoJGV2ZW50KVwiXG4gICAgICAoY2FuY2VsZWQpPVwiY2xvc2VDYXRhbG9nKClcIj5cbiAgICA8L25nLW1pYW0tbWVhbHMtcGxhbm5lci1jYXRhbG9nPlxuICAgIDxuZy1taWFtLW1lYWxzLXBsYW5uZXItYmFza2V0LWNvbmZpcm1hdGlvblxuICAgICAgKm5nSWY9XCJiYXNrZXRDb25maXJtZWRcIlxuICAgICAgW3JlY2lwZXNJZHNdPVwiYWRkZWRSZWNpcGVzSWRzXCJcbiAgICAgIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlXCJcbiAgICAgIFtidWRnZXRdPVwidXNlZEJ1ZGdldFwiPlxuICAgIDwvbmctbWlhbS1tZWFscy1wbGFubmVyLWJhc2tldC1jb25maXJtYXRpb24+XG4gIDwvZGl2PlxuPC9kaXY+IC0tPlxuPGRpdiBjbGFzcz1cIm1lYWx6LXBsYW5uZXItZGFzaGJvYXJkLWNvbnRhaW5lclwiIFtpbm5lckhUTUxdPVwicGxhbm5lckRhc2hib2FyZEhUTUxcIj48L2Rpdj5cbiJdfQ==
380
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhbHMtcGxhbm5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1taWFtL3NyYy9saWIvX3dlYi1jb21wb25lbnRzL21lYWxzLXBsYW5uZXIvbWVhbHMtcGxhbm5lci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1taWFtL3NyYy9saWIvX3dlYi1jb21wb25lbnRzL21lYWxzLXBsYW5uZXIvbWVhbHMtcGxhbm5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUlWLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDakYsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQWMsRUFBRSxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUM3RSxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9EQUFvRCxDQUFDO0FBRzFGLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsY0FBYyxFQUNkLDBCQUEwQixFQUMxQixjQUFjLEVBQ2QsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixjQUFjLEVBQ2QsZ0JBQWdCLEVBQ2pCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUN6RyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsWUFBWSxFQUFZLE1BQU0sMkJBQTJCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUNBQXFDLENBQUM7Ozs7Ozs7OztJQy9CdEUsOEJBQThFO0lBQzVFLCtCQUFxRDtJQUFBLDBCQUFVO0lBQUEsaUJBQU87SUFDdEUsbUJBS0M7SUFMRCw4QkFLQztJQUNDLDBCQUlFO0lBQ0YsMEJBSUU7SUFDRiwwQkFJRTtJQUNGLDJCQUlFO0lBQ0YsMkJBSUU7SUFDRiwyQkFJRTtJQUNGLDRCQUlFO0lBQ0YsNEJBSUU7SUFDSixpQkFBTTtJQUNSLGlCQUFNOzs7SUE4RUosd0JBQXdFOzs7SUFKMUUsK0JBR0M7SUFDQywrRkFBd0U7SUFDeEUsZ0NBQWlEO0lBQWpELGdCQUFpRDtJQUVqRCxpQkFBTztJQUNULGlCQUFNOzs7O0lBSlcsZUFBd0M7SUFBeEMsc0NBQXdDOztBRDlGM0QsTUFBTSxjQUFjLEdBQUcsQ0FBQyxpQkFBaUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0QsTUFBTSxrQkFBa0IsR0FBRztJQUN6QixPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxvQkFBb0IsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsY0FBYztRQUNwSSxjQUFjLEVBQUUsR0FBRyxjQUFjLENBQUM7SUFDcEMsUUFBUSxFQUFFLENBQUMsVUFBVSxDQUFDO0lBQ3RCLElBQUksRUFBRSxDQUFDLGFBQWEsQ0FBQztJQUNyQixpQkFBaUIsRUFBRSxDQUFDLE1BQU0sQ0FBQztDQUM1QixDQUFDO0FBV0YsTUFBTSxPQUFPLHFCQUFzQixTQUFRLG9CQUFvQjtJQTRCN0QsWUFDRSxnQkFBa0MsRUFDMUIsRUFBZSxFQUNoQixHQUFzQixFQUN0QixjQUE4QixFQUM5QixjQUE4QixFQUM3QixjQUE4QixFQUM5QixVQUErQixFQUMvQixvQkFBMEMsRUFDMUMsZ0JBQWtDLEVBQ2xDLG9CQUFnRCxFQUNoRCxpQkFBb0MsRUFDcEMsU0FBdUI7UUFFL0IsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFaaEIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNoQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzdCLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixlQUFVLEdBQVYsVUFBVSxDQUFxQjtRQUMvQix5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUE0QjtRQUNoRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLGNBQVMsR0FBVCxTQUFTLENBQWM7UUFyQ2pDLHFCQUFnQixHQUFhLEVBQUUsQ0FBQztRQUNoQywyQkFBc0IsR0FFbEIsRUFBRSxDQUFDO1FBQ1Asb0JBQWUsR0FBYSxFQUFFLENBQUM7UUFDL0IsU0FBSSxHQUFHLElBQUksQ0FBQztRQUVaLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBRXBCLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIseUJBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQzdCLGdCQUFXLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUM1QiwwQkFBcUIsR0FBa0IsRUFBRSxDQUFDO1FBRTFDLDRCQUF1QixHQUFHLEtBQUssQ0FBQztRQUVoQyxlQUFlO1FBQ2YsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGNBQVMsR0FBRyxDQUFDLENBQUM7UUFHTixrQkFBYSxHQUFtQixFQUFFLENBQUM7SUFpQjNDLENBQUM7SUFFRCxJQUFJLGVBQWU7O1FBQ2pCLE1BQU0sZ0JBQWdCLFNBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQywwQ0FBRSxFQUFFLENBQUM7UUFDN0UsSUFBSSxlQUFlLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3ZELElBQUksZ0JBQWdCLEVBQUU7WUFDcEIsZUFBZSxJQUFJLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsSUFBSSxlQUFlLEdBQUcsQ0FBQyxFQUFFO1lBQ3ZCLE9BQU8sZUFBZSxDQUFDO1NBQ3hCO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsSUFBSSxzQkFBc0I7UUFDeEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUNuRCwwREFBMEQ7UUFDMUQsTUFBTSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsRUFDeEQsQ0FBQyxDQUFDLENBQUM7SUFDVCxDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDcEIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUMxQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUM5QixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQ1IsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2YsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDckQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxJQUFJLENBQUM7WUFDcEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxTQUFTLENBQUM7Z0JBQ2hFLElBQUksRUFBRSxvQkFBb0IsQ0FBQyxFQUFFO29CQUMzQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7b0JBQ2pELElBQUksQ0FBQyx1QkFBdUIsR0FBRyxLQUFLLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7Z0JBQzNCLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtvQkFDVixJQUFJLENBQUMsdUJBQXVCLEdBQUcsS0FBSyxDQUFDO29CQUNyQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMzQixDQUFDO2FBQ0YsQ0FBQyxDQUFDLENBQUM7UUFDTixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxRQUFRO1FBQ04sTUFBTSxVQUFVLEdBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLENBQWtFLENBQUM7UUFDakksY0FBYyxDQUFDLFVBQVUsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUM7WUFDeEIsTUFBTSxFQUFFLElBQUksV0FBVyxDQUFDLENBQUEsVUFBVSxhQUFWLFVBQVUsdUJBQVYsVUFBVSxDQUFFLE1BQU0sS0FBSSxTQUFTLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRyxXQUFXLEVBQUUsSUFBSSxXQUFXLENBQUMsQ0FBQSxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsV0FBVyxLQUFJLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzdFLFlBQVksRUFBRSxJQUFJLFdBQVcsQ0FBQyxDQUFBLFVBQVUsYUFBVixVQUFVLHVCQUFWLFVBQVUsQ0FBRSxZQUFZLEtBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzFILENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFxRTtRQUNoRixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztRQUNwQixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDdEIsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxZQUFZLEVBQUUsY0FBYyxFQUFFLGtCQUFrQixFQUFFLEtBQUssQ0FDbEcsQ0FBQyxJQUFJLENBQ0osU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsQ0FBQywwQkFBMEI7WUFDdEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtnQkFDdEMsQ0FBQyxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO2dCQUN0QyxPQUFPLENBQUMsQ0FBQztZQUNYLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixPQUFPLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUNILENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzVFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztZQUMxRCxJQUFJLENBQUMsU0FBUyxHQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBNEIsQ0FBQyxNQUFNLENBQUM7WUFDaEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDMUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNqRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDO0lBQ3hELENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUVELFVBQVU7UUFDUixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRTVDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FDM0MsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FBQyxDQUFDLE9BQXNCLEVBQUUsRUFBRTtZQUM3QixJQUFJLENBQUMscUJBQXFCLEdBQUcsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLEVBQ0YsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN0QyxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQ2xELFNBQVMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxFQUNyQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQ1AsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUN2RCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FDdkMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNILENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNmLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNyQixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRU8sZUFBZTtRQUNyQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLGFBQUQsQ0FBQyx1QkFBRCxDQUFDLENBQUUsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFlBQXNCOztRQUMvQyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sY0FBYyxTQUFHLFlBQVksQ0FBQyxDQUFDLENBQUMsMENBQUUsY0FBYyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFlBQXNCO1FBQ2hELElBQUksQ0FBQyxlQUFlLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLElBQUksQ0FDNUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQ3ZCLElBQUksa0JBQWtCLEtBQUssSUFBSSxFQUFFO2dCQUMvQixJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGtCQUFrQixDQUFDLENBQUM7YUFDekU7UUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQixDQUFDLE1BQWtDO1FBQ25ELE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FDdEMsR0FBRyxFQUFFO1lBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxJQUFJLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDMUUsQ0FBQyxDQUNGLENBQUM7SUFDSixDQUFDO0lBRU8sMEJBQTBCLENBQUMsT0FBc0I7UUFDdkQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUN4QyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQ25DLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FDdEMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxLQUFLLEtBQUssQ0FBQyxFQUFFLElBQUksU0FBUyxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUMsUUFBUSxDQUNoRixDQUNGLENBQUM7UUFDRixPQUFPLENBQUMsR0FBRyxVQUFVLEVBQUUsR0FBRyxjQUFjLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU8sb0JBQW9CO1FBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxJQUFJLENBQzVDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDUCxTQUFTLENBQUMsQ0FBQyxPQUFzQixFQUFFLEVBQUU7WUFDbkMsTUFBTSwyQkFBMkIsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsV0FBd0IsRUFBRSxFQUFFO2dCQUM1RyxNQUFNLDBCQUEwQixHQUFHLElBQUksMEJBQTBCLENBQy9ELFdBQVcsRUFDWCxFQUFFLEVBQ0YsSUFBSSxDQUFDLGNBQWMsRUFDbkIsU0FBUyxFQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FDdEIsQ0FBQztnQkFDRixJQUFJLENBQUMsa0JBQWtCLENBQUMsMEJBQTBCLENBQUMsQ0FBQztnQkFDcEQsT0FBTywwQkFBMEIsQ0FBQztZQUNwQyxDQUFDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUV2RSxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FDSCxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxrQkFBdUM7UUFDaEUsT0FBTyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNqQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQWtCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2FBQ3ZGO1lBQ0QsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUFrQjtRQUMxQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFO1lBQzdCLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFDRCxPQUFPLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE9BQU8sYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FDbEYsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDaEMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDbkIsSUFBSSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFpQyxDQUFDLFdBQVcsRUFBRTtZQUNoSCxPQUFPLEVBQUUsQ0FBQyxFQUFxQixDQUFDLENBQUM7U0FDbEM7UUFDRCxNQUFNLFFBQVEsR0FBZ0MsRUFBRSxDQUFDO1FBQ2pELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUNyQyxJQUFJLE1BQU0sRUFBRTtnQkFDVixRQUFRLENBQUMsSUFBSSxDQUNYLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUM1QixNQUFNLENBQUMsRUFBRSxFQUNULElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUNWLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBaUMsQ0FBQyxXQUFXLENBQ3pELENBQUMsSUFBSSxDQUNKLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUMsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEtBQUssQ0FBQSxDQUFDLEVBQ25DLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUN2RSxDQUNGLENBQUM7YUFDSDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBcUIsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUNwRCxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0RyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDMUQsSUFBSSxDQUFDLFNBQVMsR0FBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQTRCLENBQUMsTUFBTSxDQUFDO1lBQ2hFLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRCxXQUFXLENBQUMsbUJBQTJCO1FBQ3JDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxtQkFBbUIsQ0FBQztRQUMvQyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFjO1FBQ3ZCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDekQsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztRQUM1QixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gscUJBQXFCO1FBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQzdCLGlCQUFpQixFQUNqQixJQUFJLENBQUMsSUFBSSxFQUNUO1lBQ0UsV0FBVyxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQ3ZDLGNBQWMsRUFBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFnQixDQUFDLFFBQVEsRUFBRTtZQUNwRSxZQUFZLEVBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUMsS0FBZ0IsQ0FBQyxRQUFRLEVBQUU7WUFDeEUsTUFBTSxFQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQWdCLENBQUMsUUFBUSxFQUFFO1lBQ2pFLFVBQVUsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxFQUFFO1lBQzdDLFdBQVcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxRQUFRLEVBQUU7U0FDakUsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQywrQkFBK0IsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JGLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQztRQUMzRCxZQUFZLENBQUMsT0FBTyxDQUFDLCtCQUErQixFQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDO1NBQy9DO0lBQ0gsQ0FBQztJQUVELGdCQUFnQixDQUFDLFVBQWtCO1FBQ2pDLElBQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDO1FBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixNQUFNLFNBQVMsR0FBRyxJQUFJLGVBQWUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzlELE1BQU0sYUFBYSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsMkJBQTJCLENBQUMsS0FBSyxNQUFNLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsS0FBSyxNQUFNLENBQUM7UUFDL0gsSUFBSSxhQUFhLEVBQUU7WUFDakIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUNqRCxHQUFHLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQ3hFLENBQUM7U0FDSDtRQUVELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixFQUFFLENBQUMsSUFBSSxDQUN0RCxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQ3BFLENBQUM7SUFDSixDQUFDOzswRkFwWVUscUJBQXFCOzBEQUFyQixxQkFBcUI7Ozs7Ozs7Ozs7aUJDOEU1QixVQUFBLGlHQUNGOztRQW5JSix3SEFtRGM7UUF3RWQsOEJBQThDO1FBQzVDLHNFQVFNO1FBQ04seUJBR087UUFDVCxpQkFBTTs7UUFaRCxlQUE2QjtRQUE3QixrREFBNkI7UUFVOUIsZUFBa0M7UUFBbEMsdUVBQWtDOzt1RkRuRnpCLHFCQUFxQjtjQVJqQyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtnQkFDakMsV0FBVyxFQUFFLGdDQUFnQztnQkFDN0MsU0FBUyxFQUFFLENBQUMsZ0NBQWdDLENBQUM7Z0JBQzdDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2dCQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTthQUNoRDs0WkFHeUMsU0FBUztrQkFBaEQsU0FBUzttQkFBQywyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCwgc2tpcFdoaWxlLCBzd2l0Y2hNYXAsIHRha2UsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IEV2ZW50VHJhY2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vX2NvbXBvbmVudHMvYWJzdHJhY3RzL2V2ZW50LXRyYWNlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFza2V0RW50cnksIEJhc2tldFByZXZpZXdMaW5lLCBQb2ludE9mU2FsZSwgUmVjaXBlIH0gZnJvbSAnLi4vLi4vX21vZGVscyc7XG5pbXBvcnQgeyBSZWNpcGVQcmljaW5nIH0gZnJvbSAnLi4vLi4vX21vZGVscy9yZWNpcGUtcHJpY2luZyc7XG5pbXBvcnQge1xuICBBbmFseXRpY3NTZXJ2aWNlLFxuICBCYXNrZXRzU2VydmljZSxcbiAgQmFza2V0c1N5bmNocm9uaXplclNlcnZpY2UsXG4gIENvbnRleHRTZXJ2aWNlLFxuICBQb2ludE9mU2FsZXNTZXJ2aWNlLFxuICBSZWNpcGVEZXRhaWxzU2VydmljZSxcbiAgUmVjaXBlc1NlcnZpY2UsXG4gIFN1cHBsaWVyc1NlcnZpY2Vcbn0gZnJvbSAnLi4vLi4vX3NlcnZpY2VzJztcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi9fdHlwZXMvaWNvbi5lbnVtJztcbmltcG9ydCB7IEV2ZW50VHJhY2UgfSBmcm9tICcuLi8uLi9fdHlwZXMvZXZlbnQtdHJhY2UnO1xuaW1wb3J0IHsgQWRkUmVjaXBlRnJvbVBsYW5uZXJBY3Rpb24gfSBmcm9tICcuLi8uLi9fbW9kZWxzL2Jhc2tldC1hY3Rpb25zL2FkZC1yZWNpcGUtZnJvbS1wbGFubmVyLWFjdGlvbic7XG5pbXBvcnQgeyBkZWVwQ2xvbmVXaXRoQ2xhc3MgfSBmcm9tICcuLi8uLi9fdXRpbHMvbWV0aG9kcy9kZWVwQ2xvbmUnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgUGxhbm5lclNTUlNlcnZpY2UgfSBmcm9tICcuLi8uLi9fc2VydmljZXMvcGxhbm5lci1zc3Iuc2VydmljZSc7XG5cbmNvbnN0IHJlY2lwZUluY2x1ZGVzID0gWydyZWNpcGUtcHJvdmlkZXInLCAnc3BvbnNvcnMnLCAndGFncyddO1xuY29uc3QgcmVjaXBlU3BhcnNlRmllbGRzID0ge1xuICByZWNpcGVzOiBbJ3RpdGxlJywgJ251bWJlci1vZi1ndWVzdHMnLCAnbWVkaWEtdXJsJywgJ3ZpZGVvLWlkJywgJ2ZpbGlncmFuZS1sb2dvLXVybCcsICdkaWZmaWN1bHR5JywgJ3ByZXBhcmF0aW9uLXRpbWUnLCAnY29va2luZy10aW1lJyxcbiAgICAncmVzdGluZy10aW1lJywgLi4ucmVjaXBlSW5jbHVkZXNdLFxuICBzcG9uc29yczogWydsb2dvLXVybCddLFxuICB0YWdzOiBbJ3RhZy10eXBlLWlkJ10sXG4gICdyZWNpcGUtcHJvdmlkZXInOiBbJ25hbWUnXVxufTtcblxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZy1taWFtLW1lYWxzLXBsYW5uZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVhbHMtcGxhbm5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21lYWxzLXBsYW5uZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5cbmV4cG9ydCBjbGFzcyBNZWFsc1BsYW5uZXJDb21wb25lbnQgZXh0ZW5kcyBFdmVudFRyYWNlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSwgT25Jbml0LCBPbkNoYW5nZXMge1xuICBAVmlld0NoaWxkKCdtaWFtTWVhbHNQbGFubmVyVG9wQW5jaG9yJykgdG9wQW5jaG9yOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBidWRnZXR0ZWRSZWNpcGVzOiBSZWNpcGVbXSA9IFtdO1xuICBidWRnZXR0ZWRSZWNpcGVzUHJpY2VzOiB7XG4gICAgW3JlY2lwZUlkOiBzdHJpbmddOiBudW1iZXI7XG4gIH0gPSB7fTtcbiAgYWRkZWRSZWNpcGVzSWRzOiBzdHJpbmdbXSA9IFtdO1xuICBpY29uID0gSWNvbjtcbiAgZm9ybTogRm9ybUdyb3VwO1xuICBjYXRhbG9nTW9kZSA9IGZhbHNlO1xuICByZWNpcGVUb0NoYW5nZUluZGV4OiBudW1iZXI7XG4gIGJhc2tldENvbmZpcm1lZCA9IGZhbHNlO1xuICBsb2FkaW5nID0gZmFsc2U7XG4gIGluZ3JlZGllbnRzUmVncm91cGVkID0gZmFsc2U7XG4gIHRpbWVPblN0YXJ0ID0gRGF0ZS5ub3coKTtcbiAgZmVhdHVyZUlzQXV0aG9yaXplZCA9IGZhbHNlO1xuICBwcmV2aW91c0Jhc2tldEVudHJpZXM6IEJhc2tldEVudHJ5W10gPSBbXTtcbiAgcGxhbm5lckRhc2hib2FyZEhUTUw6IFNhZmVIdG1sO1xuICBwbGFubmVyRGFzaGJvYXJkTG9hZGluZyA9IGZhbHNlO1xuXG4gIC8vIFByb2dyZXNzIGJhclxuICB1c2VkQnVkZ2V0ID0gMDtcbiAgbWF4QnVkZ2V0ID0gMDtcblxuICBwcml2YXRlIHBvczogUG9pbnRPZlNhbGU7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhbmFseXRpY3NTZXJ2aWNlOiBBbmFseXRpY3NTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHB1YmxpYyBjb250ZXh0U2VydmljZTogQ29udGV4dFNlcnZpY2UsXG4gICAgcHVibGljIHJlY2lwZXNTZXJ2aWNlOiBSZWNpcGVzU2VydmljZSxcbiAgICBwcml2YXRlIGJhc2tldHNTZXJ2aWNlOiBCYXNrZXRzU2VydmljZSxcbiAgICBwcml2YXRlIHBvc1NlcnZpY2U6IFBvaW50T2ZTYWxlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWNpcGVEZXRhaWxzU2VydmljZTogUmVjaXBlRGV0YWlsc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdXBwbGllcnNTZXJ2aWNlOiBTdXBwbGllcnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgYmFza2V0U3luY2hyb1NlcnZpY2U6IEJhc2tldHNTeW5jaHJvbml6ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcGxhbm5lclNTUlNlcnZpY2U6IFBsYW5uZXJTU1JTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgKSB7XG4gICAgc3VwZXIoYW5hbHl0aWNzU2VydmljZSk7XG4gIH1cblxuICBnZXQgcmVtYWluaW5nQnVkZ2V0KCk6IG51bWJlciB7XG4gICAgY29uc3QgcmVjaXBlVG9DaGFuZ2VJZCA9IHRoaXMuYnVkZ2V0dGVkUmVjaXBlc1t0aGlzLnJlY2lwZVRvQ2hhbmdlSW5kZXhdPy5pZDtcbiAgICBsZXQgcmVtYWluaW5nQnVkZ2V0ID0gdGhpcy5tYXhCdWRnZXQgLSB0aGlzLnVzZWRCdWRnZXQ7XG4gICAgaWYgKHJlY2lwZVRvQ2hhbmdlSWQpIHtcbiAgICAgIHJlbWFpbmluZ0J1ZGdldCArPSB0aGlzLmJ1ZGdldHRlZFJlY2lwZXNQcmljZXNbcmVjaXBlVG9DaGFuZ2VJZF07XG4gICAgfVxuICAgIGlmIChyZW1haW5pbmdCdWRnZXQgPiAwKSB7XG4gICAgICByZXR1cm4gcmVtYWluaW5nQnVkZ2V0O1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIGdldCByZW1haW5pbmdSZWNpcGVzTnVtYmVyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuYnVkZ2V0dGVkUmVjaXBlcy5yZWR1Y2UoKGFjYywgcmVjaXBlLCBpKSA9PlxuICAgICAgICAvLyBEb24ndCBjb3VudCBudWxsIHJlY2lwZXMgYW5kIGN1cnJlbnRseSByZXBsYWNpbmcgcmVjaXBlXG4gICAgICAgIHJlY2lwZSAmJiBpICE9PSB0aGlzLnJlY2lwZVRvQ2hhbmdlSW5kZXggPyBhY2MgOiBhY2MgKyAxXG4gICAgICAsIDApO1xuICB9XG5cbiAgZ2V0IGV4Y2x1ZGVkUmVjaXBlc0lkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuYnVkZ2V0dGVkUmVjaXBlcy5maWx0ZXIocmVjaXBlID0+IHJlY2lwZSkubWFwKHJlY2lwZSA9PiByZWNpcGUuaWQpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLmlzTWVhbHpQYWdlID0gdHJ1ZTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY29udGV4dFNlcnZpY2UuZW5hYmxlTWVhbHNQbGFubmVyJC5waXBlKFxuICAgICAgICBza2lwV2hpbGUoZW5hYmxlZCA9PiAhZW5hYmxlZCksXG4gICAgICAgIHRha2UoMSlcbiAgICAgICkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIHRoaXMuZmVhdHVyZUlzQXV0aG9yaXplZCA9IHRydWU7XG4gICAgICAgIHRoaXMucmVjaXBlRGV0YWlsc1NlcnZpY2Uub25seVNob3dQcmVwYXJhdGlvbiA9IHRydWU7XG4gICAgICAgIHRoaXMuaW5pdEZvcm0oKTtcbiAgICAgICAgdGhpcy5wYWdldmlldygpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaCh0aGlzLmluaXRSZWNpcGVzUHJpY2luZygpKTtcbiAgICAgICAgdGhpcy5wbGFubmVyRGFzaGJvYXJkTG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2godGhpcy5sb2FkUGxhbm5lckRhc2hib2FyZEhUTUwoKS5zdWJzY3JpYmUoe1xuICAgICAgICAgIG5leHQ6IHBsYW5uZXJEYXNoYm9hcmRIVE1MID0+IHtcbiAgICAgICAgICAgIHRoaXMucGxhbm5lckRhc2hib2FyZEhUTUwgPSBwbGFubmVyRGFzaGJvYXJkSFRNTDtcbiAgICAgICAgICAgIHRoaXMucGxhbm5lckRhc2hib2FyZExvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnBsYW5uZXJEYXNoYm9hcmRMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSk7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBpbml0Rm9ybSgpOiB2b2lkIHtcbiAgICBjb25zdCBzdG9yZWRGb3JtOiB7IGJ1ZGdldDogbnVtYmVyOyBndWVzdHNDb3VudDogbnVtYmVyOyByZWNpcGVzQ291bnQ6IG51bWJlciB9ID1cbiAgICAgIEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnbWlhbS1tZWFscy1wbGFubmVyLWZvcm0nKSkgYXMgeyBidWRnZXQ6IG51bWJlcjsgZ3Vlc3RzQ291bnQ6IG51bWJlcjsgcmVjaXBlc0NvdW50OiBudW1iZXIgfTtcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKCdtaWFtLW1lYWxzLXBsYW5uZXItZm9ybScpO1xuICAgIHRoaXMuZm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgYnVkZ2V0OiBuZXcgRm9ybUNvbnRyb2woc3RvcmVkRm9ybT8uYnVkZ2V0IHx8IHVuZGVmaW5lZCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluKDEpXSksXG4gICAgICBndWVzdHNDb3VudDogbmV3IEZvcm1Db250cm9sKHN0b3JlZEZvcm0/Lmd1ZXN0c0NvdW50IHx8IDAsIFZhbGlkYXRvcnMubWluKDEpKSxcbiAgICAgIHJlY2lwZXNDb3VudDogbmV3IEZvcm1Db250cm9sKHN0b3JlZEZvcm0/LnJlY2lwZXNDb3VudCB8fCAodGhpcy5jb250ZXh0U2VydmljZS5hbnRpSW5mbGF0aW9uID8gMCA6IDQpLCBWYWxpZGF0b3JzLm1pbigxKSlcbiAgICB9KTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICBmZXRjaFJlY2lwZXMoaW5wdXRzOiB7IGJ1ZGdldDogbnVtYmVyOyBndWVzdHNDb3VudDogbnVtYmVyOyByZWNpcGVzQ291bnQ6IG51bWJlciB9KTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLnJlY2lwZXNTZXJ2aWNlLnBsYW4oXG4gICAgICAgIGlucHV0cy5idWRnZXQsIGlucHV0cy5ndWVzdHNDb3VudCwgaW5wdXRzLnJlY2lwZXNDb3VudCwgcmVjaXBlSW5jbHVkZXMsIHJlY2lwZVNwYXJzZUZpZWxkcywgZmFsc2VcbiAgICAgICkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHJlY2lwZXMgPT4ge1xuICAgICAgICAgIHRoaXMuYnVkZ2V0dGVkUmVjaXBlcyA9IFtdOyAvLyBSZWZyZXNoIHRoZSByZXN1bHQgdmlld1xuICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB0aGlzLmJ1ZGdldHRlZFJlY2lwZXMgPSByZWNpcGVzLm1hcChyID0+IHtcbiAgICAgICAgICAgIHIubW9kaWZpZWRHdWVzdHMgPSBpbnB1dHMuZ3Vlc3RzQ291bnQ7XG4gICAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuZmV0Y2hSZWNpcGVzUHJpY2luZygpO1xuICAgICAgICB9KVxuICAgICAgKS5zdWJzY3JpYmUocHJpY2luZ3MgPT4ge1xuICAgICAgICB0aGlzLnVzZWRCdWRnZXQgPSBwcmljaW5ncy5yZWR1Y2UoKGFjYywgcHJpY2luZykgPT4gYWNjICsgcHJpY2luZy5wcmljZSwgMCk7XG4gICAgICAgIHRoaXMudXNlZEJ1ZGdldCA9IE1hdGgucm91bmQodGhpcy51c2VkQnVkZ2V0ICogMTAwKSAvIDEwMDtcbiAgICAgICAgdGhpcy5tYXhCdWRnZXQgPSAodGhpcy5mb3JtLnZhbHVlIGFzIHsgYnVkZ2V0OiBudW1iZXIgfSkuYnVkZ2V0O1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuc2Nyb2xsVG9Ub3AoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuYW5hbHl0aWNzU2VydmljZS5pc01lYWx6UGFnZSA9IGZhbHNlO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKHMgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgICB0aGlzLnJlY2lwZURldGFpbHNTZXJ2aWNlLm9ubHlTaG93UHJlcGFyYXRpb24gPSBmYWxzZTtcbiAgfVxuXG4gIGN1cnJlbnRQYXRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdtZWFscy1wbGFubmVyJztcbiAgfVxuXG4gIGFkZFJlY2lwZXMoKTogdm9pZCB7XG4gICAgdGhpcy5zdGFydExvYWRpbmcoKTtcbiAgICBjb25zdCByZWNpcGVzVG9BZGQgPSB0aGlzLmdldFZhbGlkUmVjaXBlcygpO1xuXG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLndhaXRGb3JCYXNrZXRFbnRyaWVzLnBpcGUoXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIG1hcCgoZW50cmllczogQmFza2V0RW50cnlbXSkgPT4ge1xuICAgICAgICAgIHRoaXMucHJldmlvdXNCYXNrZXRFbnRyaWVzID0gZGVlcENsb25lV2l0aENsYXNzKGVudHJpZXMpO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmFkZFJlY2lwZXNUb0Jhc2tldChyZWNpcGVzVG9BZGQpO1xuICAgICAgICAgIHJldHVybiB0aGlzLmJhc2tldHNTZXJ2aWNlLnJlY2lwZXNXaWxsQmVBZGRlZCgpLnBpcGUoXG4gICAgICAgICAgICBza2lwV2hpbGUod2lsbEJlQWRkZWQgPT4gd2lsbEJlQWRkZWQpLFxuICAgICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgoKSA9PiB0aGlzLmhhbmRsZUJhc2tldFByZXZpZXcocmVjaXBlc1RvQWRkKSksXG4gICAgICAgICAgICB0YXAoKCkgPT4gdGhpcy51cGRhdGVSZXRhaWxlckJhc2tldCgpKVxuICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgICApLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuc3RvcExvYWRpbmcoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRMb2FkaW5nKCk6IHZvaWQge1xuICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RvcExvYWRpbmcoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRWYWxpZFJlY2lwZXMoKTogUmVjaXBlW10ge1xuICAgIHJldHVybiB0aGlzLmJ1ZGdldHRlZFJlY2lwZXMuZmlsdGVyKHIgPT4gcj8uaWQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRSZWNpcGVzVG9CYXNrZXQocmVjaXBlc1RvQWRkOiBSZWNpcGVbXSk6IHZvaWQge1xuICAgIGNvbnN0IHJlY2lwZUlkcyA9IHJlY2lwZXNUb0FkZC5tYXAociA9PiByLmlkKTtcbiAgICBjb25zdCBtb2RpZmllZEd1ZXN0cyA9IHJlY2lwZXNUb0FkZFswXT8ubW9kaWZpZWRHdWVzdHM7XG4gICAgdGhpcy5iYXNrZXRzU2VydmljZS5hZGRSZWNpcGVzVG9CYXNrZXQocmVjaXBlSWRzLCBtb2RpZmllZEd1ZXN0cywgdGhpcy5ldmVudFRyYWNlKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQmFza2V0UHJldmlldyhyZWNpcGVzVG9BZGQ6IFJlY2lwZVtdKSB7XG4gICAgdGhpcy5hZGRlZFJlY2lwZXNJZHMgPSByZWNpcGVzVG9BZGQubWFwKHIgPT4gci5pZCk7XG4gICAgcmV0dXJuIHRoaXMuYmFza2V0c1NlcnZpY2UuYmFza2V0UHJldmlldyQucGlwZShcbiAgICAgIHRha2UoMSksXG4gICAgICB0YXAoYmFza2V0UHJldmlld0xpbmVzID0+IHtcbiAgICAgICAgaWYgKGJhc2tldFByZXZpZXdMaW5lcyAhPT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuaW5ncmVkaWVudHNSZWdyb3VwZWQgPSB0aGlzLmhhc011dHVhbGl6ZWRFbnRyeShiYXNrZXRQcmV2aWV3TGluZXMpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBoYW5kbGVBY3Rpb25FcnJvcnMoYWN0aW9uOiBBZGRSZWNpcGVGcm9tUGxhbm5lckFjdGlvbikge1xuICAgIGFjdGlvbi5vblRpbWVvdXQucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuYmFza2V0c1NlcnZpY2UucmVtb3ZlUHJvZHVjdChhY3Rpb24uYmFza2V0RW50cnksIG5ldyBFdmVudFRyYWNlKCkpO1xuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGZpbHRlck5ld0FuZFVwZGF0ZWRFbnRyaWVzKGVudHJpZXM6IEJhc2tldEVudHJ5W10pIHtcbiAgICBjb25zdCBuZXdFbnRyaWVzID0gZW50cmllcy5maWx0ZXIoZW50cnkgPT5cbiAgICAgICF0aGlzLnByZXZpb3VzQmFza2V0RW50cmllcy5maW5kKHByZXZFbnRyeSA9PiBwcmV2RW50cnkuaWQgPT09IGVudHJ5LmlkKSk7XG4gICAgY29uc3QgdXBkYXRlZEVudHJpZXMgPSBlbnRyaWVzLmZpbHRlcihcbiAgICAgIGVudHJ5ID0+IHRoaXMucHJldmlvdXNCYXNrZXRFbnRyaWVzLmZpbmQoXG4gICAgICAgIHByZXZFbnRyeSA9PiBwcmV2RW50cnkuaWQgPT09IGVudHJ5LmlkICYmIHByZXZFbnRyeS5xdWFudGl0eSAhPT0gZW50cnkucXVhbnRpdHlcbiAgICAgIClcbiAgICApO1xuICAgIHJldHVybiBbLi4ubmV3RW50cmllcywgLi4udXBkYXRlZEVudHJpZXNdO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVSZXRhaWxlckJhc2tldCgpOiB2b2lkIHtcbiAgICB0aGlzLmJhc2tldHNTZXJ2aWNlLmFjdGl2ZUJhc2tldEVudHJpZXMoKS5waXBlKFxuICAgICAgdGFrZSgxKSxcbiAgICAgIHN3aXRjaE1hcCgoZW50cmllczogQmFza2V0RW50cnlbXSkgPT4ge1xuICAgICAgICBjb25zdCBhZGRSZWNpcGVGcm9tUGxhbm5lckFjdGlvbnMgPSB0aGlzLmZpbHRlck5ld0FuZFVwZGF0ZWRFbnRyaWVzKGVudHJpZXMpLm1hcCgoYmFza2V0RW50cnk6IEJhc2tldEVudHJ5KSA9PiB7XG4gICAgICAgICAgY29uc3QgYWRkUmVjaXBlRnJvbVBsYW5uZXJBY3Rpb24gPSBuZXcgQWRkUmVjaXBlRnJvbVBsYW5uZXJBY3Rpb24oXG4gICAgICAgICAgICBiYXNrZXRFbnRyeSxcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgdGhpcy5iYXNrZXRzU2VydmljZSxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRoaXMuc3VwcGxpZXJzU2VydmljZVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5oYW5kbGVBY3Rpb25FcnJvcnMoYWRkUmVjaXBlRnJvbVBsYW5uZXJBY3Rpb24pO1xuICAgICAgICAgIHJldHVybiBhZGRSZWNpcGVGcm9tUGxhbm5lckFjdGlvbjtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYmFza2V0U3luY2hyb1NlcnZpY2UuYWRkVG9BY3Rpb25MaXN0KGFkZFJlY2lwZUZyb21QbGFubmVyQWN0aW9ucyk7XG5cbiAgICAgICAgcmV0dXJuIGVudHJpZXM7XG4gICAgICB9KVxuICAgICkuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIGhhc011dHVhbGl6ZWRFbnRyeShiYXNrZXRQcmV2aWV3TGluZXM6IEJhc2tldFByZXZpZXdMaW5lW10pOiBib29sZWFuIHtcbiAgICByZXR1cm4gYmFza2V0UHJldmlld0xpbmVzLnNvbWUobGluZSA9PiB7XG4gICAgICBpZiAobGluZS5pc1JlY2lwZSkge1xuICAgICAgICByZXR1cm4gbGluZS5lbnRyaWVzLmZvdW5kLnNvbWUoKGVudHJ5OiBCYXNrZXRFbnRyeSkgPT4gdGhpcy5pc0VudHJ5TXV0dWFsaXplZChlbnRyeSkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0VudHJ5TXV0dWFsaXplZChlbnRyeTogQmFza2V0RW50cnkpOiBib29sZWFuIHtcbiAgICBpZiAoZW50cnkuc3RhdHVzICE9PSAnYWN0aXZlJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZW50cnkucmVjaXBlc0lkcy5sZW5ndGggPiAxO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0UmVjaXBlc1ByaWNpbmcoKTogU3Vic2NyaXB0aW9uIHtcbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbdGhpcy5wb3NTZXJ2aWNlLndhaXRGb3JQb3MsIHRoaXMuYmFza2V0c1NlcnZpY2UuYmFza2V0JF0pLnBpcGUoXG4gICAgICBza2lwV2hpbGUocmVzdWx0ID0+ICFyZXN1bHRbMV0pXG4gICAgKS5zdWJzY3JpYmUocmVzdWx0ID0+IHtcbiAgICAgIHRoaXMucG9zID0gcmVzdWx0WzBdO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaFJlY2lwZXNQcmljaW5nKCk6IE9ic2VydmFibGU8UmVjaXBlUHJpY2luZ1tdPiB7XG4gICAgaWYgKHRoaXMuYnVkZ2V0dGVkUmVjaXBlcy5sZW5ndGggPT09IDAgfHwgIXRoaXMucG9zIHx8ICEodGhpcy5mb3JtLnZhbHVlIGFzIHsgZ3Vlc3RzQ291bnQ6IG51bWJlciB9KS5ndWVzdHNDb3VudCkge1xuICAgICAgcmV0dXJuIG9mKFtdIGFzIFJlY2lwZVByaWNpbmdbXSk7XG4gICAgfVxuICAgIGNvbnN0IHJlcXVlc3RzOiBPYnNlcnZhYmxlPFJlY2lwZVByaWNpbmc+W10gPSBbXTtcbiAgICB0aGlzLmJ1ZGdldHRlZFJlY2lwZXNQcmljZXMgPSB7fTtcbiAgICB0aGlzLmJ1ZGdldHRlZFJlY2lwZXMuZm9yRWFjaChyZWNpcGUgPT4ge1xuICAgICAgaWYgKHJlY2lwZSkge1xuICAgICAgICByZXF1ZXN0cy5wdXNoKFxuICAgICAgICAgIHRoaXMucmVjaXBlc1NlcnZpY2UuZ2V0UHJpY2luZyhcbiAgICAgICAgICAgIHJlY2lwZS5pZCxcbiAgICAgICAgICAgIHRoaXMucG9zLmlkLFxuICAgICAgICAgICAgKHRoaXMuZm9ybS52YWx1ZSBhcyB7IGd1ZXN0c0NvdW50OiBudW1iZXIgfSkuZ3Vlc3RzQ291bnRcbiAgICAgICAgICApLnBpcGUoXG4gICAgICAgICAgICBza2lwV2hpbGUocmVzdWx0ID0+ICFyZXN1bHQ/LnByaWNlKSxcbiAgICAgICAgICAgIHRhcChwcmljaW5nID0+IHRoaXMuYnVkZ2V0dGVkUmVjaXBlc1ByaWNlc1tyZWNpcGUuaWRdID0gcHJpY2luZy5wcmljZSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcXVlc3RzLmxlbmd0aCA+IDAgPyBmb3JrSm9pbihyZXF1ZXN0cykgOiBvZihbXSBhcyBSZWNpcGVQcmljaW5nW10pO1xuICB9XG5cbiAgdXBkYXRlQnVkZ2V0VmFsdWVzKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHRoaXMuZmV0Y2hCdWRnZXRWYWx1ZXMoKS5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBwcml2YXRlIGZldGNoQnVkZ2V0VmFsdWVzKCk6IE9ic2VydmFibGU8UmVjaXBlUHJpY2luZ1tdPiB7XG4gICAgcmV0dXJuIHRoaXMuZmV0Y2hSZWNpcGVzUHJpY2luZygpLnBpcGUodGFwKHByaWNpbmdzID0+IHtcbiAgICAgIHRoaXMudXNlZEJ1ZGdldCA9IHByaWNpbmdzLmxlbmd0aCA+IDAgPyBwcmljaW5ncy5yZWR1Y2UoKGFjYywgcHJpY2luZykgPT4gYWNjICsgcHJpY2luZy5wcmljZSwgMCkgOiAwO1xuICAgICAgdGhpcy51c2VkQnVkZ2V0ID0gTWF0aC5yb3VuZCh0aGlzLnVzZWRCdWRnZXQgKiAxMDApIC8gMTAwO1xuICAgICAgdGhpcy5tYXhCdWRnZXQgPSAodGhpcy5mb3JtLnZhbHVlIGFzIHsgYnVkZ2V0OiBudW1iZXIgfSkuYnVkZ2V0O1xuICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pKTtcbiAgfVxuXG4gIG9wZW5DYXRhbG9nKHJlY2lwZVRvQ2hhbmdlSW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMucmVjaXBlVG9DaGFuZ2VJbmRleCA9IHJlY2lwZVRvQ2hhbmdlSW5kZXg7XG4gICAgdGhpcy5jYXRhbG9nTW9kZSA9IHRydWU7XG4gICAgdGhpcy5zY3JvbGxUb1RvcCgpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGNsb3NlQ2F0YWxvZygpOiB2b2lkIHtcbiAgICB0aGlzLnJlY2lwZVRvQ2hhbmdlSW5kZXggPSBudWxsO1xuICAgIHRoaXMuY2F0YWxvZ01vZGUgPSBmYWxzZTtcbiAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZWRpdFJlY2lwZShyZWNpcGU6IFJlY2lwZSk6IHZvaWQge1xuICAgIHRoaXMuYnVkZ2V0dGVkUmVjaXBlc1t0aGlzLnJlY2lwZVRvQ2hhbmdlSW5kZXhdID0gcmVjaXBlO1xuICAgIHRoaXMudXBkYXRlQnVkZ2V0VmFsdWVzKCk7XG4gICAgdGhpcy5jbG9zZUNhdGFsb2coKTtcbiAgfVxuXG4gIG9wZW5CYXNrZXRDb25maXJtYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5yZWNpcGVUb0NoYW5nZUluZGV4ID0gbnVsbDtcbiAgICB0aGlzLmJhc2tldENvbmZpcm1lZCA9IHRydWU7XG4gICAgdGhpcy5zZW5kQ29uZmlybWF0aW9uRXZlbnQoKTtcbiAgICB0aGlzLnNjcm9sbFRvVG9wKCk7XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEB0b2RvIG5vdCBzdXJlIGl0IGlzIGNhbGxlZCBjb3JyZWN0bHlcbiAgICogQHRvZG8gaW1wbGVtZW50IG90aGVyIHBsYW5uZXIgZXZlbnRzXG4gICAqL1xuICBzZW5kQ29uZmlybWF0aW9uRXZlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5hbmFseXRpY3NTZXJ2aWNlLnNlbmRFdmVudChcbiAgICAgICdwbGFubmVyLmNvbmZpcm0nLFxuICAgICAgdGhpcy5wYXRoLFxuICAgICAge1xuICAgICAgICBidWRnZXRfdXNlcjogdGhpcy51c2VkQnVkZ2V0LnRvU3RyaW5nKCksXG4gICAgICAgIGJ1ZGdldF9wbGFubmVyOiAodGhpcy5mb3JtLmdldCgnYnVkZ2V0JykudmFsdWUgYXMgbnVtYmVyKS50b1N0cmluZygpLFxuICAgICAgICByZWNpcGVfY291bnQ6ICh0aGlzLmZvcm0uZ2V0KCdyZWNpcGVzQ291bnQnKS52YWx1ZSBhcyBudW1iZXIpLnRvU3RyaW5nKCksXG4gICAgICAgIGd1ZXN0czogKHRoaXMuZm9ybS5nZXQoJ2d1ZXN0c0NvdW50JykudmFsdWUgYXMgbnVtYmVyKS50b1N0cmluZygpLFxuICAgICAgICB1c2VzX2NvdW50OiB0aGlzLnVwZGF0ZVVzZXNDb3VudCgpLnRvU3RyaW5nKCksXG4gICAgICAgIHRpbWVfcGFzc2VkOiAoKERhdGUubm93KCkgLSB0aGlzLnRpbWVPblN0YXJ0KSAvIDEwMDApLnRvU3RyaW5nKClcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgdXBkYXRlVXNlc0NvdW50KCk6IG51bWJlciB7XG4gICAgY29uc3Qgb2xkQ291bnQgPSBwYXJzZUludChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbWlhbS1tZWFscy1wbGFubmVyLXVzZXMtY291bnQnKSwgMTApO1xuICAgIGNvbnN0IG5ld0NvdW50ID0gTnVtYmVyLmlzTmFOKG9sZENvdW50KSA/IDEgOiBvbGRDb3VudCArIDE7XG4gICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ21pYW0tbWVhbHMtcGxhbm5lci11c2VzLWNvdW50JywgbmV3Q291bnQudG9TdHJpbmcoKSk7XG4gICAgcmV0dXJuIG5ld0NvdW50O1xuICB9XG5cbiAgc2Nyb2xsVG9Ub3AoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudG9wQW5jaG9yKSB7XG4gICAgICB0aGlzLnRvcEFuY2hvci5uYXRpdmVFbGVtZW50LnNjcm9sbEludG9WaWV3KCk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVXNlZEJ1ZGdldCh1c2VkQnVkZ2V0OiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnVzZWRCdWRnZXQgPSB1c2VkQnVkZ2V0O1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFBsYW5uZXJEYXNoYm9hcmRIVE1MKCk6IE9ic2VydmFibGU8U2FmZUh0bWw+IHtcbiAgICBjb25zdCB1cmxQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIGNvbnN0IHNraXBEYXNoYm9hcmQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnX21lYWx6L3BsYW5uZXIvZnJvbS1lbnRyeScpID09PSAndHJ1ZScgfHwgdXJsUGFyYW1zLmdldCgnZnJvbUZlYXR1cmVkJykgPT09ICd0cnVlJztcbiAgICBpZiAoc2tpcERhc2hib2FyZCkge1xuICAgICAgcmV0dXJuIHRoaXMucGxhbm5lclNTUlNlcnZpY2UuZ2V0Q3VycmVudE1lbnUoKS5waXBlKFxuICAgICAgICBtYXAoY3VycmVudE1lbnUgPT4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoY3VycmVudE1lbnUpKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5wbGFubmVyU1NSU2VydmljZS5nZXRQbGFubmVyRGFzaGJvYXJkKCkucGlwZShcbiAgICAgIG1hcChkYXNoYm9hcmQgPT4gdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdEh0bWwoZGFzaGJvYXJkKSlcbiAgICApO1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI3BsYW5uZXJEYXNoYm9hcmRMb2FkZXI+XG4gIDxkaXYgY2xhc3M9XCJtZWFsei1wbGFubmVyLWRhc2hib2FyZF9fbG9hZGVyXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgIDxzcGFuIGNsYXNzPVwibWVhbHotcGxhbm5lci1kYXNoYm9hcmRfX2xvYWRlcl9fbGFiZWxcIj5DaGFyZ2VtZW50PC9zcGFuPlxuICAgIDxzdmdcbiAgICAgIGNsYXNzPVwibWVhbHotcGxhbm5lci1kYXNoYm9hcmRfX2xvYWRlcl9faWNvblwiXG4gICAgICB2aWV3Qm94PVwiMCAwIDgwIDgwXCJcbiAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgPlxuICAgICAgPHBhdGhcbiAgICAgICAgY2xhc3M9XCJtZWFsei1wbGFubmVyLWRhc2hib2FyZF9fbG9hZGVyX19zZWdtZW50XCJcbiAgICAgICAgc3R5bGU9XCJhbmltYXRpb24tZGVsYXk6IDBzXCJcbiAgICAgICAgZD1cIk00My43NSAyMFYxMEM0My43NSA5LjAwNTQ0IDQzLjM1NDkgOC4wNTE2MSA0Mi42NTE2IDcuMzQ4MzVDNDEuOTQ4NCA2LjY0NTA5IDQwLjk5NDYgNi4yNSA0MCA2LjI1QzM5LjAwNTQgNi4yNSAzOC4wNTE2IDYuNjQ1MDkgMzcuMzQ4MyA3LjM0ODM1QzM2LjY0NTEgOC4wNTE2MSAzNi4yNSA5LjAwNTQ0IDM2LjI1IDEwVjIwQzM2LjI1IDIwLjk5NDYgMzYuNjQ1MSAyMS45NDg0IDM3LjM0ODMgMjIuNjUxNkMzOC4wNTE2IDIzLjM1NDkgMzkuMDA1NCAyMy43NSA0MCAyMy43NUM0MC45OTQ2IDIzLjc1IDQxLjk0ODQgMjMuMzU0OSA0Mi42NTE2IDIyLjY1MTZDNDMuMzU0OSAyMS45NDg0IDQzLjc1IDIwLjk5NDYgNDMuNzUgMjBaXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBjbGFzcz1cIm1lYWx6LXBsYW5uZXItZGFzaGJvYXJkX19sb2FkZXJfX3NlZ21lbnRcIlxuICAgICAgICBzdHlsZT1cImFuaW1hdGlvbi1kZWxheTogMC4xNXNcIlxuICAgICAgICBkPVwiTTU1LjU3NjUgMjkuMzIzNEM1NS4xMjEzIDI5LjUxMjIgNTQuNjMzMyAyOS42MDk0IDU0LjE0MDUgMjkuNjA5NEM1My4zOTg2IDI5LjYwOTMgNTIuNjczNCAyOS4zODkzIDUyLjA1NjcgMjguOTc3QzUxLjQzOTkgMjguNTY0OCA1MC45NTkzIDI3Ljk3ODkgNTAuNjc1NiAyNy4yOTM0QzUwLjM5MiAyNi42MDc5IDUwLjMxOCAyNS44NTM3IDUwLjQ2MyAyNS4xMjYyQzUwLjYwOCAyNC4zOTg3IDUwLjk2NTYgMjMuNzMwNSA1MS40OTA1IDIzLjIwNjNMNTguNTUyOSAxNi4xMjVDNTkuMjU3NCAxNS40MjA1IDYwLjIxMjkgMTUuMDI0NyA2MS4yMDkyIDE1LjAyNDdDNjIuMjA1NSAxNS4wMjQ3IDYzLjE2MSAxNS40MjA1IDYzLjg2NTQgMTYuMTI1QzY0LjU2OTkgMTYuODI5NSA2NC45NjU3IDE3Ljc4NSA2NC45NjU3IDE4Ljc4MTNDNjQuOTY1NyAxOS43Nzc1IDY0LjU2OTkgMjAuNzMzIDYzLjg2NTQgMjEuNDM3NUw1Ni43OTM2IDI4LjUwOTRDNTYuNDQ1MyAyOC44NTgxIDU2LjAzMTcgMjkuMTM0NyA1NS41NzY1IDI5LjMyMzRaXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBjbGFzcz1cIm1lYWx6LXBsYW5uZXItZGFzaGJvYXJkX19sb2FkZXJfX3NlZ21lbnRcIlxuICAgICAgICBzdHlsZT1cImFuaW1hdGlvbi1kZWxheTogMC4zc1wiXG4gICAgICAgIGQ9XCJNNjAgMzYuMjVINzBDNzAuOTk0NiAzNi4yNSA3MS45NDg0IDM2LjY0NTEgNzIuNjUxNiAzNy4zNDg0QzczLjM1NDkgMzguMDUxNiA3My43NSAzOS4wMDU0IDczLjc1IDQwQzczLjc1IDQwLjk5NDYgNzMuMzU0OSA0MS45NDg0IDcyLjY1MTYgNDIuNjUxNkM3MS45NDg0IDQzLjM1NDkgNzAuOTk0NiA0My43NSA3MCA0My43NUg2MEM1OS4wMDU0IDQzLjc1IDU4LjA1MTYgNDMuMzU0OSA1Ny4zNDg0IDQyLjY1MTZDNTYuNjQ1MSA0MS45NDg0IDU2LjI1IDQwLjk5NDYgNTYuMjUgNDBDNTYuMjUgMzkuMDA1NCA1Ni42NDUxIDM4LjA1MTYgNTcuMzQ4NCAzNy4zNDg0QzU4LjA1MTYgMzYuNjQ1MSA1OS4wMDU0IDM2LjI1IDYwIDM2LjI1WlwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgY2xhc3M9XCJtZWFsei1wbGFubmVyLWRhc2hib2FyZF9fbG9hZGVyX19zZWdtZW50XCJcbiAgICAgICAgc3R5bGU9XCJhbmltYXRpb24tZGVsYXk6IDAuNDVzXCJcbiAgICAgICAgZD1cIk01NS41NzQ5IDUwLjY3NjNDNTYuMDMwNyA1MC44NjUxIDU2LjQ0NDggNTEuMTQxOCA1Ni43OTM2IDUxLjQ5MDZMNjMuODY1NSA1OC41NjI1QzY0LjU3IDU5LjI2NyA2NC45NjU3IDYwLjIyMjUgNjQuOTY1NyA2MS4yMTg4QzY0Ljk2NTcgNjIuMjE1IDY0LjU3IDYzLjE3MDUgNjMuODY1NSA2My44NzVDNjMuMTYxIDY0LjU3OTUgNjIuMjA1NSA2NC45NzUzIDYxLjIwOTIgNjQuOTc1M0M2MC4yMTMgNjQuOTc1MyA1OS4yNTc1IDY0LjU3OTUgNTguNTUzIDYzLjg3NUw1MS40ODExIDU2LjgwMzFDNTEuMTMyMyA1Ni40NTQzIDUwLjg1NTYgNTYuMDQwMiA1MC42NjY4IDU1LjU4NDRDNTAuNDc4IDU1LjEyODcgNTAuMzgwOSA1NC42NDAyIDUwLjM4MDkgNTQuMTQ2OUM1MC4zODA5IDUzLjY1MzYgNTAuNDc4IDUzLjE2NTEgNTAuNjY2OCA1Mi43MDkzQzUwLjg1NTYgNTIuMjUzNiA1MS4xMzIzIDUxLjgzOTUgNTEuNDgxMSA1MS40OTA2QzUxLjgyOTkgNTEuMTQxOCA1Mi4yNDQxIDUwLjg2NTEgNTIuNjk5OCA1MC42NzYzQzUzLjE1NTYgNTAuNDg3NSA1My42NDQxIDUwLjM5MDQgNTQuMTM3NCA1MC4zOTA0QzU0LjYzMDcgNTAuMzkwNCA1NS4xMTkyIDUwLjQ4NzUgNTUuNTc0OSA1MC42NzYzWlwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgY2xhc3M9XCJtZWFsei1wbGFubmVyLWRhc2hib2FyZF9fbG9hZGVyX19zZWdtZW50XCJcbiAgICAgICAgc3R5bGU9XCJhbmltYXRpb24tZGVsYXk6IDAuNnNcIlxuICAgICAgICBkPVwiTTM3LjM0ODMgNTcuMzQ4NEMzOC4wNTE2IDU2LjY0NTEgMzkuMDA1NCA1Ni4yNSA0MCA1Ni4yNUM0MC45OTQ2IDU2LjI1IDQxLjk0ODQgNTYuNjQ1MSA0Mi42NTE2IDU3LjM0ODRDNDMuMzU0OSA1OC4wNTE2IDQzLjc1IDU5LjAwNTQgNDMuNzUgNjBWNzBDNDMuNzUgNzAuOTk0NiA0My4zNTQ5IDcxLjk0ODQgNDIuNjUxNiA3Mi42NTE2QzQxLjk0ODQgNzMuMzU0OSA0MC45OTQ2IDczLjc1IDQwIDczLjc1QzM5LjAwNTQgNzMuNzUgMzguMDUxNiA3My4zNTQ5IDM3LjM0ODMgNzIuNjUxNkMzNi42NDUxIDcxLjk0ODQgMzYuMjUgNzAuOTk0NiAzNi4yNSA3MFY2MEMzNi4yNSA1OS4wMDU0IDM2LjY0NTEgNTguMDUxNiAzNy4zNDgzIDU3LjM0ODRaXCJcbiAgICAgIC8+XG4gICAgICA8cGF0aFxuICAgICAgICBjbGFzcz1cIm1lYWx6LXBsYW5uZXItZGFzaGJvYXJkX19sb2FkZXJfX3NlZ21lbnRcIlxuICAgICAgICBzdHlsZT1cImFuaW1hdGlvbi1kZWxheTogMC43NXNcIlxuICAgICAgICBkPVwiTTE2LjEzNDQgNTguNTYyNUwyMy4yMDYzIDUxLjQ5MDZDMjMuOTEwOCA1MC43ODYyIDI0Ljg2NjMgNTAuMzkwNCAyNS44NjI2IDUwLjM5MDRDMjYuODU4OCA1MC4zOTA0IDI3LjgxNDMgNTAuNzg2MiAyOC41MTg4IDUxLjQ5MDZDMjkuMjIzMyA1Mi4xOTUxIDI5LjYxOTEgNTMuMTUwNiAyOS42MTkxIDU0LjE0NjlDMjkuNjE5MSA1NS4xNDMyIDI5LjIyMzMgNTYuMDk4NyAyOC41MTg4IDU2LjgwMzFMMjEuNDQ2OSA2My44NzVDMjAuNzQyNSA2NC41Nzk1IDE5Ljc4NyA2NC45NzUzIDE4Ljc5MDcgNjQuOTc1M0MxNy43OTQ0IDY0Ljk3NTMgMTYuODM4OSA2NC41Nzk1IDE2LjEzNDQgNjMuODc1QzE1LjQzIDYzLjE3MDUgMTUuMDM0MiA2Mi4yMTUgMTUuMDM0MiA2MS4yMTg4QzE1LjAzNDIgNjAuMjIyNSAxNS40MyA1OS4yNjcgMTYuMTM0NCA1OC41NjI1WlwiXG4gICAgICAvPlxuICAgICAgPHBhdGhcbiAgICAgICAgY2xhc3M9XCJtZWFsei1wbGFubmVyLWRhc2hib2FyZF9fbG9hZGVyX19zZWdtZW50XCJcbiAgICAgICAgc3R5bGU9XCJhbmltYXRpb24tZGVsYXk6IDAuOXNcIlxuICAgICAgICBkPVwiTTIzLjc1IDQwQzIzLjc1IDM5LjAwNTQgMjMuMzU0OSAzOC4wNTE2IDIyLjY1MTYgMzcuMzQ4NEMyMS45NDg0IDM2LjY0NTEgMjAuOTk0NiAzNi4yNSAyMCAzNi4yNUgxMEM5LjAwNTQ0IDM2LjI1IDguMDUxNjEgMzYuNjQ1MSA3LjM0ODM1IDM3LjM0ODRDNi42NDUwOSAzOC4wNTE2IDYuMjUgMzkuMDA1NCA2LjI1IDQwQzYuMjUgNDAuOTk0NiA2LjY0NTA5IDQxLjk0ODQgNy4zNDgzNSA0Mi42NTE2QzguMDUxNjEgNDMuMzU0OSA5LjAwNTQ0IDQzLjc1IDEwIDQzLjc1SDIwQzIwLjk5NDYgNDMuNzUgMjEuOTQ4NCA0My4zNTQ5IDIyLjY1MTYgNDIuNjUxNkMyMy4zNTQ5IDQxLjk0ODQgMjMuNzUgNDAuOTk0NiAyMy43NSA0MFpcIlxuICAgICAgLz5cbiAgICAgIDxwYXRoXG4gICAgICAgIGNsYXNzPVwibWVhbHotcGxhbm5lci1kYXNoYm9hcmRfX2xvYWRlcl9fc2VnbWVudFwiXG4gICAgICAgIHN0eWxlPVwiYW5pbWF0aW9uLWRlbGF5OiAxLjA1c1wiXG4gICAgICAgIGQ9XCJNMTguNzgwOSAxNS4wMzQxQzE5Ljc3NzIgMTUuMDM0MSAyMC43MzI3IDE1LjQyOTkgMjEuNDM3MiAxNi4xMzQ0TDI4LjUxODQgMjMuMTk2OUMyOS4yMjI5IDIzLjkwMTQgMjkuNjE4NyAyNC44NTY4IDI5LjYxODcgMjUuODUzMUMyOS42MTg3IDI2Ljg0OTQgMjkuMjIyOSAyNy44MDQ5IDI4LjUxODQgMjguNTA5NEMyNy44MTM5IDI5LjIxMzkgMjYuODU4NSAyOS42MDk2IDI1Ljg2MjIgMjkuNjA5NkMyNC44NjU5IDI5LjYwOTYgMjMuOTEwNCAyOS4yMTM5IDIzLjIwNTkgMjguNTA5NEwxNi4xMjQ3IDIxLjQ0NjlDMTUuNDIwMiAyMC43NDI0IDE1LjAyNDQgMTkuNzg2OSAxNS4wMjQ0IDE4Ljc5MDZDMTUuMDI0NCAxNy43OTQzIDE1LjQyMDIgMTYuODM4OSAxNi4xMjQ3IDE2LjEzNDRDMTYuODI5MSAxNS40Mjk5IDE3Ljc4NDYgMTUuMDM0MSAxOC43ODA5IDE1LjAzNDFaXCJcbiAgICAgIC8+XG4gICAgPC9zdmc+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSA8ZGl2ICNtaWFtTWVhbHNQbGFubmVyVG9wQW5jaG9yIGNsYXNzPVwibWlhbS1tZWFscy1wbGFubmVyLWFuY2hvclwiPjwvZGl2PiAtLT5cbjwhLS0gPGRpdiBjbGFzcz1cIm1pYW0tbWVhbHMtcGxhbm5lclwiICpuZ0lmPVwiZmVhdHVyZUlzQXV0aG9yaXplZFwiPlxuICA8ZGl2IGNsYXNzPVwibWlhbS1tZWFscy1wbGFubmVyX19oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWlhbS1tZWFscy1wbGFubmVyX19oZWFkZXJfX2JyZWFkY3J1bWJcIiBbbmdDbGFzc109XCJ7ICdoaWRkZW4nOiBidWRnZXR0ZWRSZWNpcGVzLmxlbmd0aCA9PT0gMCB9XCI+XG4gICAgICA8YSBocmVmPVwiL1wiPlxuICAgICAgICA8bmctbWlhbS1pY29uXG4gICAgICAgICAgW2ljb25OYW1lXT1cImljb24uSG9tZVwiXG4gICAgICAgICAgd2lkdGg9XCIxOFwiXG4gICAgICAgICAgaGVpZ2h0PVwiMThcIlxuICAgICAgICAgIHByaW1hcnlDb2xvcj1cIiMwRjE5MUZcIlxuICAgICAgICA+PC9uZy1taWFtLWljb24+XG4gICAgICA8L2E+XG4gICAgICA8bmctbWlhbS1pY29uIFtpY29uTmFtZV09XCJpY29uLkNoZXZyb25Eb3duXCIgY2xhc3M9XCJjaGV2cm9uLXJpZ2h0XCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+PC9uZy1taWFtLWljb24+XG4gICAgICA8YSBbaHJlZl09XCJjb250ZXh0U2VydmljZS5jYXRhbG9nVXJsXCIgY2xhc3M9XCJpbmFjdGl2ZVwiPlxuICAgICAgICA8c3BhbiBpMThuPklkw6llcyByZXBhczwvc3Bhbj5cbiAgICAgIDwvYT5cbiAgICAgIDxuZy1taWFtLWljb24gW2ljb25OYW1lXT1cImljb24uQ2hldnJvbkRvd25cIiBjbGFzcz1cImNoZXZyb24tcmlnaHRcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj48L25nLW1pYW0taWNvbj5cbiAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImFjdGl2ZVwiPlxuICAgICAgICA8c3BhbiBpMThuPlBsYW5pZmllciBtZXMgcmVwYXM8L3NwYW4+XG4gICAgICA8L2E+XG4gICAgICA8bmctbWlhbS1pY29uICpuZ0lmPVwiY2F0YWxvZ01vZGUgJiYgIWJhc2tldENvbmZpcm1lZFwiIFtpY29uTmFtZV09XCJpY29uLkNoZXZyb25Eb3duXCIgY2xhc3M9XCJjaGV2cm9uLXJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+PC9uZy1taWFtLWljb24+XG4gICAgICA8YSAqbmdJZj1cImNhdGFsb2dNb2RlICYmICFiYXNrZXRDb25maXJtZWRcIiBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCIgY2xhc3M9XCJzdWJDYXRlZ29yeVwiPlxuICAgICAgICA8c3BhbiBpMThuPkFqb3V0ZXIgdW5lIGlkw6llIHJlcGFzPC9zcGFuPlxuICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1pYW0tbWVhbHMtcGxhbm5lcl9fY29udGVudFwiICpuZ0lmPVwiZm9ybVwiPlxuICAgIDxuZy1taWFtLW1lYWxzLXBsYW5uZXItZm9ybVxuICAgICAgKm5nSWY9XCJhZGRlZFJlY2lwZXNJZHMubGVuZ3RoID09PSAwICYmICFjYXRhbG9nTW9kZSAmJiAhYmFza2V0Q29uZmlybWVkXCJcbiAgICAgIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlXCJcbiAgICAgIFtyZWR1Y2VkXT1cImJ1ZGdldHRlZFJlY2lwZXMubGVuZ3RoID4gMFwiIFtmb3JtXT1cImZvcm1cIiBbbG9hZGluZ109XCJsb2FkaW5nXCJcbiAgICAgIChzdWJtaXR0ZWQpPVwiZmV0Y2hSZWNpcGVzKCRldmVudClcIlxuICAgICAgW25nQ2xhc3NdPVwieyAncmVkdWNlZCc6IGJ1ZGdldHRlZFJlY2lwZXMubGVuZ3RoID4gMCB9XCI+PC9uZy1taWFtLW1lYWxzLXBsYW5uZXItZm9ybT5cbiAgICA8bmctbWlhbS1tZWFscy1wbGFubmVyLXJlc3VsdFxuICAgICAgKm5nSWY9XCJidWRnZXR0ZWRSZWNpcGVzLmxlbmd0aCA+IDAgJiYgYWRkZWRSZWNpcGVzSWRzLmxlbmd0aCA9PT0gMCAmJiAhY2F0YWxvZ01vZGUgJiYgIWJhc2tldENvbmZpcm1lZFwiXG4gICAgICBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZVwiXG4gICAgICBbcmVjaXBlc109XCJidWRnZXR0ZWRSZWNpcGVzXCIgW3VzZWRCdWRnZXRdPVwidXNlZEJ1ZGdldFwiIFttYXhCdWRnZXRdPVwibWF4QnVkZ2V0XCIgW2xvYWRpbmddPVwibG9hZGluZ1wiXG4gICAgICAocmVjaXBlUmVtb3ZhbCk9XCJ1cGRhdGVCdWRnZXRWYWx1ZXMoKVwiXG4gICAgICAoY29uZmlybWVkKT1cImFkZFJlY2lwZXMoKVwiIChvcGVuQ2F0YWxvZyk9XCJvcGVuQ2F0YWxvZygkZXZlbnQpXCI+PC9uZy1taWFtLW1lYWxzLXBsYW5uZXItcmVzdWx0PlxuICAgIDxuZy1taWFtLW1lYWxzLXBsYW5uZXItYmFza2V0LXByZXZpZXdcbiAgICAgICpuZ0lmPVwiYWRkZWRSZWNpcGVzSWRzLmxlbmd0aCA+IDAgJiYgIWNhdGFsb2dNb2RlICYmICFiYXNrZXRDb25maXJtZWRcIlxuICAgICAgW3JlY2lwZXNJZHNdPVwiYWRkZWRSZWNpcGVzSWRzXCJcbiAgICAgIFt1c2VkQnVkZ2V0XT1cInVzZWRCdWRnZXRcIlxuICAgICAgW21heEJ1ZGdldF09XCJtYXhCdWRnZXRcIlxuICAgICAgW2d1ZXN0c109XCJmb3JtLnZhbHVlLmd1ZXN0c0NvdW50XCJcbiAgICAgIFtpbmdyZWRpZW50c1JlZ3JvdXBlZF09XCJpbmdyZWRpZW50c1JlZ3JvdXBlZFwiXG4gICAgICBbb3JpZ2luVHJhY2VdPVwiZXZlbnRUcmFjZVwiXG4gICAgICBbbmdDbGFzc109XCJ7ICdyZWR1Y2VkJzogYWRkZWRSZWNpcGVzSWRzLmxlbmd0aCA9PT0gMCAmJiAhY2F0YWxvZ01vZGUgJiYgIWJhc2tldENvbmZpcm1lZH1cIlxuICAgICAgKGNsb3NlZCk9XCJvcGVuQmFza2V0Q29uZmlybWF0aW9uKClcIlxuICAgICAgKHVzZWRCdWRnZXRDaGFuZ2VkKT1cInVwZGF0ZVVzZWRCdWRnZXQoJGV2ZW50KVwiPlxuICAgIDwvbmctbWlhbS1tZWFscy1wbGFubmVyLWJhc2tldC1wcmV2aWV3PlxuICAgIDxuZy1taWFtLW1lYWxzLXBsYW5uZXItY2F0YWxvZ1xuICAgICAgKm5nSWY9XCJjYXRhbG9nTW9kZSAmJiAhYmFza2V0Q29uZmlybWVkXCJcbiAgICAgIFttb2RpZmllZEd1ZXN0c109XCJmb3JtLnZhbHVlLmd1ZXN0c0NvdW50XCJcbiAgICAgIFtvcmlnaW5UcmFjZV09XCJldmVudFRyYWNlXCJcbiAgICAgIFtyZW1haW5pbmdCdWRnZXRdPVwicmVtYWluaW5nQnVkZ2V0XCJcbiAgICAgIFtyZW1haW5pbmdSZWNpcGVzTnVtYmVyXT1cInJlbWFpbmluZ1JlY2lwZXNOdW1iZXJcIlxuICAgICAgW2V4Y2x1ZGVkUmVjaXBlc0lkc109XCJleGNsdWRlZFJlY2lwZXNJZHNcIlxuICAgICAgKGVkaXRSZWNpcGUpPVwiZWRpdFJlY2lwZSgkZXZlbnQpXCJcbiAgICAgIChjYW5jZWxlZCk9XCJjbG9zZUNhdGFsb2coKVwiPlxuICAgIDwvbmctbWlhbS1tZWFscy1wbGFubmVyLWNhdGFsb2c+XG4gICAgPG5nLW1pYW0tbWVhbHMtcGxhbm5lci1iYXNrZXQtY29uZmlybWF0aW9uXG4gICAgICAqbmdJZj1cImJhc2tldENvbmZpcm1lZFwiXG4gICAgICBbcmVjaXBlc0lkc109XCJhZGRlZFJlY2lwZXNJZHNcIlxuICAgICAgW29yaWdpblRyYWNlXT1cImV2ZW50VHJhY2VcIlxuICAgICAgW2J1ZGdldF09XCJ1c2VkQnVkZ2V0XCI+XG4gICAgPC9uZy1taWFtLW1lYWxzLXBsYW5uZXItYmFza2V0LWNvbmZpcm1hdGlvbj5cbiAgPC9kaXY+XG48L2Rpdj4gLS0+XG48ZGl2IGNsYXNzPVwibWVhbHotcGxhbm5lci1kYXNoYm9hcmRfX3dyYXBwZXJcIj5cbiAgPGRpdlxuICAgICpuZ0lmPVwicGxhbm5lckRhc2hib2FyZExvYWRpbmdcIlxuICAgIGNsYXNzPVwibWVhbHotcGxhbm5lci1kYXNoYm9hcmRfX2xvYWRlci1jb250YWluZXJcIlxuICA+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInBsYW5uZXJEYXNoYm9hcmRMb2FkZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8c3BhbiBjbGFzcz1cIm1pYW0tZHMtdGV4dCBzaXplLXhzIHdlaWdodC1sXCIgaTE4bj5cbiAgICAgIE5vdXMgcHLDqXBhcm9ucyB2b3MgcmVjZXR0ZXMuLi5cbiAgICA8L3NwYW4+XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJtZWFsei1wbGFubmVyLWRhc2hib2FyZF9fY29udGFpbmVyXCJcbiAgICBbaW5uZXJIVE1MXT1cInBsYW5uZXJEYXNoYm9hcmRIVE1MXCJcbiAgPjwvZGl2PlxuPC9kaXY+XG4iXX0=