cax-design-system 2.7.3 → 2.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Cax Design System
2
2
 
3
- You can access all the modules available in cax design system in the [storybook](https://673d43a5032fb6c56edd4107-ozfuvzbumb.chromatic.com/)
3
+ You can access all the modules available in cax design system in the [storybook](https://673d43a5032fb6c56edd4107-ngrxbplogd.chromatic.com/)
4
4
 
5
5
  ### Installation
6
6
 
@@ -494,7 +494,7 @@ export class CommentboxComponent {
494
494
  return namePart.substring(0, 4) + '..' + extension;
495
495
  }
496
496
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CommentboxComponent, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
497
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: CommentboxComponent, selector: "cax-comments", inputs: { comments: "comments", mentionSuggestions: "mentionSuggestions", hashtagSuggestions: "hashtagSuggestions", sidebarHeader: "sidebarHeader", isAdmin: "isAdmin", visible: "visible" }, outputs: { commentAdded: "commentAdded", fileSelected: "fileSelected", fileDownload: "fileDownload", visibleChange: "visibleChange" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "suggestionPanel", first: true, predicate: ["suggestionPanel"], descendants: true }, { propertyName: "inputText", first: true, predicate: ["inputText"], descendants: true }, { propertyName: "commentsList", first: true, predicate: ["commentsList"], descendants: true }, { propertyName: "countChip", first: true, predicate: ["countChip"], descendants: true }], ngImport: i0, template: "<cax-sidebar [(visible)]=\"visible\" [position]=\"'right'\" [baseZIndex]=\"10000\" (onHide)=\"onSidebarHide()\" [headerText]=\"sidebarHeader\">\r\n <ng-template caxTemplate=\"content\">\r\n <div class=\"cax-comments-container\">\r\n <div class=\"cax-comments-list\" #commentsList>\r\n <ng-container *ngFor=\"let group of groupedComments\">\r\n <div class=\"cax-date-header\">{{ formatDate(group.date) }}</div>\r\n <div\r\n class=\"cax-comment-item\"\r\n *ngFor=\"let comment of group.items; let i = index\"\r\n [ngClass]=\"{\r\n 'cax-user-comment': !comment.isAdmin,\r\n 'cax-admin-comment': comment.isAdmin,\r\n 'consecutive-message': i > 0 && comment.isAdmin === group.items[i-1].isAdmin && comment.sender === group.items[i-1].sender,\r\n 'new-sender': i > 0 && comment.sender !== group.items[i-1].sender,\r\n 'new-date': i === 0 && group.items.length > 0\r\n }\"\r\n >\r\n <!-- User Message (Left Aligned) -->\r\n <ng-container *ngIf=\"!comment.isAdmin\">\r\n <div class=\"cax-commentbox-avatar-container\" *ngIf=\"i === 0 || group.items[i-1].sender !== comment.sender\">\r\n <cax-avatar [label]=\"comment.sender?.substring(0, 2).toUpperCase() || 'U'\" [avatarSize]=\"'xs'\" [shape]=\"'circle'\" styleclass=\"cax-commentbox-avatar\"> </cax-avatar>\r\n </div>\r\n <div class=\"cax-comment-content\" [class.no-avatar]=\"i > 0 && group.items[i-1].sender === comment.sender\">\r\n <div class=\"cax-comment-sender\" *ngIf=\"i === 0 || group.items[i-1].sender !== comment.sender\">{{comment.sender}}</div>\r\n <div class=\"cax-file-attachment\" *ngIf=\"comment.files?.length\">\r\n <div *ngFor=\"let file of comment.files\" class=\"file-item\">\r\n <div class=\"file-details\">\r\n <span class=\"file-name\">{{ file.name.slice(0, 20) }}{{ file.name.includes('.') ? '.' + file.name.split('.').pop() : '' }}</span>\r\n <span class=\"file-size\">{{file.size}}</span>\r\n </div>\r\n <i class=\"cax cax-download\" (click)=\"onFileDownload(file)\" role=\"button\" tabindex=\"0\"></i>\r\n </div>\r\n </div>\r\n <div class=\"cax-comment-text\" [innerHTML]=\"formatMessageWithTags(comment.text)\"></div>\r\n <span class=\"cax-comment-date\">{{ comment.date | date: 'shortTime' }}</span>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Admin Message (Right Aligned) -->\r\n <ng-container *ngIf=\"comment.isAdmin\">\r\n <div class=\"cax-comment-content admin\">\r\n <div class=\"cax-file-attachment\" *ngIf=\"comment.files?.length\">\r\n <div *ngFor=\"let file of comment.files\" class=\"file-item\">\r\n <div class=\"file-details\">\r\n <span class=\"file-name\">{{ file.name.slice(0, 20) }}{{ file.name.includes('.') ? '.' + file.name.split('.').pop() : '' }}</span>\r\n <span class=\"file-size\">{{file.size}}</span>\r\n </div>\r\n <i class=\"cax cax-download\" (click)=\"onFileDownload(file)\" role=\"button\" tabindex=\"0\"></i>\r\n </div>\r\n </div>\r\n <div class=\"cax-comment-text\" [innerHTML]=\"formatMessageWithTags(comment.text)\"></div>\r\n <span class=\"cax-comment-date\">{{ comment.date | date: 'shortTime' }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <cax-overlay #suggestionPanel [(visible)]=\"overlayVisible\" [appendTo]=\"inputText\" (onHide)=\"onSuggestionPanelHide()\" [styleClass]=\"'suggestion-panel'\">\r\n <div class=\"suggestion-list\">\r\n <div *ngFor=\"let item of filteredSuggestions; let i = index\" class=\"suggestion-item\" [ngClass]=\"{'selected': selectedSuggestionIndex === i}\" (click)=\"onSuggestionSelect(item)\" (mouseenter)=\"selectedSuggestionIndex = i\">\r\n <span class=\"suggestion-label\">{{item.name}}</span>\r\n <small class=\"suggestion-id\" *ngIf=\"currentTokenType === 'mention'\">{{item.id}}</small>\r\n </div>\r\n </div>\r\n </cax-overlay>\r\n <cax-overlay\r\n [(visible)]=\"filesOverlayVisible\"\r\n [appendTo]=\"countChip\"\r\n [showTransitionOptions]=\"'0.12s ease-out'\"\r\n [hideTransitionOptions]=\"'0.1s ease-in'\"\r\n [style]=\"{ width: '224px', right: '5%' }\"\r\n styleClass=\"files-list-overlay\"\r\n (onHide)=\"hideFilesOverlay()\"\r\n >\r\n <div class=\"files-overlay-content\">\r\n <div *ngFor=\"let file of selectedFiles.slice(4); let i = index\" class=\"file-item\">\r\n <span class=\"file-name\">{{getShortFileName(file.name)}}</span>\r\n <i class=\"cax cax-close-circle\" (click)=\"removeFile(i + 4)\"></i>\r\n </div>\r\n </div>\r\n </cax-overlay>\r\n\r\n <ng-template caxTemplate=\"footer\">\r\n <div class=\"chat-footer\">\r\n <div class=\"selected-files\" *ngIf=\"selectedFiles.length > 0\">\r\n <cax-chip *ngFor=\"let file of selectedFiles.slice(0, 4); let i = index\" [label]=\"getShortFileName(file.name)\" [removable]=\"true\" [size]=\"'lg'\" (onRemove)=\"removeFile(i, true)\">\r\n <ng-template caxTemplate=\"content\">\r\n <i class=\"cax cax-paperclip\"></i>\r\n </ng-template>\r\n </cax-chip>\r\n <cax-chip #countChip *ngIf=\"selectedFiles.length > 4\" [label]=\"'+' + getOverflowCount()\" [size]=\"'lg'\" (mouseenter)=\"showFilesOverlay($event)\"> </cax-chip>\r\n </div>\r\n <div class=\"cax-chat-input-container\">\r\n <div class=\"input-wrapper\">\r\n <cax-inputtext\r\n [(ngModel)]=\"newComment\"\r\n [size]=\"'lg'\"\r\n [rightIcon]=\"true\"\r\n [clearIcon]=\"false\"\r\n [rightIconClass]=\"'cax cax-paperclip'\"\r\n [rightIconClickable]=\"true\"\r\n (rightIconClick)=\"onFileIconClick($event)\"\r\n placeholder=\"Comment or mention others with @, \u2018#\u2019 for columns\"\r\n (keyup)=\"handleKeyUp($event)\"\r\n (keydown)=\"onKeyDown($event)\"\r\n [class]=\"{'chat-input': true, 'admin-input': isAdminSender}\"\r\n [style]=\"{'border-radius': '8px', background: '#ffffff'}\"\r\n #inputText\r\n >\r\n </cax-inputtext>\r\n </div>\r\n\r\n <cax-button [icon]=\"'cax cax-plain'\" [severity]=\"'primary'\" [size]=\"'large'\" (click)=\"addComment()\" [disabled]=\"!newComment.trim() && selectedFiles.length === 0\" class=\"send-button\"> </cax-button>\r\n </div>\r\n\r\n <input #fileInput type=\"file\" (change)=\"onFileSelect($event)\" style=\"display: none\" accept=\"*/*\" multiple />\r\n </div>\r\n </ng-template>\r\n</cax-sidebar>\r\n", styles: ["@layer cax{.cax-comments-list{display:flex;flex-direction:column;gap:4px;flex:1;overflow-y:auto;overflow-x:hidden;height:100%;padding-bottom:0;will-change:transform;transform:translateZ(0);backface-visibility:hidden;-webkit-backface-visibility:hidden;scrollbar-width:thin;scrollbar-color:rgba(94,92,92,.3) transparent}.cax-comments-list:after{content:\"\";display:block;min-height:20px;scroll-snap-align:end}.cax-comments-list::-webkit-scrollbar-track{background:transparent}.cax-comments-list::-webkit-scrollbar-thumb{background-color:#5553531a;border-radius:4px;border:2px solid transparent;background-clip:padding-box}.cax-comment-item{display:flex;align-items:flex-end;max-width:85%;gap:4px}.cax-comment-item.consecutive-message{margin-top:0}.cax-comment-item.new-sender{margin-top:12px}.cax-comment-item.new-date{margin-top:0}.cax-user-comment{align-self:flex-start;display:flex;flex-direction:row;text-align:left}.cax-user-comment .cax-commentbox-avatar-container{display:flex;align-items:flex-end}.cax-user-comment .cax-comment-content{margin-bottom:0;display:flex;flex-direction:column;border-radius:12px 12px 12px 0}.cax-user-comment .cax-comment-content.no-avatar{border-radius:12px;margin-left:25px}.cax-user-comment .cax-comment-content .cax-comment-sender{font-size:14px;font-weight:600;color:var(--neutral-900);margin-bottom:0;line-height:20px}.cax-user-comment.consecutive-message .cax-comment-content{border-radius:12px}.cax-admin-comment{align-self:flex-end;display:flex;flex-direction:row;justify-content:flex-end;text-align:right}.cax-admin-comment .cax-commentbox-avatar-container{display:flex;align-items:flex-end}.cax-admin-comment .cax-comment-content{margin-bottom:0;display:flex;flex-direction:column;border-radius:12px 12px 0;text-align:left}.cax-admin-comment .cax-comment-content .cax-comment-sender{font-size:14px;font-weight:600;color:var(--neutral-900);margin-bottom:0;line-height:20px}.cax-admin-comment.consecutive-message .cax-comment-content{border-radius:12px}.cax-commentbox-avatar{width:32px;height:32px;border-radius:50%;margin:0 8px}.cax-comment-content{background:var(--white-100);border-radius:12px 12px 12px 0;padding:8px;max-width:100%;word-wrap:break-word;display:flex;flex-direction:column;box-shadow:0 2px 4px #0000000d}.cax-comment-content .cax-comment-text{font-weight:400;font-size:14px;line-height:20px}.cax-comment-content .cax-comment-text ::ng-deep .mention{display:inline-block;font-weight:600;color:var(--primary-500)}.cax-comment-content .cax-comment-text ::ng-deep .hashtag{display:inline-block;font-weight:600;color:var(--primary-500)}.cax-comment-content .cax-comment-sender{font-size:14px;font-weight:600;color:var(--neutral-900);margin-bottom:0;line-height:20px}.cax-file-attachment{margin-bottom:12px}.cax-file-attachment .file-item{display:flex;align-items:center;gap:12px;border-color:1px solid var(--neutral-150);padding:10px 16px;background:var(--neutral-75);border-radius:8px;cursor:pointer;margin-bottom:8px}.cax-file-attachment .file-item .file-details{display:flex;flex:1;align-items:center;gap:12px}.cax-file-attachment .file-item .file-name{color:var(--neutral-900);font-weight:500;font-size:14px;line-height:20px;flex:1;white-space:nowrap;overflow:hidden}.cax-file-attachment .file-item .file-size{color:var(--neutral-600);font-weight:400;font-size:12px;line-height:18px;margin-right:8px}.cax-file-attachment .file-item i{color:var(--neutral-900);font-size:1.1rem;margin-left:auto;order:2}.cax-file-attachment .file-item i.cax-download{cursor:pointer;transition:color .2s ease}.cax-file-attachment .file-item i.cax-download:hover{color:var(--primary-600)}.cax-file-attachment .file-item i.cax-download:active{color:var(--primary-700)}.cax-file-attachment .file-item:last-child{margin-bottom:0}.cax-file-attachment:last-child{margin-bottom:0}.cax-comment-date{font-weight:400;font-size:12px;line-height:18px;color:var(--neutral-600);align-self:flex-end}.cax-chat-input-container{display:flex;gap:.5rem}.cax-chat-input-container .chat-input{flex:1}.cax-chat-input-container .send-button{cursor:pointer}.input-wrapper{position:relative;flex:1;display:flex;flex-direction:column}.cax-date-header{text-align:center;font-size:12px;font-weight:500;line-height:18px;color:var(--neutral-700);background:var(--neutral-100);align-self:center;width:fit-content;padding:4px 12px;border-radius:4px;margin:11px 0;position:relative;z-index:1}.cax-date-header:first-child{margin-top:0}.cax-comments-container{display:flex;flex-direction:column;height:calc(100vh - 200px);overflow:hidden;position:relative;transform:translateZ(0);backface-visibility:hidden}.selected-files{display:flex;flex-wrap:wrap;gap:.5rem;padding:0 0 5px;position:relative}.selected-files .cax-chip{background:var(--neutral-100)}.selected-files .cax-chip i{margin-right:.5rem}.selected-files .files-overlay{position:absolute;background:var(--white-100);border-radius:8px;box-shadow:0 4px 12px #00000026;width:300px;max-height:400px;z-index:1000;overflow:hidden;border:1px solid var(--neutral-200)}.selected-files .files-overlay .files-overlay-header{padding:12px 16px;font-weight:600;font-size:14px;border-bottom:1px solid var(--neutral-100);background:var(--neutral-50)}.selected-files .files-overlay .files-overlay-content{max-height:350px;overflow-y:auto;padding:8px 0}.selected-files .files-overlay .files-overlay-content .file-item{display:flex;align-items:center;padding:8px 16px;transition:background-color .2s ease}.selected-files .files-overlay .files-overlay-content .file-item:hover{background-color:var(--neutral-50)}.selected-files .files-overlay .files-overlay-content .file-item i.cax-paperclip{color:var(--neutral-600);margin-right:8px}.selected-files .files-overlay .files-overlay-content .file-item .file-name{flex:1;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:8px}.selected-files .files-overlay .files-overlay-content .file-item .file-size{color:var(--neutral-600);font-size:12px;margin-right:8px}.selected-files .files-overlay .files-overlay-content .file-item i.cax-times{color:var(--neutral-600);cursor:pointer;transition:color .2s ease}.selected-files .files-overlay .files-overlay-content .file-item i.cax-times:hover{color:var --error-500}.selected-files :deep(.file-chip){background:var(--neutral-50);border:1px solid var(--neutral-100)}.selected-files :deep(.file-chip) .file-details{display:flex;align-items:center;gap:8px}.selected-files :deep(.file-chip) i{color:var(--primary-500);margin-right:8px}.selected-files :deep(.file-chip) .file-name{font-weight:500}.selected-files :deep(.file-chip) .file-size{color:var(--neutral-600);font-size:.8rem}:host ::ng-deep .cax-sidebar{width:589px!important;border:1px solid var(--neutral-200)!important}:host ::ng-deep .cax-sidebar .cax-sidebar-content{display:flex;flex-direction:column;background:var(--neutral-25);padding:24px 8px!important}:host ::ng-deep .cax-sidebar .cax-sidebar-footer{padding:12px!important;background:var(--neutral-50);border-top:1px solid var(--neutral-200)}:host ::ng-deep .cax-sidebar .cax-sidebar-header{border-bottom:1px solid var(--neutral-200);background:var(--neutral-50);padding:16px 24px!important}:host ::ng-deep .cax-overlay{position:absolute;bottom:0!important;top:unset!important;left:unset!important}:host ::ng-deep .suggestion-panel{background:var(--white-100);box-shadow:0 2px 8px #0000001a;z-index:9999;padding:12px 4px;margin-left:20px;width:224px;border-radius:8px;border:1px solid var(--neutral-200)}:host ::ng-deep .suggestion-panel .suggestion-list{max-height:200px;overflow-y:auto;will-change:transform;transform:translateZ(0);backface-visibility:hidden;-webkit-backface-visibility:hidden;scrollbar-width:thin;scrollbar-color:rgba(94,92,92,.3) transparent}:host ::ng-deep .suggestion-panel .suggestion-list .suggestion-item{padding:6px 8px;cursor:pointer;display:flex;justify-content:space-between;transition:background-color .2s ease;align-items:center}:host ::ng-deep .suggestion-panel .suggestion-list .suggestion-item:hover{background-color:var(--neutral-50)}:host ::ng-deep .suggestion-panel .suggestion-list .suggestion-item.selected{background-color:var(--neutral-50)}:host ::ng-deep .suggestion-panel .suggestion-list .suggestion-item .suggestion-label{font-weight:500}:host ::ng-deep .suggestion-panel .suggestion-list .suggestion-item .suggestion-id{color:var(--neutral-600);font-size:.85em}:host ::ng-deep .suggestion-panel .suggestion-list:after{content:\"\";display:block;min-height:20px;scroll-snap-align:end}:host ::ng-deep .suggestion-panel .suggestion-list::-webkit-scrollbar-track{background:transparent}:host ::ng-deep .suggestion-panel .suggestion-list::-webkit-scrollbar-thumb{background-color:#5553531a;border-radius:4px;border:2px solid transparent;background-clip:padding-box}:host ::ng-deep .chat-footer{position:relative;z-index:1}:host ::ng-deep .cax-chat-input-container .chat-input .cax-paperclip{color:var(--neutral-900)!important}:host ::ng-deep .files-list-overlay{border:1px solid var(--neutral-200);background:var(--white-100);box-shadow:0 2px 8px #0000001a;z-index:9999;padding:12px 4px;width:224px;border-radius:8px}:host ::ng-deep .files-list-overlay.cax-overlay{transform-origin:right center!important}:host ::ng-deep .files-list-overlay .files-overlay-content{max-height:200px;overflow-y:auto}:host ::ng-deep .files-list-overlay .files-overlay-content .file-item{transition:background-color .2s ease;padding:6px 8px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;will-change:transform;transform:translateZ(0);backface-visibility:hidden;-webkit-backface-visibility:hidden;scrollbar-width:thin;scrollbar-color:rgba(94,92,92,.3) transparent}:host ::ng-deep .files-list-overlay .files-overlay-content .file-item:hover{background-color:var(--neutral-50)}:host ::ng-deep .files-list-overlay .files-overlay-content .file-item .file-name{flex:1;font-size:14px;font-weight:500;line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:8px}:host ::ng-deep .files-list-overlay .files-overlay-content .file-item .file-size{color:var(--neutral-600);font-size:12px;margin-right:8px}:host ::ng-deep .files-list-overlay .files-overlay-content .file-item i.cax-times{color:var(--neutral-600);cursor:pointer;border:1.1rem solid var(--neutral-200);transition:color .2s ease}:host ::ng-deep .files-list-overlay .files-overlay-content .file-item:after{content:\"\";display:block;min-height:20px;scroll-snap-align:end}:host ::ng-deep .files-list-overlay .files-overlay-content .file-item::-webkit-scrollbar-track{background:transparent}:host ::ng-deep .files-list-overlay .files-overlay-content .file-item::-webkit-scrollbar-thumb{background-color:#5553531a;border-radius:4px;border:2px solid transparent;background-clip:padding-box}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.Sidebar, selector: "cax-sidebar", inputs: ["headerText", "appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen", "contentTemplate", "headerTemplate", "headlessTemplate", "footerTemplate", "closeIconTemplate", "headerStyle"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "component", type: i5.InputTextComponent, selector: "cax-inputtext", inputs: ["value", "placeholder", "disabled", "maxlength", "successText", "errorText", "showLabel", "leftIcon", "rightIcon", "rightIconClickable", "clearIcon", "label", "iconPath", "disabledIcon", "showIcon", "iconClass", "leftIconClass", "rightIconClass", "invalid", "required", "style", "size", "styleClass"], outputs: ["valueChange", "rightIconClick"] }, { kind: "component", type: i6.Button, selector: "cax-button", inputs: ["type", "iconPos", "icon", "badge", "rightIcon", "leftIcon", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i7.CaxTemplate, selector: "[caxTemplate]", inputs: ["type", "caxTemplate"] }, { kind: "component", type: i8.Chip, selector: "cax-chip", inputs: ["label", "icon", "image", "alt", "style", "styleClass", "removable", "removeIcon", "size", "severity"], outputs: ["onRemove", "onImageError"] }, { kind: "component", type: i9.Overlay, selector: "cax-overlay", inputs: ["visible", "mode", "style", "styleClass", "contentStyle", "contentStyleClass", "target", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "listener", "responsive", "options"], outputs: ["visibleChange", "onBeforeShow", "onShow", "onBeforeHide", "onHide", "onAnimationStart", "onAnimationDone"] }, { kind: "component", type: i10.Avatar, selector: "cax-avatar", inputs: ["label", "icon", "image", "avatarSize", "shape", "style", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }] });
497
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: CommentboxComponent, selector: "cax-comments", inputs: { comments: "comments", mentionSuggestions: "mentionSuggestions", hashtagSuggestions: "hashtagSuggestions", sidebarHeader: "sidebarHeader", isAdmin: "isAdmin", visible: "visible" }, outputs: { commentAdded: "commentAdded", fileSelected: "fileSelected", fileDownload: "fileDownload", visibleChange: "visibleChange" }, host: { listeners: { "document:click": "onDocumentClick($event)" } }, viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true }, { propertyName: "suggestionPanel", first: true, predicate: ["suggestionPanel"], descendants: true }, { propertyName: "inputText", first: true, predicate: ["inputText"], descendants: true }, { propertyName: "commentsList", first: true, predicate: ["commentsList"], descendants: true }, { propertyName: "countChip", first: true, predicate: ["countChip"], descendants: true }], ngImport: i0, template: "<cax-sidebar [(visible)]=\"visible\" [position]=\"'right'\" [baseZIndex]=\"10000\" (onHide)=\"onSidebarHide()\" [headerText]=\"sidebarHeader\">\r\n <ng-template caxTemplate=\"content\">\r\n <div class=\"cax-comments-container\">\r\n <div class=\"cax-comments-list\" #commentsList>\r\n <ng-container *ngFor=\"let group of groupedComments\">\r\n <div class=\"cax-date-header\">{{ formatDate(group.date) }}</div>\r\n <div\r\n class=\"cax-comment-item\"\r\n *ngFor=\"let comment of group.items; let i = index\"\r\n [ngClass]=\"{\r\n 'cax-user-comment': !comment.isAdmin,\r\n 'cax-admin-comment': comment.isAdmin,\r\n 'consecutive-message': i > 0 && comment.isAdmin === group.items[i-1].isAdmin && comment.sender === group.items[i-1].sender,\r\n 'new-sender': i > 0 && comment.sender !== group.items[i-1].sender,\r\n 'new-date': i === 0 && group.items.length > 0\r\n }\"\r\n >\r\n <!-- User Message (Left Aligned) -->\r\n <ng-container *ngIf=\"!comment.isAdmin\">\r\n <div class=\"cax-commentbox-avatar-container\" *ngIf=\"i === 0 || group.items[i-1].sender !== comment.sender\">\r\n <cax-avatar [label]=\"comment.sender?.substring(0, 2).toUpperCase() || 'U'\" [avatarSize]=\"'xs'\" [shape]=\"'circle'\" styleclass=\"cax-commentbox-avatar\"> </cax-avatar>\r\n </div>\r\n <div class=\"cax-comment-content\" [class.no-avatar]=\"i > 0 && group.items[i-1].sender === comment.sender\">\r\n <div class=\"cax-comment-sender\" *ngIf=\"i === 0 || group.items[i-1].sender !== comment.sender\">{{comment.sender}}</div>\r\n <div class=\"cax-file-attachment\" *ngIf=\"comment.files?.length\">\r\n <div *ngFor=\"let file of comment.files\" class=\"file-item\">\r\n <div class=\"file-details\">\r\n <span class=\"file-name\">{{ file.name.slice(0, 20) }}{{ file.name.includes('.') ? '.' + file.name.split('.').pop() : '' }}</span>\r\n <span class=\"file-size\">{{file.size}}</span>\r\n </div>\r\n <i class=\"cax cax-download\" (click)=\"onFileDownload(file)\" role=\"button\" tabindex=\"0\"></i>\r\n </div>\r\n </div>\r\n <div class=\"cax-comment-text\" [innerHTML]=\"formatMessageWithTags(comment.text)\"></div>\r\n <span class=\"cax-comment-date\">{{ comment.date | date: 'shortTime' }}</span>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Admin Message (Right Aligned) -->\r\n <ng-container *ngIf=\"comment.isAdmin\">\r\n <div class=\"cax-comment-content admin\">\r\n <div class=\"cax-file-attachment\" *ngIf=\"comment.files?.length\">\r\n <div *ngFor=\"let file of comment.files\" class=\"file-item\">\r\n <div class=\"file-details\">\r\n <span class=\"file-name\">{{ file.name.slice(0, 20) }}{{ file.name.includes('.') ? '.' + file.name.split('.').pop() : '' }}</span>\r\n <span class=\"file-size\">{{file.size}}</span>\r\n </div>\r\n <i class=\"cax cax-download\" (click)=\"onFileDownload(file)\" role=\"button\" tabindex=\"0\"></i>\r\n </div>\r\n </div>\r\n <div class=\"cax-comment-text\" [innerHTML]=\"formatMessageWithTags(comment.text)\"></div>\r\n <span class=\"cax-comment-date\">{{ comment.date | date: 'shortTime' }}</span>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-template>\r\n <cax-overlay #suggestionPanel [(visible)]=\"overlayVisible\" [appendTo]=\"inputText\" (onHide)=\"onSuggestionPanelHide()\" [styleClass]=\"'suggestion-panel'\">\r\n <div class=\"suggestion-list\">\r\n <div *ngFor=\"let item of filteredSuggestions; let i = index\" class=\"suggestion-item\" [ngClass]=\"{'selected': selectedSuggestionIndex === i}\" (click)=\"onSuggestionSelect(item)\" (mouseenter)=\"selectedSuggestionIndex = i\">\r\n <span class=\"suggestion-label\">{{item.name}}</span>\r\n <small class=\"suggestion-id\" *ngIf=\"currentTokenType === 'mention'\">{{item.id}}</small>\r\n </div>\r\n </div>\r\n </cax-overlay>\r\n <cax-overlay\r\n [(visible)]=\"filesOverlayVisible\"\r\n [appendTo]=\"countChip\"\r\n [showTransitionOptions]=\"'0.12s ease-out'\"\r\n [hideTransitionOptions]=\"'0.1s ease-in'\"\r\n [style]=\"{ width: '224px', right: '5%' }\"\r\n styleClass=\"files-list-overlay\"\r\n (onHide)=\"hideFilesOverlay()\"\r\n >\r\n <div class=\"files-overlay-content\">\r\n <div *ngFor=\"let file of selectedFiles.slice(4); let i = index\" class=\"file-item\">\r\n <span class=\"file-name\">{{getShortFileName(file.name)}}</span>\r\n <i class=\"cax cax-close-circle\" (click)=\"removeFile(i + 4)\"></i>\r\n </div>\r\n </div>\r\n </cax-overlay>\r\n\r\n <ng-template caxTemplate=\"footer\">\r\n <div class=\"chat-footer\">\r\n <div class=\"selected-files\" *ngIf=\"selectedFiles.length > 0\">\r\n <cax-chip *ngFor=\"let file of selectedFiles.slice(0, 4); let i = index\" [label]=\"getShortFileName(file.name)\" [removable]=\"true\" [size]=\"'lg'\" (onRemove)=\"removeFile(i, true)\">\r\n <ng-template caxTemplate=\"content\">\r\n <i class=\"cax cax-paperclip\"></i>\r\n </ng-template>\r\n </cax-chip>\r\n <cax-chip #countChip *ngIf=\"selectedFiles.length > 4\" [label]=\"'+' + getOverflowCount()\" [size]=\"'lg'\" (mouseenter)=\"showFilesOverlay($event)\"> </cax-chip>\r\n </div>\r\n <div class=\"cax-chat-input-container\">\r\n <div class=\"input-wrapper\">\r\n <cax-inputtext\r\n [(ngModel)]=\"newComment\"\r\n [size]=\"'lg'\"\r\n [rightIcon]=\"true\"\r\n [clearIcon]=\"false\"\r\n [rightIconClass]=\"'cax cax-paperclip'\"\r\n [rightIconClickable]=\"true\"\r\n (rightIconClick)=\"onFileIconClick($event)\"\r\n placeholder=\"Comment or mention others with @, \u2018#\u2019 for columns\"\r\n (keyup)=\"handleKeyUp($event)\"\r\n (keydown)=\"onKeyDown($event)\"\r\n [class]=\"{'chat-input': true, 'admin-input': isAdminSender}\"\r\n [style]=\"{'border-radius': '8px', background: '#ffffff'}\"\r\n #inputText\r\n >\r\n </cax-inputtext>\r\n </div>\r\n\r\n <cax-button [icon]=\"'cax cax-plain'\" [severity]=\"'primary'\" [size]=\"'large'\" (click)=\"addComment()\" [disabled]=\"!newComment.trim() && selectedFiles.length === 0\" class=\"send-button\"> </cax-button>\r\n </div>\r\n\r\n <input #fileInput type=\"file\" (change)=\"onFileSelect($event)\" style=\"display: none\" accept=\"*/*\" multiple />\r\n </div>\r\n </ng-template>\r\n</cax-sidebar>\r\n", styles: ["@layer cax{.cax-comments-list{display:flex;flex-direction:column;gap:4px;flex:1;overflow-y:auto;overflow-x:hidden;height:100%;padding-bottom:0;will-change:transform;transform:translateZ(0);backface-visibility:hidden;-webkit-backface-visibility:hidden;scrollbar-width:thin;scrollbar-color:rgba(94,92,92,.3) transparent}.cax-comments-list:after{content:\"\";display:block;min-height:20px;scroll-snap-align:end}.cax-comments-list::-webkit-scrollbar-track{background:transparent}.cax-comments-list::-webkit-scrollbar-thumb{background-color:#5553531a;border-radius:4px;border:2px solid transparent;background-clip:padding-box}.cax-comment-item{display:flex;align-items:flex-end;max-width:85%;gap:4px}.cax-comment-item.consecutive-message{margin-top:0}.cax-comment-item.new-sender{margin-top:12px}.cax-comment-item.new-date{margin-top:0}.cax-user-comment{align-self:flex-start;display:flex;flex-direction:row;text-align:left}.cax-user-comment .cax-commentbox-avatar-container{display:flex;align-items:flex-end}.cax-user-comment .cax-comment-content{margin-bottom:0;display:flex;flex-direction:column;border-radius:12px 12px 12px 0}.cax-user-comment .cax-comment-content.no-avatar{border-radius:12px;margin-left:25px}.cax-user-comment .cax-comment-content .cax-comment-sender{font-size:14px;font-weight:600;color:var(--neutral-900);margin-bottom:0;line-height:20px}.cax-user-comment.consecutive-message .cax-comment-content{border-radius:12px}.cax-admin-comment{align-self:flex-end;display:flex;flex-direction:row;justify-content:flex-end;text-align:right}.cax-admin-comment .cax-commentbox-avatar-container{display:flex;align-items:flex-end}.cax-admin-comment .cax-comment-content{margin-bottom:0;display:flex;flex-direction:column;border-radius:12px 12px 0;text-align:left}.cax-admin-comment .cax-comment-content .cax-comment-sender{font-size:14px;font-weight:600;color:var(--neutral-900);margin-bottom:0;line-height:20px}.cax-admin-comment.consecutive-message .cax-comment-content{border-radius:12px}.cax-commentbox-avatar{width:32px;height:32px;border-radius:50%;margin:0 8px}.cax-comment-content{background:var(--white-100);border-radius:12px 12px 12px 0;padding:8px;max-width:100%;word-wrap:break-word;display:flex;flex-direction:column;box-shadow:0 2px 4px #0000000d}.cax-comment-content .cax-comment-text{font-weight:400;font-size:14px;line-height:20px}.cax-comment-content .cax-comment-text ::ng-deep .mention{display:inline-block;font-weight:600;color:var(--primary-500)}.cax-comment-content .cax-comment-text ::ng-deep .hashtag{display:inline-block;font-weight:600;color:var(--primary-500)}.cax-comment-content .cax-comment-sender{font-size:14px;font-weight:600;color:var(--neutral-900);margin-bottom:0;line-height:20px}.cax-file-attachment{margin-bottom:12px}.cax-file-attachment .file-item{display:flex;align-items:center;gap:12px;border-color:1px solid var(--neutral-150);padding:10px 16px;background:var(--neutral-75);border-radius:8px;cursor:pointer;margin-bottom:8px}.cax-file-attachment .file-item .file-details{display:flex;flex:1;align-items:center;gap:12px}.cax-file-attachment .file-item .file-name{color:var(--neutral-900);font-weight:500;font-size:14px;line-height:20px;flex:1;white-space:nowrap;overflow:hidden}.cax-file-attachment .file-item .file-size{color:var(--neutral-600);font-weight:400;font-size:12px;line-height:18px;margin-right:8px}.cax-file-attachment .file-item i{color:var(--neutral-900);font-size:1.1rem;margin-left:auto;order:2}.cax-file-attachment .file-item i.cax-download{cursor:pointer;transition:color .2s ease}.cax-file-attachment .file-item i.cax-download:hover{color:var(--primary-600)}.cax-file-attachment .file-item i.cax-download:active{color:var(--primary-700)}.cax-file-attachment .file-item:last-child{margin-bottom:0}.cax-file-attachment:last-child{margin-bottom:0}.cax-comment-date{font-weight:400;font-size:12px;line-height:18px;color:var(--neutral-600);align-self:flex-end}.cax-chat-input-container{display:flex;gap:.5rem}.cax-chat-input-container .chat-input{flex:1}.cax-chat-input-container .send-button{cursor:pointer}.input-wrapper{position:relative;flex:1;display:flex;flex-direction:column}.cax-date-header{text-align:center;font-size:12px;font-weight:500;line-height:18px;color:var(--neutral-700);background:var(--neutral-100);align-self:center;width:fit-content;padding:4px 12px;border-radius:4px;margin:11px 0;position:relative;z-index:1}.cax-date-header:first-child{margin-top:0}.cax-comments-container{display:flex;flex-direction:column;height:calc(100vh - 200px);overflow:hidden;position:relative;transform:translateZ(0);backface-visibility:hidden}.selected-files{display:flex;flex-wrap:wrap;gap:.5rem;padding:0 0 5px;position:relative}.selected-files .cax-chip{background:var(--neutral-100)}.selected-files .cax-chip i{margin-right:.5rem}.selected-files .files-overlay{position:absolute;background:var(--white-100);border-radius:8px;box-shadow:0 4px 12px #00000026;width:300px;max-height:400px;z-index:1000;overflow:hidden;border:1px solid var(--neutral-200)}.selected-files .files-overlay .files-overlay-header{padding:12px 16px;font-weight:600;font-size:14px;border-bottom:1px solid var(--neutral-100);background:var(--neutral-50)}.selected-files .files-overlay .files-overlay-content{max-height:350px;overflow-y:auto;padding:8px 0}.selected-files .files-overlay .files-overlay-content .file-item{display:flex;align-items:center;padding:8px 16px;transition:background-color .2s ease}.selected-files .files-overlay .files-overlay-content .file-item:hover{background-color:var(--neutral-50)}.selected-files .files-overlay .files-overlay-content .file-item i.cax-paperclip{color:var(--neutral-600);margin-right:8px}.selected-files .files-overlay .files-overlay-content .file-item .file-name{flex:1;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:8px}.selected-files .files-overlay .files-overlay-content .file-item .file-size{color:var(--neutral-600);font-size:12px;margin-right:8px}.selected-files .files-overlay .files-overlay-content .file-item i.cax-times{color:var(--neutral-600);cursor:pointer;transition:color .2s ease}.selected-files .files-overlay .files-overlay-content .file-item i.cax-times:hover{color:var --error-500}.selected-files :deep(.file-chip){background:var(--neutral-50);border:1px solid var(--neutral-100)}.selected-files :deep(.file-chip) .file-details{display:flex;align-items:center;gap:8px}.selected-files :deep(.file-chip) i{color:var(--primary-500);margin-right:8px}.selected-files :deep(.file-chip) .file-name{font-weight:500}.selected-files :deep(.file-chip) .file-size{color:var(--neutral-600);font-size:.8rem}:host ::ng-deep .cax-sidebar{width:589px!important;border:1px solid var(--neutral-200)!important}:host ::ng-deep .cax-sidebar .cax-sidebar-content{display:flex;flex-direction:column;background:var(--neutral-25);padding:24px 8px!important}:host ::ng-deep .cax-sidebar .cax-sidebar-footer{padding:12px!important;background:var(--neutral-50);border-top:1px solid var(--neutral-200)}:host ::ng-deep .cax-sidebar .cax-sidebar-header{border-bottom:1px solid var(--neutral-200);background:var(--neutral-50);padding:16px 24px!important}:host ::ng-deep .cax-overlay{position:absolute;bottom:0!important;top:unset!important;left:unset!important}:host ::ng-deep .suggestion-panel{background:var(--white-100);box-shadow:0 2px 8px #0000001a;z-index:9999;padding:12px 4px;margin-left:20px;width:224px;border-radius:8px;border:1px solid var(--neutral-200)}:host ::ng-deep .suggestion-panel .suggestion-list{max-height:200px;overflow-y:auto;will-change:transform;transform:translateZ(0);backface-visibility:hidden;-webkit-backface-visibility:hidden;scrollbar-width:thin;scrollbar-color:rgba(94,92,92,.3) transparent}:host ::ng-deep .suggestion-panel .suggestion-list .suggestion-item{padding:6px 8px;cursor:pointer;display:flex;justify-content:space-between;transition:background-color .2s ease;align-items:center}:host ::ng-deep .suggestion-panel .suggestion-list .suggestion-item:hover{background-color:var(--neutral-50)}:host ::ng-deep .suggestion-panel .suggestion-list .suggestion-item.selected{background-color:var(--neutral-50)}:host ::ng-deep .suggestion-panel .suggestion-list .suggestion-item .suggestion-label{font-weight:500}:host ::ng-deep .suggestion-panel .suggestion-list .suggestion-item .suggestion-id{color:var(--neutral-600);font-size:.85em}:host ::ng-deep .suggestion-panel .suggestion-list:after{content:\"\";display:block;min-height:20px;scroll-snap-align:end}:host ::ng-deep .suggestion-panel .suggestion-list::-webkit-scrollbar-track{background:transparent}:host ::ng-deep .suggestion-panel .suggestion-list::-webkit-scrollbar-thumb{background-color:#5553531a;border-radius:4px;border:2px solid transparent;background-clip:padding-box}:host ::ng-deep .chat-footer{position:relative;z-index:1}:host ::ng-deep .cax-chat-input-container .chat-input .cax-paperclip{color:var(--neutral-900)!important}:host ::ng-deep .files-list-overlay{border:1px solid var(--neutral-200);background:var(--white-100);box-shadow:0 2px 8px #0000001a;z-index:9999;padding:12px 4px;width:224px;border-radius:8px}:host ::ng-deep .files-list-overlay.cax-overlay{transform-origin:right center!important}:host ::ng-deep .files-list-overlay .files-overlay-content{max-height:200px;overflow-y:auto}:host ::ng-deep .files-list-overlay .files-overlay-content .file-item{transition:background-color .2s ease;padding:6px 8px;cursor:pointer;display:flex;justify-content:space-between;align-items:center;will-change:transform;transform:translateZ(0);backface-visibility:hidden;-webkit-backface-visibility:hidden;scrollbar-width:thin;scrollbar-color:rgba(94,92,92,.3) transparent}:host ::ng-deep .files-list-overlay .files-overlay-content .file-item:hover{background-color:var(--neutral-50)}:host ::ng-deep .files-list-overlay .files-overlay-content .file-item .file-name{flex:1;font-size:14px;font-weight:500;line-height:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-right:8px}:host ::ng-deep .files-list-overlay .files-overlay-content .file-item .file-size{color:var(--neutral-600);font-size:12px;margin-right:8px}:host ::ng-deep .files-list-overlay .files-overlay-content .file-item i.cax-times{color:var(--neutral-600);cursor:pointer;border:1.1rem solid var(--neutral-200);transition:color .2s ease}:host ::ng-deep .files-list-overlay .files-overlay-content .file-item:after{content:\"\";display:block;min-height:20px;scroll-snap-align:end}:host ::ng-deep .files-list-overlay .files-overlay-content .file-item::-webkit-scrollbar-track{background:transparent}:host ::ng-deep .files-list-overlay .files-overlay-content .file-item::-webkit-scrollbar-thumb{background-color:#5553531a;border-radius:4px;border:2px solid transparent;background-clip:padding-box}}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.Sidebar, selector: "cax-sidebar", inputs: ["headerText", "appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen", "mode", "contentTemplate", "headerTemplate", "headlessTemplate", "footerTemplate", "closeIconTemplate", "headerStyle"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "component", type: i5.InputTextComponent, selector: "cax-inputtext", inputs: ["value", "placeholder", "disabled", "maxlength", "successText", "errorText", "showLabel", "leftIcon", "rightIcon", "rightIconClickable", "clearIcon", "label", "iconPath", "disabledIcon", "showIcon", "iconClass", "leftIconClass", "rightIconClass", "invalid", "required", "style", "size", "styleClass"], outputs: ["valueChange", "rightIconClick"] }, { kind: "component", type: i6.Button, selector: "cax-button", inputs: ["type", "iconPos", "icon", "badge", "rightIcon", "leftIcon", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i7.CaxTemplate, selector: "[caxTemplate]", inputs: ["type", "caxTemplate"] }, { kind: "component", type: i8.Chip, selector: "cax-chip", inputs: ["label", "icon", "image", "alt", "style", "styleClass", "removable", "removeIcon", "size", "severity"], outputs: ["onRemove", "onImageError"] }, { kind: "component", type: i9.Overlay, selector: "cax-overlay", inputs: ["visible", "mode", "style", "styleClass", "contentStyle", "contentStyleClass", "target", "appendTo", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "listener", "responsive", "options"], outputs: ["visibleChange", "onBeforeShow", "onShow", "onBeforeHide", "onHide", "onAnimationStart", "onAnimationDone"] }, { kind: "component", type: i10.Avatar, selector: "cax-avatar", inputs: ["label", "icon", "image", "avatarSize", "shape", "style", "styleClass", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }] });
498
498
  }
499
499
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: CommentboxComponent, decorators: [{
500
500
  type: Component,
@@ -65,14 +65,20 @@ export class Navigation {
65
65
  headerContainer;
66
66
  ngOnChanges() {
67
67
  if (this.activeTab == 'notifications') {
68
- if (this.notifications)
68
+ if (this.notifications) {
69
+ this.topNavList?.map((list) => (list.active = false));
70
+ this.bottomNavList?.map((list) => (list.active = false));
69
71
  this.notificationActive = true;
72
+ }
70
73
  else
71
74
  this.topNavList[0].active = true;
72
75
  }
73
76
  else if (this.activeTab == 'help-centre') {
74
- if (this.helpCentre)
77
+ if (this.helpCentre) {
78
+ this.topNavList?.map((list) => (list.active = false));
79
+ this.bottomNavList?.map((list) => (list.active = false));
75
80
  this.helpCentreActive = true;
81
+ }
76
82
  else
77
83
  this.topNavList[0].active = true;
78
84
  }
@@ -390,4 +396,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
390
396
  type: HostListener,
391
397
  args: ['window:resize']
392
398
  }] } });
393
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9uYXZpZ2F0aW9uL25hdmlnYXRpb24udHMiLCIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFxQixpQkFBaUIsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUNyTSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXBELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7O0FBOEJ0RCxNQUFNLE9BQU8sVUFBVTtJQXVCQztJQXRCWCxNQUFNLENBQXFCO0lBQzNCLFVBQVUsQ0FBZ0I7SUFDMUIs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SUksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFRdUIsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ0UsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBZ0o1QixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRyaWdnZXIsIHRyYW5zaXRpb24sIHN0eWxlLCBhbmltYXRlIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFZpZXdFbmNhcHN1bGF0aW9uLCBJbnB1dCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpdmlkZXJNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9kaXZpZGVyJztcbmltcG9ydCB7IExvZ29Nb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9sb2dvJztcbmltcG9ydCB7IEFjdGl2ZVN1YnNjcmlwdGlvbiwgTmF2TGlzdEl0ZW0sIFN1YnNjcmlwdGlvbkxpc3QsIFRhYkluZGV4VHlwZSB9IGZyb20gJy4vbmF2aWdhdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW1hZ2VNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pbWFnZSc7XG5pbXBvcnQgeyBBdmF0YXJNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9hdmF0YXInO1xuaW1wb3J0IHsgT3ZlcmxheVBhbmVsTW9kdWxlIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vb3ZlcmxheXBhbmVsJztcbmltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9vdmVybGF5JztcbmltcG9ydCB7IFJhZGlvQnV0dG9uTW9kdWxlIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vcmFkaW9idXR0b24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCYWRnZU1vZHVsZSB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2JhZGdlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjYXgtbmF2aWdhdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25hdmlnYXRpb24uaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9uYXZpZ2F0aW9uLnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtMb2dvTW9kdWxlLCBDb21tb25Nb2R1bGUsIERpdmlkZXJNb2R1bGUsIEltYWdlTW9kdWxlLCBBdmF0YXJNb2R1bGUsIE92ZXJsYXlQYW5lbE1vZHVsZSwgT3ZlcmxheU1vZHVsZSwgUmFkaW9CdXR0b25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBCYWRnZU1vZHVsZV0sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCd0ZXh0QW5pbWF0aW9uJywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgd2lkdGg6ICcwcHgnLCBtYXJnaW5MZWZ0OiAnMHB4JywgdmlzaWJpbGl0eTogJ2hpZGRlbicsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTI0cHgpJyB9KSxcbiAgICAgICAgICAgICAgICBhbmltYXRlKCczMDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknLCBzdHlsZSh7IG9wYWNpdHk6IDEsIHdpZHRoOiAnKicsIG1hcmdpbkxlZnQ6ICc4cHgnLCB2aXNpYmlsaXR5OiAndmlzaWJsZScsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB3aWR0aDogJyonLCBtYXJnaW5MZWZ0OiAnOHB4JywgdmlzaWJpbGl0eTogJ3Zpc2libGUnLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KSxcbiAgICAgICAgICAgICAgICBhbmltYXRlKCczMDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHdpZHRoOiAnMHB4JywgbWFyZ2luTGVmdDogJzBweCcsIHZpc2liaWxpdHk6ICdoaWRkZW4nLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0yNHB4KScgfSkpXG4gICAgICAgICAgICBdKVxuICAgICAgICBdKSxcbiAgICAgICAgdHJpZ2dlcignaGVhZGVyQW5pbWF0aW9uJywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW3N0eWxlKHsgb3BhY2l0eTogMCwgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSksIGFuaW1hdGUoJzMwMG1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScsIHN0eWxlKHsgb3BhY2l0eTogMSwgdmlzaWJpbGl0eTogJ3Zpc2libGUnIH0pKV0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW3N0eWxlKHsgb3BhY2l0eTogMSwgdmlzaWJpbGl0eTogJ3Zpc2libGUnIH0pLCBhbmltYXRlKCczMDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHZpc2liaWxpdHk6ICdoaWRkZW4nIH0pKV0pXG4gICAgICAgIF0pXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnY2F4LWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgICBASW5wdXQoKSBoZWFkZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSB0b3BOYXZMaXN0OiBOYXZMaXN0SXRlbVtdO1xuICAgIEBJbnB1dCgpIGJvdHRvbU5hdkxpc3Q6IE5hdkxpc3RJdGVtW107XG4gICAgQElucHV0KCkgYWN0aXZlVGFiOiBUYWJJbmRleFR5cGUgfCAnbm90aWZpY2F0aW9ucycgfCAnaGVscC1jZW50cmUnO1xuICAgIEBJbnB1dCgpIG5vdGlmaWNhdGlvbnM6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGhlbHBDZW50cmU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGNvcHlyaWdodFllYXI6IG51bWJlciB8IHVuZGVmaW5lZCA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgICBASW5wdXQoKSB2ZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KCkgbG9nb3V0OiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBwcm9maWxlOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBzZXR0aW5nczogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgdXNlck5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSB1c2VySW1hZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBoZWFkZXJMb2dvOiB7IGV4cGFuZGVkOiBzdHJpbmc7IGNvbGxhcHNlZDogc3RyaW5nIH0gfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KCkgaGVhZGVySW5pdGlhbHM6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBzdWJzY3JpcHRpb25Nb2RlOiAnYWR2YW5jZScgfCAnZGVmYXVsdCcgPSAnZGVmYXVsdCc7XG4gICAgQElucHV0KCkgc3Vic2NyaXB0aW9uTGlzdDogc3RyaW5nW107XG4gICAgQElucHV0KCkgc2VsZWN0ZWRTdWJzY3JpcHRpb246IHN0cmluZyB8IEFjdGl2ZVN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBhZHZhbmNlU3Vic2NyaXB0aW9uTGlzdDogU3Vic2NyaXB0aW9uTGlzdFtdO1xuICAgIEBJbnB1dCgpIGRpc3BsYXlTdWJzY3JpcHRpb25OYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KCkgbm90aWZpY2F0aW9uQ291bnQ6IG51bWJlciA9IDA7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIEBPdXRwdXQoKSBvbk5hdkxpc3RJdGVtQ2hhbmdlOiBFdmVudEVtaXR0ZXI8eyBhY3RpdmVUYWI6IFRhYkluZGV4VHlwZSB8ICdub3RpZmljYXRpb25zJyB8ICdoZWxwLWNlbnRyZScgfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9uTm90aWZpY2F0aW9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBvbkhlbHBDZW50cmVDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9uTG9nb3V0Q2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBvblByb2ZpbGVDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9uU2V0dGluZ3NDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9uTG9nb0NsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgb25TdWJzY3JpcHRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBvbk5hdkV4cGFuZGVkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKGZhbHNlKTtcblxuICAgIGlzSG92ZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGlzTmF2RXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBub3RpZmljYXRpb25BY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBoZWxwQ2VudHJlQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG4gICAgYWNjb3VudERldGFpbHNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBjaGVja1JhZGlvID0gMTtcbiAgICBAVmlld0NoaWxkKCdib3R0b21Db250YWluZXInKSBib3R0b21Db250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCdoZWFkZXJDb250YWluZXInKSBoZWFkZXJDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVUYWIgPT0gJ25vdGlmaWNhdGlvbnMnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5ub3RpZmljYXRpb25zKSB0aGlzLm5vdGlmaWNhdGlvbkFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICBlbHNlIHRoaXMudG9wTmF2TGlzdFswXS5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYWN0aXZlVGFiID09ICdoZWxwLWNlbnRyZScpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmhlbHBDZW50cmUpIHRoaXMuaGVscENlbnRyZUFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICBlbHNlIHRoaXMudG9wTmF2TGlzdFswXS5hY3RpdmUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlVGFiPy5wb3NpdGlvbiA9PSAndG9wJykge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRhYi5pbmRleCA+IC0xICYmIHRoaXMuYWN0aXZlVGFiLmluZGV4IDwgdGhpcy50b3BOYXZMaXN0Py5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3BOYXZMaXN0Py5tYXAoKGxpc3Q6IE5hdkxpc3RJdGVtKSA9PiAobGlzdC5hY3RpdmUgPSBmYWxzZSkpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnRvcE5hdkxpc3RbdGhpcy5hY3RpdmVUYWIuaW5kZXhdLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudG9wTmF2TGlzdD8uZmlsdGVyKChsaXN0OiBOYXZMaXN0SXRlbSkgPT4gbGlzdC5hY3RpdmUpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb3VudCA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvcE5hdkxpc3Q/LmZvckVhY2goKGxpc3Q6IE5hdkxpc3RJdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpc3QuYWN0aXZlICYmIGNvdW50ID09IDApIGNvdW50ID0gY291bnQgKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgbGlzdC5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0aGlzLnRvcE5hdkxpc3Q/LmZpbHRlcigobGlzdDogTmF2TGlzdEl0ZW0pID0+IGxpc3QuYWN0aXZlKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudG9wTmF2TGlzdFswXS5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmFjdGl2ZVRhYj8ucG9zaXRpb24gPT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVUYWIuaW5kZXggPiAtMSAmJiB0aGlzLmFjdGl2ZVRhYi5pbmRleCA8IHRoaXMuYm90dG9tTmF2TGlzdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYm90dG9tTmF2TGlzdD8ubWFwKChsaXN0OiBOYXZMaXN0SXRlbSkgPT4gKGxpc3QuYWN0aXZlID0gZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ib3R0b21OYXZMaXN0W3RoaXMuYWN0aXZlVGFiLmluZGV4XS5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmJvdHRvbU5hdkxpc3Q/LmZpbHRlcigobGlzdDogTmF2TGlzdEl0ZW0pID0+IGxpc3QuYWN0aXZlKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ib3R0b21OYXZMaXN0Py5mb3JFYWNoKChsaXN0OiBOYXZMaXN0SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaXN0LmFjdGl2ZSAmJiBjb3VudCA9PSAwKSBjb3VudCA9IGNvdW50ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGxpc3QuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5ib3R0b21OYXZMaXN0Py5maWx0ZXIoKGxpc3Q6IE5hdkxpc3RJdGVtKSA9PiBsaXN0LmFjdGl2ZSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmJvdHRvbU5hdkxpc3RbMF0uYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b3BOYXZMaXN0WzBdLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmFkdmFuY2VTdWJzY3JpcHRpb25MaXN0KVxuICAgICAgICAgICAgdGhpcy5hZHZhbmNlU3Vic2NyaXB0aW9uTGlzdCA9IHRoaXMuYWR2YW5jZVN1YnNjcmlwdGlvbkxpc3QubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwgY2hlY2s6IGZhbHNlIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uTW9kZSA9PT0gJ2FkdmFuY2UnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5hZHZhbmNlU3Vic2NyaXB0aW9uTGlzdC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICEoXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdGhpcy5zZWxlY3RlZFN1YnNjcmlwdGlvbiA9PT0gJ29iamVjdCcgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTdWJzY3JpcHRpb24/Lm5hbWUgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTdWJzY3JpcHRpb24/LnNlbGVjdGVkICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkdmFuY2VTdWJzY3JpcHRpb25MaXN0LmZpbmQoKGl0ZW0pID0+IHR5cGVvZiB0aGlzLnNlbGVjdGVkU3Vic2NyaXB0aW9uID09PSAnb2JqZWN0JyAmJiBpdGVtLm5hbWUgPT09IHRoaXMuc2VsZWN0ZWRTdWJzY3JpcHRpb24ubmFtZSk/LnN1YnNjcmlwdGlvbi5pbmNsdWRlcyh0aGlzLnNlbGVjdGVkU3Vic2NyaXB0aW9uLnNlbGVjdGVkKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWR2YW5jZVN1YnNjcmlwdGlvbkxpc3Quc29tZSgobGlzdDogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlzdC5zdWJzY3JpcHRpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZFN1YnNjcmlwdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogbGlzdC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDogbGlzdC5zdWJzY3JpcHRpb25bMF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb25MaXN0Py5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc3Vic2NyaXB0aW9uTGlzdC5zb21lKChhKSA9PiBhID09IHRoaXMuc2VsZWN0ZWRTdWJzY3JpcHRpb24pKSB0aGlzLnNlbGVjdGVkU3Vic2NyaXB0aW9uID0gdGhpcy5zdWJzY3JpcHRpb25MaXN0WzBdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5kaXNwbGF5U3Vic2NyaXB0aW9uTmFtZT8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFN1YnNjcmlwdGlvbiAmJiB0eXBlb2YgdGhpcy5zZWxlY3RlZFN1YnNjcmlwdGlvbiA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlTdWJzY3JpcHRpb25OYW1lID0gdGhpcy5zZWxlY3RlZFN1YnNjcmlwdGlvbi5uYW1lICsgJyAtICcgKyB0aGlzLnNlbGVjdGVkU3Vic2NyaXB0aW9uLnNlbGVjdGVkO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkU3Vic2NyaXB0aW9uICYmIHR5cGVvZiB0aGlzLnNlbGVjdGVkU3Vic2NyaXB0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheVN1YnNjcmlwdGlvbk5hbWUgPSB0aGlzLnNlbGVjdGVkU3Vic2NyaXB0aW9uO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuYWRqdXN0VXBEaXZIZWlnaHQoKTtcbiAgICB9XG5cbiAgICBvbkl0ZW1DbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtOiBOYXZMaXN0SXRlbSwgaW5kZXg6IG51bWJlciwgcG9zaXRpb246ICd0b3AnIHwgJ2JvdHRvbScpIHtcbiAgICAgICAgdGhpcy50b3BOYXZMaXN0Py5tYXAoKGxpc3Q6IE5hdkxpc3RJdGVtKSA9PiAobGlzdC5hY3RpdmUgPSBmYWxzZSkpO1xuICAgICAgICB0aGlzLmJvdHRvbU5hdkxpc3Q/Lm1hcCgobGlzdDogTmF2TGlzdEl0ZW0pID0+IChsaXN0LmFjdGl2ZSA9IGZhbHNlKSk7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaGVscENlbnRyZUFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICBpZiAocG9zaXRpb24gPT0gJ3RvcCcpIHRoaXMudG9wTmF2TGlzdFtpbmRleF0uYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgZWxzZSBpZiAocG9zaXRpb24gPT0gJ2JvdHRvbScpIHRoaXMuYm90dG9tTmF2TGlzdFtpbmRleF0uYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vbk5hdkxpc3RJdGVtQ2hhbmdlLmVtaXQoeyBhY3RpdmVUYWI6IHsgcG9zaXRpb246IHBvc2l0aW9uLCBpbmRleDogaW5kZXggfSB9KTtcbiAgICAgICAgaWYgKGl0ZW0uY29tbWFuZCkge1xuICAgICAgICAgICAgaXRlbS5jb21tYW5kKHsgb3JpZ2luYWxFdmVudDogZSwgaXRlbSB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldEluaXRpYWxzKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICghbmFtZSkgcmV0dXJuICcnO1xuICAgICAgICBjb25zdCBuYW1lUGFydHMgPSBuYW1lLnRyaW0oKS5zcGxpdCgvXFxzKy8pO1xuICAgICAgICBpZiAobmFtZVBhcnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIG5hbWVQYXJ0c1swXVswXS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAobmFtZVBhcnRzWzBdWzBdICsgbmFtZVBhcnRzW25hbWVQYXJ0cy5sZW5ndGggLSAxXVswXSkudG9VcHBlckNhc2UoKTtcbiAgICB9XG5cbiAgICBlbWl0Tm90aWZpY2F0aW9uKCkge1xuICAgICAgICB0aGlzLnRvcE5hdkxpc3Q/Lm1hcCgobGlzdDogTmF2TGlzdEl0ZW0pID0+IChsaXN0LmFjdGl2ZSA9IGZhbHNlKSk7XG4gICAgICAgIHRoaXMuYm90dG9tTmF2TGlzdD8ubWFwKChsaXN0OiBOYXZMaXN0SXRlbSkgPT4gKGxpc3QuYWN0aXZlID0gZmFsc2UpKTtcbiAgICAgICAgdGhpcy5oZWxwQ2VudHJlQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5vbk5hdkxpc3RJdGVtQ2hhbmdlLmVtaXQoeyBhY3RpdmVUYWI6ICdub3RpZmljYXRpb25zJyB9KTtcbiAgICAgICAgdGhpcy5vbk5vdGlmaWNhdGlvbkNsaWNrLmVtaXQoKTtcbiAgICB9XG5cbiAgICBlbWl0SGVscENlbnRyZSgpIHtcbiAgICAgICAgdGhpcy50b3BOYXZMaXN0Py5tYXAoKGxpc3Q6IE5hdkxpc3RJdGVtKSA9PiAobGlzdC5hY3RpdmUgPSBmYWxzZSkpO1xuICAgICAgICB0aGlzLmJvdHRvbU5hdkxpc3Q/Lm1hcCgobGlzdDogTmF2TGlzdEl0ZW0pID0+IChsaXN0LmFjdGl2ZSA9IGZhbHNlKSk7XG4gICAgICAgIHRoaXMuaGVscENlbnRyZUFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMubm90aWZpY2F0aW9uQWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMub25OYXZMaXN0SXRlbUNoYW5nZS5lbWl0KHsgYWN0aXZlVGFiOiAnaGVscC1jZW50cmUnIH0pO1xuICAgICAgICB0aGlzLm9uSGVscENlbnRyZUNsaWNrLmVtaXQoKTtcbiAgICB9XG5cbiAgICBlbWl0TG9nb3V0KCkge1xuICAgICAgICB0aGlzLm9uTG9nb3V0Q2xpY2suZW1pdCgpO1xuICAgIH1cblxuICAgIGVtaXRQcm9maWxlKCkge1xuICAgICAgICB0aGlzLm9uUHJvZmlsZUNsaWNrLmVtaXQoKTtcbiAgICB9XG5cbiAgICBlbWl0U2V0dGluZ3MoKSB7XG4gICAgICAgIHRoaXMub25TZXR0aW5nc0NsaWNrLmVtaXQoKTtcbiAgICB9XG5cbiAgICBlbWl0TG9nb0NsaWNrKCkge1xuICAgICAgICB0aGlzLm9uTG9nb0NsaWNrLmVtaXQoKTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgICBvblJlc2l6ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hZGp1c3RVcERpdkhlaWdodCgpO1xuICAgIH1cblxuICAgIGFkanVzdFVwRGl2SGVpZ2h0KCkge1xuICAgICAgICBjb25zdCBib3R0b21IZWlnaHQgPSB0aGlzLmJvdHRvbUNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGhlYWRlckhlaWdodCA9IHRoaXMuaGVhZGVyQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICAgICAgY29uc3QgY29udGFpbmVySGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICByZXR1cm4gY29udGFpbmVySGVpZ2h0IC0gYm90dG9tSGVpZ2h0IC0gaGVhZGVySGVpZ2h0IC0gNTY7XG4gICAgfVxuXG4gICAgb25Nb3VzZUVudGVyKCkge1xuICAgICAgICB0aGlzLmlzSG92ZXJlZCA9IHRydWU7XG4gICAgICAgIC8vIFVzZSBkb3VibGUgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIGZvciBzbW9vdGhlciBhbmltYXRpb25cbiAgICAgICAgLy8gRmlyc3QgZnJhbWUgdG8gcHJlcGFyZSwgc2Vjb25kIGZyYW1lIHRvIGV4ZWN1dGVcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc05hdkV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTmF2RXhwYW5kZWQuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uTW91c2VMZWF2ZSgpIHtcbiAgICAgICAgdGhpcy5pc0hvdmVyZWQgPSBmYWxzZTtcbiAgICAgICAgaWYgKCF0aGlzLmFjY291bnREZXRhaWxzQWN0aXZlKSB7XG4gICAgICAgICAgICAvLyBVc2UgZG91YmxlIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmb3Igc21vb3RoZXIgYW5pbWF0aW9uXG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNOYXZFeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTmF2RXhwYW5kZWQuZW1pdChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhpZGVBY2NvdW50RGV0YWlscygpIHtcbiAgICAgICAgdGhpcy5hY2NvdW50RGV0YWlsc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAvLyBVc2UgZG91YmxlIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmb3Igc21vb3RoZXIgYW5pbWF0aW9uXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzSG92ZXJlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTmF2RXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTmF2RXhwYW5kZWQuZW1pdCh0cnVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTmF2RXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk5hdkV4cGFuZGVkLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGNoYW5nZUFjdGl2ZVN1c2JjcmlwdGlvbihpdGVtOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZFN1YnNjcmlwdGlvbiA9IGl0ZW07XG4gICAgICAgIHRoaXMub25TdWJzY3JpcHRpb25DaGFuZ2UuZW1pdCh7IHNlbGVjdGVkOiBpdGVtIH0pO1xuICAgIH1cblxuICAgIHVwZGF0ZVN1YnNjcmlwdGlvbihpdGVtOiBTdWJzY3JpcHRpb25MaXN0LCBjaGlsZDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdWJzY3JpcHRpb24gPSB7IG5hbWU6IGl0ZW0ubmFtZSwgc2VsZWN0ZWQ6IGNoaWxkIH07XG4gICAgICAgIHRoaXMub25TdWJzY3JpcHRpb25DaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkU3Vic2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICB0b2dnbGVTdWJzY3JpcHRpb25MaXN0KGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKHRoaXMuYWR2YW5jZVN1YnNjcmlwdGlvbkxpc3RbaW5kZXhdLmNoZWNrKSB7XG4gICAgICAgICAgICB0aGlzLmFkdmFuY2VTdWJzY3JpcHRpb25MaXN0W2luZGV4XS5jaGVjayA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hZHZhbmNlU3Vic2NyaXB0aW9uTGlzdCA9IHRoaXMuYWR2YW5jZVN1YnNjcmlwdGlvbkxpc3QubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSwgY2hlY2s6IGZhbHNlIH07XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuYWR2YW5jZVN1YnNjcmlwdGlvbkxpc3RbaW5kZXhdLmNoZWNrID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsIjxkaXYgKm5nSWY9XCJhY2NvdW50RGV0YWlsc0FjdGl2ZVwiIGNsYXNzPVwiY2F4LW5hdi1iYWNrZHJvcFwiPjwvZGl2PlxyXG48ZGl2IGNsYXNzPVwiY2F4LW5hdlwiIFtuZ0NsYXNzXT1cInsgJ2NheC1uYXYtZXhwYW5kJzogaXNOYXZFeHBhbmRlZCB9XCIgKG1vdXNlZW50ZXIpPVwib25Nb3VzZUVudGVyKClcIiAobW91c2VsZWF2ZSk9XCJvbk1vdXNlTGVhdmUoKVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNheC1uYXYtaGVhZGVyLWNvbnRhaW5lclwiICNoZWFkZXJDb250YWluZXI+XHJcbiAgICAgICAgPGRpdiBbQGhlYWRlckFuaW1hdGlvbl0gKm5nSWY9XCIhaXNOYXZFeHBhbmRlZFwiIGNsYXNzPVwiY2F4LW5hdi1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGNheC1sb2dvICpuZ0lmPVwiIWhlYWRlckxvZ28/LmNvbGxhcHNlZFwiIGNsYXNzPVwiYy1wb2ludGVyXCIgKGNsaWNrKT1cImVtaXRMb2dvQ2xpY2soKVwiIHNpemU9XCJzbVwiIFtpY29uT25seV09XCJ0cnVlXCIgLz5cclxuICAgICAgICAgICAgPGNheC1pbWFnZSAqbmdJZj1cImhlYWRlckxvZ28/LmNvbGxhcHNlZFwiIGNsYXNzPVwiYy1wb2ludGVyXCIgKGNsaWNrKT1cImVtaXRMb2dvQ2xpY2soKVwiIHNpemU9XCJzbVwiIFtzcmNdPVwiaGVhZGVyTG9nby5jb2xsYXBzZWRcIiBbc3R5bGUub3BhY2l0eV09XCIxXCIgLz5cclxuICAgICAgICAgICAgPGNheC1kaXZpZGVyIGxheW91dD1cInZlcnRpY2FsXCI+PC9jYXgtZGl2aWRlcj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJoZWFkZXJJbml0aWFsc1wiPnt7IGhlYWRlckluaXRpYWxzIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFoZWFkZXJJbml0aWFsc1wiPnt7IGdldEluaXRpYWxzKGhlYWRlcikgfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cImlzTmF2RXhwYW5kZWRcIiBjbGFzcz1cImNheC1uYXYtaGVhZGVyXCIgW0BoZWFkZXJBbmltYXRpb25dPlxyXG4gICAgICAgICAgICA8Y2F4LWxvZ28gKm5nSWY9XCIhaGVhZGVyTG9nbz8uZXhwYW5kZWRcIiBjbGFzcz1cImMtcG9pbnRlclwiIChjbGljayk9XCJlbWl0TG9nb0NsaWNrKClcIiBzaXplPVwic21cIiAvPlxyXG4gICAgICAgICAgICA8Y2F4LWltYWdlICpuZ0lmPVwiaGVhZGVyTG9nbz8uZXhwYW5kZWRcIiBjbGFzcz1cImMtcG9pbnRlclwiIChjbGljayk9XCJlbWl0TG9nb0NsaWNrKClcIiBzaXplPVwic21cIiBbc3JjXT1cImhlYWRlckxvZ28uZXhwYW5kZWRcIiBbc3R5bGUub3BhY2l0eV09XCIxXCIgLz5cclxuICAgICAgICAgICAgPGNheC1kaXZpZGVyIGxheW91dD1cInZlcnRpY2FsXCI+PC9jYXgtZGl2aWRlcj5cclxuICAgICAgICAgICAgPHNwYW4+e3sgaGVhZGVyIH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2F4LW5hdi1saXN0LWNvbnRhaW5lclwiIFtzdHlsZS5tYXhIZWlnaHQucHhdPVwiYWRqdXN0VXBEaXZIZWlnaHQoKVwiPlxyXG4gICAgICAgIDx1bD5cclxuICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBuYXYgb2YgdG9wTmF2TGlzdCwgbGV0IGkgPSBpbmRleFwiIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBuYXYuYWN0aXZlIH1cIiAoY2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50LCBuYXYsIGksICd0b3AnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJuYXYuaWNvbjsgZWxzZSBpbWFnZVRlbXBsYXRlXCIgW2NsYXNzXT1cIidjYXggcGkgJyArIG5hdi5pY29uXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbWFnZVRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjYXgtaW1hZ2UgW3NyY109XCJuYXYuaW1hZ2VcIiB3aWR0aD1cIjI0cHhcIiBoZWlnaHQ9XCIyNHB4XCIgW3N0eWxlLm9wYWNpdHldPVwiMVwiPjwvY2F4LWltYWdlPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxzcGFuIFtAdGV4dEFuaW1hdGlvbl0gKm5nSWY9XCJpc05hdkV4cGFuZGVkXCIgY2xhc3M9XCJjYXgtbmF2LWxpc3QtbGFiZWxcIj57eyBuYXYubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNheC1uYXYtYm90dG9tLWNvbnRhaW5lclwiICNib3R0b21Db250YWluZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNheC1uYXYtYm90dG9tLWxpc3RcIj5cclxuICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBuYXYgb2YgYm90dG9tTmF2TGlzdCwgbGV0IGkgPSBpbmRleFwiIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBuYXYuYWN0aXZlIH1cIiAoY2xpY2spPVwib25JdGVtQ2xpY2soJGV2ZW50LCBuYXYsIGksICdib3R0b20nKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwibmF2Lmljb247IGVsc2UgaW1hZ2VUZW1wbGF0ZVwiIFtjbGFzc109XCInY2F4IHBpICcgKyBuYXYuaWNvblwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2ltYWdlVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjYXgtaW1hZ2UgW3NyY109XCJuYXYuaW1hZ2VcIiB3aWR0aD1cIjI0cHhcIiBoZWlnaHQ9XCIyNHB4XCIgW3N0eWxlLm9wYWNpdHldPVwiMVwiPjwvY2F4LWltYWdlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW0B0ZXh0QW5pbWF0aW9uXSAqbmdJZj1cImlzTmF2RXhwYW5kZWRcIiBjbGFzcz1cImNheC1uYXYtbGlzdC1sYWJlbFwiPnt7IG5hdi5sYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJub3RpZmljYXRpb25zXCIgKGNsaWNrKT1cImVtaXROb3RpZmljYXRpb24oKVwiIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBub3RpZmljYXRpb25BY3RpdmUgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIW5vdGlmaWNhdGlvbkNvdW50XCIgY2xhc3M9XCJjYXggY2F4LWJlbGxcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCJub3RpZmljYXRpb25Db3VudFwiIGNsYXNzPVwiY2F4IGNheC1iZWxsXCIgY2F4QmFkZ2UgW3ZhbHVlXT1cIm5vdGlmaWNhdGlvbkNvdW50XCIgYmFkZ2VTaXplPVwieHNcIiBiYWRnZVNldmVyaXR5PVwiZGFuZ2VyXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtAdGV4dEFuaW1hdGlvbl0gKm5nSWY9XCJpc05hdkV4cGFuZGVkXCIgY2xhc3M9XCJjYXgtbmF2LWxpc3QtbGFiZWxcIj5Ob3RpZmljYXRpb25zPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImhlbHBDZW50cmVcIiAoY2xpY2spPVwiZW1pdEhlbHBDZW50cmUoKVwiIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBoZWxwQ2VudHJlQWN0aXZlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImNheCBjYXgtc2hpZWxkLXdhcm5pbmdcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW0B0ZXh0QW5pbWF0aW9uXSAqbmdJZj1cImlzTmF2RXhwYW5kZWRcIiBjbGFzcz1cImNheC1uYXYtbGlzdC1sYWJlbFwiPkhlbHAgQ2VudHJlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgPC91bD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwidXNlck5hbWVcIiAoY2xpY2spPVwib3AudG9nZ2xlKCRldmVudCk7XCIgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGFjY291bnREZXRhaWxzQWN0aXZlIH1cIiBjbGFzcz1cImNheC1uYXYtYWNjb3VudC1kZXRhaWxzXCI+XHJcbiAgICAgICAgICAgIDxjYXgtYXZhdGFyICpuZ0lmPVwidXNlckltYWdlXCIgW2ltYWdlXT1cInVzZXJJbWFnZVwiIGF2YXRhclNpemU9XCJsZ1wiPjwvY2F4LWF2YXRhcj5cclxuICAgICAgICAgICAgPGNheC1hdmF0YXIgKm5nSWY9XCIhdXNlckltYWdlXCIgW2xhYmVsXT1cImdldEluaXRpYWxzKHVzZXJOYW1lKVwiIGF2YXRhclNpemU9XCJsZ1wiPjwvY2F4LWF2YXRhcj5cclxuICAgICAgICAgICAgPGRpdiBbQHRleHRBbmltYXRpb25dICpuZ0lmPVwiaXNOYXZFeHBhbmRlZFwiIGNsYXNzPVwiY2F4LW5hdi11c2VyXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNheC1uYXYtdXNlci1uYW1lXCI+e3sgdXNlck5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNheC1uYXYtdXNlci1yb2xlXCI+e3sgZGlzcGxheVN1YnNjcmlwdGlvbk5hbWUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IFtAdGV4dEFuaW1hdGlvbl0gKm5nSWY9XCJpc05hdkV4cGFuZGVkXCIgY2xhc3M9XCJjYXgtbmF2LWFjY291bnQtaWNvblwiPlxyXG4gICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJjYXggY2F4LWFsdC1hcnJvdy11cFwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiY2F4IGNheC1hbHQtYXJyb3ctZG93blwiPjwvaT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxjYXgtb3ZlcmxheVBhbmVsICNvcCAob25TaG93KT1cImFjY291bnREZXRhaWxzQWN0aXZlID0gdHJ1ZVwiIFtzdHlsZUNsYXNzXT1cImlzTmF2RXhwYW5kZWQgPyAnY2F4LW5hdi1vdmVybGF5LWV4cGFuZCcgOiAnY2F4LW5hdi1vdmVybGF5J1wiIChvbkhpZGUpPVwiaGlkZUFjY291bnREZXRhaWxzKClcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXgtbmF2LXN1YnNjcmlwdGlvbi1saXN0XCIgKm5nSWY9XCJzdWJzY3JpcHRpb25Nb2RlID09PSAnZGVmYXVsdCcgJiYgc3Vic2NyaXB0aW9uTGlzdD8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiY2F4LW5hdi1zdWJzY3JpcHRpb24tbGlzdC1pdGVtXCIgW2NsYXNzLmFjdGl2ZV09XCJzZWxlY3RlZFN1YnNjcmlwdGlvbiA9PT0gaXRlbVwiICpuZ0Zvcj1cImxldCBpdGVtIG9mIHN1YnNjcmlwdGlvbkxpc3RcIiAoY2xpY2spPVwiY2hhbmdlQWN0aXZlU3VzYmNyaXB0aW9uKGl0ZW0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjYXgtcmFkaW9CdXR0b24gKm5nSWY9XCJzZWxlY3RlZFN1YnNjcmlwdGlvbiA9PT0gaXRlbVwiIHZhbHVlPVwiMVwiIFsobmdNb2RlbCldPVwiY2hlY2tSYWRpb1wiPjwvY2F4LXJhZGlvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXgtbmF2LXN1YnNjcmlwdGlvbi1saXN0XCIgKm5nSWY9XCJzdWJzY3JpcHRpb25Nb2RlID09PSAnYWR2YW5jZScgJiYgYWR2YW5jZVN1YnNjcmlwdGlvbkxpc3Q/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYWR2YW5jZVN1YnNjcmlwdGlvbkxpc3QsIGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpIFtjbGFzcy5hY3RpdmVdPVwic2VsZWN0ZWRTdWJzY3JpcHRpb24/Lm5hbWUgPT09IGl0ZW0ubmFtZVwiIGNsYXNzPVwiY2F4LW5hdi1hZHZhbmNlLXN1YnNjcmlwdGlvbi1saXN0LWl0ZW1cIiAoY2xpY2spPVwidG9nZ2xlU3Vic2NyaXB0aW9uTGlzdChpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS5uYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgKm5nSWY9XCIhaXRlbS5jaGVja1wiIGNsYXNzPVwiY2F4IGNheC1hbHQtYXJyb3ctZG93blwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiaXRlbS5jaGVja1wiIGNsYXNzPVwiY2F4IGNheC1hbHQtYXJyb3ctdXBcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmNoZWNrXCIgY2xhc3M9XCJjYXgtbmF2LWFkdmFuY2Utc3Vic2NyaXB0aW9uLWNoaWxkLWxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBbY2xhc3MuYWN0aXZlXT1cInNlbGVjdGVkU3Vic2NyaXB0aW9uPy5zZWxlY3RlZCA9PT0gY2hpbGRcIiBjbGFzcz1cImNheC1uYXYtYWR2YW5jZS1zdWJzY3JpcHRpb24tY2hpbGQtbGlzdC1pdGVtXCIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIGl0ZW0uc3Vic2NyaXB0aW9uXCIgKGNsaWNrKT1cInVwZGF0ZVN1YnNjcmlwdGlvbihpdGVtLCBjaGlsZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBjaGlsZCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2F4LXJhZGlvQnV0dG9uIFtzaXplXT1cIidzbSdcIiAqbmdJZj1cInNlbGVjdGVkU3Vic2NyaXB0aW9uPy5zZWxlY3RlZCA9PT0gY2hpbGRcIiB2YWx1ZT1cIjFcIiBbKG5nTW9kZWwpXT1cImNoZWNrUmFkaW9cIj48L2NheC1yYWRpb0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvZmlsZVwiIGNsYXNzPVwiY2F4LW5hdi1wcm9maWxlLW9wdGlvbnNcIiAoY2xpY2spPVwiZW1pdFByb2ZpbGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiY2F4IGNheC11c2VyLXJvdW5kZWRcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+VmlldyBQcm9maWxlPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2V0dGluZ3NcIiBjbGFzcz1cImNheC1uYXYtcHJvZmlsZS1vcHRpb25zXCIgKGNsaWNrKT1cImVtaXRTZXR0aW5ncygpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJjYXggY2F4LXNldHRpbmdzXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPkFjY291bnQgU2V0dGluZ3M8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsb2dvdXRcIiBjbGFzcz1cImNheC1uYXYtcHJvZmlsZS1vcHRpb25zIGNheC1uYXYtbG9nb3V0XCIgKGNsaWNrKT1cImVtaXRMb2dvdXQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiY2F4IGNheC1sb2dvdXRcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4+TG9nb3V0PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2F4LW5hdi1jb3B5cmlnaHQtY29udGFpbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGNheC1sb2dvIHdpZHRoPVwiNTVweFwiIGhlaWdodD1cIjE3cHhcIj48L2NheC1sb2dvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXgtbmF2LWNvcHlyaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvcHlyaWdodFllYXJcIj4mY29weTsge3sgY29weXJpZ2h0WWVhciB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJ2ZXJzaW9uXCI+e3sgdmVyc2lvbiB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2NheC1vdmVybGF5UGFuZWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
399
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF2aWdhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHAvY29tcG9uZW50cy9uYXZpZ2F0aW9uL25hdmlnYXRpb24udHMiLCIuLi8uLi8uLi9zcmMvYXBwL2NvbXBvbmVudHMvbmF2aWdhdGlvbi9uYXZpZ2F0aW9uLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLHVCQUF1QixFQUFxQixpQkFBaUIsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQWMsWUFBWSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUNyTSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXBELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7Ozs7Ozs7Ozs7O0FBOEJ0RCxNQUFNLE9BQU8sVUFBVTtJQXVCQztJQXRCWCxNQUFNLENBQXFCO0lBQzNCLFVBQVUsQ0FBZ0I7SUFDMUIsYUFBYSxDQUFnQjtJQUM3QixTQUFTLENBQWlEO0lBQzFELGFBQWEsR0FBWSxJQUFJLENBQUM7SUFDOUIsVUFBVSxHQUFZLElBQUksQ0FBQztJQUMzQixhQUFhLEdBQXVCLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDN0QsT0FBTyxDQUFxQjtJQUM1QixNQUFNLEdBQVksSUFBSSxDQUFDO0lBQ3ZCLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsUUFBUSxHQUFZLElBQUksQ0FBQztJQUN6QixRQUFRLENBQXFCO0lBQzdCLFNBQVMsQ0FBcUI7SUFDOUIsVUFBVSxDQUFzRDtJQUNoRSxjQUFjLENBQXFCO0lBQ25DLGdCQUFnQixHQUEwQixTQUFTLENBQUM7SUFDcEQsZ0JBQWdCLENBQVc7SUFDM0Isb0JBQW9CLENBQTBDO0lBQzlELHVCQUF1QixDQUFxQjtJQUM1Qyx1QkFBdUIsQ0FBcUI7SUFDNUMsaUJBQWlCLEdBQVcsQ0FBQyxDQUFDO0lBRXZDLFlBQW9CLEVBQXFCO1FBQXJCLE9BQUUsR0FBRixFQUFFLENBQW1CO0lBQUcsQ0FBQztJQUVuQyxtQkFBbUIsR0FBZ0YsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUN0SCxtQkFBbUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUM1RCxpQkFBaUIsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUMxRCxhQUFhLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDdEQsY0FBYyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO0lBQ3ZELGVBQWUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztJQUN4RCxXQUFXLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDcEQsb0JBQW9CLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFDN0QsYUFBYSxHQUEwQixJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUV6RSxTQUFTLEdBQVksS0FBSyxDQUFDO0lBQzNCLGFBQWEsR0FBWSxLQUFLLENBQUM7SUFDL0Isa0JBQWtCLEdBQVksS0FBSyxDQUFDO0lBQ3BDLGdCQUFnQixHQUFZLEtBQUssQ0FBQztJQUNsQyxvQkFBb0IsR0FBWSxLQUFLLENBQUM7SUFDdEMsVUFBVSxHQUFHLENBQUMsQ0FBQztJQUNlLGVBQWUsQ0FBOEI7SUFDN0MsZUFBZSxDQUE4QjtJQUUzRSxXQUFXO1FBQ1AsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLGVBQWUsRUFBRSxDQUFDO1lBQ3BDLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1lBQ25DLENBQUM7O2dCQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUM1QyxDQUFDO2FBQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ3pDLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUNuRSxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1lBQ2pDLENBQUM7O2dCQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztRQUM1QyxDQUFDO2FBQU0sQ0FBQztZQUNKLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ3BDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FBQztvQkFDOUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDbkUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7Z0JBQ3hELENBQUM7cUJBQU0sQ0FBQztvQkFDSixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBaUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDekUsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO3dCQUNkLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBaUIsRUFBRSxFQUFFOzRCQUMzQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksS0FBSyxJQUFJLENBQUM7Z0NBQUUsS0FBSyxHQUFHLEtBQUssR0FBRyxDQUFDLENBQUM7O2dDQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQzt3QkFDN0IsQ0FBQyxDQUFDLENBQUM7b0JBQ1AsQ0FBQzt5QkFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFpQixFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7d0JBQzdFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztvQkFDckMsQ0FBQztnQkFDTCxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUM5QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLENBQUM7b0JBQ2pGLElBQUksQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQ3RFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUMzRCxDQUFDO3FCQUFNLENBQUM7b0JBQ0osSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDLElBQWlCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7d0JBQzVFLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQzt3QkFDZCxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQWlCLEVBQUUsRUFBRTs0QkFDOUMsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLEtBQUssSUFBSSxDQUFDO2dDQUFFLEtBQUssR0FBRyxLQUFLLEdBQUcsQ0FBQyxDQUFDOztnQ0FDNUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7d0JBQzdCLENBQUMsQ0FBQyxDQUFDO29CQUNQLENBQUM7eUJBQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUMsSUFBaUIsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO3dCQUNoRixJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7b0JBQ3hDLENBQUM7Z0JBQ0wsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDSixJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDckMsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksSUFBSSxDQUFDLHVCQUF1QjtZQUM1QixJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNyRSxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFDO1FBQ1AsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdEMsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3RDLElBQ0ksQ0FBQyxDQUNHLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixLQUFLLFFBQVE7b0JBQzdDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxJQUFJO29CQUMvQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsUUFBUTtvQkFDbkMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsT0FBTyxJQUFJLENBQUMsb0JBQW9CLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxDQUN4TSxFQUNILENBQUM7b0JBQ0MsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO3dCQUM1QyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7NEJBQzNCLElBQUksQ0FBQyxvQkFBb0IsR0FBRztnQ0FDeEIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO2dDQUNmLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQzs2QkFDakMsQ0FBQzs0QkFDRixPQUFPLElBQUksQ0FBQzt3QkFDaEIsQ0FBQztvQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDUCxDQUFDO1lBQ0wsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLENBQUM7Z0JBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLG9CQUFvQixDQUFDO29CQUFFLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakksQ0FBQztRQUNMLENBQUM7UUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3hDLElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUM3RSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFFBQVEsQ0FBQztZQUMvRyxDQUFDO2lCQUFNLElBQUksSUFBSSxDQUFDLG9CQUFvQixJQUFJLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNwRixJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDO1lBQzdELENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxDQUFhLEVBQUUsSUFBaUIsRUFBRSxLQUFhLEVBQUUsUUFBMEI7UUFDbkYsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNuRSxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUM5QixJQUFJLFFBQVEsSUFBSSxLQUFLO1lBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2FBQ3ZELElBQUksUUFBUSxJQUFJLFFBQVE7WUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDdkUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNuRixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDN0MsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBWTtRQUNwQixJQUFJLENBQUMsSUFBSTtZQUFFLE9BQU8sRUFBRSxDQUFDO1FBQ3JCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3pDLENBQUM7UUFDRCxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDaEYsQ0FBQztJQUVELGdCQUFnQjtRQUNaLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRUQsY0FBYztRQUNWLElBQUksQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQsVUFBVTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQy9CLENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsYUFBYTtRQUNULElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUdELFFBQVE7UUFDSixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxhQUFhLENBQUMsWUFBWSxDQUFDO1FBQ3RFLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsYUFBYSxDQUFDLFlBQVksQ0FBQztRQUN0RSxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO1FBQzNDLE9BQU8sZUFBZSxHQUFHLFlBQVksR0FBRyxZQUFZLEdBQUcsRUFBRSxDQUFDO0lBQzlELENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsMERBQTBEO1FBQzFELGtEQUFrRDtRQUNsRCxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7WUFDdkIscUJBQXFCLENBQUMsR0FBRyxFQUFFO2dCQUN2QixJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxZQUFZO1FBQ1IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzdCLDBEQUEwRDtZQUMxRCxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQ3ZCLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtvQkFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7b0JBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMvQixJQUFJLENBQUMsRUFBRSxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUMzQixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0I7UUFDZCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsS0FBSyxDQUFDO1FBQ2xDLDBEQUEwRDtRQUMxRCxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7WUFDdkIscUJBQXFCLENBQUMsR0FBRyxFQUFFO2dCQUN2QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDakIsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7b0JBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxDQUFDO3FCQUFNLENBQUM7b0JBQ0osSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7b0JBQzNCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCx3QkFBd0IsQ0FBQyxJQUFZO1FBQ2pDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUM7UUFDakMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxJQUFzQixFQUFFLEtBQWE7UUFDcEQsSUFBSSxDQUFDLG9CQUFvQixHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO1FBQ2pFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVELHNCQUFzQixDQUFDLEtBQWE7UUFDaEMsSUFBSSxJQUFJLENBQUMsdUJBQXVCLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDNUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDdEQsQ0FBQzthQUFNLENBQUM7WUFDSixJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO2dCQUNyRSxPQUFPLEVBQUUsR0FBRyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDckQsQ0FBQztJQUNMLENBQUM7dUdBMVFRLFVBQVU7MkZBQVYsVUFBVSwwM0NDMUN2Qix1MlBBeUdBLHV0R0RwRmMsVUFBVSx1SkFBRSxZQUFZLDZWQUFFLGFBQWEsNEpBQUUsV0FBVyxzWkFBRSxZQUFZLDBPQUFFLGtCQUFrQixvV0FBRSxhQUFhLDhCQUFFLGlCQUFpQixzVkFBRSxXQUFXLDhWQUFFLFdBQVcsNE5BQ2hKO1lBQ1IsT0FBTyxDQUFDLGVBQWUsRUFBRTtnQkFDckIsVUFBVSxDQUFDLFFBQVEsRUFBRTtvQkFDakIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztvQkFDNUcsT0FBTyxDQUFDLHNDQUFzQyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7aUJBQzNKLENBQUM7Z0JBQ0YsVUFBVSxDQUFDLFFBQVEsRUFBRTtvQkFDakIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUM7b0JBQ3ZHLE9BQU8sQ0FBQyxzQ0FBc0MsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7aUJBQ2hLLENBQUM7YUFDTCxDQUFDO1lBQ0YsT0FBTyxDQUFDLGlCQUFpQixFQUFFO2dCQUN2QixVQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsc0NBQXNDLEVBQUUsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xLLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxzQ0FBc0MsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNySyxDQUFDO1NBQ0w7OzJGQUtRLFVBQVU7a0JBNUJ0QixTQUFTOytCQUNJLGdCQUFnQixtQkFFVCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLGNBRXpCLElBQUksV0FDUCxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFdBQVcsRUFBRSxXQUFXLENBQUMsY0FDako7d0JBQ1IsT0FBTyxDQUFDLGVBQWUsRUFBRTs0QkFDckIsVUFBVSxDQUFDLFFBQVEsRUFBRTtnQ0FDakIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQztnQ0FDNUcsT0FBTyxDQUFDLHNDQUFzQyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUM7NkJBQzNKLENBQUM7NEJBQ0YsVUFBVSxDQUFDLFFBQVEsRUFBRTtnQ0FDakIsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLENBQUM7Z0NBQ3ZHLE9BQU8sQ0FBQyxzQ0FBc0MsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLENBQUM7NkJBQ2hLLENBQUM7eUJBQ0wsQ0FBQzt3QkFDRixPQUFPLENBQUMsaUJBQWlCLEVBQUU7NEJBQ3ZCLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxzQ0FBc0MsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDbEssVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLHNDQUFzQyxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO3lCQUNySyxDQUFDO3FCQUNMLFFBQ0s7d0JBQ0YsS0FBSyxFQUFFLGFBQWE7cUJBQ3ZCO3NGQUdRLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csdUJBQXVCO3NCQUEvQixLQUFLO2dCQUNHLHVCQUF1QjtzQkFBL0IsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBSUksbUJBQW1CO3NCQUE1QixNQUFNO2dCQUNHLG1CQUFtQjtzQkFBNUIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGVBQWU7c0JBQXhCLE1BQU07Z0JBQ0csV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxvQkFBb0I7c0JBQTdCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFRdUIsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBQ0UsZUFBZTtzQkFBNUMsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBc0o1QixRQUFRO3NCQURQLFlBQVk7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHRyaWdnZXIsIHRyYW5zaXRpb24sIHN0eWxlLCBhbmltYXRlIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIFZpZXdFbmNhcHN1bGF0aW9uLCBJbnB1dCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIFZpZXdDaGlsZCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBBZnRlclZpZXdJbml0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERpdmlkZXJNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9kaXZpZGVyJztcbmltcG9ydCB7IExvZ29Nb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9sb2dvJztcbmltcG9ydCB7IEFjdGl2ZVN1YnNjcmlwdGlvbiwgTmF2TGlzdEl0ZW0sIFN1YnNjcmlwdGlvbkxpc3QsIFRhYkluZGV4VHlwZSB9IGZyb20gJy4vbmF2aWdhdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgSW1hZ2VNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9pbWFnZSc7XG5pbXBvcnQgeyBBdmF0YXJNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9hdmF0YXInO1xuaW1wb3J0IHsgT3ZlcmxheVBhbmVsTW9kdWxlIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vb3ZlcmxheXBhbmVsJztcbmltcG9ydCB7IE92ZXJsYXlNb2R1bGUgfSBmcm9tICdjYXgtZGVzaWduLXN5c3RlbS9vdmVybGF5JztcbmltcG9ydCB7IFJhZGlvQnV0dG9uTW9kdWxlIH0gZnJvbSAnY2F4LWRlc2lnbi1zeXN0ZW0vcmFkaW9idXR0b24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBCYWRnZU1vZHVsZSB9IGZyb20gJ2NheC1kZXNpZ24tc3lzdGVtL2JhZGdlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdjYXgtbmF2aWdhdGlvbicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL25hdmlnYXRpb24uaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBzdHlsZVVybHM6IFsnLi9uYXZpZ2F0aW9uLnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtMb2dvTW9kdWxlLCBDb21tb25Nb2R1bGUsIERpdmlkZXJNb2R1bGUsIEltYWdlTW9kdWxlLCBBdmF0YXJNb2R1bGUsIE92ZXJsYXlQYW5lbE1vZHVsZSwgT3ZlcmxheU1vZHVsZSwgUmFkaW9CdXR0b25Nb2R1bGUsIEZvcm1zTW9kdWxlLCBCYWRnZU1vZHVsZV0sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCd0ZXh0QW5pbWF0aW9uJywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHsgb3BhY2l0eTogMCwgd2lkdGg6ICcwcHgnLCBtYXJnaW5MZWZ0OiAnMHB4JywgdmlzaWJpbGl0eTogJ2hpZGRlbicsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTI0cHgpJyB9KSxcbiAgICAgICAgICAgICAgICBhbmltYXRlKCczMDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknLCBzdHlsZSh7IG9wYWNpdHk6IDEsIHdpZHRoOiAnKicsIG1hcmdpbkxlZnQ6ICc4cHgnLCB2aXNpYmlsaXR5OiAndmlzaWJsZScsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMCknIH0pKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAxLCB3aWR0aDogJyonLCBtYXJnaW5MZWZ0OiAnOHB4JywgdmlzaWJpbGl0eTogJ3Zpc2libGUnLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDApJyB9KSxcbiAgICAgICAgICAgICAgICBhbmltYXRlKCczMDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHdpZHRoOiAnMHB4JywgbWFyZ2luTGVmdDogJzBweCcsIHZpc2liaWxpdHk6ICdoaWRkZW4nLCB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC0yNHB4KScgfSkpXG4gICAgICAgICAgICBdKVxuICAgICAgICBdKSxcbiAgICAgICAgdHJpZ2dlcignaGVhZGVyQW5pbWF0aW9uJywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW3N0eWxlKHsgb3BhY2l0eTogMCwgdmlzaWJpbGl0eTogJ2hpZGRlbicgfSksIGFuaW1hdGUoJzMwMG1zIGN1YmljLWJlemllcigwLjQsIDAuMCwgMC4yLCAxKScsIHN0eWxlKHsgb3BhY2l0eTogMSwgdmlzaWJpbGl0eTogJ3Zpc2libGUnIH0pKV0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW3N0eWxlKHsgb3BhY2l0eTogMSwgdmlzaWJpbGl0eTogJ3Zpc2libGUnIH0pLCBhbmltYXRlKCczMDBtcyBjdWJpYy1iZXppZXIoMC40LCAwLjAsIDAuMiwgMSknLCBzdHlsZSh7IG9wYWNpdHk6IDAsIHZpc2liaWxpdHk6ICdoaWRkZW4nIH0pKV0pXG4gICAgICAgIF0pXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgIGNsYXNzOiAnY2F4LWVsZW1lbnQnXG4gICAgfVxufSlcbmV4cG9ydCBjbGFzcyBOYXZpZ2F0aW9uIGltcGxlbWVudHMgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgICBASW5wdXQoKSBoZWFkZXI6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSB0b3BOYXZMaXN0OiBOYXZMaXN0SXRlbVtdO1xuICAgIEBJbnB1dCgpIGJvdHRvbU5hdkxpc3Q6IE5hdkxpc3RJdGVtW107XG4gICAgQElucHV0KCkgYWN0aXZlVGFiOiBUYWJJbmRleFR5cGUgfCAnbm90aWZpY2F0aW9ucycgfCAnaGVscC1jZW50cmUnO1xuICAgIEBJbnB1dCgpIG5vdGlmaWNhdGlvbnM6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGhlbHBDZW50cmU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCgpIGNvcHlyaWdodFllYXI6IG51bWJlciB8IHVuZGVmaW5lZCA9IG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKTtcbiAgICBASW5wdXQoKSB2ZXJzaW9uOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KCkgbG9nb3V0OiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBwcm9maWxlOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBzZXR0aW5nczogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgdXNlck5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSB1c2VySW1hZ2U6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBoZWFkZXJMb2dvOiB7IGV4cGFuZGVkOiBzdHJpbmc7IGNvbGxhcHNlZDogc3RyaW5nIH0gfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KCkgaGVhZGVySW5pdGlhbHM6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBzdWJzY3JpcHRpb25Nb2RlOiAnYWR2YW5jZScgfCAnZGVmYXVsdCcgPSAnZGVmYXVsdCc7XG4gICAgQElucHV0KCkgc3Vic2NyaXB0aW9uTGlzdDogc3RyaW5nW107XG4gICAgQElucHV0KCkgc2VsZWN0ZWRTdWJzY3JpcHRpb246IHN0cmluZyB8IEFjdGl2ZVN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgICBASW5wdXQoKSBhZHZhbmNlU3Vic2NyaXB0aW9uTGlzdDogU3Vic2NyaXB0aW9uTGlzdFtdO1xuICAgIEBJbnB1dCgpIGRpc3BsYXlTdWJzY3JpcHRpb25OYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgQElucHV0KCkgbm90aWZpY2F0aW9uQ291bnQ6IG51bWJlciA9IDA7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICAgIEBPdXRwdXQoKSBvbk5hdkxpc3RJdGVtQ2hhbmdlOiBFdmVudEVtaXR0ZXI8eyBhY3RpdmVUYWI6IFRhYkluZGV4VHlwZSB8ICdub3RpZmljYXRpb25zJyB8ICdoZWxwLWNlbnRyZScgfT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9uTm90aWZpY2F0aW9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBvbkhlbHBDZW50cmVDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9uTG9nb3V0Q2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBvblByb2ZpbGVDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9uU2V0dGluZ3NDbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9uTG9nb0NsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgb25TdWJzY3JpcHRpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBvbk5hdkV4cGFuZGVkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyKGZhbHNlKTtcblxuICAgIGlzSG92ZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGlzTmF2RXhwYW5kZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBub3RpZmljYXRpb25BY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBoZWxwQ2VudHJlQWN0aXZlOiBib29sZWFuID0gZmFsc2U7XG4gICAgYWNjb3VudERldGFpbHNBY3RpdmU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBjaGVja1JhZGlvID0gMTtcbiAgICBAVmlld0NoaWxkKCdib3R0b21Db250YWluZXInKSBib3R0b21Db250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcbiAgICBAVmlld0NoaWxkKCdoZWFkZXJDb250YWluZXInKSBoZWFkZXJDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcblxuICAgIG5nT25DaGFuZ2VzKCkge1xuICAgICAgICBpZiAodGhpcy5hY3RpdmVUYWIgPT0gJ25vdGlmaWNhdGlvbnMnKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5ub3RpZmljYXRpb25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50b3BOYXZMaXN0Py5tYXAoKGxpc3Q6IE5hdkxpc3RJdGVtKSA9PiAobGlzdC5hY3RpdmUgPSBmYWxzZSkpO1xuICAgICAgICAgICAgICAgIHRoaXMuYm90dG9tTmF2TGlzdD8ubWFwKChsaXN0OiBOYXZMaXN0SXRlbSkgPT4gKGxpc3QuYWN0aXZlID0gZmFsc2UpKTtcbiAgICAgICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICB9IGVsc2UgdGhpcy50b3BOYXZMaXN0WzBdLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVUYWIgPT0gJ2hlbHAtY2VudHJlJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuaGVscENlbnRyZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudG9wTmF2TGlzdD8ubWFwKChsaXN0OiBOYXZMaXN0SXRlbSkgPT4gKGxpc3QuYWN0aXZlID0gZmFsc2UpKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvdHRvbU5hdkxpc3Q/Lm1hcCgobGlzdDogTmF2TGlzdEl0ZW0pID0+IChsaXN0LmFjdGl2ZSA9IGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgdGhpcy5oZWxwQ2VudHJlQWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB0aGlzLnRvcE5hdkxpc3RbMF0uYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZVRhYj8ucG9zaXRpb24gPT0gJ3RvcCcpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVUYWIuaW5kZXggPiAtMSAmJiB0aGlzLmFjdGl2ZVRhYi5pbmRleCA8IHRoaXMudG9wTmF2TGlzdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudG9wTmF2TGlzdD8ubWFwKChsaXN0OiBOYXZMaXN0SXRlbSkgPT4gKGxpc3QuYWN0aXZlID0gZmFsc2UpKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b3BOYXZMaXN0W3RoaXMuYWN0aXZlVGFiLmluZGV4XS5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRvcE5hdkxpc3Q/LmZpbHRlcigobGlzdDogTmF2TGlzdEl0ZW0pID0+IGxpc3QuYWN0aXZlKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY291bnQgPSAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50b3BOYXZMaXN0Py5mb3JFYWNoKChsaXN0OiBOYXZMaXN0SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaXN0LmFjdGl2ZSAmJiBjb3VudCA9PSAwKSBjb3VudCA9IGNvdW50ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGxpc3QuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdGhpcy50b3BOYXZMaXN0Py5maWx0ZXIoKGxpc3Q6IE5hdkxpc3RJdGVtKSA9PiBsaXN0LmFjdGl2ZSkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRvcE5hdkxpc3RbMF0uYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5hY3RpdmVUYWI/LnBvc2l0aW9uID09ICdib3R0b20nKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYWN0aXZlVGFiLmluZGV4ID4gLTEgJiYgdGhpcy5hY3RpdmVUYWIuaW5kZXggPCB0aGlzLmJvdHRvbU5hdkxpc3Q/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmJvdHRvbU5hdkxpc3Q/Lm1hcCgobGlzdDogTmF2TGlzdEl0ZW0pID0+IChsaXN0LmFjdGl2ZSA9IGZhbHNlKSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYm90dG9tTmF2TGlzdFt0aGlzLmFjdGl2ZVRhYi5pbmRleF0uYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ib3R0b21OYXZMaXN0Py5maWx0ZXIoKGxpc3Q6IE5hdkxpc3RJdGVtKSA9PiBsaXN0LmFjdGl2ZSkubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGNvdW50ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYm90dG9tTmF2TGlzdD8uZm9yRWFjaCgobGlzdDogTmF2TGlzdEl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGlzdC5hY3RpdmUgJiYgY291bnQgPT0gMCkgY291bnQgPSBjb3VudCArIDE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBsaXN0LmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuYm90dG9tTmF2TGlzdD8uZmlsdGVyKChsaXN0OiBOYXZMaXN0SXRlbSkgPT4gbGlzdC5hY3RpdmUpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5ib3R0b21OYXZMaXN0WzBdLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudG9wTmF2TGlzdFswXS5hY3RpdmUgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5hZHZhbmNlU3Vic2NyaXB0aW9uTGlzdClcbiAgICAgICAgICAgIHRoaXMuYWR2YW5jZVN1YnNjcmlwdGlvbkxpc3QgPSB0aGlzLmFkdmFuY2VTdWJzY3JpcHRpb25MaXN0Lm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLml0ZW0sIGNoZWNrOiBmYWxzZSB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbk1vZGUgPT09ICdhZHZhbmNlJykge1xuICAgICAgICAgICAgaWYgKHRoaXMuYWR2YW5jZVN1YnNjcmlwdGlvbkxpc3QubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHRoaXMuc2VsZWN0ZWRTdWJzY3JpcHRpb24gPT09ICdvYmplY3QnICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3Vic2NyaXB0aW9uPy5uYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkU3Vic2NyaXB0aW9uPy5zZWxlY3RlZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZHZhbmNlU3Vic2NyaXB0aW9uTGlzdC5maW5kKChpdGVtKSA9PiB0eXBlb2YgdGhpcy5zZWxlY3RlZFN1YnNjcmlwdGlvbiA9PT0gJ29iamVjdCcgJiYgaXRlbS5uYW1lID09PSB0aGlzLnNlbGVjdGVkU3Vic2NyaXB0aW9uLm5hbWUpPy5zdWJzY3JpcHRpb24uaW5jbHVkZXModGhpcy5zZWxlY3RlZFN1YnNjcmlwdGlvbi5zZWxlY3RlZClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFkdmFuY2VTdWJzY3JpcHRpb25MaXN0LnNvbWUoKGxpc3Q6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxpc3Quc3Vic2NyaXB0aW9uLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRTdWJzY3JpcHRpb24gPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGxpc3QubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ6IGxpc3Quc3Vic2NyaXB0aW9uWzBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuc3Vic2NyaXB0aW9uTGlzdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnN1YnNjcmlwdGlvbkxpc3Quc29tZSgoYSkgPT4gYSA9PSB0aGlzLnNlbGVjdGVkU3Vic2NyaXB0aW9uKSkgdGhpcy5zZWxlY3RlZFN1YnNjcmlwdGlvbiA9IHRoaXMuc3Vic2NyaXB0aW9uTGlzdFswXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMuZGlzcGxheVN1YnNjcmlwdGlvbk5hbWU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRTdWJzY3JpcHRpb24gJiYgdHlwZW9mIHRoaXMuc2VsZWN0ZWRTdWJzY3JpcHRpb24gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5U3Vic2NyaXB0aW9uTmFtZSA9IHRoaXMuc2VsZWN0ZWRTdWJzY3JpcHRpb24ubmFtZSArICcgLSAnICsgdGhpcy5zZWxlY3RlZFN1YnNjcmlwdGlvbi5zZWxlY3RlZDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZFN1YnNjcmlwdGlvbiAmJiB0eXBlb2YgdGhpcy5zZWxlY3RlZFN1YnNjcmlwdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlTdWJzY3JpcHRpb25OYW1lID0gdGhpcy5zZWxlY3RlZFN1YnNjcmlwdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFkanVzdFVwRGl2SGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgb25JdGVtQ2xpY2soZTogTW91c2VFdmVudCwgaXRlbTogTmF2TGlzdEl0ZW0sIGluZGV4OiBudW1iZXIsIHBvc2l0aW9uOiAndG9wJyB8ICdib3R0b20nKSB7XG4gICAgICAgIHRoaXMudG9wTmF2TGlzdD8ubWFwKChsaXN0OiBOYXZMaXN0SXRlbSkgPT4gKGxpc3QuYWN0aXZlID0gZmFsc2UpKTtcbiAgICAgICAgdGhpcy5ib3R0b21OYXZMaXN0Py5tYXAoKGxpc3Q6IE5hdkxpc3RJdGVtKSA9PiAobGlzdC5hY3RpdmUgPSBmYWxzZSkpO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmhlbHBDZW50cmVBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgaWYgKHBvc2l0aW9uID09ICd0b3AnKSB0aGlzLnRvcE5hdkxpc3RbaW5kZXhdLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIGVsc2UgaWYgKHBvc2l0aW9uID09ICdib3R0b20nKSB0aGlzLmJvdHRvbU5hdkxpc3RbaW5kZXhdLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMub25OYXZMaXN0SXRlbUNoYW5nZS5lbWl0KHsgYWN0aXZlVGFiOiB7IHBvc2l0aW9uOiBwb3NpdGlvbiwgaW5kZXg6IGluZGV4IH0gfSk7XG4gICAgICAgIGlmIChpdGVtLmNvbW1hbmQpIHtcbiAgICAgICAgICAgIGl0ZW0uY29tbWFuZCh7IG9yaWdpbmFsRXZlbnQ6IGUsIGl0ZW0gfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRJbml0aWFscyhuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIW5hbWUpIHJldHVybiAnJztcbiAgICAgICAgY29uc3QgbmFtZVBhcnRzID0gbmFtZS50cmltKCkuc3BsaXQoL1xccysvKTtcbiAgICAgICAgaWYgKG5hbWVQYXJ0cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgIHJldHVybiBuYW1lUGFydHNbMF1bMF0udG9VcHBlckNhc2UoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKG5hbWVQYXJ0c1swXVswXSArIG5hbWVQYXJ0c1tuYW1lUGFydHMubGVuZ3RoIC0gMV1bMF0pLnRvVXBwZXJDYXNlKCk7XG4gICAgfVxuXG4gICAgZW1pdE5vdGlmaWNhdGlvbigpIHtcbiAgICAgICAgdGhpcy50b3BOYXZMaXN0Py5tYXAoKGxpc3Q6IE5hdkxpc3RJdGVtKSA9PiAobGlzdC5hY3RpdmUgPSBmYWxzZSkpO1xuICAgICAgICB0aGlzLmJvdHRvbU5hdkxpc3Q/Lm1hcCgobGlzdDogTmF2TGlzdEl0ZW0pID0+IChsaXN0LmFjdGl2ZSA9IGZhbHNlKSk7XG4gICAgICAgIHRoaXMuaGVscENlbnRyZUFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMub25OYXZMaXN0SXRlbUNoYW5nZS5lbWl0KHsgYWN0aXZlVGFiOiAnbm90aWZpY2F0aW9ucycgfSk7XG4gICAgICAgIHRoaXMub25Ob3RpZmljYXRpb25DbGljay5lbWl0KCk7XG4gICAgfVxuXG4gICAgZW1pdEhlbHBDZW50cmUoKSB7XG4gICAgICAgIHRoaXMudG9wTmF2TGlzdD8ubWFwKChsaXN0OiBOYXZMaXN0SXRlbSkgPT4gKGxpc3QuYWN0aXZlID0gZmFsc2UpKTtcbiAgICAgICAgdGhpcy5ib3R0b21OYXZMaXN0Py5tYXAoKGxpc3Q6IE5hdkxpc3RJdGVtKSA9PiAobGlzdC5hY3RpdmUgPSBmYWxzZSkpO1xuICAgICAgICB0aGlzLmhlbHBDZW50cmVBY3RpdmUgPSB0cnVlO1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uTmF2TGlzdEl0ZW1DaGFuZ2UuZW1pdCh7IGFjdGl2ZVRhYjogJ2hlbHAtY2VudHJlJyB9KTtcbiAgICAgICAgdGhpcy5vbkhlbHBDZW50cmVDbGljay5lbWl0KCk7XG4gICAgfVxuXG4gICAgZW1pdExvZ291dCgpIHtcbiAgICAgICAgdGhpcy5vbkxvZ291dENsaWNrLmVtaXQoKTtcbiAgICB9XG5cbiAgICBlbWl0UHJvZmlsZSgpIHtcbiAgICAgICAgdGhpcy5vblByb2ZpbGVDbGljay5lbWl0KCk7XG4gICAgfVxuXG4gICAgZW1pdFNldHRpbmdzKCkge1xuICAgICAgICB0aGlzLm9uU2V0dGluZ3NDbGljay5lbWl0KCk7XG4gICAgfVxuXG4gICAgZW1pdExvZ29DbGljaygpIHtcbiAgICAgICAgdGhpcy5vbkxvZ29DbGljay5lbWl0KCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gICAgb25SZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWRqdXN0VXBEaXZIZWlnaHQoKTtcbiAgICB9XG5cbiAgICBhZGp1c3RVcERpdkhlaWdodCgpIHtcbiAgICAgICAgY29uc3QgYm90dG9tSGVpZ2h0ID0gdGhpcy5ib3R0b21Db250YWluZXI/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICBjb25zdCBoZWFkZXJIZWlnaHQgPSB0aGlzLmhlYWRlckNvbnRhaW5lcj8ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgIGNvbnN0IGNvbnRhaW5lckhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgcmV0dXJuIGNvbnRhaW5lckhlaWdodCAtIGJvdHRvbUhlaWdodCAtIGhlYWRlckhlaWdodCAtIDU2O1xuICAgIH1cblxuICAgIG9uTW91c2VFbnRlcigpIHtcbiAgICAgICAgdGhpcy5pc0hvdmVyZWQgPSB0cnVlO1xuICAgICAgICAvLyBVc2UgZG91YmxlIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmb3Igc21vb3RoZXIgYW5pbWF0aW9uXG4gICAgICAgIC8vIEZpcnN0IGZyYW1lIHRvIHByZXBhcmUsIHNlY29uZCBmcmFtZSB0byBleGVjdXRlXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaXNOYXZFeHBhbmRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk5hdkV4cGFuZGVkLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvbk1vdXNlTGVhdmUoKSB7XG4gICAgICAgIHRoaXMuaXNIb3ZlcmVkID0gZmFsc2U7XG4gICAgICAgIGlmICghdGhpcy5hY2NvdW50RGV0YWlsc0FjdGl2ZSkge1xuICAgICAgICAgICAgLy8gVXNlIGRvdWJsZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgZm9yIHNtb290aGVyIGFuaW1hdGlvblxuICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTmF2RXhwYW5kZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk5hdkV4cGFuZGVkLmVtaXQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBoaWRlQWNjb3VudERldGFpbHMoKSB7XG4gICAgICAgIHRoaXMuYWNjb3VudERldGFpbHNBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgLy8gVXNlIGRvdWJsZSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgZm9yIHNtb290aGVyIGFuaW1hdGlvblxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0hvdmVyZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc05hdkV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk5hdkV4cGFuZGVkLmVtaXQodHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc05hdkV4cGFuZGVkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25OYXZFeHBhbmRlZC5lbWl0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBjaGFuZ2VBY3RpdmVTdXNiY3JpcHRpb24oaXRlbTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRTdWJzY3JpcHRpb24gPSBpdGVtO1xuICAgICAgICB0aGlzLm9uU3Vic2NyaXB0aW9uQ2hhbmdlLmVtaXQoeyBzZWxlY3RlZDogaXRlbSB9KTtcbiAgICB9XG5cbiAgICB1cGRhdGVTdWJzY3JpcHRpb24oaXRlbTogU3Vic2NyaXB0aW9uTGlzdCwgY2hpbGQ6IHN0cmluZykge1xuICAgICAgICB0aGlzLnNlbGVjdGVkU3Vic2NyaXB0aW9uID0geyBuYW1lOiBpdGVtLm5hbWUsIHNlbGVjdGVkOiBjaGlsZCB9O1xuICAgICAgICB0aGlzLm9uU3Vic2NyaXB0aW9uQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZFN1YnNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgdG9nZ2xlU3Vic2NyaXB0aW9uTGlzdChpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGlmICh0aGlzLmFkdmFuY2VTdWJzY3JpcHRpb25MaXN0W2luZGV4XS5jaGVjaykge1xuICAgICAgICAgICAgdGhpcy5hZHZhbmNlU3Vic2NyaXB0aW9uTGlzdFtpbmRleF0uY2hlY2sgPSBmYWxzZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWR2YW5jZVN1YnNjcmlwdGlvbkxpc3QgPSB0aGlzLmFkdmFuY2VTdWJzY3JpcHRpb25MaXN0Lm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7IC4uLml0ZW0sIGNoZWNrOiBmYWxzZSB9O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmFkdmFuY2VTdWJzY3JpcHRpb25MaXN0W2luZGV4XS5jaGVjayA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiYWNjb3VudERldGFpbHNBY3RpdmVcIiBjbGFzcz1cImNheC1uYXYtYmFja2Ryb3BcIj48L2Rpdj5cclxuPGRpdiBjbGFzcz1cImNheC1uYXZcIiBbbmdDbGFzc109XCJ7ICdjYXgtbmF2LWV4cGFuZCc6IGlzTmF2RXhwYW5kZWQgfVwiIChtb3VzZWVudGVyKT1cIm9uTW91c2VFbnRlcigpXCIgKG1vdXNlbGVhdmUpPVwib25Nb3VzZUxlYXZlKClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXgtbmF2LWhlYWRlci1jb250YWluZXJcIiAjaGVhZGVyQ29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgW0BoZWFkZXJBbmltYXRpb25dICpuZ0lmPVwiIWlzTmF2RXhwYW5kZWRcIiBjbGFzcz1cImNheC1uYXYtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxjYXgtbG9nbyAqbmdJZj1cIiFoZWFkZXJMb2dvPy5jb2xsYXBzZWRcIiBjbGFzcz1cImMtcG9pbnRlclwiIChjbGljayk9XCJlbWl0TG9nb0NsaWNrKClcIiBzaXplPVwic21cIiBbaWNvbk9ubHldPVwidHJ1ZVwiIC8+XHJcbiAgICAgICAgICAgIDxjYXgtaW1hZ2UgKm5nSWY9XCJoZWFkZXJMb2dvPy5jb2xsYXBzZWRcIiBjbGFzcz1cImMtcG9pbnRlclwiIChjbGljayk9XCJlbWl0TG9nb0NsaWNrKClcIiBzaXplPVwic21cIiBbc3JjXT1cImhlYWRlckxvZ28uY29sbGFwc2VkXCIgW3N0eWxlLm9wYWNpdHldPVwiMVwiIC8+XHJcbiAgICAgICAgICAgIDxjYXgtZGl2aWRlciBsYXlvdXQ9XCJ2ZXJ0aWNhbFwiPjwvY2F4LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaGVhZGVySW5pdGlhbHNcIj57eyBoZWFkZXJJbml0aWFscyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhaGVhZGVySW5pdGlhbHNcIj57eyBnZXRJbml0aWFscyhoZWFkZXIpIH19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc05hdkV4cGFuZGVkXCIgY2xhc3M9XCJjYXgtbmF2LWhlYWRlclwiIFtAaGVhZGVyQW5pbWF0aW9uXT5cclxuICAgICAgICAgICAgPGNheC1sb2dvICpuZ0lmPVwiIWhlYWRlckxvZ28/LmV4cGFuZGVkXCIgY2xhc3M9XCJjLXBvaW50ZXJcIiAoY2xpY2spPVwiZW1pdExvZ29DbGljaygpXCIgc2l6ZT1cInNtXCIgLz5cclxuICAgICAgICAgICAgPGNheC1pbWFnZSAqbmdJZj1cImhlYWRlckxvZ28/LmV4cGFuZGVkXCIgY2xhc3M9XCJjLXBvaW50ZXJcIiAoY2xpY2spPVwiZW1pdExvZ29DbGljaygpXCIgc2l6ZT1cInNtXCIgW3NyY109XCJoZWFkZXJMb2dvLmV4cGFuZGVkXCIgW3N0eWxlLm9wYWNpdHldPVwiMVwiIC8+XHJcbiAgICAgICAgICAgIDxjYXgtZGl2aWRlciBsYXlvdXQ9XCJ2ZXJ0aWNhbFwiPjwvY2F4LWRpdmlkZXI+XHJcbiAgICAgICAgICAgIDxzcGFuPnt7IGhlYWRlciB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNheC1uYXYtbGlzdC1jb250YWluZXJcIiBbc3R5bGUubWF4SGVpZ2h0LnB4XT1cImFkanVzdFVwRGl2SGVpZ2h0KClcIj5cclxuICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbmF2IG9mIHRvcE5hdkxpc3QsIGxldCBpID0gaW5kZXhcIiBbbmdDbGFzc109XCJ7IGFjdGl2ZTogbmF2LmFjdGl2ZSB9XCIgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudCwgbmF2LCBpLCAndG9wJylcIj5cclxuICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwibmF2Lmljb247IGVsc2UgaW1hZ2VUZW1wbGF0ZVwiIFtjbGFzc109XCInY2F4IHBpICcgKyBuYXYuaWNvblwiPjwvaT5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaW1hZ2VUZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8Y2F4LWltYWdlIFtzcmNdPVwibmF2LmltYWdlXCIgd2lkdGg9XCIyNHB4XCIgaGVpZ2h0PVwiMjRweFwiIFtzdHlsZS5vcGFjaXR5XT1cIjFcIj48L2NheC1pbWFnZT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBbQHRleHRBbmltYXRpb25dICpuZ0lmPVwiaXNOYXZFeHBhbmRlZFwiIGNsYXNzPVwiY2F4LW5hdi1saXN0LWxhYmVsXCI+e3sgbmF2LmxhYmVsIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgIDwvdWw+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXgtbmF2LWJvdHRvbS1jb250YWluZXJcIiAjYm90dG9tQ29udGFpbmVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXgtbmF2LWJvdHRvbS1saXN0XCI+XHJcbiAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgbmF2IG9mIGJvdHRvbU5hdkxpc3QsIGxldCBpID0gaW5kZXhcIiBbbmdDbGFzc109XCJ7IGFjdGl2ZTogbmF2LmFjdGl2ZSB9XCIgKGNsaWNrKT1cIm9uSXRlbUNsaWNrKCRldmVudCwgbmF2LCBpLCAnYm90dG9tJylcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIm5hdi5pY29uOyBlbHNlIGltYWdlVGVtcGxhdGVcIiBbY2xhc3NdPVwiJ2NheCBwaSAnICsgbmF2Lmljb25cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNpbWFnZVRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2F4LWltYWdlIFtzcmNdPVwibmF2LmltYWdlXCIgd2lkdGg9XCIyNHB4XCIgaGVpZ2h0PVwiMjRweFwiIFtzdHlsZS5vcGFjaXR5XT1cIjFcIj48L2NheC1pbWFnZT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtAdGV4dEFuaW1hdGlvbl0gKm5nSWY9XCJpc05hdkV4cGFuZGVkXCIgY2xhc3M9XCJjYXgtbmF2LWxpc3QtbGFiZWxcIj57eyBuYXYubGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwibm90aWZpY2F0aW9uc1wiIChjbGljayk9XCJlbWl0Tm90aWZpY2F0aW9uKClcIiBbbmdDbGFzc109XCJ7IGFjdGl2ZTogbm90aWZpY2F0aW9uQWN0aXZlIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIiFub3RpZmljYXRpb25Db3VudFwiIGNsYXNzPVwiY2F4IGNheC1iZWxsXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwibm90aWZpY2F0aW9uQ291bnRcIiBjbGFzcz1cImNheCBjYXgtYmVsbFwiIGNheEJhZGdlIFt2YWx1ZV09XCJub3RpZmljYXRpb25Db3VudFwiIGJhZGdlU2l6ZT1cInhzXCIgYmFkZ2VTZXZlcml0eT1cImRhbmdlclwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbQHRleHRBbmltYXRpb25dICpuZ0lmPVwiaXNOYXZFeHBhbmRlZFwiIGNsYXNzPVwiY2F4LW5hdi1saXN0LWxhYmVsXCI+Tm90aWZpY2F0aW9uczwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJoZWxwQ2VudHJlXCIgKGNsaWNrKT1cImVtaXRIZWxwQ2VudHJlKClcIiBbbmdDbGFzc109XCJ7IGFjdGl2ZTogaGVscENlbnRyZUFjdGl2ZSB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJjYXggY2F4LXNoaWVsZC13YXJuaW5nXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtAdGV4dEFuaW1hdGlvbl0gKm5nSWY9XCJpc05hdkV4cGFuZGVkXCIgY2xhc3M9XCJjYXgtbmF2LWxpc3QtbGFiZWxcIj5IZWxwIENlbnRyZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdJZj1cInVzZXJOYW1lXCIgKGNsaWNrKT1cIm9wLnRvZ2dsZSgkZXZlbnQpO1wiIFtuZ0NsYXNzXT1cInsgYWN0aXZlOiBhY2NvdW50RGV0YWlsc0FjdGl2ZSB9XCIgY2xhc3M9XCJjYXgtbmF2LWFjY291bnQtZGV0YWlsc1wiPlxyXG4gICAgICAgICAgICA8Y2F4LWF2YXRhciAqbmdJZj1cInVzZXJJbWFnZVwiIFtpbWFnZV09XCJ1c2VySW1hZ2VcIiBhdmF0YXJTaXplPVwibGdcIj48L2NheC1hdmF0YXI+XHJcbiAgICAgICAgICAgIDxjYXgtYXZhdGFyICpuZ0lmPVwiIXVzZXJJbWFnZVwiIFtsYWJlbF09XCJnZXRJbml0aWFscyh1c2VyTmFtZSlcIiBhdmF0YXJTaXplPVwibGdcIj48L2NheC1hdmF0YXI+XHJcbiAgICAgICAgICAgIDxkaXYgW0B0ZXh0QW5pbWF0aW9uXSAqbmdJZj1cImlzTmF2RXhwYW5kZWRcIiBjbGFzcz1cImNheC1uYXYtdXNlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXgtbmF2LXVzZXItbmFtZVwiPnt7IHVzZXJOYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXgtbmF2LXVzZXItcm9sZVwiPnt7IGRpc3BsYXlTdWJzY3JpcHRpb25OYW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBbQHRleHRBbmltYXRpb25dICpuZ0lmPVwiaXNOYXZFeHBhbmRlZFwiIGNsYXNzPVwiY2F4LW5hdi1hY2NvdW50LWljb25cIj5cclxuICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiY2F4IGNheC1hbHQtYXJyb3ctdXBcIj48L2k+XHJcbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImNheCBjYXgtYWx0LWFycm93LWRvd25cIj48L2k+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8Y2F4LW92ZXJsYXlQYW5lbCAjb3AgKG9uU2hvdyk9XCJhY2NvdW50RGV0YWlsc0FjdGl2ZSA9IHRydWVcIiBbc3R5bGVDbGFzc109XCJpc05hdkV4cGFuZGVkID8gJ2NheC1uYXYtb3ZlcmxheS1leHBhbmQnIDogJ2NheC1uYXYtb3ZlcmxheSdcIiAob25IaWRlKT1cImhpZGVBY2NvdW50RGV0YWlscygpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2F4LW5hdi1zdWJzY3JpcHRpb24tbGlzdFwiICpuZ0lmPVwic3Vic2NyaXB0aW9uTW9kZSA9PT0gJ2RlZmF1bHQnICYmIHN1YnNjcmlwdGlvbkxpc3Q/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImNheC1uYXYtc3Vic2NyaXB0aW9uLWxpc3QtaXRlbVwiIFtjbGFzcy5hY3RpdmVdPVwic2VsZWN0ZWRTdWJzY3JpcHRpb24gPT09IGl0ZW1cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzdWJzY3JpcHRpb25MaXN0XCIgKGNsaWNrKT1cImNoYW5nZUFjdGl2ZVN1c2JjcmlwdGlvbihpdGVtKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57eyBpdGVtIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8Y2F4LXJhZGlvQnV0dG9uICpuZ0lmPVwic2VsZWN0ZWRTdWJzY3JpcHRpb24gPT09IGl0ZW1cIiB2YWx1ZT1cIjFcIiBbKG5nTW9kZWwpXT1cImNoZWNrUmFkaW9cIj48L2NheC1yYWRpb0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2F4LW5hdi1zdWJzY3JpcHRpb24tbGlzdFwiICpuZ0lmPVwic3Vic2NyaXB0aW9uTW9kZSA9PT0gJ2FkdmFuY2UnICYmIGFkdmFuY2VTdWJzY3JpcHRpb25MaXN0Py5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFkdmFuY2VTdWJzY3JpcHRpb25MaXN0LCBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBbY2xhc3MuYWN0aXZlXT1cInNlbGVjdGVkU3Vic2NyaXB0aW9uPy5uYW1lID09PSBpdGVtLm5hbWVcIiBjbGFzcz1cImNheC1uYXYtYWR2YW5jZS1zdWJzY3JpcHRpb24tbGlzdC1pdGVtXCIgKGNsaWNrKT1cInRvZ2dsZVN1YnNjcmlwdGlvbkxpc3QoaSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IGl0ZW0ubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpICpuZ0lmPVwiIWl0ZW0uY2hlY2tcIiBjbGFzcz1cImNheCBjYXgtYWx0LWFycm93LWRvd25cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSAqbmdJZj1cIml0ZW0uY2hlY2tcIiBjbGFzcz1cImNheCBjYXgtYWx0LWFycm93LXVwXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5jaGVja1wiIGNsYXNzPVwiY2F4LW5hdi1hZHZhbmNlLXN1YnNjcmlwdGlvbi1jaGlsZC1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgW2NsYXNzLmFjdGl2ZV09XCJzZWxlY3RlZFN1YnNjcmlwdGlvbj8uc2VsZWN0ZWQgPT09IGNoaWxkXCIgY2xhc3M9XCJjYXgtbmF2LWFkdmFuY2Utc3Vic2NyaXB0aW9uLWNoaWxkLWxpc3QtaXRlbVwiICpuZ0Zvcj1cImxldCBjaGlsZCBvZiBpdGVtLnN1YnNjcmlwdGlvblwiIChjbGljayk9XCJ1cGRhdGVTdWJzY3JpcHRpb24oaXRlbSwgY2hpbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgY2hpbGQgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNheC1yYWRpb0J1dHRvbiBbc2l6ZV09XCInc20nXCIgKm5nSWY9XCJzZWxlY3RlZFN1YnNjcmlwdGlvbj8uc2VsZWN0ZWQgPT09IGNoaWxkXCIgdmFsdWU9XCIxXCIgWyhuZ01vZGVsKV09XCJjaGVja1JhZGlvXCI+PC9jYXgtcmFkaW9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInByb2ZpbGVcIiBjbGFzcz1cImNheC1uYXYtcHJvZmlsZS1vcHRpb25zXCIgKGNsaWNrKT1cImVtaXRQcm9maWxlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImNheCBjYXgtdXNlci1yb3VuZGVkXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPlZpZXcgUHJvZmlsZTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNldHRpbmdzXCIgY2xhc3M9XCJjYXgtbmF2LXByb2ZpbGUtb3B0aW9uc1wiIChjbGljayk9XCJlbWl0U2V0dGluZ3MoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiY2F4IGNheC1zZXR0aW5nc1wiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BY2NvdW50IFNldHRpbmdzPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibG9nb3V0XCIgY2xhc3M9XCJjYXgtbmF2LXByb2ZpbGUtb3B0aW9ucyBjYXgtbmF2LWxvZ291dFwiIChjbGljayk9XCJlbWl0TG9nb3V0KClcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImNheCBjYXgtbG9nb3V0XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPkxvZ291dDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNheC1uYXYtY29weXJpZ2h0LWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxjYXgtbG9nbyB3aWR0aD1cIjU1cHhcIiBoZWlnaHQ9XCIxN3B4XCI+PC9jYXgtbG9nbz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2F4LW5hdi1jb3B5cmlnaHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb3B5cmlnaHRZZWFyXCI+JmNvcHk7IHt7IGNvcHlyaWdodFllYXIgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidmVyc2lvblwiPnt7IHZlcnNpb24gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9jYXgtb3ZlcmxheVBhbmVsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=