adb-shared 3.0.34 → 3.0.36

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.
@@ -1,17 +1,19 @@
1
1
  import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { NavigationEnd, } from '@angular/router';
2
3
  import { Subscription } from 'rxjs';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@angular/common/http";
5
- import * as i2 from "./environment.service";
6
- import * as i3 from "@ngx-translate/core";
7
- import * as i4 from "../../directives/click-outside.directive";
8
- import * as i5 from "@angular/common";
9
- import * as i6 from "../adb-dropdown/adb-dropdown.directive";
10
- import * as i7 from "../pagers/infinite-scroll.component";
6
+ import * as i2 from "@angular/router";
7
+ import * as i3 from "./environment.service";
8
+ import * as i4 from "@ngx-translate/core";
9
+ import * as i5 from "../../directives/click-outside.directive";
10
+ import * as i6 from "@angular/common";
11
11
  export class ADBNavComponent {
12
- constructor(httpClient, envService, trans) {
12
+ constructor(httpClient, router, envService, activatedRoute, trans) {
13
13
  this.httpClient = httpClient;
14
+ this.router = router;
14
15
  this.envService = envService;
16
+ this.activatedRoute = activatedRoute;
15
17
  this.trans = trans;
16
18
  this.subscription = new Subscription();
17
19
  this.loginClicked = new EventEmitter();
@@ -21,8 +23,11 @@ export class ADBNavComponent {
21
23
  this.translationFinished = false;
22
24
  this.lastPosition = 0;
23
25
  this.artfakta = true;
24
- this.showMenu = false;
26
+ this.showNavMenu = false;
25
27
  this.showUserMenu = false;
28
+ this.showArtfakta = true;
29
+ this.showReport = false;
30
+ this.showNOS = true;
26
31
  }
27
32
  set userName(fullName) {
28
33
  this.fullName = fullName;
@@ -42,11 +47,15 @@ export class ADBNavComponent {
42
47
  const url = this.artfakta ? '/assets/links-ap3.json' : '/assets/artportalen/links-ap3.json';
43
48
  this.subscription.add(this.httpClient.get(baseUrl + url).subscribe(result => {
44
49
  this.navigation = result;
50
+ console.log('navigation', this.navigation);
45
51
  }));
46
52
  this.initTranslations(baseUrl);
47
- }
48
- onHideTop(show) {
49
- this.shrink = show;
53
+ this.router.events.subscribe((event) => {
54
+ if (event instanceof NavigationEnd) {
55
+ this.showNavMenu = false;
56
+ this.dropMenuChange.emit(this.showNavMenu);
57
+ }
58
+ });
50
59
  }
51
60
  initTranslations(baseUrl) {
52
61
  if (this.trans.store.translations[this.trans.currentLang]) {
@@ -66,26 +75,18 @@ export class ADBNavComponent {
66
75
  }));
67
76
  }
68
77
  showMenuDropdown(show) {
69
- if (this.showMenu !== show) {
70
- this.showMenu = show;
78
+ this.showUserMenu = false;
79
+ if (this.showNavMenu !== show) {
80
+ this.showNavMenu = show;
71
81
  this.dropMenuChange.emit(show);
72
82
  }
73
83
  }
74
84
  setLanguage(lang) {
75
85
  this.trans.use(lang);
76
- this.showMenu = false;
86
+ this.showNavMenu = false;
77
87
  this.dropMenuChange.emit(false);
78
88
  //TODO: set localstorage/cookies or probaly event to main app
79
89
  }
80
- onExpandLink(event, transId) {
81
- event.preventDefault();
82
- event.stopPropagation();
83
- if (this.expandedLink === transId) {
84
- this.expandedLink = null;
85
- return;
86
- }
87
- this.expandedLink = transId;
88
- }
89
90
  login() {
90
91
  this.loginClicked.emit();
91
92
  }
@@ -96,12 +97,12 @@ export class ADBNavComponent {
96
97
  this.subscription.unsubscribe();
97
98
  }
98
99
  }
99
- /** @nocollapse */ ADBNavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ADBNavComponent, deps: [{ token: i1.HttpClient }, { token: i2.EnvironmentService }, { token: i3.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
100
- /** @nocollapse */ ADBNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: ADBNavComponent, selector: "adb-nav", inputs: { showPattern: "showPattern", userName: "userName", artfakta: "artfakta" }, outputs: { loginClicked: "loginClicked", logoutClicked: "logoutClicked", dropMenuChange: "dropMenuChange" }, ngImport: i0, template: "<!-- position-static -->\r\n<div class=\"bg-primary fixed-sm-top p-2\" [attr.id]=\"showPattern&&!showMenu?'pattern':''\" [class.shrink]=\"shrink\" (adbClickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <header id=\"extra-header\">\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <nav class=\"d-flex gap-2 align-items-center\">\r\n <div class=\"me-5\">\r\n <a class=\"text-white text-decoration-none d-flex gap-2\" href=\"https://www.artdatabanken.se/\" target=\"new\">\r\n <img style=\"height: 2rem;\" src=\"/assets/images/logo_sm_white.png\">\r\n <div class=\"border-end\"></div>\r\n <small class=\"align-self-center\">ARTDATABANKEN</small>\r\n </a>\r\n </div>\r\n <a class=\"text-white fw-bold fs-3\" href=\"/\">ARTFAKTA</a>\r\n </nav>\r\n <ng-container *ngIf=\"translationFinished\">\r\n <div class=\"ms-auto d-flex gap-2\">\r\n <div class=\"btn-group d-block no-caret\">\r\n <button adbDropdown class=\"px-1 py-0 btn btn-primary btn-sm dropdown-toggle\"><span class=\"far fa-globe\"></span></button>\r\n <ul class=\"dropdown-menu dropdown-menu-end py-1 bg-primary\">\r\n <li>\r\n <button type=\"button\" [class.pe-none]=\"trans.currentLang==='sv'\" (click)=\"setLanguage('sv')\" class=\"btn btn-link py-0 px-2 text-white\">\r\n <span [class.fw-bold]=\"trans.currentLang==='sv'\">{{'ADB_HEADER.IN_SWEDISH'|translate}}</span>\r\n </button>\r\n </li>\r\n <div class=\"dropdown-divider my-1 opacity-25 bg-white\"></div>\r\n <li>\r\n <button type=\"button\" [class.pe-none]=\"trans.currentLang==='en'\" (click)=\"setLanguage('en')\" class=\"btn btn-link py-0 px-2 text-white\">\r\n <span [class.fw-bold]=\"trans.currentLang==='en'\">{{'ADB_HEADER.IN_ENGLISH'|translate}}</span>\r\n </button>\r\n </li>\r\n </ul>\r\n </div>\r\n <a class=\"ms-auto text-white d-none d-md-block\" [href]=\"navigation.artportalenUrl\">\r\n {{'ADB_HEADER.ARTPORTALEN_TITLE'|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" [href]=\"navigation.supportUrl\">Support</a>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n </header>\r\n <header class=\"d-flex align-items-center flex-wrap gap-2\" *ngIf=\"translationFinished\">\r\n <nav *ngIf=\"navigation\" class=\"d-flex align-items-center gap-3\">\r\n <a href=\"https://www.artdatabanken.se/\" class=\"home-link\" target=\"new\"><img src=\"/assets/images/logo_sm_white.png\" style=\"height: 2rem;\"></a>\r\n <a class=\"text-white fw-bold me-3 home-link\" href=\"{{navigation.artfakta.url}}\">\r\n {{navigation.artfakta.transId|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" href=\"{{navigation.artinfo.url}}\">\r\n {{navigation.artinfo.transId|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" href=\"{{navigation.observations.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" href=\"{{navigation.nameAndRelationship.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.nameAndRelationship.transId|translate}}\r\n </a>\r\n </nav>\r\n <div class=\"ms-auto\">\r\n <div class=\"btn-group no-caret d-none d-md-block\">\r\n <button type=\"button\" adbDropdown class=\"btn btn-primary btn-sm dropdown-toggle\" [class.initials]=\"initials\" (click)=\"showMenuDropdown(!showMenu)\">\r\n <ng-container *ngIf=\"initials\">{{initials}}</ng-container>\r\n <ng-container *ngIf=\"!initials\">{{'ADB_HEADER.LOGIN'|translate}}</ng-container>\r\n </button>\r\n <ul class=\"dropdown-menu dropdown-menu-end py-1 bg-primary text-white\">\r\n <ng-container *ngIf=\"initials\">\r\n <li class=\"px-2 pb-1\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0 text-white\">\r\n <span class=\"fas fa-sign-out-alt me-1\"></span>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </li>\r\n <hr class=\"my-0\">\r\n <li class=\"pt-1 px-2\">\r\n <span class=\"fas fa-user me-1\"></span>\r\n {{fullName}}\r\n </li>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <li>\r\n <div class=\"text-center \">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n </li>\r\n <li>\r\n <a *ngIf=\"navigation\" class=\"d-block text-center mt-2 text-white\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n <div class=\"d-block d-md-none\">\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ms-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </header>\r\n <div class=\"mobile-menu d-flex flex-column d-md-none bg-primary text-white\" *ngIf=\"showMenu&&navigation\">\r\n <div class=\"p-2\">\r\n <div class=\"d-flex justify-content-between align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex justify-content-between gap-2\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\"\r\n class=\"btn btn-primary text-white\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"px-2\">\r\n <hr class=\"my-0\">\r\n <ul class=\"list-unstyled\">\r\n <li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.artinfo.url}}\">\r\n {{navigation.artinfo.transId|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.observations.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.nameAndRelationship.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.nameAndRelationship.transId|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" [href]=\"navigation.artportalenUrl\">\r\n {{'ADB_HEADER.ARTPORTALEN_TITLE'|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <small class=\"d-block text-white py-2\">\r\n {{'ADB_HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\"><u>{{'ADB_HEADER.ARTDATABANKEN'|translate}}</u></a>\r\n </small>\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"mt-auto splash-height\" id=\"pattern\"></div>\r\n </div>\r\n</div>\r\n<div (onVisible)=\"onHideTop(false)\" (onHidden)=\"onHideTop(true)\" style=\"height:0px\"></div>", directives: [{ type: i4.ClickOutsideDirective, selector: "[adbClickOutside]", outputs: ["adbClickOutside"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.AdbDropdownDirective, selector: "[adbDropdown]", inputs: ["insideClick"], outputs: ["adbDropdown"], exportAs: ["adbDropdown"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i7.InfiniteScrollComponent, selector: "[onVisible]", outputs: ["onVisible", "onHidden"] }], pipes: { "translate": i3.TranslatePipe } });
100
+ /** @nocollapse */ ADBNavComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ADBNavComponent, deps: [{ token: i1.HttpClient }, { token: i2.Router }, { token: i3.EnvironmentService }, { token: i2.ActivatedRoute }, { token: i4.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
101
+ /** @nocollapse */ ADBNavComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.8", type: ADBNavComponent, selector: "adb-nav", inputs: { showPattern: "showPattern", userName: "userName", artfakta: "artfakta" }, outputs: { loginClicked: "loginClicked", logoutClicked: "logoutClicked", dropMenuChange: "dropMenuChange" }, ngImport: i0, template: "<div class=\"bg-primary adb-main-header\" [attr.id]=\"showPattern?'pattern':''\" (adbClickOutside)=\"showMenuDropdown(false);\">\r\n <header class=\"container-lg d-flex align-items-center gap-2\" *ngIf=\"translationFinished\">\r\n <nav class=\"d-flex flex-grow-1 align-items-center pe-2 py-2\">\r\n <a class=\"text-white text-decoration-none d-flex gap-2\" href=\"https://www.artdatabanken.se/\" target=\"new\">\r\n <img style=\"height: 2rem;\" src=\"/assets/images/logo_sm_white.png\" alt=\"logo\">\r\n <div class=\"border-end d-none d-sm-block\"></div>\r\n <div class=\"align-self-center d-none d-sm-block pe-5\">ARTDATABANKEN</div>\r\n </a>\r\n <a routerLink=\"/\" class=\"text-white text-decoration-none fs-1 fw-bold\">Artfakta</a>\r\n </nav>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div><ng-content></ng-content></div>\r\n <div>\r\n <button class=\"btn btn-primary-dark btn-lg\" type=\"button\"\r\n attr.aria-label=\"{{'MENU'|translate}}\"\r\n (click)=\"showMenuDropdown(!showNavMenu)\">\r\n <i class=\"fas fa-bars\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </header>\r\n <div *ngIf=\"navigation\" role=\"dialog\" class=\"offcanvas offcanvas-end bg-primary text-white\"\r\n [class.show]=\"showNavMenu\" tabindex=\"-1\" aria-labelledby=\"offcanvasNav\">\r\n <div class=\"offcanvas-header\">\r\n <h1 class=\"offcanvas-title h-section mb-0\" id=\"offcanvasNav\">Artfakta</h1>\r\n <button type=\"button\" class=\"btn-close btn-close-white\" attr.aria-label=\"{{'CLOSE'|translate}}\" (click)=\"showMenuDropdown(false)\"></button>\r\n </div>\r\n <div class=\"offcanvas-body p-0\">\r\n <div class=\"d-flex flex-wrap justify-content-between align-items-center mb-2 gap-1 px-2\">\r\n <ng-container *ngIf=\"initials\">\r\n <div>\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-primary-dark\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div>{{fullName}}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <div class=\"text-center\">\r\n <button type=\"button\" class=\"btn btn-primary-dark\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"text-white\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n <ul class=\"list-group list-group-flush border-top\">\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showArtfakta?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.artinfo.url}}\">\r\n {{navigation.artinfo.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showArtfakta = !showArtfakta\"\r\n attr.aria-controls=\"artfakta-links\" attr.aria-expanded=\"{{showArtfakta}}\">\r\n <span class=\"fas\" [ngClass]=\"showArtfakta?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" *ngIf=\"showArtfakta\" id=\"artfakta-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.keys.url}}\" class=\"text-white\">\r\n {{navigation.keys.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.mySpecies.url}}\" class=\"text-white\">\r\n {{navigation.mySpecies.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.lists.url}}\" class=\"text-white\">\r\n {{navigation.lists.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.imageRec.url}}\" class=\"text-white\">\r\n {{navigation.imageRec.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.filter.url}}\" class=\"text-white\">\r\n {{navigation.filter.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showReport?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.report.url}}\">\r\n {{navigation.report.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showReport = !showReport\"\r\n attr.aria-controls=\"report-links\" attr.aria-expanded=\"{{showReport}}\">\r\n <span class=\"fas\" [ngClass]=\"showReport?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" *ngIf=\"showReport\" id=\"report-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.wanted.url}}\" class=\"text-white\">\r\n {{navigation.wanted.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.checklist.url}}\" class=\"text-white\">\r\n {{navigation.checklist.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.observations.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showNOS?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.nameAndRelationship.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.nameAndRelationship.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showNOS = !showNOS\"\r\n attr.aria-controls=\"nos-links\" attr.aria-expanded=\"{{showNOS}}\">\r\n <span class=\"fas\" [ngClass]=\"showNOS?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" *ngIf=\"showNOS\" id=\"nos-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1 text-white\">\r\n <a href=\"{{navigation.nameSearch.url}}\" class=\"text-white\">\r\n {{navigation.nameSearch.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1 text-white\">\r\n <a href=\"{{navigation.match.url}}\" class=\"text-white\">\r\n {{navigation.match.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.subcriptions.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.subcriptions.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block py-1 text-white\" [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block py-1 text-white\" [href]=\"navigation.artportalenUrl\">\r\n {{'ADB_HEADER.ARTPORTALEN_TITLE'|translate}}\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <small class=\"d-block text-white py-2\">\r\n {{'ADB_HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\"><u>{{'ADB_HEADER.ARTDATABANKEN'|translate}}</u></a>\r\n </small>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>", directives: [{ type: i5.ClickOutsideDirective, selector: "[adbClickOutside]", outputs: ["adbClickOutside"] }, { type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.RouterLinkWithHref, selector: "a[routerLink],area[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "preserveFragment", "skipLocationChange", "replaceUrl", "state", "relativeTo", "routerLink"] }, { type: i6.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], pipes: { "translate": i4.TranslatePipe } });
101
102
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ADBNavComponent, decorators: [{
102
103
  type: Component,
103
- args: [{ selector: 'adb-nav', template: "<!-- position-static -->\r\n<div class=\"bg-primary fixed-sm-top p-2\" [attr.id]=\"showPattern&&!showMenu?'pattern':''\" [class.shrink]=\"shrink\" (adbClickOutside)=\"showUserMenu=false;showMenuDropdown(false);\">\r\n <header id=\"extra-header\">\r\n <div class=\"d-flex flex-wrap gap-2\">\r\n <nav class=\"d-flex gap-2 align-items-center\">\r\n <div class=\"me-5\">\r\n <a class=\"text-white text-decoration-none d-flex gap-2\" href=\"https://www.artdatabanken.se/\" target=\"new\">\r\n <img style=\"height: 2rem;\" src=\"/assets/images/logo_sm_white.png\">\r\n <div class=\"border-end\"></div>\r\n <small class=\"align-self-center\">ARTDATABANKEN</small>\r\n </a>\r\n </div>\r\n <a class=\"text-white fw-bold fs-3\" href=\"/\">ARTFAKTA</a>\r\n </nav>\r\n <ng-container *ngIf=\"translationFinished\">\r\n <div class=\"ms-auto d-flex gap-2\">\r\n <div class=\"btn-group d-block no-caret\">\r\n <button adbDropdown class=\"px-1 py-0 btn btn-primary btn-sm dropdown-toggle\"><span class=\"far fa-globe\"></span></button>\r\n <ul class=\"dropdown-menu dropdown-menu-end py-1 bg-primary\">\r\n <li>\r\n <button type=\"button\" [class.pe-none]=\"trans.currentLang==='sv'\" (click)=\"setLanguage('sv')\" class=\"btn btn-link py-0 px-2 text-white\">\r\n <span [class.fw-bold]=\"trans.currentLang==='sv'\">{{'ADB_HEADER.IN_SWEDISH'|translate}}</span>\r\n </button>\r\n </li>\r\n <div class=\"dropdown-divider my-1 opacity-25 bg-white\"></div>\r\n <li>\r\n <button type=\"button\" [class.pe-none]=\"trans.currentLang==='en'\" (click)=\"setLanguage('en')\" class=\"btn btn-link py-0 px-2 text-white\">\r\n <span [class.fw-bold]=\"trans.currentLang==='en'\">{{'ADB_HEADER.IN_ENGLISH'|translate}}</span>\r\n </button>\r\n </li>\r\n </ul>\r\n </div>\r\n <a class=\"ms-auto text-white d-none d-md-block\" [href]=\"navigation.artportalenUrl\">\r\n {{'ADB_HEADER.ARTPORTALEN_TITLE'|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" [href]=\"navigation.supportUrl\">Support</a>\r\n\r\n </div>\r\n </ng-container>\r\n </div>\r\n </header>\r\n <header class=\"d-flex align-items-center flex-wrap gap-2\" *ngIf=\"translationFinished\">\r\n <nav *ngIf=\"navigation\" class=\"d-flex align-items-center gap-3\">\r\n <a href=\"https://www.artdatabanken.se/\" class=\"home-link\" target=\"new\"><img src=\"/assets/images/logo_sm_white.png\" style=\"height: 2rem;\"></a>\r\n <a class=\"text-white fw-bold me-3 home-link\" href=\"{{navigation.artfakta.url}}\">\r\n {{navigation.artfakta.transId|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" href=\"{{navigation.artinfo.url}}\">\r\n {{navigation.artinfo.transId|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" href=\"{{navigation.observations.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n <a class=\"text-white d-none d-md-block\" href=\"{{navigation.nameAndRelationship.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.nameAndRelationship.transId|translate}}\r\n </a>\r\n </nav>\r\n <div class=\"ms-auto\">\r\n <div class=\"btn-group no-caret d-none d-md-block\">\r\n <button type=\"button\" adbDropdown class=\"btn btn-primary btn-sm dropdown-toggle\" [class.initials]=\"initials\" (click)=\"showMenuDropdown(!showMenu)\">\r\n <ng-container *ngIf=\"initials\">{{initials}}</ng-container>\r\n <ng-container *ngIf=\"!initials\">{{'ADB_HEADER.LOGIN'|translate}}</ng-container>\r\n </button>\r\n <ul class=\"dropdown-menu dropdown-menu-end py-1 bg-primary text-white\">\r\n <ng-container *ngIf=\"initials\">\r\n <li class=\"px-2 pb-1\">\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-link p-0 text-white\">\r\n <span class=\"fas fa-sign-out-alt me-1\"></span>{{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </li>\r\n <hr class=\"my-0\">\r\n <li class=\"pt-1 px-2\">\r\n <span class=\"fas fa-user me-1\"></span>\r\n {{fullName}}\r\n </li>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <li>\r\n <div class=\"text-center \">\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n </li>\r\n <li>\r\n <a *ngIf=\"navigation\" class=\"d-block text-center mt-2 text-white\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </li>\r\n </ng-container>\r\n </ul>\r\n </div>\r\n <div class=\"d-block d-md-none\">\r\n <button type=\"button\" class=\"btn btn-sm py-1 px-2 btn-primary\" (click)=\"showUserMenu = false;showMenuDropdown(!showMenu)\">\r\n {{'ADB_HEADER.MENY'|translate}}\r\n <i class=\"ms-1 fas\" [ngClass]=\"showMenu?'fa-chevron-up':'fa-chevron-down'\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </header>\r\n <div class=\"mobile-menu d-flex flex-column d-md-none bg-primary text-white\" *ngIf=\"showMenu&&navigation\">\r\n <div class=\"p-2\">\r\n <div class=\"d-flex justify-content-between align-items-center gap-2\" *ngIf=\"initials\">\r\n <span class=\"initials me-2\">{{initials}}</span>\r\n <button type=\"button\" (click)=\"logout()\" class=\"btn btn-primary\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div class=\"d-flex justify-content-between gap-2\" *ngIf=\"!initials\">\r\n <button type=\"button\" (click)=\"login()\" class=\"btn btn-primary\" id=\"login\">\r\n {{'ADB_HEADER.LOGIN'|translate}}\r\n </button>\r\n <a href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\"\r\n class=\"btn btn-primary text-white\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </div>\r\n </div>\r\n <div class=\"px-2\">\r\n <hr class=\"my-0\">\r\n <ul class=\"list-unstyled\">\r\n <li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.artinfo.url}}\">\r\n {{navigation.artinfo.transId|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.observations.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.nameAndRelationship.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.nameAndRelationship.transId|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <a class=\"d-block py-1 text-white\" [href]=\"navigation.artportalenUrl\">\r\n {{'ADB_HEADER.ARTPORTALEN_TITLE'|translate}}\r\n </a>\r\n <hr class=\"my-0\">\r\n </li>\r\n <li>\r\n <small class=\"d-block text-white py-2\">\r\n {{'ADB_HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\"><u>{{'ADB_HEADER.ARTDATABANKEN'|translate}}</u></a>\r\n </small>\r\n </li>\r\n </ul>\r\n </div>\r\n <div class=\"mt-auto splash-height\" id=\"pattern\"></div>\r\n </div>\r\n</div>\r\n<div (onVisible)=\"onHideTop(false)\" (onHidden)=\"onHideTop(true)\" style=\"height:0px\"></div>" }]
104
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EnvironmentService }, { type: i3.TranslateService }]; }, propDecorators: { loginClicked: [{
104
+ args: [{ selector: 'adb-nav', template: "<div class=\"bg-primary adb-main-header\" [attr.id]=\"showPattern?'pattern':''\" (adbClickOutside)=\"showMenuDropdown(false);\">\r\n <header class=\"container-lg d-flex align-items-center gap-2\" *ngIf=\"translationFinished\">\r\n <nav class=\"d-flex flex-grow-1 align-items-center pe-2 py-2\">\r\n <a class=\"text-white text-decoration-none d-flex gap-2\" href=\"https://www.artdatabanken.se/\" target=\"new\">\r\n <img style=\"height: 2rem;\" src=\"/assets/images/logo_sm_white.png\" alt=\"logo\">\r\n <div class=\"border-end d-none d-sm-block\"></div>\r\n <div class=\"align-self-center d-none d-sm-block pe-5\">ARTDATABANKEN</div>\r\n </a>\r\n <a routerLink=\"/\" class=\"text-white text-decoration-none fs-1 fw-bold\">Artfakta</a>\r\n </nav>\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <div><ng-content></ng-content></div>\r\n <div>\r\n <button class=\"btn btn-primary-dark btn-lg\" type=\"button\"\r\n attr.aria-label=\"{{'MENU'|translate}}\"\r\n (click)=\"showMenuDropdown(!showNavMenu)\">\r\n <i class=\"fas fa-bars\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </header>\r\n <div *ngIf=\"navigation\" role=\"dialog\" class=\"offcanvas offcanvas-end bg-primary text-white\"\r\n [class.show]=\"showNavMenu\" tabindex=\"-1\" aria-labelledby=\"offcanvasNav\">\r\n <div class=\"offcanvas-header\">\r\n <h1 class=\"offcanvas-title h-section mb-0\" id=\"offcanvasNav\">Artfakta</h1>\r\n <button type=\"button\" class=\"btn-close btn-close-white\" attr.aria-label=\"{{'CLOSE'|translate}}\" (click)=\"showMenuDropdown(false)\"></button>\r\n </div>\r\n <div class=\"offcanvas-body p-0\">\r\n <div class=\"d-flex flex-wrap justify-content-between align-items-center mb-2 gap-1 px-2\">\r\n <ng-container *ngIf=\"initials\">\r\n <div>\r\n <button (click)=\"logout()\" type=\"button\" class=\"btn btn-primary-dark\">\r\n {{'ADB_HEADER.LOGOUT'|translate}}\r\n </button>\r\n </div>\r\n <div>{{fullName}}</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!initials\">\r\n <div class=\"text-center\">\r\n <button type=\"button\" class=\"btn btn-primary-dark\" (click)=\"login()\" id=\"start-login\">{{'ADB_HEADER.LOGIN'|translate}}</button>\r\n </div>\r\n <a *ngIf=\"navigation\" class=\"text-white\" href=\"{{navigation.createAccountLink}}?lang={{trans.currentLang}}&returnUrl={{url}}\">\r\n {{'ADB_HEADER.CREATE_USER'|translate}}\r\n </a>\r\n </ng-container>\r\n </div>\r\n <ul class=\"list-group list-group-flush border-top\">\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showArtfakta?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.artinfo.url}}\">\r\n {{navigation.artinfo.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showArtfakta = !showArtfakta\"\r\n attr.aria-controls=\"artfakta-links\" attr.aria-expanded=\"{{showArtfakta}}\">\r\n <span class=\"fas\" [ngClass]=\"showArtfakta?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" *ngIf=\"showArtfakta\" id=\"artfakta-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.keys.url}}\" class=\"text-white\">\r\n {{navigation.keys.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.mySpecies.url}}\" class=\"text-white\">\r\n {{navigation.mySpecies.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.lists.url}}\" class=\"text-white\">\r\n {{navigation.lists.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.imageRec.url}}\" class=\"text-white\">\r\n {{navigation.imageRec.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.filter.url}}\" class=\"text-white\">\r\n {{navigation.filter.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showReport?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.report.url}}\">\r\n {{navigation.report.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showReport = !showReport\"\r\n attr.aria-controls=\"report-links\" attr.aria-expanded=\"{{showReport}}\">\r\n <span class=\"fas\" [ngClass]=\"showReport?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" *ngIf=\"showReport\" id=\"report-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.wanted.url}}\" class=\"text-white\">\r\n {{navigation.wanted.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1\">\r\n <a href=\"{{navigation.checklist.url}}\" class=\"text-white\">\r\n {{navigation.checklist.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.observations.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.observations.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\" [ngClass]=\"showNOS?'border-bottom-0 pb-0':''\">\r\n <div class=\"d-flex justify-content-between gap-2\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.nameAndRelationship.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.nameAndRelationship.transId|translate}}\r\n </a>\r\n <button class=\"btn btn-sm btn-primary\" (click)=\"showNOS = !showNOS\"\r\n attr.aria-controls=\"nos-links\" attr.aria-expanded=\"{{showNOS}}\">\r\n <span class=\"fas\" [ngClass]=\"showNOS?'fa-chevron-up':'fa-chevron-down'\"></span>\r\n </button>\r\n </div>\r\n </li>\r\n <li class=\"list-group-item bg-primary pt-0 px-3\" *ngIf=\"showNOS\" id=\"nos-links\">\r\n <ul class=\"list-unstyled\">\r\n <li class=\"d-block py-1 text-white\">\r\n <a href=\"{{navigation.nameSearch.url}}\" class=\"text-white\">\r\n {{navigation.nameSearch.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"d-block py-1 text-white\">\r\n <a href=\"{{navigation.match.url}}\" class=\"text-white\">\r\n {{navigation.match.transId|translate}}\r\n </a>\r\n </li>\r\n </ul>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block py-1 text-white\" href=\"{{navigation.subcriptions.url}}?lang={{trans.currentLang}}\">\r\n {{navigation.subcriptions.transId|translate}}\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block py-1 text-white\" [href]=\"navigation.about.url\">{{navigation.about.transId|translate}}</a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <a class=\"d-block py-1 text-white\" [href]=\"navigation.artportalenUrl\">\r\n {{'ADB_HEADER.ARTPORTALEN_TITLE'|translate}}\r\n </a>\r\n </li>\r\n <li class=\"list-group-item bg-primary\">\r\n <small class=\"d-block text-white py-2\">\r\n {{'ADB_HEADER.DEVELOPED_BY'|translate}}\r\n <a href=\"https://www.artdatabanken.se/\" class=\"text-white\"><u>{{'ADB_HEADER.ARTDATABANKEN'|translate}}</u></a>\r\n </small>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n</div>" }]
105
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.Router }, { type: i3.EnvironmentService }, { type: i2.ActivatedRoute }, { type: i4.TranslateService }]; }, propDecorators: { loginClicked: [{
105
106
  type: Output
106
107
  }], logoutClicked: [{
107
108
  type: Output
@@ -114,4 +115,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
114
115
  }], artfakta: [{
115
116
  type: Input
116
117
  }] } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvYWRiLWhlYWRlci9hZGItbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9hZGItaGVhZGVyL2FkYi1uYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQTZCLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXJILE9BQU8sRUFBYSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7OztBQU8vQyxNQUFNLE9BQU8sZUFBZTtJQTZCeEIsWUFDWSxVQUFzQixFQUN0QixVQUE4QixFQUMvQixLQUF1QjtRQUZ0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBQ3RCLGVBQVUsR0FBVixVQUFVLENBQW9CO1FBQy9CLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBL0IxQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDOUMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFN0Isd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBRTVCLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FBWVIsYUFBUSxHQUFHLElBQUksQ0FBQztRQUd6QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBUXJCLENBQUM7SUF0QkQsSUFBYSxRQUFRLENBQUMsUUFBZ0I7UUFD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QXRCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRSxXQUFXO3NCQUFuQixLQUFLO2dCQU1PLFFBQVE7c0JBQXBCLEtBQUs7Z0JBVUcsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBIb3N0QmluZGluZywgSG9zdExpc3RlbmVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IGZyb21FdmVudCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRW52aXJvbm1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9lbnZpcm9ubWVudC5zZXJ2aWNlJztcclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FkYi1uYXYnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2FkYi1uYXYuY29tcG9uZW50Lmh0bWwnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBREJOYXZDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgICBwcml2YXRlIHN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcclxuICAgIEBPdXRwdXQoKSBsb2dpbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgbG9nb3V0Q2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBkcm9wTWVudUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICAgIEBJbnB1dCgpIHNob3dQYXR0ZXJuID0gZmFsc2U7XHJcbiAgICBmdWxsTmFtZTogc3RyaW5nO1xyXG4gICAgdHJhbnNsYXRpb25GaW5pc2hlZCA9IGZhbHNlO1xyXG4gICAgc2hyaW5rOiBib29sZWFuO1xyXG4gICAgbGFzdFBvc2l0aW9uID0gMDtcclxuXHJcbiAgICBASW5wdXQoKSBzZXQgdXNlck5hbWUoZnVsbE5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuZnVsbE5hbWUgPSBmdWxsTmFtZTtcclxuICAgICAgICBjb25zdCBzcGxpdHRlZCA9IGZ1bGxOYW1lLnNwbGl0KCcgJyk7XHJcbiAgICAgICAgaWYgKHNwbGl0dGVkPy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluaXRpYWxzID0gc3BsaXR0ZWQuc2hpZnQoKS5jaGFyQXQoMCkgKyBzcGxpdHRlZC5wb3AoKS5jaGFyQXQoMCk7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbHMgPSBpbml0aWFscy50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbHMgPSB0aGlzLmZ1bGxOYW1lID8gdGhpcy5mdWxsTmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSA6IHRoaXMuZnVsbE5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIEBJbnB1dCgpIGFydGZha3RhID0gdHJ1ZTtcclxuXHJcbiAgICBpbml0aWFsczogc3RyaW5nO1xyXG4gICAgc2hvd01lbnUgPSBmYWxzZTtcclxuICAgIHNob3dVc2VyTWVudSA9IGZhbHNlO1xyXG4gICAgbmF2aWdhdGlvbjogTmF2aWdhdGlvbjtcclxuICAgIHVybDogc3RyaW5nO1xyXG4gICAgZXhwYW5kZWRMaW5rOiBzdHJpbmc7XHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGh0dHBDbGllbnQ6IEh0dHBDbGllbnQsXHJcbiAgICAgICAgcHJpdmF0ZSBlbnZTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICAgICAgcHVibGljIHRyYW5zOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy51cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcclxuICAgICAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5lbnZTZXJ2aWNlLmVudmlyb25tZW50LnJlc291cmNlVXJsO1xyXG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuYXJ0ZmFrdGEgPyAnL2Fzc2V0cy9saW5rcy1hcDMuanNvbicgOiAnL2Fzc2V0cy9hcnRwb3J0YWxlbi9saW5rcy1hcDMuanNvbic7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuaHR0cENsaWVudC5nZXQ8TmF2aWdhdGlvbj4oYmFzZVVybCArIHVybCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbiA9IHJlc3VsdDtcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgdGhpcy5pbml0VHJhbnNsYXRpb25zKGJhc2VVcmwpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uSGlkZVRvcChzaG93OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zaHJpbmsgPSBzaG93OyBcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRUcmFuc2xhdGlvbnMoYmFzZVVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJhbnMuc3RvcmUudHJhbnNsYXRpb25zW3RoaXMudHJhbnMuY3VycmVudExhbmddKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFRyYW5zbGF0aW9uKGJhc2VVcmwsIHRoaXMudHJhbnMuY3VycmVudExhbmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy50cmFucy5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uRmluaXNoZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkVHJhbnNsYXRpb24oYmFzZVVybCwgZXZlbnQubGFuZyk7XHJcbiAgICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbG9hZFRyYW5zbGF0aW9uKGJhc2VVcmw6IHN0cmluZywgbGFuZzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgLy9UT0RPOiBQcmVwYXJlIGZvciBkaWZmZW50cyBsYW5nIHRoZW4gZW4gc3YgKGVuLUdCKSBvciBhZGQgbW9yZSBmaWxlcyBpbiBkZXZjb21wb25lbnRzZXJ2ZXIgOilcclxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmFydGZha3RhID8gYmFzZVVybCArIGAvYXNzZXRzL2kxOG4vJHtsYW5nfS5qc29uYCA6IGJhc2VVcmwgKyBgL2Fzc2V0cy9hcnRwb3J0YWxlbi9pMThuLyR7bGFuZ30uanNvbmA7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuaHR0cENsaWVudC5nZXQodXJsKS5zdWJzY3JpYmUodHJhbnNsYXRpb25zID0+IHtcclxuICAgICAgICAgICAgdGhpcy50cmFucy5zZXRUcmFuc2xhdGlvbihsYW5nLCB0cmFuc2xhdGlvbnMsIHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uRmluaXNoZWQgPSB0cnVlO1xyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93TWVudURyb3Bkb3duKHNob3c6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5zaG93TWVudSAhPT0gc2hvdykge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dNZW51ID0gc2hvdztcclxuICAgICAgICAgICAgdGhpcy5kcm9wTWVudUNoYW5nZS5lbWl0KHNob3cpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZXRMYW5ndWFnZShsYW5nKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy50cmFucy51c2UobGFuZyk7XHJcbiAgICAgICAgdGhpcy5zaG93TWVudSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuZHJvcE1lbnVDaGFuZ2UuZW1pdChmYWxzZSk7XHJcbiAgICAgICAgLy9UT0RPOiBzZXQgbG9jYWxzdG9yYWdlL2Nvb2tpZXMgb3IgcHJvYmFseSBldmVudCB0byBtYWluIGFwcFxyXG4gICAgfVxyXG5cclxuICAgIG9uRXhwYW5kTGluayhldmVudDogYW55LCB0cmFuc0lkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOyBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICBpZiAodGhpcy5leHBhbmRlZExpbmsgPT09IHRyYW5zSWQpIHtcclxuICAgICAgICAgICAgdGhpcy5leHBhbmRlZExpbmsgPSBudWxsO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZXhwYW5kZWRMaW5rID0gdHJhbnNJZDtcclxuICAgIH1cclxuXHJcbiAgICBsb2dpbigpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmxvZ2luQ2xpY2tlZC5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgbG9nb3V0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubG9nb3V0Q2xpY2tlZC5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG5cclxuXHJcblxyXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBOYXZpZ2F0aW9uIHtcclxuICAgIGFib3V0OiBMaW5rO1xyXG4gICAgYXJ0aW5mbzogTGluaztcclxuICAgIGFydGZha3RhOiBMaW5rO1xyXG4gICAgb2JzZXJ2YXRpb25zOiBMaW5rO1xyXG4gICAgbmFtZUFuZFJlbGF0aW9uc2hpcDogTGluaztcclxuICAgIGNyZWF0ZUFjY291bnRMaW5rOiBzdHJpbmc7XHJcbiAgICBhcnRmYWt0YVVybDogc3RyaW5nO1xyXG4gICAgYXJ0cG9ydGFsZW5Vcmw6IHN0cmluZztcclxuICAgIHN1cHBvcnRVcmw6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBMaW5rIHtcclxuICAgIHRyYW5zSWQ6IHN0cmluZztcclxuICAgIHVybDogc3RyaW5nO1xyXG59XHJcblxyXG4iLCI8IS0tIHBvc2l0aW9uLXN0YXRpYyAtLT5cclxuPGRpdiBjbGFzcz1cImJnLXByaW1hcnkgZml4ZWQtc20tdG9wIHAtMlwiIFthdHRyLmlkXT1cInNob3dQYXR0ZXJuJiYhc2hvd01lbnU/J3BhdHRlcm4nOicnXCIgW2NsYXNzLnNocmlua109XCJzaHJpbmtcIiAoYWRiQ2xpY2tPdXRzaWRlKT1cInNob3dVc2VyTWVudT1mYWxzZTtzaG93TWVudURyb3Bkb3duKGZhbHNlKTtcIj5cclxuICAgIDxoZWFkZXIgaWQ9XCJleHRyYS1oZWFkZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBnYXAtMlwiPlxyXG4gICAgICAgICAgICA8bmF2IGNsYXNzPVwiZC1mbGV4IGdhcC0yIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cInRleHQtd2hpdGUgdGV4dC1kZWNvcmF0aW9uLW5vbmUgZC1mbGV4IGdhcC0yXCIgaHJlZj1cImh0dHBzOi8vd3d3LmFydGRhdGFiYW5rZW4uc2UvXCIgdGFyZ2V0PVwibmV3XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3R5bGU9XCJoZWlnaHQ6IDJyZW07XCIgc3JjPVwiL2Fzc2V0cy9pbWFnZXMvbG9nb19zbV93aGl0ZS5wbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1lbmRcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiYWxpZ24tc2VsZi1jZW50ZXJcIj5BUlREQVRBQkFOS0VOPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwidGV4dC13aGl0ZSBmdy1ib2xkIGZzLTNcIiBocmVmPVwiL1wiPkFSVEZBS1RBPC9hPlxyXG4gICAgICAgICAgICA8L25hdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInRyYW5zbGF0aW9uRmluaXNoZWRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy1hdXRvIGQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgZC1ibG9jayBuby1jYXJldFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGFkYkRyb3Bkb3duIGNsYXNzPVwicHgtMSBweS0wIGJ0biBidG4tcHJpbWFyeSBidG4tc20gZHJvcGRvd24tdG9nZ2xlXCI+PHNwYW4gY2xhc3M9XCJmYXIgZmEtZ2xvYmVcIj48L3NwYW4+PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1lbmQgcHktMSBiZy1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgW2NsYXNzLnBlLW5vbmVdPVwidHJhbnMuY3VycmVudExhbmc9PT0nc3YnXCIgKGNsaWNrKT1cInNldExhbmd1YWdlKCdzdicpXCIgY2xhc3M9XCJidG4gYnRuLWxpbmsgcHktMCBweC0yIHRleHQtd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmZ3LWJvbGRdPVwidHJhbnMuY3VycmVudExhbmc9PT0nc3YnXCI+e3snQURCX0hFQURFUi5JTl9TV0VESVNIJ3x0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZHJvcGRvd24tZGl2aWRlciBteS0xIG9wYWNpdHktMjUgYmctd2hpdGVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBbY2xhc3MucGUtbm9uZV09XCJ0cmFucy5jdXJyZW50TGFuZz09PSdlbidcIiAoY2xpY2spPVwic2V0TGFuZ3VhZ2UoJ2VuJylcIiBjbGFzcz1cImJ0biBidG4tbGluayBweS0wIHB4LTIgdGV4dC13aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3MuZnctYm9sZF09XCJ0cmFucy5jdXJyZW50TGFuZz09PSdlbidcIj57eydBREJfSEVBREVSLklOX0VOR0xJU0gnfHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cIm1zLWF1dG8gdGV4dC13aGl0ZSBkLW5vbmUgZC1tZC1ibG9ja1wiIFtocmVmXT1cIm5hdmlnYXRpb24uYXJ0cG9ydGFsZW5VcmxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5BUlRQT1JUQUxFTl9USVRMRSd8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJ0ZXh0LXdoaXRlIGQtbm9uZSBkLW1kLWJsb2NrXCIgW2hyZWZdPVwibmF2aWdhdGlvbi5zdXBwb3J0VXJsXCI+U3VwcG9ydDwvYT5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2hlYWRlcj5cclxuICAgIDxoZWFkZXIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGZsZXgtd3JhcCBnYXAtMlwiICpuZ0lmPVwidHJhbnNsYXRpb25GaW5pc2hlZFwiPlxyXG4gICAgICAgIDxuYXYgKm5nSWY9XCJuYXZpZ2F0aW9uXCIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0zXCI+XHJcbiAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5hcnRkYXRhYmFua2VuLnNlL1wiIGNsYXNzPVwiaG9tZS1saW5rXCIgdGFyZ2V0PVwibmV3XCI+PGltZyBzcmM9XCIvYXNzZXRzL2ltYWdlcy9sb2dvX3NtX3doaXRlLnBuZ1wiIHN0eWxlPVwiaGVpZ2h0OiAycmVtO1wiPjwvYT5cclxuICAgICAgICAgICAgPGEgY2xhc3M9XCJ0ZXh0LXdoaXRlIGZ3LWJvbGQgbWUtMyBob21lLWxpbmtcIiBocmVmPVwie3tuYXZpZ2F0aW9uLmFydGZha3RhLnVybH19XCI+XHJcbiAgICAgICAgICAgICAgICB7e25hdmlnYXRpb24uYXJ0ZmFrdGEudHJhbnNJZHx0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwidGV4dC13aGl0ZSBkLW5vbmUgZC1tZC1ibG9ja1wiIGhyZWY9XCJ7e25hdmlnYXRpb24uYXJ0aW5mby51cmx9fVwiPlxyXG4gICAgICAgICAgICAgICAge3tuYXZpZ2F0aW9uLmFydGluZm8udHJhbnNJZHx0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDxhIGNsYXNzPVwidGV4dC13aGl0ZSBkLW5vbmUgZC1tZC1ibG9ja1wiIGhyZWY9XCJ7e25hdmlnYXRpb24ub2JzZXJ2YXRpb25zLnVybH19P2xhbmc9e3t0cmFucy5jdXJyZW50TGFuZ319XCI+XHJcbiAgICAgICAgICAgICAgICB7e25hdmlnYXRpb24ub2JzZXJ2YXRpb25zLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cInRleHQtd2hpdGUgZC1ub25lIGQtbWQtYmxvY2tcIiBocmVmPVwie3tuYXZpZ2F0aW9uLm5hbWVBbmRSZWxhdGlvbnNoaXAudXJsfX0/bGFuZz17e3RyYW5zLmN1cnJlbnRMYW5nfX1cIj5cclxuICAgICAgICAgICAgICAgIHt7bmF2aWdhdGlvbi5uYW1lQW5kUmVsYXRpb25zaGlwLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgIDwvbmF2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtcy1hdXRvXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJidG4tZ3JvdXAgbm8tY2FyZXQgZC1ub25lIGQtbWQtYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGFkYkRyb3Bkb3duIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbSBkcm9wZG93bi10b2dnbGVcIiBbY2xhc3MuaW5pdGlhbHNdPVwiaW5pdGlhbHNcIiAoY2xpY2spPVwic2hvd01lbnVEcm9wZG93bighc2hvd01lbnUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluaXRpYWxzXCI+e3tpbml0aWFsc319PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpbml0aWFsc1wiPnt7J0FEQl9IRUFERVIuTE9HSU4nfHRyYW5zbGF0ZX19PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1lbmQgcHktMSBiZy1wcmltYXJ5IHRleHQtd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5pdGlhbHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicHgtMiBwYi0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJsb2dvdXQoKVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGluayBwLTAgdGV4dC13aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmFzIGZhLXNpZ24tb3V0LWFsdCBtZS0xXCI+PC9zcGFuPnt7J0FEQl9IRUFERVIuTE9HT1VUJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz1cIm15LTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwicHQtMSBweC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhcyBmYS11c2VyIG1lLTFcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2Z1bGxOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWluaXRpYWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJsb2dpbigpXCIgaWQ9XCJzdGFydC1sb2dpblwiPnt7J0FEQl9IRUFERVIuTE9HSU4nfHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJuYXZpZ2F0aW9uXCIgY2xhc3M9XCJkLWJsb2NrIHRleHQtY2VudGVyIG10LTIgdGV4dC13aGl0ZVwiIGhyZWY9XCJ7e25hdmlnYXRpb24uY3JlYXRlQWNjb3VudExpbmt9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fSZyZXR1cm5Vcmw9e3t1cmx9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuQ1JFQVRFX1VTRVInfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtYmxvY2sgZC1tZC1ub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gcHktMSBweC0yIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInNob3dVc2VyTWVudSA9IGZhbHNlO3Nob3dNZW51RHJvcGRvd24oIXNob3dNZW51KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuTUVOWSd8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1zLTEgZmFzXCIgW25nQ2xhc3NdPVwic2hvd01lbnU/J2ZhLWNoZXZyb24tdXAnOidmYS1jaGV2cm9uLWRvd24nXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9oZWFkZXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9iaWxlLW1lbnUgZC1mbGV4IGZsZXgtY29sdW1uIGQtbWQtbm9uZSBiZy1wcmltYXJ5IHRleHQtd2hpdGVcIiAqbmdJZj1cInNob3dNZW51JiZuYXZpZ2F0aW9uXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInAtMlwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiICpuZ0lmPVwiaW5pdGlhbHNcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW5pdGlhbHMgbWUtMlwiPnt7aW5pdGlhbHN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJsb2dvdXQoKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3snQURCX0hFQURFUi5MT0dPVVQnfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTJcIiAqbmdJZj1cIiFpbml0aWFsc1wiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImxvZ2luKClcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIGlkPVwibG9naW5cIj5cclxuICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLkxPR0lOJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YSBocmVmPVwie3tuYXZpZ2F0aW9uLmNyZWF0ZUFjY291bnRMaW5rfX0/bGFuZz17e3RyYW5zLmN1cnJlbnRMYW5nfX0mcmV0dXJuVXJsPXt7dXJsfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHRleHQtd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLkNSRUFURV9VU0VSJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMlwiPlxyXG4gICAgICAgICAgICA8aHIgY2xhc3M9XCJteS0wXCI+XHJcbiAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWRcIj5cclxuICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImQtYmxvY2sgcHktMSB0ZXh0LXdoaXRlXCIgaHJlZj1cInt7bmF2aWdhdGlvbi5hcnRpbmZvLnVybH19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7bmF2aWdhdGlvbi5hcnRpbmZvLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGhyIGNsYXNzPVwibXktMFwiPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImQtYmxvY2sgcHktMSB0ZXh0LXdoaXRlXCIgaHJlZj1cInt7bmF2aWdhdGlvbi5vYnNlcnZhdGlvbnMudXJsfX0/bGFuZz17e3RyYW5zLmN1cnJlbnRMYW5nfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tuYXZpZ2F0aW9uLm9ic2VydmF0aW9ucy50cmFuc0lkfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz1cIm15LTBcIj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkLWJsb2NrIHB5LTEgdGV4dC13aGl0ZVwiIGhyZWY9XCJ7e25hdmlnYXRpb24ubmFtZUFuZFJlbGF0aW9uc2hpcC51cmx9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e25hdmlnYXRpb24ubmFtZUFuZFJlbGF0aW9uc2hpcC50cmFuc0lkfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgIDxociBjbGFzcz1cIm15LTBcIj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkLWJsb2NrIHB5LTEgdGV4dC13aGl0ZVwiIFtocmVmXT1cIm5hdmlnYXRpb24uYWJvdXQudXJsXCI+e3tuYXZpZ2F0aW9uLmFib3V0LnRyYW5zSWR8dHJhbnNsYXRlfX08L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPGhyIGNsYXNzPVwibXktMFwiPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImQtYmxvY2sgcHktMSB0ZXh0LXdoaXRlXCIgW2hyZWZdPVwibmF2aWdhdGlvbi5hcnRwb3J0YWxlblVybFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLkFSVFBPUlRBTEVOX1RJVExFJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8aHIgY2xhc3M9XCJteS0wXCI+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImQtYmxvY2sgdGV4dC13aGl0ZSBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuREVWRUxPUEVEX0JZJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cuYXJ0ZGF0YWJhbmtlbi5zZS9cIiBjbGFzcz1cInRleHQtd2hpdGVcIj48dT57eydBREJfSEVBREVSLkFSVERBVEFCQU5LRU4nfHRyYW5zbGF0ZX19PC91PjwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibXQtYXV0byBzcGxhc2gtaGVpZ2h0XCIgaWQ9XCJwYXR0ZXJuXCI+PC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgKG9uVmlzaWJsZSk9XCJvbkhpZGVUb3AoZmFsc2UpXCIgKG9uSGlkZGVuKT1cIm9uSGlkZVRvcCh0cnVlKVwiIHN0eWxlPVwiaGVpZ2h0OjBweFwiPjwvZGl2PiJdfQ==
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRiLW5hdi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hcnRkYXRhLXNoYXJlZC9zcmMvbGliL2NvbXBvbmVudHMvYWRiLWhlYWRlci9hZGItbmF2LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FydGRhdGEtc2hhcmVkL3NyYy9saWIvY29tcG9uZW50cy9hZGItaGVhZGVyL2FkYi1uYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUYsT0FBTyxFQUF5QixhQUFhLEdBQVcsTUFBTSxpQkFBaUIsQ0FBQztBQUVoRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7OztBQU1wQyxNQUFNLE9BQU8sZUFBZTtJQStCeEIsWUFDWSxVQUFzQixFQUN0QixNQUFjLEVBQ2QsVUFBOEIsRUFDOUIsY0FBOEIsRUFDL0IsS0FBdUI7UUFKdEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQ2QsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7UUFDOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQy9CLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBbkMxQixpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDaEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2xDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFFOUMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFN0Isd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQzVCLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO1FB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QUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3BDLENBQUM7OytIQXJHUSxlQUFlO21IQUFmLGVBQWUsZ1BDVjVCLDRzVUFvS007MkZEMUpPLGVBQWU7a0JBSjNCLFNBQVM7K0JBQ0ksU0FBUzttTkFLVCxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFFRSxXQUFXO3NCQUFuQixLQUFLO2dCQUtPLFFBQVE7c0JBQXBCLEtBQUs7Z0JBVUcsUUFBUTtzQkFBaEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgRXZlbnQsIE5hdmlnYXRpb25FbmQsIFJvdXRlciwgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuL2Vudmlyb25tZW50LnNlcnZpY2UnO1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYWRiLW5hdicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vYWRiLW5hdi5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFEQk5hdkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xyXG4gICAgQE91dHB1dCgpIGxvZ2luQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBsb2dvdXRDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIGRyb3BNZW51Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG5cclxuICAgIEBJbnB1dCgpIHNob3dQYXR0ZXJuID0gZmFsc2U7XHJcbiAgICBmdWxsTmFtZTogc3RyaW5nO1xyXG4gICAgdHJhbnNsYXRpb25GaW5pc2hlZCA9IGZhbHNlO1xyXG4gICAgbGFzdFBvc2l0aW9uID0gMDtcclxuXHJcbiAgICBASW5wdXQoKSBzZXQgdXNlck5hbWUoZnVsbE5hbWU6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuZnVsbE5hbWUgPSBmdWxsTmFtZTtcclxuICAgICAgICBjb25zdCBzcGxpdHRlZCA9IGZ1bGxOYW1lLnNwbGl0KCcgJyk7XHJcbiAgICAgICAgaWYgKHNwbGl0dGVkPy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGluaXRpYWxzID0gc3BsaXR0ZWQuc2hpZnQoKS5jaGFyQXQoMCkgKyBzcGxpdHRlZC5wb3AoKS5jaGFyQXQoMCk7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbHMgPSBpbml0aWFscy50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbHMgPSB0aGlzLmZ1bGxOYW1lID8gdGhpcy5mdWxsTmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSA6IHRoaXMuZnVsbE5hbWU7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIEBJbnB1dCgpIGFydGZha3RhID0gdHJ1ZTtcclxuXHJcbiAgICBpbml0aWFsczogc3RyaW5nO1xyXG4gICAgc2hvd05hdk1lbnUgPSBmYWxzZTtcclxuICAgIHNob3dVc2VyTWVudSA9IGZhbHNlO1xyXG4gICAgc2hvd0FydGZha3RhID0gdHJ1ZTtcclxuICAgIHNob3dSZXBvcnQgPSBmYWxzZTtcclxuICAgIHNob3dOT1MgPSB0cnVlO1xyXG4gICAgbmF2aWdhdGlvbjogTmF2aWdhdGlvbjtcclxuICAgIHVybDogc3RyaW5nO1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICAgICAgcHJpdmF0ZSBlbnZTZXJ2aWNlOiBFbnZpcm9ubWVudFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBhY3RpdmF0ZWRSb3V0ZTogQWN0aXZhdGVkUm91dGUsXHJcbiAgICAgICAgcHVibGljIHRyYW5zOiBUcmFuc2xhdGVTZXJ2aWNlKSB7XHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgdGhpcy51cmwgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcclxuICAgICAgICBjb25zdCBiYXNlVXJsID0gdGhpcy5lbnZTZXJ2aWNlLmVudmlyb25tZW50LnJlc291cmNlVXJsO1xyXG4gICAgICAgIGNvbnN0IHVybCA9IHRoaXMuYXJ0ZmFrdGEgPyAnL2Fzc2V0cy9saW5rcy1hcDMuanNvbicgOiAnL2Fzc2V0cy9hcnRwb3J0YWxlbi9saW5rcy1hcDMuanNvbic7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuaHR0cENsaWVudC5nZXQ8TmF2aWdhdGlvbj4oYmFzZVVybCArIHVybCkuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbiA9IHJlc3VsdDtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ25hdmlnYXRpb24nLCB0aGlzLm5hdmlnYXRpb24pXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICAgIHRoaXMuaW5pdFRyYW5zbGF0aW9ucyhiYXNlVXJsKTtcclxuICAgICAgICB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudDogRXZlbnQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvbkVuZCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93TmF2TWVudSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wTWVudUNoYW5nZS5lbWl0KHRoaXMuc2hvd05hdk1lbnUpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGluaXRUcmFuc2xhdGlvbnMoYmFzZVVybDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMudHJhbnMuc3RvcmUudHJhbnNsYXRpb25zW3RoaXMudHJhbnMuY3VycmVudExhbmddKSB7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFRyYW5zbGF0aW9uKGJhc2VVcmwsIHRoaXMudHJhbnMuY3VycmVudExhbmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi5hZGQodGhpcy50cmFucy5vbkxhbmdDaGFuZ2Uuc3Vic2NyaWJlKChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uRmluaXNoZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5sb2FkVHJhbnNsYXRpb24oYmFzZVVybCwgZXZlbnQubGFuZyk7XHJcbiAgICAgICAgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgbG9hZFRyYW5zbGF0aW9uKGJhc2VVcmw6IHN0cmluZywgbGFuZzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgLy9UT0RPOiBQcmVwYXJlIGZvciBkaWZmZW50cyBsYW5nIHRoZW4gZW4gc3YgKGVuLUdCKSBvciBhZGQgbW9yZSBmaWxlcyBpbiBkZXZjb21wb25lbnRzZXJ2ZXIgOilcclxuICAgICAgICBjb25zdCB1cmwgPSB0aGlzLmFydGZha3RhID8gYmFzZVVybCArIGAvYXNzZXRzL2kxOG4vJHtsYW5nfS5qc29uYCA6IGJhc2VVcmwgKyBgL2Fzc2V0cy9hcnRwb3J0YWxlbi9pMThuLyR7bGFuZ30uanNvbmA7XHJcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24uYWRkKHRoaXMuaHR0cENsaWVudC5nZXQodXJsKS5zdWJzY3JpYmUodHJhbnNsYXRpb25zID0+IHtcclxuICAgICAgICAgICAgdGhpcy50cmFucy5zZXRUcmFuc2xhdGlvbihsYW5nLCB0cmFuc2xhdGlvbnMsIHRydWUpO1xyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9uRmluaXNoZWQgPSB0cnVlO1xyXG4gICAgICAgIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICBzaG93TWVudURyb3Bkb3duKHNob3c6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnNob3dVc2VyTWVudSA9IGZhbHNlO1xyXG4gICAgICAgIGlmICh0aGlzLnNob3dOYXZNZW51ICE9PSBzaG93KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd05hdk1lbnUgPSBzaG93O1xyXG4gICAgICAgICAgICB0aGlzLmRyb3BNZW51Q2hhbmdlLmVtaXQoc2hvdyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHNldExhbmd1YWdlKGxhbmcpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRyYW5zLnVzZShsYW5nKTtcclxuICAgICAgICB0aGlzLnNob3dOYXZNZW51ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5kcm9wTWVudUNoYW5nZS5lbWl0KGZhbHNlKTtcclxuICAgICAgICAvL1RPRE86IHNldCBsb2NhbHN0b3JhZ2UvY29va2llcyBvciBwcm9iYWx5IGV2ZW50IHRvIG1haW4gYXBwXHJcbiAgICB9XHJcblxyXG5cclxuICAgIGxvZ2luKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubG9naW5DbGlja2VkLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBsb2dvdXQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5sb2dvdXRDbGlja2VkLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5hdmlnYXRpb24ge1xyXG4gICAgYWJvdXQ6IExpbms7XHJcbiAgICBhcnRpbmZvOiBMaW5rO1xyXG4gICAgYXJ0ZmFrdGE6IExpbms7XHJcbiAgICBrZXlzOiBMaW5rO1xyXG4gICAgbXlTcGVjaWVzOiBMaW5rO1xyXG4gICAgbGlzdHM6IExpbmssXHJcbiAgICBpbWFnZVJlYzogTGluayxcclxuICAgIGZpbHRlcjogTGluaztcclxuICAgIHJlcG9ydDogTGluaztcclxuICAgIHdhbnRlZDogTGluaztcclxuICAgIGNoZWNrbGlzdDogTGluaztcclxuICAgIG9ic2VydmF0aW9uczogTGluaztcclxuICAgIG5hbWVBbmRSZWxhdGlvbnNoaXA6IExpbms7XHJcbiAgICBuYW1lU2VhcmNoOiBMaW5rO1xyXG4gICAgbWF0Y2g6IExpbms7XHJcbiAgICBzdWJjcmlwdGlvbnM6IExpbms7XHJcbiAgICBjcmVhdGVBY2NvdW50TGluazogc3RyaW5nO1xyXG4gICAgYXJ0ZmFrdGFVcmw6IHN0cmluZztcclxuICAgIGFydHBvcnRhbGVuVXJsOiBzdHJpbmc7XHJcbiAgICBzdXBwb3J0VXJsOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTGluayB7XHJcbiAgICB0cmFuc0lkOiBzdHJpbmc7XHJcbiAgICB1cmw6IHN0cmluZztcclxufVxyXG5cclxuIiwiPGRpdiBjbGFzcz1cImJnLXByaW1hcnkgYWRiLW1haW4taGVhZGVyXCIgW2F0dHIuaWRdPVwic2hvd1BhdHRlcm4/J3BhdHRlcm4nOicnXCIgKGFkYkNsaWNrT3V0c2lkZSk9XCJzaG93TWVudURyb3Bkb3duKGZhbHNlKTtcIj5cclxuICAgIDxoZWFkZXIgY2xhc3M9XCJjb250YWluZXItbGcgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMlwiICpuZ0lmPVwidHJhbnNsYXRpb25GaW5pc2hlZFwiPlxyXG4gICAgICAgIDxuYXYgY2xhc3M9XCJkLWZsZXggZmxleC1ncm93LTEgYWxpZ24taXRlbXMtY2VudGVyIHBlLTIgcHktMlwiPlxyXG4gICAgICAgICAgICA8YSBjbGFzcz1cInRleHQtd2hpdGUgdGV4dC1kZWNvcmF0aW9uLW5vbmUgZC1mbGV4IGdhcC0yXCIgaHJlZj1cImh0dHBzOi8vd3d3LmFydGRhdGFiYW5rZW4uc2UvXCIgdGFyZ2V0PVwibmV3XCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIHN0eWxlPVwiaGVpZ2h0OiAycmVtO1wiIHNyYz1cIi9hc3NldHMvaW1hZ2VzL2xvZ29fc21fd2hpdGUucG5nXCIgYWx0PVwibG9nb1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlci1lbmQgZC1ub25lIGQtc20tYmxvY2tcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbGlnbi1zZWxmLWNlbnRlciBkLW5vbmUgZC1zbS1ibG9jayBwZS01XCI+QVJUREFUQUJBTktFTjwvZGl2PlxyXG4gICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDxhIHJvdXRlckxpbms9XCIvXCIgY2xhc3M9XCJ0ZXh0LXdoaXRlIHRleHQtZGVjb3JhdGlvbi1ub25lIGZzLTEgZnctYm9sZFwiPkFydGZha3RhPC9hPlxyXG4gICAgICAgIDwvbmF2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICAgIDxkaXY+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PjwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeS1kYXJrIGJ0bi1sZ1wiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1sYWJlbD1cInt7J01FTlUnfHRyYW5zbGF0ZX19XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd01lbnVEcm9wZG93bighc2hvd05hdk1lbnUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtYmFyc1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvaGVhZGVyPlxyXG4gICAgPGRpdiAqbmdJZj1cIm5hdmlnYXRpb25cIiByb2xlPVwiZGlhbG9nXCIgY2xhc3M9XCJvZmZjYW52YXMgb2ZmY2FudmFzLWVuZCBiZy1wcmltYXJ5IHRleHQtd2hpdGVcIlxyXG4gICAgICAgIFtjbGFzcy5zaG93XT1cInNob3dOYXZNZW51XCIgdGFiaW5kZXg9XCItMVwiIGFyaWEtbGFiZWxsZWRieT1cIm9mZmNhbnZhc05hdlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJvZmZjYW52YXMtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxoMSBjbGFzcz1cIm9mZmNhbnZhcy10aXRsZSBoLXNlY3Rpb24gbWItMFwiIGlkPVwib2ZmY2FudmFzTmF2XCI+QXJ0ZmFrdGE8L2gxPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1jbG9zZSBidG4tY2xvc2Utd2hpdGVcIiBhdHRyLmFyaWEtbGFiZWw9XCJ7eydDTE9TRSd8dHJhbnNsYXRlfX1cIiAoY2xpY2spPVwic2hvd01lbnVEcm9wZG93bihmYWxzZSlcIj48L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwib2ZmY2FudmFzLWJvZHkgcC0wXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yIGdhcC0xIHB4LTJcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbml0aWFsc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImxvZ291dCgpXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5LWRhcmtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuTE9HT1VUJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7ZnVsbE5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWluaXRpYWxzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5LWRhcmtcIiAoY2xpY2spPVwibG9naW4oKVwiIGlkPVwic3RhcnQtbG9naW5cIj57eydBREJfSEVBREVSLkxPR0lOJ3x0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwibmF2aWdhdGlvblwiIGNsYXNzPVwidGV4dC13aGl0ZVwiIGhyZWY9XCJ7e25hdmlnYXRpb24uY3JlYXRlQWNjb3VudExpbmt9fT9sYW5nPXt7dHJhbnMuY3VycmVudExhbmd9fSZyZXR1cm5Vcmw9e3t1cmx9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLkNSRUFURV9VU0VSJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibGlzdC1ncm91cCBsaXN0LWdyb3VwLWZsdXNoIGJvcmRlci10b3BcIj5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy1wcmltYXJ5XCIgW25nQ2xhc3NdPVwic2hvd0FydGZha3RhPydib3JkZXItYm90dG9tLTAgcGItMCc6JydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZC1ibG9jayBweS0xIHRleHQtd2hpdGVcIiBocmVmPVwie3tuYXZpZ2F0aW9uLmFydGluZm8udXJsfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bmF2aWdhdGlvbi5hcnRpbmZvLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tcHJpbWFyeVwiIChjbGljayk9XCJzaG93QXJ0ZmFrdGEgPSAhc2hvd0FydGZha3RhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1jb250cm9scz1cImFydGZha3RhLWxpbmtzXCIgYXR0ci5hcmlhLWV4cGFuZGVkPVwie3tzaG93QXJ0ZmFrdGF9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYXNcIiBbbmdDbGFzc109XCJzaG93QXJ0ZmFrdGE/J2ZhLWNoZXZyb24tdXAnOidmYS1jaGV2cm9uLWRvd24nXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctcHJpbWFyeSBwdC0wIHB4LTNcIiAqbmdJZj1cInNob3dBcnRmYWt0YVwiIGlkPVwiYXJ0ZmFrdGEtbGlua3NcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImQtYmxvY2sgcHktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7bmF2aWdhdGlvbi5rZXlzLnVybH19XCIgY2xhc3M9XCJ0ZXh0LXdoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tuYXZpZ2F0aW9uLmtleXMudHJhbnNJZHx0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJkLWJsb2NrIHB5LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7e25hdmlnYXRpb24ubXlTcGVjaWVzLnVybH19XCIgY2xhc3M9XCJ0ZXh0LXdoaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tuYXZpZ2F0aW9uLm15U3BlY2llcy50cmFuc0lkfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImQtYmxvY2sgcHktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7bmF2aWdhdGlvbi5saXN0cy51cmx9fVwiIGNsYXNzPVwidGV4dC13aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bmF2aWdhdGlvbi5saXN0cy50cmFuc0lkfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImQtYmxvY2sgcHktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7bmF2aWdhdGlvbi5pbWFnZVJlYy51cmx9fVwiIGNsYXNzPVwidGV4dC13aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bmF2aWdhdGlvbi5pbWFnZVJlYy50cmFuc0lkfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImQtYmxvY2sgcHktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7bmF2aWdhdGlvbi5maWx0ZXIudXJsfX1cIiBjbGFzcz1cInRleHQtd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e25hdmlnYXRpb24uZmlsdGVyLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy1wcmltYXJ5XCIgW25nQ2xhc3NdPVwic2hvd1JlcG9ydD8nYm9yZGVyLWJvdHRvbS0wIHBiLTAnOicnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImQtYmxvY2sgcHktMSB0ZXh0LXdoaXRlXCIgaHJlZj1cInt7bmF2aWdhdGlvbi5yZXBvcnQudXJsfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bmF2aWdhdGlvbi5yZXBvcnQudHJhbnNJZHx0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInNob3dSZXBvcnQgPSAhc2hvd1JlcG9ydFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyLmFyaWEtY29udHJvbHM9XCJyZXBvcnQtbGlua3NcIiBhdHRyLmFyaWEtZXhwYW5kZWQ9XCJ7e3Nob3dSZXBvcnR9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYXNcIiBbbmdDbGFzc109XCJzaG93UmVwb3J0PydmYS1jaGV2cm9uLXVwJzonZmEtY2hldnJvbi1kb3duJ1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXByaW1hcnkgcHQtMCBweC0zXCIgKm5nSWY9XCJzaG93UmVwb3J0XCIgaWQ9XCJyZXBvcnQtbGlua3NcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImQtYmxvY2sgcHktMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInt7bmF2aWdhdGlvbi53YW50ZWQudXJsfX1cIiBjbGFzcz1cInRleHQtd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e25hdmlnYXRpb24ud2FudGVkLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZC1ibG9jayBweS0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwie3tuYXZpZ2F0aW9uLmNoZWNrbGlzdC51cmx9fVwiIGNsYXNzPVwidGV4dC13aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bmF2aWdhdGlvbi5jaGVja2xpc3QudHJhbnNJZHx0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImQtYmxvY2sgcHktMSB0ZXh0LXdoaXRlXCIgaHJlZj1cInt7bmF2aWdhdGlvbi5vYnNlcnZhdGlvbnMudXJsfX0/bGFuZz17e3RyYW5zLmN1cnJlbnRMYW5nfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tuYXZpZ2F0aW9uLm9ic2VydmF0aW9ucy50cmFuc0lkfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy1wcmltYXJ5XCIgW25nQ2xhc3NdPVwic2hvd05PUz8nYm9yZGVyLWJvdHRvbS0wIHBiLTAnOicnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImQtYmxvY2sgcHktMSB0ZXh0LXdoaXRlXCIgaHJlZj1cInt7bmF2aWdhdGlvbi5uYW1lQW5kUmVsYXRpb25zaGlwLnVybH19P2xhbmc9e3t0cmFucy5jdXJyZW50TGFuZ319XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e25hdmlnYXRpb24ubmFtZUFuZFJlbGF0aW9uc2hpcC50cmFuc0lkfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic2hvd05PUyA9ICFzaG93Tk9TXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuYXJpYS1jb250cm9scz1cIm5vcy1saW5rc1wiIGF0dHIuYXJpYS1leHBhbmRlZD1cInt7c2hvd05PU319XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhc1wiIFtuZ0NsYXNzXT1cInNob3dOT1M/J2ZhLWNoZXZyb24tdXAnOidmYS1jaGV2cm9uLWRvd24nXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctcHJpbWFyeSBwdC0wIHB4LTNcIiAqbmdJZj1cInNob3dOT1NcIiBpZD1cIm5vcy1saW5rc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZC1ibG9jayBweS0xIHRleHQtd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7e25hdmlnYXRpb24ubmFtZVNlYXJjaC51cmx9fVwiIGNsYXNzPVwidGV4dC13aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7bmF2aWdhdGlvbi5uYW1lU2VhcmNoLnRyYW5zSWR8dHJhbnNsYXRlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiZC1ibG9jayBweS0xIHRleHQtd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ7e25hdmlnYXRpb24ubWF0Y2gudXJsfX1cIiBjbGFzcz1cInRleHQtd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e25hdmlnYXRpb24ubWF0Y2gudHJhbnNJZHx0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImQtYmxvY2sgcHktMSB0ZXh0LXdoaXRlXCIgaHJlZj1cInt7bmF2aWdhdGlvbi5zdWJjcmlwdGlvbnMudXJsfX0/bGFuZz17e3RyYW5zLmN1cnJlbnRMYW5nfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tuYXZpZ2F0aW9uLnN1YmNyaXB0aW9ucy50cmFuc0lkfHRyYW5zbGF0ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbSBiZy1wcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJkLWJsb2NrIHB5LTEgdGV4dC13aGl0ZVwiIFtocmVmXT1cIm5hdmlnYXRpb24uYWJvdXQudXJsXCI+e3tuYXZpZ2F0aW9uLmFib3V0LnRyYW5zSWR8dHJhbnNsYXRlfX08L2E+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtIGJnLXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImQtYmxvY2sgcHktMSB0ZXh0LXdoaXRlXCIgW2hyZWZdPVwibmF2aWdhdGlvbi5hcnRwb3J0YWxlblVybFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eydBREJfSEVBREVSLkFSVFBPUlRBTEVOX1RJVExFJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJsaXN0LWdyb3VwLWl0ZW0gYmctcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImQtYmxvY2sgdGV4dC13aGl0ZSBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7J0FEQl9IRUFERVIuREVWRUxPUEVEX0JZJ3x0cmFuc2xhdGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cuYXJ0ZGF0YWJhbmtlbi5zZS9cIiBjbGFzcz1cInRleHQtd2hpdGVcIj48dT57eydBREJfSEVBREVSLkFSVERBVEFCQU5LRU4nfHRyYW5zbGF0ZX19PC91PjwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
@@ -15,10 +15,8 @@ export class FocusDirective {
15
15
  }
16
16
  }
17
17
  ngAfterViewInit() {
18
- console.log('hello', this.focused);
19
18
  // ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.
20
19
  if (this.focused) {
21
- console.log('hello', this.focused);
22
20
  setTimeout(() => this.element.nativeElement.focus(), 0);
23
21
  }
24
22
  }
@@ -33,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImpor
33
31
  }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { adbFocus: [{
34
32
  type: Input
35
33
  }] } });
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJ0ZGF0YS1zaGFyZWQvc3JjL2xpYi9kaXJlY3RpdmVzL2ZvY3VzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBNkIsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUs1RSxNQUFNLE9BQU8sY0FBYztJQVd6QixZQUFtQixPQUFnQztRQUFoQyxZQUFPLEdBQVAsT0FBTyxDQUF5QjtJQUNuRCxDQUFDO0lBVkQsSUFBYSxRQUFRLENBQUMsS0FBYztRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDcEM7YUFBSTtZQUNILElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUtELGVBQWU7UUFDYixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDbEMsNEZBQTRGO1FBQzVGLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDbEMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3pEO0lBQ0gsQ0FBQzs7OEhBckJVLGNBQWM7a0hBQWQsY0FBYzsyRkFBZCxjQUFjO2tCQUgxQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO2lCQUN2QjtpR0FHYyxRQUFRO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L2RpcmVjdGl2ZS1zZWxlY3RvciAqL1xyXG5pbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEFmdGVyVmlld0luaXQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICBzZWxlY3RvcjogJ1thZGJGb2N1c10nLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRm9jdXNEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcclxuICBmb2N1c2VkOiBib29sZWFuO1xyXG4gIEBJbnB1dCgpIHNldCBhZGJGb2N1cyh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgdGhpcy5mb2N1c2VkID0gdmFsdWU7XHJcbiAgICBpZiAodGhpcy5mb2N1c2VkKSB7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+KSB7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBjb25zb2xlLmxvZygnaGVsbG8nLCB0aGlzLmZvY3VzZWQpXHJcbiAgICAvLyBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yOiBFeHByZXNzaW9uIGhhcyBjaGFuZ2VkIGFmdGVyIGl0IHdhcyBjaGVja2VkLlxyXG4gICAgaWYgKHRoaXMuZm9jdXNlZCkge1xyXG4gICAgICBjb25zb2xlLmxvZygnaGVsbG8nLCB0aGlzLmZvY3VzZWQpXHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSwgMCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9jdXMuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJ0ZGF0YS1zaGFyZWQvc3JjL2xpYi9kaXJlY3RpdmVzL2ZvY3VzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBNkIsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUs1RSxNQUFNLE9BQU8sY0FBYztJQVd6QixZQUFtQixPQUFnQztRQUFoQyxZQUFPLEdBQVAsT0FBTyxDQUF5QjtJQUNuRCxDQUFDO0lBVkQsSUFBYSxRQUFRLENBQUMsS0FBYztRQUNsQyxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDcEM7YUFBSTtZQUNILElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUtELGVBQWU7UUFDYiw0RkFBNEY7UUFDNUYsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztTQUN6RDtJQUNILENBQUM7OzhIQW5CVSxjQUFjO2tIQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFIMUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsWUFBWTtpQkFDdkI7aUdBR2MsUUFBUTtzQkFBcEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9kaXJlY3RpdmUtc2VsZWN0b3IgKi9cclxuaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgc2VsZWN0b3I6ICdbYWRiRm9jdXNdJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZvY3VzRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgZm9jdXNlZDogYm9vbGVhbjtcclxuICBASW5wdXQoKSBzZXQgYWRiRm9jdXModmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZm9jdXNlZCA9IHZhbHVlO1xyXG4gICAgaWYgKHRoaXMuZm9jdXNlZCkge1xyXG4gICAgICB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBlbGVtZW50OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50Pikge1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgLy8gRXhwcmVzc2lvbkNoYW5nZWRBZnRlckl0SGFzQmVlbkNoZWNrZWRFcnJvcjogRXhwcmVzc2lvbiBoYXMgY2hhbmdlZCBhZnRlciBpdCB3YXMgY2hlY2tlZC5cclxuICAgIGlmICh0aGlzLmZvY3VzZWQpIHtcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudC5mb2N1cygpLCAwKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19