vcomply-workflow-engine 6.1.71 → 6.1.72
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/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +1 -2
- package/esm2022/lib/sharedComponents/link-responsibility/link-responsibility.component.mjs +3 -3
- package/esm2022/lib/ui-kit/avatar-v2/avatar-v2.component.mjs +5 -3
- package/esm2022/lib/ui-kit/tooltip/tooltip.directive.mjs +1 -1
- package/esm2022/lib/workflow/shared/components/program-responsibility-listing/program-responsibility-listing.component.mjs +2 -3
- package/fesm2022/vcomply-workflow-engine.mjs +5 -7
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/workflow-risk/workflow-risk.component.d.ts +1 -1
- package/package.json +1 -1
|
@@ -365,11 +365,11 @@ export class LinkResponsibilityListComponent {
|
|
|
365
365
|
return newResponsibilities;
|
|
366
366
|
}
|
|
367
367
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LinkResponsibilityListComponent, deps: [{ token: i1.FrequencyService }, { token: i2.ComplianceCommonService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
368
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LinkResponsibilityListComponent, selector: "app-link-responsibility-list", inputs: { onCompletionOfResponsibility: "onCompletionOfResponsibility", feature: "feature", respIdKey: "respIdKey", selectedResponsibilityValues: "selectedResponsibilityValues", radioSelection: "radioSelection", parentResponsibility: "parentResponsibility" }, outputs: { closeButton: "closeButton", selectedResponsibility: "selectedResponsibility" }, ngImport: i0, template: "<div class=\"frequency-responsibility-list\" [class.animate]=\"animation\">\n <div\n class=\"frequency-responsibility-list-head vx-p-3 vx-d-flex vx-align-center vx-justify-between\"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Responsibility</div>\n </div>\n </div>\n <div class=\"frequency-responsibility-list-body\">\n <div\n *ngIf=\"responsibilitiesData?.allResponsibilityCount > 0\"\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\n >\n <ng-container *ngFor=\"let tab of responsibilityTabs; let i = index\">\n <div\n class=\"vx-table-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-mr-1 vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\"\n [class.active]=\"currentTab === i + 1 || (currentTab === 0 && i === 3)\"\n (click)=\"onClickTabChange(tab)\"\n [class.pointer-none]=\"responsibilityLoader\"\n >\n <div class=\"left vx-d-block vx-w-100\">\n <div class=\"label vx-d-flex vx-align-center\">\n <label\n class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\"\n >{{ tab.name }}</label\n >\n </div>\n </div>\n <div class=\"right vx-d-flex vx-justify-end vx-w-100\">\n <span\n class=\"vx-txt-white vx-fw-500 vx-d-inline-block vx-text-center\"\n >{{\n responsibilityTabCount[typeToCountProperty[tab.type]] || 0\n }}</span\n >\n </div>\n </div>\n </ng-container>\n </div>\n\n <div class=\"frequency-responsibility-list-search vx-mb-2\">\n <i class=\"icons vx-fs-12\"></i>\n <input\n type=\"text\"\n [(ngModel)]=\"responsibilitySearchText\"\n (keyup.enter)=\"search()\"\n placeholder=\"Search Responsibilities\"\n />\n </div>\n <app-loader-inline *ngIf=\"responsibilityLoader\"></app-loader-inline>\n <div\n class=\"frequency-responsibility-list-mid vx-mb-4\"\n [class.with-pagination]=\"\n !responsibilityLoader && responsibilitiesData?.total_pages > 1\n \"\n >\n <app-no-data\n *ngIf=\"\n responsibilitiesData?.data?.length === 0 && !responsibilityLoader\n \"\n [noDataImage]=\"noDataImagePath\"\n [noDataText]=\"noDataMessage\"\n ></app-no-data>\n <ng-container\n *ngIf=\"responsibilitiesData?.data?.length > 0 && !responsibilityLoader\"\n >\n <div class=\"table-header\">\n <div class=\"table-row\">\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n #\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility\"\n [class.with-rc]=\"isOnCompletionRc\"\n >\n RESPONSIBILITIES\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-center\"\n *ngIf=\"isOnCompletionRc\"\n >\n RESPONSIBILITY CENTER\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <ng-container\n *ngFor=\"\n let responsibility of responsibilitiesData?.data;\n let i = index\n \"\n >\n <div\n class=\"table-row clickable\"\n [class.active]=\"\n responsibility?.rid\n | isRespSelected : selectedResponsibilityValues\n \"\n [class.open]=\"this.viewResponsibilityId === responsibility?.id\"\n [class.selected]=\"\n responsibility?.rid\n | isRespSelected : selectedResponsibilityValues\n \"\n >\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n <div\n class=\"sr-no\"\n [appTooltip]=\"'1'\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ responsibilitiesData?.responsibilities_from + i }}\n </div>\n <app-cs-checkbox\n [value]=\"responsibility?.rid\"\n [ngValue]=\"\n responsibility?.rid\n | isRespSelected : selectedResponsibilityValues\n \"\n (ngValueChange)=\"selectResp(responsibility, $event)\"\n >\n </app-cs-checkbox>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\"\n >\n <div class=\"avatarFileArea vx-d-flex vx-align-center\">\n <app-avatar\n [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\"\n [userDetails]=\"\n [responsibility?.assignor] | getUserDetails : userList\n \"\n ></app-avatar>\n <ng-container\n *ngIf=\"\n responsibility?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \"\n >\n <app-avatar\n [avatarClass]=\"AVATAR_CONSTANTS.COLOR.GREEN\"\n [type]=\"\n assigneeDetails?.length > 1\n ? AVATAR_CONSTANTS.ANYONE\n : AVATAR_CONSTANTS.ALL\n \"\n [userDetails]=\"assigneeDetails\"\n appStopPropagation\n ></app-avatar>\n </ng-container>\n </div>\n <div class=\"name-details\">\n <div\n class=\"value vx-fs-13 vx-neutral-100 vx-lh-5\"\n [appTooltip]=\"responsibility?.title\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ responsibility?.title }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\"\n >\n RESPONSIBILITY CENTER:\n </div>\n <ng-container\n *ngIf=\"\n responsibility?.responsibilityCenters\n | getRCList : rcList : allRcList as rcList\n \"\n >\n <div\n class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\"\n [appTooltip]=\"rcList?.length > 0 ? rcList[0] : '--'\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ rcList?.length > 0 ? rcList[0] : \"--\" }}\n </div>\n </ng-container>\n <button\n *ngIf=\"responsibility?.responsibilityCenters?.length > 1\"\n class=\"vx-badgeNum xs minimal\"\n appPopover\n (click)=\"respPopover.popover()\"\n placement=\"left\"\n >\n +{{ responsibility?.responsibilityCenters?.length - 1 }}\n </button>\n <app-popover #respPopover>\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let rc of rcList | slice : 1\">\n <div class=\"avatar-card\">\n <span\n class=\"value\"\n [appTooltip]=\"rc\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ rc }}</span\n >\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </div>\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\"\n >\n <button\n *ngIf=\"\n responsibility?.assigneeType === AVATAR_CONSTANTS.ALL.toLowerCase() ||\n responsibility?.rcType === AVATAR_CONSTANTS.ALL.toLowerCase()\n \"\n (click)=\"viewResponsibility(responsibility?.id)\"\n class=\"vx-icon-button minimal small\"\n >\n <i class=\"icons\">\n {{\n viewResponsibilityId === responsibility?.id\n ? \"\"\n : \"\"\n }}</i\n >\n </button>\n </div>\n </div>\n <div\n *ngIf=\"\n viewResponsibilityId === responsibility?.id &&\n viewResponsibilityData[viewResponsibilityId]?.length\n \"\n class=\"open-more\"\n >\n <div\n class=\"table-row\"\n *ngFor=\"\n let data of viewResponsibilityData[viewResponsibilityId]\n \"\n >\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n <app-cs-checkbox\n [value]=\"data?.rid\"\n [ngValue]=\"\n data\n | isRespSelected : selectedResponsibilityValues : true\n \"\n (ngValueChange)=\"selectResp(data, $event)\"\n >\n </app-cs-checkbox>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\"\n >\n <ng-container\n *ngIf=\"\n data?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \"\n >\n \n <div class=\"avatar-area\">\n <app-avatar\n [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\"\n [userDetails]=\"assigneeDetails\"\n ></app-avatar>\n </div>\n <div class=\"name-details\">\n <div\n class=\"value vx-fs-11 vx-neutral-100 vx-lh-4\"\n [appTooltip]=\"assigneeDetails[0]?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ assigneeDetails[0]?.name }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\"\n >\n RESPONSIBILITY CENTER:\n </div>\n <ng-container\n *ngIf=\"\n data?.responsibilityCenters\n | getRCList : rcList : allRcList as childRcList\n \"\n >\n <div\n class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\"\n [appTooltip]=\"\n childRcList?.length > 0 ? childRcList[0] : '--'\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ childRcList?.length > 0 ? childRcList[0] : \"--\" }}\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\"\n ></div>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <app-pagination\n *ngIf=\"!responsibilityLoader && responsibilitiesData?.total_pages > 1\"\n [start]=\"responsibilitiesData?.responsibilities_from\"\n [end]=\"responsibilitiesData?.responsibilities_to\"\n [total]=\"responsibilitiesData?.total_responsibilities\"\n [pageCount]=\"responsibilitiesData?.total_pages\"\n [currentPage]=\"responsibilitiesData?.responsibilityCurrentPage\"\n (selectedPage)=\"responsibilityPageChange($event)\"\n >\n </app-pagination>\n <app-floating-bar\n *ngIf=\"!responsibilityLoader\"\n [selectedData]=\"responsibilityFloaterBarData\"\n [displayElementKey]=\"'ReportName'\"\n (closeList)=\"back()\"\n (closeEvent)=\"save($event)\"\n (deleteEvent)=\"deleteItem($event)\"\n [isDisabled]=\"!responsibilityFloaterBarData?.length\"\n [isResponsibility]=\"true\"\n [singularText]=\"floaterBarText.SINGULAR_TEXT\"\n [pluralText]=\"floaterBarText.PLURAL_TEXT\"\n ></app-floating-bar>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/table-card/table-card.css\";@import\"https://cdn.v-comply.com/design-system/css/avatars/avatars.css\";@import\"https://cdn.v-comply.com/design-system/css/badge/badge.css\";::ng-deep .frequency-responsibility-list{border-top:3px solid #1e5dd3;position:fixed;top:0;right:31.25rem;bottom:0;left:0}::ng-deep .frequency-responsibility-list.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .frequency-responsibility-list-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .frequency-responsibility-list-head .arrow{cursor:pointer}::ng-deep .frequency-responsibility-list-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .frequency-responsibility-list-body app-pagination .wk-pagination-sec-ds{border-radius:0;padding:0 0 .5rem}::ng-deep .frequency-responsibility-list-body app-floating-bar .floating-bar{padding:0;position:relative;left:-1rem;width:calc(100% + 2rem)}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar{padding-left:0!important;padding-right:0!important}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar .userGroup-floating-bar-container .left .chip span{max-width:240px}::ng-deep .frequency-responsibility-list-search{position:relative}::ng-deep .frequency-responsibility-list-search input{height:2.75rem;line-height:1.5rem;padding:.75rem .75rem .75rem 2.5rem;outline:none;border:1px solid #cdced6;border-radius:.25rem;width:100%;font-size:14px;color:#787a8c}::ng-deep .frequency-responsibility-list-search input::placeholder{color:#787a8c;opacity:1}::ng-deep .frequency-responsibility-list-search i{position:absolute;left:1rem;top:1rem;pointer-events:none;color:#e3e3e9}::ng-deep .frequency-responsibility-list-mid{height:calc(100vh - 14rem);width:calc(100% + 1rem);padding-right:1rem;overflow:auto}::ng-deep .frequency-responsibility-list-mid::-webkit-scrollbar-track{background-color:#fff}::ng-deep .frequency-responsibility-list-mid.with-pagination{height:calc(100vh - 16rem)}::ng-deep .frequency-responsibility-list-mid .table-header{background:#fff;position:sticky;top:0;z-index:1}::ng-deep .frequency-responsibility-list-mid .table-header .table-column{color:#161b2f!important;line-height:.75rem!important;min-height:1.875rem!important}::ng-deep .frequency-responsibility-list-mid .table-body{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .table-row{background:#fff;border-radius:.25rem;border:1px solid #e3e3e9;margin-bottom:.25rem;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover{background:#f9f9fa}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover .table-column.serial app-cs-checkbox,::ng-deep .frequency-responsibility-list-mid .table-body .table-row.active .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open .table-column.serial .sr-no{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-body .clickable{cursor:pointer}::ng-deep .frequency-responsibility-list-mid .table-body .open-more{background:#f2f2f5;border:1px solid #e3e3e9;border-radius:0 0 .25rem .25rem;position:relative;top:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row{background:transparent;border-radius:0 0 .25rem .25rem;border:none;margin:0}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column{min-height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial .sr-no{background:#f2f2f5;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial app-cs-checkbox{background:#fff;border-radius:.25rem;opacity:1;top:1rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area{padding-left:1.25rem;position:relative;width:5.25rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:before{background:#e3e3e9;border-radius:1.25rem;content:\"\";position:absolute;left:9px;top:.625rem;width:.5rem;height:.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:after{background:#e3e3e9;content:\"\";position:absolute;left:.75rem;top:-.625rem;width:1px;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details:before{background:#e3e3e9;content:\"\";position:absolute;left:0;right:0;bottom:-.5rem;height:1px;width:100%}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .avatar-area:after,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .avatar-area:after{height:1.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .name-details:before,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .name-details:before{display:none}::ng-deep .frequency-responsibility-list-mid .table-row{display:flex;justify-content:left;position:relative}::ng-deep .frequency-responsibility-list-mid .table-row .table-column{color:#787a8c;min-height:4.25rem;position:relative;width:100%}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial .sr-no{width:1rem;background:#f9f9fa;writing-mode:vertical-lr;color:#787a8c;font-size:11px;font-weight:500;display:flex;height:4.25rem;align-items:center;justify-content:center;position:relative;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{position:absolute;top:1.625rem;left:.5rem;width:1rem;height:1rem;opacity:0;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox .radio-item{position:absolute}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{display:flex}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected app-cs-checkbox{opacity:1}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea{width:3.75rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea app-avatar~app-avatar{margin-left:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name{width:calc(100% - 4.5rem);min-width:calc(100% - 4.5rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .vx-avatar-group .vx-avatar.pill-avatars .count-pill.green{background:#34aa44}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start{color:#cdced6}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start.active{color:#f4c84a}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details{width:calc(100% - 6rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .resp-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 12rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.action{width:2.5rem;min-width:2.5rem}@keyframes animate-right{0%{transform:translate(5px);opacity:0}to{transform:translate(0);opacity:1}}.wf-action-list{width:220px}.wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}.wf-action-list ul.action-item{display:block}.wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}.wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.wf-action-list ul.action-item li .avatar-card.within-con{display:block}.wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}.wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}.wf-action-list ul.action-item li .avatar-card.no-image{display:block}.wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.wf-action-list ul.action-item li .avatar-card .closeBtn{cursor:pointer}.wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.FloatingBarComponent, selector: "app-floating-bar", inputs: ["selectedData", "selectedGroups", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "defaultSelected", "groupsEnabled", "isResponsibility", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "deleteGroupEvent", "workflowTypeChanged"] }, { kind: "component", type: i6.CsCheckboxComponent, selector: "app-cs-checkbox", inputs: ["disabled", "ngValue", "value", "readonly", "oneLine"], outputs: ["ngValueChange"] }, { kind: "component", type: i7.NoDataComponent, selector: "app-no-data", inputs: ["action", "noDataImage", "noDataText", "noDataButton", "noDataSecButton", "altText", "smallButton", "button"], outputs: ["buttonAction"] }, { kind: "component", type: i8.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i9.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"], outputs: ["closePopoverEvent"] }, { kind: "directive", type: i10.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "component", type: i11.PaginationComponentUI, selector: "app-pagination", inputs: ["activeAlphabet", "pageCount", "start", "end", "total", "currentPage"], outputs: ["selectedPage", "selectedAlphabet"] }, { kind: "directive", type: i12.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i13.AvatarComponent, selector: "app-avatar", inputs: ["userDetails", "type", "avatarClass"] }, { kind: "pipe", type: i3.SlicePipe, name: "slice" }, { kind: "pipe", type: i14.GetUserDetailsPipe, name: "getUserDetails" }, { kind: "pipe", type: i15.GetRCListPipe, name: "getRCList" }, { kind: "pipe", type: i16.ParentResponsibilitySelectionPipe, name: "isRespSelected" }] }); }
|
|
368
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: LinkResponsibilityListComponent, selector: "app-link-responsibility-list", inputs: { onCompletionOfResponsibility: "onCompletionOfResponsibility", feature: "feature", respIdKey: "respIdKey", selectedResponsibilityValues: "selectedResponsibilityValues", radioSelection: "radioSelection", parentResponsibility: "parentResponsibility" }, outputs: { closeButton: "closeButton", selectedResponsibility: "selectedResponsibility" }, ngImport: i0, template: "<div class=\"frequency-responsibility-list\" [class.animate]=\"animation\">\n <div class=\"frequency-responsibility-list-head vx-p-3 vx-d-flex vx-align-center vx-justify-between\">\n <div class=\"vx-d-flex vx-align-center\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Responsibility</div>\n </div>\n </div>\n <div class=\"frequency-responsibility-list-body\">\n <div *ngIf=\"responsibilitiesData?.allResponsibilityCount > 0\"\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-2\">\n <ng-container *ngFor=\"let tab of responsibilityTabs; let i = index\">\n <div\n class=\"vx-table-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-mr-1 vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\"\n [class.active]=\"currentTab === i + 1 || (currentTab === 0 && i === 3)\" (click)=\"onClickTabChange(tab)\"\n [class.pointer-none]=\"responsibilityLoader\">\n <div class=\"left vx-d-block vx-w-100\">\n <div class=\"label vx-d-flex vx-align-center\">\n <label class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\">{{\n tab.name }}</label>\n </div>\n </div>\n <div class=\"right vx-d-flex vx-justify-end vx-w-100\">\n <span class=\"vx-txt-white vx-fw-500 vx-d-inline-block vx-text-center\">{{\n responsibilityTabCount[typeToCountProperty[tab.type]] || 0\n }}</span>\n </div>\n </div>\n </ng-container>\n </div>\n\n <div class=\"frequency-responsibility-list-search vx-mb-2\">\n <i class=\"icons vx-fs-12\"></i>\n <input type=\"text\" [(ngModel)]=\"responsibilitySearchText\" (keyup.enter)=\"search()\"\n placeholder=\"Search Responsibilities\" />\n </div>\n <app-loader-inline *ngIf=\"responsibilityLoader\"></app-loader-inline>\n <div class=\"frequency-responsibility-list-mid vx-mb-4\" [class.with-pagination]=\"\n !responsibilityLoader && responsibilitiesData?.total_pages > 1\n \">\n <app-no-data *ngIf=\"\n responsibilitiesData?.data?.length === 0 && !responsibilityLoader\n \" [noDataImage]=\"noDataImagePath\" [noDataText]=\"noDataMessage\"></app-no-data>\n <ng-container *ngIf=\"responsibilitiesData?.data?.length > 0 && !responsibilityLoader\">\n <div class=\"table-header\">\n <div class=\"table-row\">\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\">\n #\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility\"\n [class.with-rc]=\"isOnCompletionRc\">\n RESPONSIBILITIES\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-center\"\n *ngIf=\"isOnCompletionRc\">\n RESPONSIBILITY CENTER\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <ng-container *ngFor=\"\n let responsibility of responsibilitiesData?.data;\n let i = index\n \">\n <div class=\"table-row clickable\" [class.active]=\"\n responsibility?.rid\n | isRespSelected : selectedResponsibilityValues\n \" [class.open]=\"this.viewResponsibilityId === responsibility?.id\" [class.selected]=\"\n responsibility?.rid\n | isRespSelected : selectedResponsibilityValues\n \">\n <div class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\">\n <div class=\"sr-no\" [appTooltip]=\"'1'\" placement=\"bottom\" delay=\"0\" type=\"black\"\n [tooltipMandatory]=\"true\">\n {{ responsibilitiesData?.responsibilities_from + i }}\n </div>\n <app-cs-checkbox [value]=\"responsibility?.rid\" [ngValue]=\"\n responsibility?.rid\n | isRespSelected : selectedResponsibilityValues\n \" (ngValueChange)=\"selectResp(responsibility, $event)\">\n </app-cs-checkbox>\n </div>\n <div class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\">\n <div class=\"avatarFileArea vx-d-flex vx-align-center\">\n <app-avatar [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\" [userDetails]=\"\n [responsibility?.assignor] | getUserDetails : userList\n \"></app-avatar>\n <ng-container *ngIf=\"\n responsibility?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \">\n <app-avatar [avatarClass]=\"AVATAR_CONSTANTS.COLOR.GREEN\" [type]=\"\n assigneeDetails?.length > 1\n ? AVATAR_CONSTANTS.ANYONE\n : AVATAR_CONSTANTS.ALL\n \" [userDetails]=\"assigneeDetails\" appStopPropagation></app-avatar>\n </ng-container>\n </div>\n <div class=\"name-details\">\n <div class=\"value vx-fs-13 vx-neutral-100 vx-lh-5\" [appTooltip]=\"responsibility?.title\"\n placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">\n {{responsibility?.controlId ? '[CID-' + responsibility?.controlId + '] ' : ''}}\n {{ responsibility?.title }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\">\n RESPONSIBILITY CENTER:\n </div>\n <ng-container *ngIf=\"\n responsibility?.responsibilityCenters\n | getRCList : rcList : allRcList as rcList\n \">\n <div class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\"\n [appTooltip]=\"rcList?.length > 0 ? rcList[0] : '--'\" placement=\"bottom-left\" delay=\"0\"\n type=\"black\" [tooltipMandatory]=\"false\">\n {{ rcList?.length > 0 ? rcList[0] : \"--\" }}\n </div>\n </ng-container>\n <button *ngIf=\"responsibility?.responsibilityCenters?.length > 1\" class=\"vx-badgeNum xs minimal\"\n appPopover (click)=\"respPopover.popover()\" placement=\"left\">\n +{{ responsibility?.responsibilityCenters?.length - 1 }}\n </button>\n <app-popover #respPopover>\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let rc of rcList | slice : 1\">\n <div class=\"avatar-card\">\n <span class=\"value\" [appTooltip]=\"rc\" placement=\"bottom-left\" delay=\"0\" type=\"black\"\n [tooltipMandatory]=\"false\">{{ rc }}</span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </div>\n </div>\n </div>\n <div class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\">\n <button *ngIf=\"\n responsibility?.assigneeType === AVATAR_CONSTANTS.ALL.toLowerCase() ||\n responsibility?.rcType === AVATAR_CONSTANTS.ALL.toLowerCase()\n \" (click)=\"viewResponsibility(responsibility?.id)\" class=\"vx-icon-button minimal small\">\n <i class=\"icons\">\n {{\n viewResponsibilityId === responsibility?.id\n ? \"\"\n : \"\"\n }}</i>\n </button>\n </div>\n </div>\n <div *ngIf=\"\n viewResponsibilityId === responsibility?.id &&\n viewResponsibilityData[viewResponsibilityId]?.length\n \" class=\"open-more\">\n <div class=\"table-row\" *ngFor=\"\n let data of viewResponsibilityData[viewResponsibilityId]\n \">\n <div class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\">\n <app-cs-checkbox [value]=\"data?.rid\" [ngValue]=\"\n data\n | isRespSelected : selectedResponsibilityValues : true\n \" (ngValueChange)=\"selectResp(data, $event)\">\n </app-cs-checkbox>\n </div>\n <div class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\">\n <ng-container *ngIf=\"\n data?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \">\n\n <div class=\"avatar-area\">\n <app-avatar [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\" [userDetails]=\"assigneeDetails\"></app-avatar>\n </div>\n <div class=\"name-details\">\n <div class=\"value vx-fs-11 vx-neutral-100 vx-lh-4\" [appTooltip]=\"assigneeDetails[0]?.name\"\n placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">\n {{ assigneeDetails[0]?.name }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\">\n RESPONSIBILITY CENTER:\n </div>\n <ng-container *ngIf=\"\n data?.responsibilityCenters\n | getRCList : rcList : allRcList as childRcList\n \">\n <div class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\" [appTooltip]=\"\n childRcList?.length > 0 ? childRcList[0] : '--'\n \" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">\n {{ childRcList?.length > 0 ? childRcList[0] : \"--\" }}\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\"></div>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <app-pagination *ngIf=\"!responsibilityLoader && responsibilitiesData?.total_pages > 1\"\n [start]=\"responsibilitiesData?.responsibilities_from\" [end]=\"responsibilitiesData?.responsibilities_to\"\n [total]=\"responsibilitiesData?.total_responsibilities\" [pageCount]=\"responsibilitiesData?.total_pages\"\n [currentPage]=\"responsibilitiesData?.responsibilityCurrentPage\" (selectedPage)=\"responsibilityPageChange($event)\">\n </app-pagination>\n <app-floating-bar *ngIf=\"!responsibilityLoader\" [selectedData]=\"responsibilityFloaterBarData\"\n [displayElementKey]=\"'ReportName'\" (closeList)=\"back()\" (closeEvent)=\"save($event)\"\n (deleteEvent)=\"deleteItem($event)\" [isDisabled]=\"!responsibilityFloaterBarData?.length\" [isResponsibility]=\"true\"\n [singularText]=\"floaterBarText.SINGULAR_TEXT\" [pluralText]=\"floaterBarText.PLURAL_TEXT\"></app-floating-bar>\n </div>\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/table-card/table-card.css\";@import\"https://cdn.v-comply.com/design-system/css/avatars/avatars.css\";@import\"https://cdn.v-comply.com/design-system/css/badge/badge.css\";::ng-deep .frequency-responsibility-list{border-top:3px solid #1e5dd3;position:fixed;top:0;right:31.25rem;bottom:0;left:0}::ng-deep .frequency-responsibility-list.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .frequency-responsibility-list-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .frequency-responsibility-list-head .arrow{cursor:pointer}::ng-deep .frequency-responsibility-list-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .frequency-responsibility-list-body app-pagination .wk-pagination-sec-ds{border-radius:0;padding:0 0 .5rem}::ng-deep .frequency-responsibility-list-body app-floating-bar .floating-bar{padding:0;position:relative;left:-1rem;width:calc(100% + 2rem)}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar{padding-left:0!important;padding-right:0!important}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar .userGroup-floating-bar-container .left .chip span{max-width:240px}::ng-deep .frequency-responsibility-list-search{position:relative}::ng-deep .frequency-responsibility-list-search input{height:2.75rem;line-height:1.5rem;padding:.75rem .75rem .75rem 2.5rem;outline:none;border:1px solid #cdced6;border-radius:.25rem;width:100%;font-size:14px;color:#787a8c}::ng-deep .frequency-responsibility-list-search input::placeholder{color:#787a8c;opacity:1}::ng-deep .frequency-responsibility-list-search i{position:absolute;left:1rem;top:1rem;pointer-events:none;color:#e3e3e9}::ng-deep .frequency-responsibility-list-mid{height:calc(100vh - 14rem);width:calc(100% + 1rem);padding-right:1rem;overflow:auto}::ng-deep .frequency-responsibility-list-mid::-webkit-scrollbar-track{background-color:#fff}::ng-deep .frequency-responsibility-list-mid.with-pagination{height:calc(100vh - 16rem)}::ng-deep .frequency-responsibility-list-mid .table-header{background:#fff;position:sticky;top:0;z-index:1}::ng-deep .frequency-responsibility-list-mid .table-header .table-column{color:#161b2f!important;line-height:.75rem!important;min-height:1.875rem!important}::ng-deep .frequency-responsibility-list-mid .table-body{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .table-row{background:#fff;border-radius:.25rem;border:1px solid #e3e3e9;margin-bottom:.25rem;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover{background:#f9f9fa}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover .table-column.serial app-cs-checkbox,::ng-deep .frequency-responsibility-list-mid .table-body .table-row.active .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open .table-column.serial .sr-no{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-body .clickable{cursor:pointer}::ng-deep .frequency-responsibility-list-mid .table-body .open-more{background:#f2f2f5;border:1px solid #e3e3e9;border-radius:0 0 .25rem .25rem;position:relative;top:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row{background:transparent;border-radius:0 0 .25rem .25rem;border:none;margin:0}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column{min-height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial .sr-no{background:#f2f2f5;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial app-cs-checkbox{background:#fff;border-radius:.25rem;opacity:1;top:1rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area{padding-left:1.25rem;position:relative;width:5.25rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:before{background:#e3e3e9;border-radius:1.25rem;content:\"\";position:absolute;left:9px;top:.625rem;width:.5rem;height:.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:after{background:#e3e3e9;content:\"\";position:absolute;left:.75rem;top:-.625rem;width:1px;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details:before{background:#e3e3e9;content:\"\";position:absolute;left:0;right:0;bottom:-.5rem;height:1px;width:100%}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .avatar-area:after,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .avatar-area:after{height:1.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .name-details:before,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .name-details:before{display:none}::ng-deep .frequency-responsibility-list-mid .table-row{display:flex;justify-content:left;position:relative}::ng-deep .frequency-responsibility-list-mid .table-row .table-column{color:#787a8c;min-height:4.25rem;position:relative;width:100%}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial .sr-no{width:1rem;background:#f9f9fa;writing-mode:vertical-lr;color:#787a8c;font-size:11px;font-weight:500;display:flex;height:4.25rem;align-items:center;justify-content:center;position:relative;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{position:absolute;top:1.625rem;left:.5rem;width:1rem;height:1rem;opacity:0;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox .radio-item{position:absolute}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{display:flex}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected app-cs-checkbox{opacity:1}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea{width:3.75rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea app-avatar~app-avatar{margin-left:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name{width:calc(100% - 4.5rem);min-width:calc(100% - 4.5rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .vx-avatar-group .vx-avatar.pill-avatars .count-pill.green{background:#34aa44}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start{color:#cdced6}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start.active{color:#f4c84a}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details{width:calc(100% - 6rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .resp-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 12rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.action{width:2.5rem;min-width:2.5rem}@keyframes animate-right{0%{transform:translate(5px);opacity:0}to{transform:translate(0);opacity:1}}.wf-action-list{width:220px}.wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}.wf-action-list ul.action-item{display:block}.wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}.wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.wf-action-list ul.action-item li .avatar-card.within-con{display:block}.wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}.wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}.wf-action-list ul.action-item li .avatar-card.no-image{display:block}.wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.wf-action-list ul.action-item li .avatar-card .closeBtn{cursor:pointer}.wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.FloatingBarComponent, selector: "app-floating-bar", inputs: ["selectedData", "selectedGroups", "displayElementKey", "elementId", "singularText", "pluralText", "showNextButton", "showFrequencyText", "showWorkflow", "workflowText", "currentFrequency", "isDisabled", "workflowList", "selectedWorkflow", "workflowPlaceHolder", "mode", "defaultSelected", "groupsEnabled", "isResponsibility", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "deleteGroupEvent", "workflowTypeChanged"] }, { kind: "component", type: i6.CsCheckboxComponent, selector: "app-cs-checkbox", inputs: ["disabled", "ngValue", "value", "readonly", "oneLine"], outputs: ["ngValueChange"] }, { kind: "component", type: i7.NoDataComponent, selector: "app-no-data", inputs: ["action", "noDataImage", "noDataText", "noDataButton", "noDataSecButton", "altText", "smallButton", "button"], outputs: ["buttonAction"] }, { kind: "component", type: i8.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i9.PopoverComponent, selector: "app-popover", inputs: ["dontCloseonClick"], outputs: ["closePopoverEvent"] }, { kind: "directive", type: i10.PopoverDirective, selector: "[appPopover]", inputs: ["refrence", "placement"] }, { kind: "component", type: i11.PaginationComponentUI, selector: "app-pagination", inputs: ["activeAlphabet", "pageCount", "start", "end", "total", "currentPage"], outputs: ["selectedPage", "selectedAlphabet"] }, { kind: "directive", type: i12.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { kind: "component", type: i13.AvatarComponent, selector: "app-avatar", inputs: ["userDetails", "type", "avatarClass"] }, { kind: "pipe", type: i3.SlicePipe, name: "slice" }, { kind: "pipe", type: i14.GetUserDetailsPipe, name: "getUserDetails" }, { kind: "pipe", type: i15.GetRCListPipe, name: "getRCList" }, { kind: "pipe", type: i16.ParentResponsibilitySelectionPipe, name: "isRespSelected" }] }); }
|
|
369
369
|
}
|
|
370
370
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LinkResponsibilityListComponent, decorators: [{
|
|
371
371
|
type: Component,
|
|
372
|
-
args: [{ selector: 'app-link-responsibility-list', template: "<div class=\"frequency-responsibility-list\" [class.animate]=\"animation\">\n <div\n class=\"frequency-responsibility-list-head vx-p-3 vx-d-flex vx-align-center vx-justify-between\"\n >\n <div class=\"vx-d-flex vx-align-center\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Responsibility</div>\n </div>\n </div>\n <div class=\"frequency-responsibility-list-body\">\n <div\n *ngIf=\"responsibilitiesData?.allResponsibilityCount > 0\"\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-2\"\n >\n <ng-container *ngFor=\"let tab of responsibilityTabs; let i = index\">\n <div\n class=\"vx-table-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-mr-1 vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\"\n [class.active]=\"currentTab === i + 1 || (currentTab === 0 && i === 3)\"\n (click)=\"onClickTabChange(tab)\"\n [class.pointer-none]=\"responsibilityLoader\"\n >\n <div class=\"left vx-d-block vx-w-100\">\n <div class=\"label vx-d-flex vx-align-center\">\n <label\n class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\"\n >{{ tab.name }}</label\n >\n </div>\n </div>\n <div class=\"right vx-d-flex vx-justify-end vx-w-100\">\n <span\n class=\"vx-txt-white vx-fw-500 vx-d-inline-block vx-text-center\"\n >{{\n responsibilityTabCount[typeToCountProperty[tab.type]] || 0\n }}</span\n >\n </div>\n </div>\n </ng-container>\n </div>\n\n <div class=\"frequency-responsibility-list-search vx-mb-2\">\n <i class=\"icons vx-fs-12\"></i>\n <input\n type=\"text\"\n [(ngModel)]=\"responsibilitySearchText\"\n (keyup.enter)=\"search()\"\n placeholder=\"Search Responsibilities\"\n />\n </div>\n <app-loader-inline *ngIf=\"responsibilityLoader\"></app-loader-inline>\n <div\n class=\"frequency-responsibility-list-mid vx-mb-4\"\n [class.with-pagination]=\"\n !responsibilityLoader && responsibilitiesData?.total_pages > 1\n \"\n >\n <app-no-data\n *ngIf=\"\n responsibilitiesData?.data?.length === 0 && !responsibilityLoader\n \"\n [noDataImage]=\"noDataImagePath\"\n [noDataText]=\"noDataMessage\"\n ></app-no-data>\n <ng-container\n *ngIf=\"responsibilitiesData?.data?.length > 0 && !responsibilityLoader\"\n >\n <div class=\"table-header\">\n <div class=\"table-row\">\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n #\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility\"\n [class.with-rc]=\"isOnCompletionRc\"\n >\n RESPONSIBILITIES\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-center\"\n *ngIf=\"isOnCompletionRc\"\n >\n RESPONSIBILITY CENTER\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <ng-container\n *ngFor=\"\n let responsibility of responsibilitiesData?.data;\n let i = index\n \"\n >\n <div\n class=\"table-row clickable\"\n [class.active]=\"\n responsibility?.rid\n | isRespSelected : selectedResponsibilityValues\n \"\n [class.open]=\"this.viewResponsibilityId === responsibility?.id\"\n [class.selected]=\"\n responsibility?.rid\n | isRespSelected : selectedResponsibilityValues\n \"\n >\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n <div\n class=\"sr-no\"\n [appTooltip]=\"'1'\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ responsibilitiesData?.responsibilities_from + i }}\n </div>\n <app-cs-checkbox\n [value]=\"responsibility?.rid\"\n [ngValue]=\"\n responsibility?.rid\n | isRespSelected : selectedResponsibilityValues\n \"\n (ngValueChange)=\"selectResp(responsibility, $event)\"\n >\n </app-cs-checkbox>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\"\n >\n <div class=\"avatarFileArea vx-d-flex vx-align-center\">\n <app-avatar\n [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\"\n [userDetails]=\"\n [responsibility?.assignor] | getUserDetails : userList\n \"\n ></app-avatar>\n <ng-container\n *ngIf=\"\n responsibility?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \"\n >\n <app-avatar\n [avatarClass]=\"AVATAR_CONSTANTS.COLOR.GREEN\"\n [type]=\"\n assigneeDetails?.length > 1\n ? AVATAR_CONSTANTS.ANYONE\n : AVATAR_CONSTANTS.ALL\n \"\n [userDetails]=\"assigneeDetails\"\n appStopPropagation\n ></app-avatar>\n </ng-container>\n </div>\n <div class=\"name-details\">\n <div\n class=\"value vx-fs-13 vx-neutral-100 vx-lh-5\"\n [appTooltip]=\"responsibility?.title\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ responsibility?.title }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\"\n >\n RESPONSIBILITY CENTER:\n </div>\n <ng-container\n *ngIf=\"\n responsibility?.responsibilityCenters\n | getRCList : rcList : allRcList as rcList\n \"\n >\n <div\n class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\"\n [appTooltip]=\"rcList?.length > 0 ? rcList[0] : '--'\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ rcList?.length > 0 ? rcList[0] : \"--\" }}\n </div>\n </ng-container>\n <button\n *ngIf=\"responsibility?.responsibilityCenters?.length > 1\"\n class=\"vx-badgeNum xs minimal\"\n appPopover\n (click)=\"respPopover.popover()\"\n placement=\"left\"\n >\n +{{ responsibility?.responsibilityCenters?.length - 1 }}\n </button>\n <app-popover #respPopover>\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let rc of rcList | slice : 1\">\n <div class=\"avatar-card\">\n <span\n class=\"value\"\n [appTooltip]=\"rc\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >{{ rc }}</span\n >\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </div>\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\"\n >\n <button\n *ngIf=\"\n responsibility?.assigneeType === AVATAR_CONSTANTS.ALL.toLowerCase() ||\n responsibility?.rcType === AVATAR_CONSTANTS.ALL.toLowerCase()\n \"\n (click)=\"viewResponsibility(responsibility?.id)\"\n class=\"vx-icon-button minimal small\"\n >\n <i class=\"icons\">\n {{\n viewResponsibilityId === responsibility?.id\n ? \"\"\n : \"\"\n }}</i\n >\n </button>\n </div>\n </div>\n <div\n *ngIf=\"\n viewResponsibilityId === responsibility?.id &&\n viewResponsibilityData[viewResponsibilityId]?.length\n \"\n class=\"open-more\"\n >\n <div\n class=\"table-row\"\n *ngFor=\"\n let data of viewResponsibilityData[viewResponsibilityId]\n \"\n >\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\"\n >\n <app-cs-checkbox\n [value]=\"data?.rid\"\n [ngValue]=\"\n data\n | isRespSelected : selectedResponsibilityValues : true\n \"\n (ngValueChange)=\"selectResp(data, $event)\"\n >\n </app-cs-checkbox>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\"\n >\n <ng-container\n *ngIf=\"\n data?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \"\n >\n \n <div class=\"avatar-area\">\n <app-avatar\n [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\"\n [userDetails]=\"assigneeDetails\"\n ></app-avatar>\n </div>\n <div class=\"name-details\">\n <div\n class=\"value vx-fs-11 vx-neutral-100 vx-lh-4\"\n [appTooltip]=\"assigneeDetails[0]?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ assigneeDetails[0]?.name }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div\n class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\"\n >\n RESPONSIBILITY CENTER:\n </div>\n <ng-container\n *ngIf=\"\n data?.responsibilityCenters\n | getRCList : rcList : allRcList as childRcList\n \"\n >\n <div\n class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\"\n [appTooltip]=\"\n childRcList?.length > 0 ? childRcList[0] : '--'\n \"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ childRcList?.length > 0 ? childRcList[0] : \"--\" }}\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\"\n ></div>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <app-pagination\n *ngIf=\"!responsibilityLoader && responsibilitiesData?.total_pages > 1\"\n [start]=\"responsibilitiesData?.responsibilities_from\"\n [end]=\"responsibilitiesData?.responsibilities_to\"\n [total]=\"responsibilitiesData?.total_responsibilities\"\n [pageCount]=\"responsibilitiesData?.total_pages\"\n [currentPage]=\"responsibilitiesData?.responsibilityCurrentPage\"\n (selectedPage)=\"responsibilityPageChange($event)\"\n >\n </app-pagination>\n <app-floating-bar\n *ngIf=\"!responsibilityLoader\"\n [selectedData]=\"responsibilityFloaterBarData\"\n [displayElementKey]=\"'ReportName'\"\n (closeList)=\"back()\"\n (closeEvent)=\"save($event)\"\n (deleteEvent)=\"deleteItem($event)\"\n [isDisabled]=\"!responsibilityFloaterBarData?.length\"\n [isResponsibility]=\"true\"\n [singularText]=\"floaterBarText.SINGULAR_TEXT\"\n [pluralText]=\"floaterBarText.PLURAL_TEXT\"\n ></app-floating-bar>\n </div>\n</div>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/table-card/table-card.css\";@import\"https://cdn.v-comply.com/design-system/css/avatars/avatars.css\";@import\"https://cdn.v-comply.com/design-system/css/badge/badge.css\";::ng-deep .frequency-responsibility-list{border-top:3px solid #1e5dd3;position:fixed;top:0;right:31.25rem;bottom:0;left:0}::ng-deep .frequency-responsibility-list.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .frequency-responsibility-list-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .frequency-responsibility-list-head .arrow{cursor:pointer}::ng-deep .frequency-responsibility-list-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .frequency-responsibility-list-body app-pagination .wk-pagination-sec-ds{border-radius:0;padding:0 0 .5rem}::ng-deep .frequency-responsibility-list-body app-floating-bar .floating-bar{padding:0;position:relative;left:-1rem;width:calc(100% + 2rem)}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar{padding-left:0!important;padding-right:0!important}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar .userGroup-floating-bar-container .left .chip span{max-width:240px}::ng-deep .frequency-responsibility-list-search{position:relative}::ng-deep .frequency-responsibility-list-search input{height:2.75rem;line-height:1.5rem;padding:.75rem .75rem .75rem 2.5rem;outline:none;border:1px solid #cdced6;border-radius:.25rem;width:100%;font-size:14px;color:#787a8c}::ng-deep .frequency-responsibility-list-search input::placeholder{color:#787a8c;opacity:1}::ng-deep .frequency-responsibility-list-search i{position:absolute;left:1rem;top:1rem;pointer-events:none;color:#e3e3e9}::ng-deep .frequency-responsibility-list-mid{height:calc(100vh - 14rem);width:calc(100% + 1rem);padding-right:1rem;overflow:auto}::ng-deep .frequency-responsibility-list-mid::-webkit-scrollbar-track{background-color:#fff}::ng-deep .frequency-responsibility-list-mid.with-pagination{height:calc(100vh - 16rem)}::ng-deep .frequency-responsibility-list-mid .table-header{background:#fff;position:sticky;top:0;z-index:1}::ng-deep .frequency-responsibility-list-mid .table-header .table-column{color:#161b2f!important;line-height:.75rem!important;min-height:1.875rem!important}::ng-deep .frequency-responsibility-list-mid .table-body{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .table-row{background:#fff;border-radius:.25rem;border:1px solid #e3e3e9;margin-bottom:.25rem;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover{background:#f9f9fa}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover .table-column.serial app-cs-checkbox,::ng-deep .frequency-responsibility-list-mid .table-body .table-row.active .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open .table-column.serial .sr-no{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-body .clickable{cursor:pointer}::ng-deep .frequency-responsibility-list-mid .table-body .open-more{background:#f2f2f5;border:1px solid #e3e3e9;border-radius:0 0 .25rem .25rem;position:relative;top:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row{background:transparent;border-radius:0 0 .25rem .25rem;border:none;margin:0}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column{min-height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial .sr-no{background:#f2f2f5;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial app-cs-checkbox{background:#fff;border-radius:.25rem;opacity:1;top:1rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area{padding-left:1.25rem;position:relative;width:5.25rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:before{background:#e3e3e9;border-radius:1.25rem;content:\"\";position:absolute;left:9px;top:.625rem;width:.5rem;height:.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:after{background:#e3e3e9;content:\"\";position:absolute;left:.75rem;top:-.625rem;width:1px;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details:before{background:#e3e3e9;content:\"\";position:absolute;left:0;right:0;bottom:-.5rem;height:1px;width:100%}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .avatar-area:after,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .avatar-area:after{height:1.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .name-details:before,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .name-details:before{display:none}::ng-deep .frequency-responsibility-list-mid .table-row{display:flex;justify-content:left;position:relative}::ng-deep .frequency-responsibility-list-mid .table-row .table-column{color:#787a8c;min-height:4.25rem;position:relative;width:100%}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial .sr-no{width:1rem;background:#f9f9fa;writing-mode:vertical-lr;color:#787a8c;font-size:11px;font-weight:500;display:flex;height:4.25rem;align-items:center;justify-content:center;position:relative;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{position:absolute;top:1.625rem;left:.5rem;width:1rem;height:1rem;opacity:0;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox .radio-item{position:absolute}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{display:flex}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected app-cs-checkbox{opacity:1}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea{width:3.75rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea app-avatar~app-avatar{margin-left:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name{width:calc(100% - 4.5rem);min-width:calc(100% - 4.5rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .vx-avatar-group .vx-avatar.pill-avatars .count-pill.green{background:#34aa44}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start{color:#cdced6}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start.active{color:#f4c84a}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details{width:calc(100% - 6rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .resp-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 12rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.action{width:2.5rem;min-width:2.5rem}@keyframes animate-right{0%{transform:translate(5px);opacity:0}to{transform:translate(0);opacity:1}}.wf-action-list{width:220px}.wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}.wf-action-list ul.action-item{display:block}.wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}.wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.wf-action-list ul.action-item li .avatar-card.within-con{display:block}.wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}.wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}.wf-action-list ul.action-item li .avatar-card.no-image{display:block}.wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.wf-action-list ul.action-item li .avatar-card .closeBtn{cursor:pointer}.wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"] }]
|
|
372
|
+
args: [{ selector: 'app-link-responsibility-list', template: "<div class=\"frequency-responsibility-list\" [class.animate]=\"animation\">\n <div class=\"frequency-responsibility-list-head vx-p-3 vx-d-flex vx-align-center vx-justify-between\">\n <div class=\"vx-d-flex vx-align-center\">\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">Select a Responsibility</div>\n </div>\n </div>\n <div class=\"frequency-responsibility-list-body\">\n <div *ngIf=\"responsibilitiesData?.allResponsibilityCount > 0\"\n class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-2\">\n <ng-container *ngFor=\"let tab of responsibilityTabs; let i = index\">\n <div\n class=\"vx-table-card vx-bg-white vx-d-flex vx-justify-between vx-align-center vx-mr-1 vx-pt-2 vx-pb-2 vx-pl-3 vx-pr-3 vx-w-100\"\n [class.active]=\"currentTab === i + 1 || (currentTab === 0 && i === 3)\" (click)=\"onClickTabChange(tab)\"\n [class.pointer-none]=\"responsibilityLoader\">\n <div class=\"left vx-d-block vx-w-100\">\n <div class=\"label vx-d-flex vx-align-center\">\n <label class=\"vx-paragraph-txt vx-fw-500 vx-tt-uppercase vx-d-flex vx-justify-between vx-align-center\">{{\n tab.name }}</label>\n </div>\n </div>\n <div class=\"right vx-d-flex vx-justify-end vx-w-100\">\n <span class=\"vx-txt-white vx-fw-500 vx-d-inline-block vx-text-center\">{{\n responsibilityTabCount[typeToCountProperty[tab.type]] || 0\n }}</span>\n </div>\n </div>\n </ng-container>\n </div>\n\n <div class=\"frequency-responsibility-list-search vx-mb-2\">\n <i class=\"icons vx-fs-12\"></i>\n <input type=\"text\" [(ngModel)]=\"responsibilitySearchText\" (keyup.enter)=\"search()\"\n placeholder=\"Search Responsibilities\" />\n </div>\n <app-loader-inline *ngIf=\"responsibilityLoader\"></app-loader-inline>\n <div class=\"frequency-responsibility-list-mid vx-mb-4\" [class.with-pagination]=\"\n !responsibilityLoader && responsibilitiesData?.total_pages > 1\n \">\n <app-no-data *ngIf=\"\n responsibilitiesData?.data?.length === 0 && !responsibilityLoader\n \" [noDataImage]=\"noDataImagePath\" [noDataText]=\"noDataMessage\"></app-no-data>\n <ng-container *ngIf=\"responsibilitiesData?.data?.length > 0 && !responsibilityLoader\">\n <div class=\"table-header\">\n <div class=\"table-row\">\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\">\n #\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility\"\n [class.with-rc]=\"isOnCompletionRc\">\n RESPONSIBILITIES\n </div>\n <div\n class=\"table-column vx-fs-11 vx-fw-500 vx-lh-5 vx-tt-uppercase vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-center\"\n *ngIf=\"isOnCompletionRc\">\n RESPONSIBILITY CENTER\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <ng-container *ngFor=\"\n let responsibility of responsibilitiesData?.data;\n let i = index\n \">\n <div class=\"table-row clickable\" [class.active]=\"\n responsibility?.rid\n | isRespSelected : selectedResponsibilityValues\n \" [class.open]=\"this.viewResponsibilityId === responsibility?.id\" [class.selected]=\"\n responsibility?.rid\n | isRespSelected : selectedResponsibilityValues\n \">\n <div class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\">\n <div class=\"sr-no\" [appTooltip]=\"'1'\" placement=\"bottom\" delay=\"0\" type=\"black\"\n [tooltipMandatory]=\"true\">\n {{ responsibilitiesData?.responsibilities_from + i }}\n </div>\n <app-cs-checkbox [value]=\"responsibility?.rid\" [ngValue]=\"\n responsibility?.rid\n | isRespSelected : selectedResponsibilityValues\n \" (ngValueChange)=\"selectResp(responsibility, $event)\">\n </app-cs-checkbox>\n </div>\n <div class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\">\n <div class=\"avatarFileArea vx-d-flex vx-align-center\">\n <app-avatar [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\" [userDetails]=\"\n [responsibility?.assignor] | getUserDetails : userList\n \"></app-avatar>\n <ng-container *ngIf=\"\n responsibility?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \">\n <app-avatar [avatarClass]=\"AVATAR_CONSTANTS.COLOR.GREEN\" [type]=\"\n assigneeDetails?.length > 1\n ? AVATAR_CONSTANTS.ANYONE\n : AVATAR_CONSTANTS.ALL\n \" [userDetails]=\"assigneeDetails\" appStopPropagation></app-avatar>\n </ng-container>\n </div>\n <div class=\"name-details\">\n <div class=\"value vx-fs-13 vx-neutral-100 vx-lh-5\" [appTooltip]=\"responsibility?.title\"\n placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">\n {{responsibility?.controlId ? '[CID-' + responsibility?.controlId + '] ' : ''}}\n {{ responsibility?.title }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\">\n RESPONSIBILITY CENTER:\n </div>\n <ng-container *ngIf=\"\n responsibility?.responsibilityCenters\n | getRCList : rcList : allRcList as rcList\n \">\n <div class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\"\n [appTooltip]=\"rcList?.length > 0 ? rcList[0] : '--'\" placement=\"bottom-left\" delay=\"0\"\n type=\"black\" [tooltipMandatory]=\"false\">\n {{ rcList?.length > 0 ? rcList[0] : \"--\" }}\n </div>\n </ng-container>\n <button *ngIf=\"responsibility?.responsibilityCenters?.length > 1\" class=\"vx-badgeNum xs minimal\"\n appPopover (click)=\"respPopover.popover()\" placement=\"left\">\n +{{ responsibility?.responsibilityCenters?.length - 1 }}\n </button>\n <app-popover #respPopover>\n <div class=\"wf-action-list\">\n <ul class=\"action-item\">\n <li *ngFor=\"let rc of rcList | slice : 1\">\n <div class=\"avatar-card\">\n <span class=\"value\" [appTooltip]=\"rc\" placement=\"bottom-left\" delay=\"0\" type=\"black\"\n [tooltipMandatory]=\"false\">{{ rc }}</span>\n </div>\n </li>\n </ul>\n </div>\n </app-popover>\n </div>\n </div>\n </div>\n <div class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\">\n <button *ngIf=\"\n responsibility?.assigneeType === AVATAR_CONSTANTS.ALL.toLowerCase() ||\n responsibility?.rcType === AVATAR_CONSTANTS.ALL.toLowerCase()\n \" (click)=\"viewResponsibility(responsibility?.id)\" class=\"vx-icon-button minimal small\">\n <i class=\"icons\">\n {{\n viewResponsibilityId === responsibility?.id\n ? \"\"\n : \"\"\n }}</i>\n </button>\n </div>\n </div>\n <div *ngIf=\"\n viewResponsibilityId === responsibility?.id &&\n viewResponsibilityData[viewResponsibilityId]?.length\n \" class=\"open-more\">\n <div class=\"table-row\" *ngFor=\"\n let data of viewResponsibilityData[viewResponsibilityId]\n \">\n <div class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center serial\">\n <app-cs-checkbox [value]=\"data?.rid\" [ngValue]=\"\n data\n | isRespSelected : selectedResponsibilityValues : true\n \" (ngValueChange)=\"selectResp(data, $event)\">\n </app-cs-checkbox>\n </div>\n <div class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center responsibility-name\">\n <ng-container *ngIf=\"\n data?.assignees?.userId\n | getUserDetails : userList as assigneeDetails\n \">\n\n <div class=\"avatar-area\">\n <app-avatar [type]=\"AVATAR_CONSTANTS.TYPE.ASSIGNOR\" [userDetails]=\"assigneeDetails\"></app-avatar>\n </div>\n <div class=\"name-details\">\n <div class=\"value vx-fs-11 vx-neutral-100 vx-lh-4\" [appTooltip]=\"assigneeDetails[0]?.name\"\n placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">\n {{ assigneeDetails[0]?.name }}\n </div>\n <div class=\"vx-d-flex vx-align-center\">\n <div class=\"vx-fs-11 vx-fw-500 vx-neutral-100 vx-lh-4 vx-tt-uppercase vx-mr-1\">\n RESPONSIBILITY CENTER:\n </div>\n <ng-container *ngIf=\"\n data?.responsibilityCenters\n | getRCList : rcList : allRcList as childRcList\n \">\n <div class=\"resp-name vx-fs-11 vx-gray-60 vx-lh-4 vx-mr-2\" [appTooltip]=\"\n childRcList?.length > 0 ? childRcList[0] : '--'\n \" placement=\"bottom-left\" delay=\"0\" type=\"black\" [tooltipMandatory]=\"false\">\n {{ childRcList?.length > 0 ? childRcList[0] : \"--\" }}\n </div>\n </ng-container>\n </div>\n </div>\n </ng-container>\n </div>\n <div class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center action\"></div>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <app-pagination *ngIf=\"!responsibilityLoader && responsibilitiesData?.total_pages > 1\"\n [start]=\"responsibilitiesData?.responsibilities_from\" [end]=\"responsibilitiesData?.responsibilities_to\"\n [total]=\"responsibilitiesData?.total_responsibilities\" [pageCount]=\"responsibilitiesData?.total_pages\"\n [currentPage]=\"responsibilitiesData?.responsibilityCurrentPage\" (selectedPage)=\"responsibilityPageChange($event)\">\n </app-pagination>\n <app-floating-bar *ngIf=\"!responsibilityLoader\" [selectedData]=\"responsibilityFloaterBarData\"\n [displayElementKey]=\"'ReportName'\" (closeList)=\"back()\" (closeEvent)=\"save($event)\"\n (deleteEvent)=\"deleteItem($event)\" [isDisabled]=\"!responsibilityFloaterBarData?.length\" [isResponsibility]=\"true\"\n [singularText]=\"floaterBarText.SINGULAR_TEXT\" [pluralText]=\"floaterBarText.PLURAL_TEXT\"></app-floating-bar>\n </div>\n</div>", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/mixin/mixin.css\";@import\"https://cdn.v-comply.com/design-system/css/header/header.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-top.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-left.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin-right.css\";@import\"https://cdn.v-comply.com/design-system/css/alignment/alignment.css\";@import\"https://cdn.v-comply.com/design-system/css/text/text.css\";@import\"https://cdn.v-comply.com/design-system/css/button/button.css\";@import\"https://cdn.v-comply.com/design-system/css/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/popover/popover.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-top.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-bottom.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-left.css\";@import\"https://cdn.v-comply.com/design-system/css/padding/padding-right.css\";@import\"https://cdn.v-comply.com/design-system/css/table-card/table-card.css\";@import\"https://cdn.v-comply.com/design-system/css/avatars/avatars.css\";@import\"https://cdn.v-comply.com/design-system/css/badge/badge.css\";::ng-deep .frequency-responsibility-list{border-top:3px solid #1e5dd3;position:fixed;top:0;right:31.25rem;bottom:0;left:0}::ng-deep .frequency-responsibility-list.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both}::ng-deep .frequency-responsibility-list-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .frequency-responsibility-list-head .arrow{cursor:pointer}::ng-deep .frequency-responsibility-list-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .frequency-responsibility-list-body app-pagination .wk-pagination-sec-ds{border-radius:0;padding:0 0 .5rem}::ng-deep .frequency-responsibility-list-body app-floating-bar .floating-bar{padding:0;position:relative;left:-1rem;width:calc(100% + 2rem)}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar{padding-left:0!important;padding-right:0!important}::ng-deep .frequency-responsibility-list-body app-floating-bar .userGroup-floating-bar .userGroup-floating-bar-container .left .chip span{max-width:240px}::ng-deep .frequency-responsibility-list-search{position:relative}::ng-deep .frequency-responsibility-list-search input{height:2.75rem;line-height:1.5rem;padding:.75rem .75rem .75rem 2.5rem;outline:none;border:1px solid #cdced6;border-radius:.25rem;width:100%;font-size:14px;color:#787a8c}::ng-deep .frequency-responsibility-list-search input::placeholder{color:#787a8c;opacity:1}::ng-deep .frequency-responsibility-list-search i{position:absolute;left:1rem;top:1rem;pointer-events:none;color:#e3e3e9}::ng-deep .frequency-responsibility-list-mid{height:calc(100vh - 14rem);width:calc(100% + 1rem);padding-right:1rem;overflow:auto}::ng-deep .frequency-responsibility-list-mid::-webkit-scrollbar-track{background-color:#fff}::ng-deep .frequency-responsibility-list-mid.with-pagination{height:calc(100vh - 16rem)}::ng-deep .frequency-responsibility-list-mid .table-header{background:#fff;position:sticky;top:0;z-index:1}::ng-deep .frequency-responsibility-list-mid .table-header .table-column{color:#161b2f!important;line-height:.75rem!important;min-height:1.875rem!important}::ng-deep .frequency-responsibility-list-mid .table-body{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .table-row{background:#fff;border-radius:.25rem;border:1px solid #e3e3e9;margin-bottom:.25rem;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover{background:#f9f9fa}::ng-deep .frequency-responsibility-list-mid .table-body .table-row:hover .table-column.serial app-cs-checkbox,::ng-deep .frequency-responsibility-list-mid .table-body .table-row.active .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.open .table-column.serial .sr-no{background:#f2f2f5}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial app-cs-checkbox{background:#fff;opacity:1}::ng-deep .frequency-responsibility-list-mid .table-body .table-row.selected .table-column.serial .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-body .clickable{cursor:pointer}::ng-deep .frequency-responsibility-list-mid .table-body .open-more{background:#f2f2f5;border:1px solid #e3e3e9;border-radius:0 0 .25rem .25rem;position:relative;top:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row{background:transparent;border-radius:0 0 .25rem .25rem;border:none;margin:0}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column{min-height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial .sr-no{background:#f2f2f5;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.serial app-cs-checkbox{background:#fff;border-radius:.25rem;opacity:1;top:1rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area{padding-left:1.25rem;position:relative;width:5.25rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:before{background:#e3e3e9;border-radius:1.25rem;content:\"\";position:absolute;left:9px;top:.625rem;width:.5rem;height:.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .avatar-area:after{background:#e3e3e9;content:\"\";position:absolute;left:.75rem;top:-.625rem;width:1px;height:3rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details{position:relative}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row .table-column.responsibility-name .name-details:before{background:#e3e3e9;content:\"\";position:absolute;left:0;right:0;bottom:-.5rem;height:1px;width:100%}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .avatar-area:after,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .avatar-area:after{height:1.5rem}::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:last-of-type .table-column.responsibility-name .name-details:before,::ng-deep .frequency-responsibility-list-mid .table-body .open-more .table-row:only-of-type .table-column.responsibility-name .name-details:before{display:none}::ng-deep .frequency-responsibility-list-mid .table-row{display:flex;justify-content:left;position:relative}::ng-deep .frequency-responsibility-list-mid .table-row .table-column{color:#787a8c;min-height:4.25rem;position:relative;width:100%}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial .sr-no{width:1rem;background:#f9f9fa;writing-mode:vertical-lr;color:#787a8c;font-size:11px;font-weight:500;display:flex;height:4.25rem;align-items:center;justify-content:center;position:relative;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{position:absolute;top:1.625rem;left:.5rem;width:1rem;height:1rem;opacity:0;transition:all .2s ease-in-out}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox .radio-item{position:absolute}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.serial app-cs-checkbox{display:flex}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected .sr-no{opacity:0}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .selected app-cs-checkbox{opacity:1}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea{width:3.75rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column .avatarFileArea app-avatar~app-avatar{margin-left:-.5rem}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name{width:calc(100% - 4.5rem);min-width:calc(100% - 4.5rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .vx-avatar-group .vx-avatar.pill-avatars .count-pill.green{background:#34aa44}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start{color:#cdced6}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .start.active{color:#f4c84a}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details{width:calc(100% - 6rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.responsibility-name .name-details .resp-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:calc(100% - 12rem)}::ng-deep .frequency-responsibility-list-mid .table-row .table-column.action{width:2.5rem;min-width:2.5rem}@keyframes animate-right{0%{transform:translate(5px);opacity:0}to{transform:translate(0);opacity:1}}.wf-action-list{width:220px}.wf-action-list ul{padding:0;margin:0;animation:scale-up-center .2s cubic-bezier(.39,.575,.565,1) both;background:#fff;box-shadow:0 3px 6px #1c5bd140;border-radius:4px;max-height:220px;overflow:auto}.wf-action-list ul.action-item{display:block}.wf-action-list ul.action-item li{list-style:none;border:none;border-bottom:1px solid #f1f1f1;display:block;width:100%;padding:0;background:transparent;border-radius:0;margin:0;height:auto;justify-content:flex-start;box-shadow:none}.wf-action-list ul.action-item li .avatar-card{display:flex;align-items:center;width:100%;padding:7.5px}.wf-action-list ul.action-item li .avatar-card.within-con{display:block}.wf-action-list ul.action-item li .avatar-card .avatar{height:24px;width:24px!important;overflow:hidden;background:#1e5dd3;color:#fff;font-size:10px;display:inline-flex;margin-right:5px;border-radius:50%;align-items:center;justify-content:center;text-transform:uppercase}.wf-action-list ul.action-item li .avatar-card .avatar img{width:100%}.wf-action-list ul.action-item li .avatar-card .avatar+span.value{width:calc(100% - 29px)}.wf-action-list ul.action-item li .avatar-card span.value{width:100%;color:#6e717e;text-decoration:none;background:transparent;font-size:12px;text-transform:capitalize;display:block;font-weight:400;text-align-last:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:20px}.wf-action-list ul.action-item li .avatar-card span.value i{font-size:8px;color:#747576;cursor:pointer;margin-right:5px}.wf-action-list ul.action-item li .avatar-card.no-image{display:block}.wf-action-list ul.action-item li .avatar-card.no-image span.value{width:100%;display:block}.wf-action-list ul.action-item li .avatar-card .closeBtn{cursor:pointer}.wf-action-list ul.action-item li:first-child{animation:action-list-open .25s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(2){animation:action-list-open .35s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(3){animation:action-list-open .45s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(4){animation:action-list-open .55s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(5){animation:action-list-open .65s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(6){animation:action-list-open .75s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(7){animation:action-list-open .85s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(8){animation:action-list-open .95s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(9){animation:action-list-open 1.05s cubic-bezier(.25,.46,.45,.94) both}.wf-action-list ul.action-item li:nth-child(10){animation:action-list-open 1.15s cubic-bezier(.25,.46,.45,.94) both}@keyframes action-list-open{0%{transform:translateY(50px)}to{transform:translateY(0)}}@keyframes scale-up-center{0%{transform:scale(.5);opacity:0}to{transform:scale(1);opacity:1}}\n"] }]
|
|
373
373
|
}], ctorParameters: function () { return [{ type: i1.FrequencyService }, { type: i2.ComplianceCommonService }]; }, propDecorators: { onCompletionOfResponsibility: [{
|
|
374
374
|
type: Input
|
|
375
375
|
}], feature: [{
|
|
@@ -387,4 +387,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
387
387
|
}], selectedResponsibility: [{
|
|
388
388
|
type: Output
|
|
389
389
|
}] } });
|
|
390
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2xpbmstcmVzcG9uc2liaWxpdHkvbGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2xpbmstcmVzcG9uc2liaWxpdHkvbGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbkMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFHOUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVF4RSxNQUFNLE9BQU8sK0JBQStCO0lBc0YxQyxZQUNVLGdCQUFrQyxFQUNsQyx1QkFBZ0Q7UUFEaEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBckZqRCxjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLGlDQUE0QixHQUFRLEVBQUUsQ0FBQztRQUN2QyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUcvQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakMsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV0RCxxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUVwQyxjQUFTLEdBQVks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QUMzQixNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUM7d0JBQ3BCLFlBQVksRUFBRSxDQUFDLFVBQVUsQ0FBQztxQkFDM0I7b0JBQ0QscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLENBQUM7b0JBQzdCLGVBQWUsRUFBRTt3QkFDZjs0QkFDRSxRQUFRLEVBQUUsVUFBVTs0QkFDcEIsb0JBQW9CLEVBQUUsSUFBSTs0QkFDMUIsV0FBVyxFQUFFLElBQUk7NEJBQ2pCLFdBQVcsRUFBRSxJQUFJOzRCQUNqQixtQkFBbUIsRUFBRSxJQUFJOzRCQUN6QixtQkFBbUIsRUFBRSxJQUFJO3lCQUMxQjtxQkFDRjtpQkFDRixDQUFDO2dCQUNGLG1CQUFtQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzlDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7K0dBdmJVLCtCQUErQjttR0FBL0IsK0JBQStCLG1hQ2I1QywwNWNBc1dBOzs0RkR6VmEsK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLDhCQUE4Qjs2SUFLL0IsNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLDRCQUE0QjtzQkFBcEMsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBMSU5LX1JFU1BPTlNJQklMSVRZX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9saW5rLXJlc3BvbnNpYmlsaXR5LmNvbnN0YW50cyc7XG5pbXBvcnQgeyBGcmVxdWVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vZnJlcXVlbmN5L2ZyZXF1ZW5jeS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBsaWFuY2VDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvY29tbW9uLXdvcmtmbG93LXNlcnZpY2VzL2NvbXBsaWFuY2UtY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVZBVEFSX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uL3VpLWtpdC9hdmF0YXIvYXZhdGFyLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBSZXNwb25zaWJpbGl0eSB9IGZyb20gJy4vbGluay1yZXNwb25zaWJpbGl0eS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbGluay1yZXNwb25zaWJpbGl0eS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpbmstcmVzcG9uc2liaWxpdHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saW5rLXJlc3BvbnNpYmlsaXR5LmNvbXBvbmVudC5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIExpbmtSZXNwb25zaWJpbGl0eUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBvbkNvbXBsZXRpb25PZlJlc3BvbnNpYmlsaXR5OiBhbnk7XG4gIEBJbnB1dCgpIGZlYXR1cmU6IGFueTtcbiAgQElucHV0KCkgcmVzcElkS2V5OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlczogYW55ID0gW107XG4gIEBJbnB1dCgpIHJhZGlvU2VsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHBhcmVudFJlc3BvbnNpYmlsaXR5OiBhbnk7XG5cbiAgQE91dHB1dCgpIGNsb3NlQnV0dG9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRSZXNwb25zaWJpbGl0eSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBBVkFUQVJfQ09OU1RBTlRTID0gQVZBVEFSX0NPTlNUQU5UUztcblxuICBhbmltYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcmVzcG9uc2liaWxpdHlMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNWYWxpZE9iajogYm9vbGVhbiA9IGZhbHNlO1xuICBpc09uQ29tcGxldGlvblJjOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcmVzcG9uc2liaWxpdGllc0RhdGE6IGFueSA9IHt9O1xuICByZXNwb25zaWJpbGl0eVRhYkNvdW50OiBhbnkgPSB7XG4gICAgcmVndWxhdGlvbkNvdW50OiAwLFxuICAgIHN0YW5kYXJkQ291bnQ6IDAsXG4gICAgaW50ZXJuYWxDb3VudDogMCxcbiAgICBvdGhlcnNDb3VudDogMCxcbiAgfTtcbiAgdHlwZVRvQ291bnRQcm9wZXJ0eTogYW55ID0ge1xuICAgIDA6ICdvdGhlcnNDb3VudCcsXG4gICAgMTogJ3JlZ3VsYXRpb25Db3VudCcsXG4gICAgMjogJ3N0YW5kYXJkQ291bnQnLFxuICAgIDM6ICdpbnRlcm5hbENvdW50JyxcbiAgfTtcbiAgcmVzcG9uc2liaWxpdHlQYXlsb2FkID0ge1xuICAgIHR5cGU6ICdhbGwnLFxuICAgIHBhZ2luYXRpb25UeXBlOiAnbGFyZ2UnLFxuICAgIGE6ICcnLFxuICAgIHNlYXJjaFRleHQ6ICcnLFxuICAgIGZpbHRlckRhdGE6IHtcbiAgICAgIGFwcExpc3Q6IFtdLFxuICAgICAgcmlza0lkczogW10sXG4gICAgICByZXZpZXdlcklkOiBbXSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiBbXSxcbiAgICAgIGVudHJ1c3RlZEJ5OiBbXSxcbiAgICAgIGVudHJ1c3RlZFRvOiBbXSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IFtdLFxuICAgICAgY29tcGxpYW5jZVR5cGU6IFsxXSxcbiAgICB9LFxuICAgIHBhZ2VObzogMSxcbiAgICBzb3J0T2JqOiB7XG4gICAgICBzb3J0Qnk6ICcnLFxuICAgICAgdHlwZTogJycsXG4gICAgfSxcbiAgICBwYWdlTmFtZTogJ292ZXJ2aWV3JyxcbiAgfTtcblxuICBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5SWQ6IGFueVtdID0gW107XG4gIHJlc3BvbnNpYmlsaXR5VGFiczogYW55W10gPSBbXG4gICAgeyBuYW1lOiAnUkVHVUxBVElPTlMnLCB0eXBlOiAxIH0sXG4gICAgeyBuYW1lOiAnU1RBTkRBUkRTJywgdHlwZTogMiB9LFxuICAgIHsgbmFtZTogJ0lOVEVSTkFMIENPTlRST0xTJywgdHlwZTogMyB9LFxuICAgIHsgbmFtZTogJ09USEVSUycsIHR5cGU6IDAgfSxcbiAgXTtcblxuICBjdXJyZW50VGFiOiBudW1iZXIgPSAxO1xuICByZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xuICByZWd1bGF0aW9uQ291bnQ6IG51bWJlciA9IDA7XG4gIHN0YW5kYXJkc0NvdW50OiBudW1iZXIgPSAwO1xuICBpbnRlcm5hbHNDb3VudDogbnVtYmVyID0gMDtcbiAgb3RoZXJzQ291bnQ6IG51bWJlciA9IDA7XG5cbiAgcmVzcG9uc2liaWxpdHlTZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcbiAgbm9EYXRhTWVzc2FnZTogc3RyaW5nID0gTElOS19SRVNQT05TSUJJTElUWV9DT05TVEFOVFMuTk9fREFUQV9NRVNTQUdFLk5PX0RBVEE7XG4gIG5vRGF0YUltYWdlUGF0aDogc3RyaW5nID0gTElOS19SRVNQT05TSUJJTElUWV9DT05TVEFOVFMuTk9fREFUQS5JTUFHRTtcbiAgZmxvYXRlckJhclRleHQ6IGFueSA9IExJTktfUkVTUE9OU0lCSUxJVFlfQ09OU1RBTlRTLkZMT0FUSU5HX0JBUjtcblxuICByZXNwb25zaWJpbGl0eUxpc3Q6IGFueTtcbiAgZmVhdHVyZUZsYWdfb25fY29tcGxldGlvbl9vZjogYW55O1xuICBjbG9zZTogYW55O1xuICB1c2VyTGlzdDogYW55W10gPSBbXTtcbiAgcmNMaXN0OiBhbnlbXSA9IFtdO1xuICBhbGxSY0xpc3Q6IGFueVtdID0gW107XG4gIHZpZXdSZXNwb25zaWJpbGl0eUlkOiBhbnk7XG4gIHZpZXdSZXNwb25zaWJpbGl0eURhdGE6IGFueSA9IHt9O1xuICByZXNwb25zaWJpbGl0eUZsb2F0ZXJCYXJEYXRhOiBhbnkgPSBbXTtcblxuICBpc1Jlc3BvbnNpYmlsaXR5U2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21wbGlhbmNlQ29tbW9uU2VydmljZTogQ29tcGxpYW5jZUNvbW1vblNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdHlWYWx1ZXMoKTtcbiAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXR5TGlzdCgpO1xuICAgIHRoaXMuZ2V0UmNMaXN0KCk7XG4gIH1cblxuICBiYWNrKCkge1xuICAgIHRoaXMuY2xvc2VCdXR0b24uZW1pdCgpO1xuICB9XG5cbiAgZ2V0UmVzcG9uc2liaWxpdHlWYWx1ZXMoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5RmxvYXRlckJhckRhdGEgPSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMubWFwKFxuICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtPy5yZXNwb25zaWJpbGl0eUlkXG4gICAgICApO1xuICAgICAgdGhpcy5wb3B1bGF0ZVJlc3BvbnNpYmlsaXR5VmFsdWVzKCk7XG4gICAgfVxuICAgIHRoaXMuYW5pbWF0aW9uID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYW5pbWF0aW9uID0gZmFsc2U7XG4gICAgfSwgMzAwKTtcbiAgfVxuXG4gIHBvcHVsYXRlUmVzcG9uc2liaWxpdHlWYWx1ZXMoKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcykpIHJldHVybjtcblxuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyA9XG4gICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMuZmxhdE1hcChcbiAgICAgICAgKHtcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUlkLFxuICAgICAgICAgIHJlcG9ydE5hbWUsXG4gICAgICAgICAgYXNzaWduZWVJZHMgPSBbXSxcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcnMgPSBbXSxcbiAgICAgICAgICBhc3NpZ25lZUJyaWRnZUlkID0gW10sXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXJCcmlkZ2VJZCA9IFtdLFxuICAgICAgICB9KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkoYXNzaWduZWVJZHMpIHx8XG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShyZXNwb25zaWJpbGl0eUNlbnRlcnMpXG4gICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuXG4gICAgICAgICAgcmV0dXJuIGFzc2lnbmVlSWRzLmZsYXRNYXAoKGFzc2lnbmVlSWQpID0+XG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcnMubWFwKChyZXNwb25zaWJpbGl0eUNlbnRlcikgPT4gKHtcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlJZCxcbiAgICAgICAgICAgICAgYXNzaWduZWVJZCxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXIsXG4gICAgICAgICAgICAgIHJlcG9ydE5hbWUsXG4gICAgICAgICAgICAgIGFzc2lnbmVlQnJpZGdlSWQsXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyQnJpZGdlSWQsXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0UmNMaXN0KCkge1xuICAgIHRoaXMuY29tcGxpYW5jZUNvbW1vblNlcnZpY2UuZ2V0UmNMaXN0SW5mbygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuYWxsUmNMaXN0ID0gcmVzO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UmVzcG9uc2liaWxpdHlMaXN0KHBhZ2VObzogbnVtYmVyID0gMSkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMuZnJlcXVlbmN5U2VydmljZVxuICAgICAgPy5nZXRBbGxSZXNwb25zaWJpbGl0aWVzKHBhZ2VObywgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcz8uZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0aWVzRGF0YSA9IHRoaXMubWFwUmVzcG9uc2liaWxpdGllc0RhdGEocmVzPy5kYXRhKTtcbiAgICAgICAgICAgIHRoaXMudXNlckxpc3QgPSByZXM/LmRhdGE/LnVzZXJzO1xuICAgICAgICAgICAgdGhpcy5yY0xpc3QgPSByZXM/LmRhdGE/LnJlc3BvbnNpYmlsaXR5Q2VudGVycztcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUxvYWRlciA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBSZXNwb25zaWJpbGl0aWVzRGF0YShyZXM6IGFueSkge1xuICAgIGNvbnN0IHBhZ2VTaXplID0gMTA7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSByZXM/LnBhZ2UgfHwgMTtcbiAgICBjb25zdCB0b3RhbEl0ZW1zID0gcmVzPy50b3RhbCB8fCAwO1xuXG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IChjdXJyZW50UGFnZSAtIDEpICogcGFnZVNpemUgKyAxO1xuICAgIGNvbnN0IGVuZEluZGV4ID0gTWF0aC5taW4oc3RhcnRJbmRleCArIHBhZ2VTaXplIC0gMSwgdG90YWxJdGVtcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogcmVzPy5yZXNwb25zaWJpbGl0aWVzLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtPy5yaWQgIT09IHRoaXMucGFyZW50UmVzcG9uc2liaWxpdHk/LnJpZCksXG4gICAgICB0b3RhbF9yZXNwb25zaWJpbGl0aWVzOiB0b3RhbEl0ZW1zLFxuICAgICAgdG90YWxfcGFnZXM6IE1hdGguY2VpbCh0b3RhbEl0ZW1zIC8gcGFnZVNpemUpLFxuICAgICAgcmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZTogY3VycmVudFBhZ2UsXG4gICAgICByZXNwb25zaWJpbGl0aWVzX2Zyb206IHN0YXJ0SW5kZXgsXG4gICAgICByZXNwb25zaWJpbGl0aWVzX3RvOiBlbmRJbmRleCxcbiAgICB9O1xuICB9XG5cbiAgcmVzcG9uc2liaWxpdHlQYWdlQ2hhbmdlKHBhZ2VOdW1iZXI6IG51bWJlcikge1xuICAgIGlmIChwYWdlTnVtYmVyICE9PSB0aGlzLnJlc3BvbnNpYmlsaXRpZXNEYXRhLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2UpIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZSA9IHBhZ2VOdW1iZXI7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5UGF5bG9hZC5wYWdlTm8gPSBwYWdlTnVtYmVyO1xuICAgICAgdGhpcy5nZXRSZXNwb25zaWJpbGl0eUxpc3QocGFnZU51bWJlcik7XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlSXRlbShpdGVtOiBhbnkpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUlkLmZpbmRJbmRleChcbiAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQgPT0gaXRlbVt0aGlzLnJlc3BJZEtleV1cbiAgICApO1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUlkLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzID1cbiAgICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcy5maWx0ZXIoXG4gICAgICAgIChlbGU6IGFueSkgPT4gZWxlW3RoaXMucmVzcElkS2V5XSAhPT0gaXRlbVt0aGlzLnJlc3BJZEtleV1cbiAgICAgICk7XG4gICAgdGhpcy5pc1ZhbGlkT2JqID0gZmFsc2U7XG4gIH1cblxuICBzYXZlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmNsb3NlQnV0dG9uLmVtaXQoKTtcbiAgICB0aGlzLmZpbHRlclVuaXF1ZVJlc3BvbnNpYmlsaXR5VmFsdWVzKCk7XG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5LmVtaXQodGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzKTtcbiAgfVxuXG4gIGZpbHRlclVuaXF1ZVJlc3BvbnNpYmlsaXR5VmFsdWVzKCkge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzPy5sZW5ndGgpIHJldHVybjtcbiAgICBcbiAgICBjb25zdCByZXN1bHQ6IFJlc3BvbnNpYmlsaXR5ID0ge307XG5cbiAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG5cbiAgICAgIHRoaXMuaW5zZXJ0VW5pcXVlUmVzcG9uc2liaWxpdHkocmVzdWx0LCBpdGVtKTtcbiAgICB9KTtcbiAgICAvLyBDb252ZXJ0IHRoZSByZXN1bHQgb2JqZWN0IGludG8gYW4gYXJyYXlcbiAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMgPSBPYmplY3QudmFsdWVzKHJlc3VsdCk7XG4gIH1cblxuICBpbnNlcnRVbmlxdWVSZXNwb25zaWJpbGl0eShyZXN1bHQ6IFJlc3BvbnNpYmlsaXR5LCBpdGVtOiBhbnkpIHtcbiAgICBjb25zdCB7IHJlc3BvbnNpYmlsaXR5SWQsIGFzc2lnbmVlSWQsIHJlc3BvbnNpYmlsaXR5Q2VudGVyIH0gPSBpdGVtO1xuICAgIGlmICghcmVzdWx0W3Jlc3BvbnNpYmlsaXR5SWRdKSB7XG4gICAgICByZXN1bHRbcmVzcG9uc2liaWxpdHlJZF0gPSB7XG4gICAgICAgIHJlc3BvbnNpYmlsaXR5SWQsXG4gICAgICAgIGFzc2lnbmVlSWRzOiBbXSxcbiAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXJzOiBbXSxcbiAgICAgICAgYXNzaWduZWVCcmlkZ2VJZDogW10sXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyQnJpZGdlSWQ6IFtdLFxuICAgICAgICByZXBvcnROYW1lOiBpdGVtPy5yZXBvcnROYW1lLFxuICAgICAgfTtcbiAgICB9IFxuICAgICAgLy8gQWRkIGFzc2lnbmVlSWQgaWYgbm90IGFscmVhZHkgcHJlc2VudFxuICAgICAgaWYgKCFyZXN1bHRbcmVzcG9uc2liaWxpdHlJZF0/LmFzc2lnbmVlSWRzPy5pbmNsdWRlcyhhc3NpZ25lZUlkKSkge1xuICAgICAgICByZXN1bHRbcmVzcG9uc2liaWxpdHlJZF0/LmFzc2lnbmVlSWRzPy5wdXNoKGFzc2lnbmVlSWQpO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGQgcmVzcG9uc2liaWxpdHlDZW50ZXIgaWYgbm90IGFscmVhZHkgcHJlc2VudFxuICAgICAgaWYgKFxuICAgICAgICAhcmVzdWx0W3Jlc3BvbnNpYmlsaXR5SWRdPy5yZXNwb25zaWJpbGl0eUNlbnRlcnM/LmluY2x1ZGVzKFxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICByZXN1bHRbcmVzcG9uc2liaWxpdHlJZF0/LnJlc3BvbnNpYmlsaXR5Q2VudGVycz8ucHVzaChcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlclxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5nZXRCcmlkZ2VJZHMocmVzdWx0KTtcbiAgICBcbiAgfVxuXG4gIGdldEJyaWRnZUlkcyhyZXN1bHQ6IGFueSkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIHJlc3VsdCkge1xuICAgICAgY29uc3QgaXRlbSA9IHJlc3VsdFtrZXldO1xuICAgICAgaXRlbS5hc3NpZ25lZUlkcy5mb3JFYWNoKChhc3NpZ25lZUlkOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgYXNzaWduZWUgPSB0aGlzLnVzZXJMaXN0LmZpbmQoXG4gICAgICAgICAgKHVzZXI6IGFueSkgPT4gdXNlcj8uaWQgPT09IGFzc2lnbmVlSWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFpdGVtLmFzc2lnbmVlQnJpZGdlSWQuZmluZCgoaWQ6IGFueSkgPT4gaWQgPT09IGFzc2lnbmVlPy51aWQpKSB7XG4gICAgICAgICAgaXRlbS5hc3NpZ25lZUJyaWRnZUlkPy5wdXNoKGFzc2lnbmVlPy51aWQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGl0ZW0ucmVzcG9uc2liaWxpdHlDZW50ZXJzLmZvckVhY2goKHJlc3BvbnNpYmlsaXR5Q2VudGVyOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgcmMgPSB0aGlzLnJjTGlzdC5maW5kKFxuICAgICAgICAgIChyYzogYW55KSA9PiByYz8uaWQgPT09IHJlc3BvbnNpYmlsaXR5Q2VudGVyXG4gICAgICAgICk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhaXRlbS5yZXNwb25zaWJpbGl0eUNlbnRlckJyaWRnZUlkLmZpbmQoKGlkOiBhbnkpID0+IGlkID09PSByYz8ucmNpZClcbiAgICAgICAgKSB7XG4gICAgICAgICAgaXRlbS5yZXNwb25zaWJpbGl0eUNlbnRlckJyaWRnZUlkPy5wdXNoKHJjPy5yY2lkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25DbGlja1RhYkNoYW5nZSh0YWI6IGFueSkge1xuICAgIHRoaXMuY3VycmVudFRhYiA9IHRhYj8udHlwZTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5UGF5bG9hZC5maWx0ZXJEYXRhLmNvbXBsaWFuY2VUeXBlID0gW3RoaXMuY3VycmVudFRhYl07XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5UGF5bG9hZC5wYWdlTm8gPSB0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2U7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQuc2VhcmNoVGV4dCA9IHRoaXMucmVzcG9uc2liaWxpdHlTZWFyY2hUZXh0O1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcztcbiAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXR5TGlzdCgpO1xuICB9XG5cbiAgc2VhcmNoKCkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkLnNlYXJjaFRleHQgPSB0aGlzLnJlc3BvbnNpYmlsaXR5U2VhcmNoVGV4dDtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkLnBhZ2VObyA9IHRoaXMucmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZTtcbiAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXR5TGlzdCgpO1xuICB9XG5cbiAgc2V0UmVzcG9uc2liaWxpdGllc0NvdW50KCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkKSk7XG4gICAgcGF5bG9hZC5maWx0ZXJEYXRhLmNvbXBsaWFuY2VUeXBlID0gWzAsIDEsIDIsIDNdO1xuICAgIHRoaXMuZnJlcXVlbmN5U2VydmljZVxuICAgICAgPy5nZXRSZXNwb25zaWJpbGl0aWVzQ291bnQocGF5bG9hZClcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlUYWJDb3VudC5yZWd1bGF0aW9uQ291bnQgPSByZXM/LnJlZ3VsYXRpb25fY291bnQ7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlUYWJDb3VudC5zdGFuZGFyZENvdW50ID0gcmVzPy5zdGFuZGFyZF9jb3VudDtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eVRhYkNvdW50LmludGVybmFsQ291bnQgPSByZXM/LmludGVybmFsX2NvdW50O1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5VGFiQ291bnQub3RoZXJzQ291bnQgPSByZXM/Lm90aGVyc19jb3VudDtcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGluaXRpYWxpemUgYWxsIHRoZSBGZWF0dXJlIGZsYWcgYmFzZWQgdmFyaWFibGVzXG4gIGZlYXR1cmVGbGFnSW5pdGlhbGl6YXRpb24oKSB7XG4gICAgdGhpcy5mZWF0dXJlRmxhZ19vbl9jb21wbGV0aW9uX29mID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfZnJlcXVlbmN5X29uX2NvbXBsZXRpb25fb2YnXG4gICAgKTtcbiAgICB0aGlzLmlzT25Db21wbGV0aW9uUmMgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9vbl9jb21wbGV0aW9uX3JjJ1xuICAgICk7XG4gIH1cblxuICBzZWxlY3RSZXNwKHJlc3A6IGFueSwgbW9kZTogYm9vbGVhbikge1xuICAgIGNvbnN0IGNoZWNrZWRSZXNwID0gdGhpcy5nZW5lcmF0ZVJlc3BvbnNpYmlsaXR5SWQocmVzcCk7XG4gICAgaWYgKCFjaGVja2VkUmVzcD8ubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjaGVja2VkUmVzcC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0c0luZGV4ID0gdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzLmZpbmRJbmRleChcbiAgICAgICAgKGVsZTogYW55KSA9PlxuICAgICAgICAgIGVsZS5yZXNwb25zaWJpbGl0eUlkID09PSBpdGVtLnJlc3BvbnNpYmlsaXR5SWQgJiZcbiAgICAgICAgICBlbGUuYXNzaWduZWVJZCA9PT0gaXRlbS5hc3NpZ25lZUlkICYmXG4gICAgICAgICAgZWxlLnJlc3BvbnNpYmlsaXR5Q2VudGVyID09PSBpdGVtLnJlc3BvbnNpYmlsaXR5Q2VudGVyXG4gICAgICApO1xuICAgICAgaWYgKG1vZGUgJiYgZXhpc3RzSW5kZXggPT09IC0xKSB7XG4gICAgICAgIC8vIEFkZCBpZiBub3QgcHJlc2VudFxuICAgICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMucHVzaChpdGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlbW92ZSBpZiBwcmVzZW50XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcy5zcGxpY2UoZXhpc3RzSW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5SWQgPSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMubWFwKFxuICAgICAgKGVsZTogYW55KSA9PiBlbGUucmVzcG9uc2liaWxpdHlJZFxuICAgICk7XG4gICAgdGhpcy5pc1Jlc3BvbnNpYmlsaXR5U2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMuc29tZShcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5yZXNwb25zaWJpbGl0eUlkID09PSByZXNwPy5pZFxuICAgICk7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZsb2F0ZXJCYXJEYXRhID0gW1xuICAgICAgLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlJZCksXG4gICAgXTtcbiAgfVxuXG4gIGdlbmVyYXRlUmVzcG9uc2liaWxpdHlJZChyZXNwOiBhbnkpIHtcbiAgICBjb25zdCBhc3NpZ25lZUlkcyA9IHJlc3A/LmFzc2lnbmVlcz8udXNlcklkIHx8IFtdO1xuICAgIGNvbnN0IHJlc3BvbnNpYmlsaXR5Q2VudGVycyA9IHJlc3A/LnJlc3BvbnNpYmlsaXR5Q2VudGVycyB8fCBbbnVsbF07XG5cbiAgICBjb25zdCByZXNwT2JqOiBhbnlbXSA9IFtdO1xuXG4gICAgYXNzaWduZWVJZHMuZm9yRWFjaCgoYXNzaWduZWVJZDogYW55KSA9PiB7XG4gICAgICBpZiAoIXJlc3BvbnNpYmlsaXR5Q2VudGVycz8ubGVuZ3RoKSB7XG4gICAgICAgIHJlc3BPYmoucHVzaCh0aGlzLmdlbmVyYXRlUmVzcE9iaihyZXNwLCBhc3NpZ25lZUlkLCBudWxsKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVycy5mb3JFYWNoKChyYzogYW55KSA9PiB7XG4gICAgICAgIHJlc3BPYmoucHVzaCh0aGlzLmdlbmVyYXRlUmVzcE9iaihyZXNwLCBhc3NpZ25lZUlkLCByYykpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzcE9iajtcbiAgfVxuXG4gIGdlbmVyYXRlUmVzcE9iaihyZXNwOiBhbnksIGFzc2lnbmVlSWQ6IGFueSwgcmVzcG9uc2liaWxpdHlDZW50ZXI6IGFueSkge1xuICAgIHJldHVybiB7XG4gICAgICByZXNwb25zaWJpbGl0eUlkOiByZXNwPy5yaWQsXG4gICAgICBhc3NpZ25lZUlkOiBhc3NpZ25lZUlkLFxuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHJlc3BvbnNpYmlsaXR5Q2VudGVyLFxuICAgICAgcmVwb3J0TmFtZTogcmVzcD8udGl0bGUsXG4gICAgICBhc3NpZ25lZUJyaWRnZUlkOiBbXSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyQnJpZGdlSWQ6IFtdLFxuICAgIH07XG4gIH1cblxuICB2aWV3UmVzcG9uc2liaWxpdHkoaWQ6IGFueSkge1xuICAgIGlmICh0aGlzLnZpZXdSZXNwb25zaWJpbGl0eUlkID09PSBpZCkge1xuICAgICAgdGhpcy52aWV3UmVzcG9uc2liaWxpdHlJZCA9IG51bGw7XG4gICAgICB0aGlzLnZpZXdSZXNwb25zaWJpbGl0eURhdGEgPSB7fTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy52aWV3UmVzcG9uc2liaWxpdHlJZCA9IGlkO1xuICAgIGNvbnN0IHJlc3BvbnNpYmlsaXR5ID0gdGhpcy5yZXNwb25zaWJpbGl0aWVzRGF0YT8uZGF0YT8uZmluZChcbiAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LmlkID09PSBpZFxuICAgICk7XG4gICAgdGhpcy52aWV3UmVzcG9uc2liaWxpdHlEYXRhW2lkXSA9XG4gICAgICB0aGlzLmNyZWF0ZVNlcGFyYXRlUmVzcG9uc2liaWxpdGllcyhyZXNwb25zaWJpbGl0eSk7XG4gIH1cblxuICBjcmVhdGVTZXBhcmF0ZVJlc3BvbnNpYmlsaXRpZXMocmVzcG9uc2liaWxpdHk6IGFueSk6IGFueVtdIHtcbiAgICBpZiAoIXJlc3BvbnNpYmlsaXR5KSByZXR1cm4gW107XG5cbiAgICBjb25zdCBhc3NpZ25lZXMgPSByZXNwb25zaWJpbGl0eS5hc3NpZ25lZXM/LnVzZXJJZCB8fCBbXTtcbiAgICBjb25zdCByZXNwb25zaWJpbGl0eUNlbnRlcnMgPSByZXNwb25zaWJpbGl0eS5yZXNwb25zaWJpbGl0eUNlbnRlcnMgfHwgW1xuICAgICAgbnVsbCxcbiAgICBdO1xuICAgIC8vIElmIG5vIGFzc2lnbmVlcyBvciBSQ3MsIHJldHVybiBvcmlnaW5hbCByZXNwb25zaWJpbGl0eVxuICAgIGlmIChhc3NpZ25lZXMubGVuZ3RoID09PSAwICYmIHJlc3BvbnNpYmlsaXR5Q2VudGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBbcmVzcG9uc2liaWxpdHldO1xuICAgIH1cbiAgICBjb25zdCBuZXdSZXNwb25zaWJpbGl0aWVzOiBhbnlbXSA9IFtdO1xuXG4gICAgLy8gQ3JlYXRlIGEgbmV3IHJlc3BvbnNpYmlsaXR5IGZvciBlYWNoIGFzc2lnbmVlLVJDIGNvbWJpbmF0aW9uXG4gICAgYXNzaWduZWVzLmZvckVhY2goKGFzc2lnbmVlSWQ6IG51bWJlcikgPT4ge1xuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXJzLmZvckVhY2goKHJjSWQ6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdSZXNwb25zaWJpbGl0eSA9IHtcbiAgICAgICAgICAuLi5jbG9uZURlZXAocmVzcG9uc2liaWxpdHkpLFxuICAgICAgICAgIGFzc2lnbmVlczoge1xuICAgICAgICAgICAgLi4ucmVzcG9uc2liaWxpdHkuYXNzaWduZWVzLFxuICAgICAgICAgICAgdXNlcklkOiBbYXNzaWduZWVJZF0sXG4gICAgICAgICAgICBhY3RpdmVVc2VySWQ6IFthc3NpZ25lZUlkXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyczogW3JjSWRdLFxuICAgICAgICAgIGFzc2lnbmVlRGV0YWlsczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhc3NpZ25lZTogYXNzaWduZWVJZCxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHJjSWQsXG4gICAgICAgICAgICAgIHBlcmZvcm1hbmNlOiBudWxsLFxuICAgICAgICAgICAgICBuZXh0RHVlRGF0ZTogbnVsbCxcbiAgICAgICAgICAgICAgcmV2aWV3ZXJQZXJmb3JtYW5jZTogbnVsbCxcbiAgICAgICAgICAgICAgcmV2aWV3ZXJOZXh0RHVlRGF0ZTogbnVsbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICAgICAgbmV3UmVzcG9uc2liaWxpdGllcy5wdXNoKG5ld1Jlc3BvbnNpYmlsaXR5KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ld1Jlc3BvbnNpYmlsaXRpZXM7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdFwiIFtjbGFzcy5hbmltYXRlXT1cImFuaW1hdGlvblwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJmcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdC1oZWFkIHZ4LXAtMyB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlblwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTE0IHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHRcIj5TZWxlY3QgYSBSZXNwb25zaWJpbGl0eTwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1yZXNwb25zaWJpbGl0eS1saXN0LWJvZHlcIj5cbiAgICA8ZGl2XG4gICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXRpZXNEYXRhPy5hbGxSZXNwb25zaWJpbGl0eUNvdW50ID4gMFwiXG4gICAgICBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LW1iLTJcIlxuICAgID5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHRhYiBvZiByZXNwb25zaWJpbGl0eVRhYnM7IGxldCBpID0gaW5kZXhcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwidngtdGFibGUtY2FyZCB2eC1iZy13aGl0ZSB2eC1kLWZsZXggdngtanVzdGlmeS1iZXR3ZWVuIHZ4LWFsaWduLWNlbnRlciB2eC1tci0xIHZ4LXB0LTIgdngtcGItMiB2eC1wbC0zIHZ4LXByLTMgdngtdy0xMDBcIlxuICAgICAgICAgIFtjbGFzcy5hY3RpdmVdPVwiY3VycmVudFRhYiA9PT0gaSArIDEgfHwgKGN1cnJlbnRUYWIgPT09IDAgJiYgaSA9PT0gMylcIlxuICAgICAgICAgIChjbGljayk9XCJvbkNsaWNrVGFiQ2hhbmdlKHRhYilcIlxuICAgICAgICAgIFtjbGFzcy5wb2ludGVyLW5vbmVdPVwicmVzcG9uc2liaWxpdHlMb2FkZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxlZnQgdngtZC1ibG9jayB2eC13LTEwMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2UgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1hbGlnbi1jZW50ZXJcIlxuICAgICAgICAgICAgICAgID57eyB0YWIubmFtZSB9fTwvbGFiZWxcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJpZ2h0IHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWVuZCB2eC13LTEwMFwiPlxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgY2xhc3M9XCJ2eC10eHQtd2hpdGUgdngtZnctNTAwIHZ4LWQtaW5saW5lLWJsb2NrIHZ4LXRleHQtY2VudGVyXCJcbiAgICAgICAgICAgICAgPnt7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlUYWJDb3VudFt0eXBlVG9Db3VudFByb3BlcnR5W3RhYi50eXBlXV0gfHwgMFxuICAgICAgICAgICAgICB9fTwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1yZXNwb25zaWJpbGl0eS1saXN0LXNlYXJjaCB2eC1tYi0yXCI+XG4gICAgICA8aSBjbGFzcz1cImljb25zIHZ4LWZzLTEyXCI+JiN4ZTkwYjs8L2k+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICBbKG5nTW9kZWwpXT1cInJlc3BvbnNpYmlsaXR5U2VhcmNoVGV4dFwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJzZWFyY2goKVwiXG4gICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIFJlc3BvbnNpYmlsaXRpZXNcIlxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgICA8YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJyZXNwb25zaWJpbGl0eUxvYWRlclwiPjwvYXBwLWxvYWRlci1pbmxpbmU+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJmcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdC1taWQgdngtbWItNFwiXG4gICAgICBbY2xhc3Mud2l0aC1wYWdpbmF0aW9uXT1cIlxuICAgICAgICAhcmVzcG9uc2liaWxpdHlMb2FkZXIgJiYgcmVzcG9uc2liaWxpdGllc0RhdGE/LnRvdGFsX3BhZ2VzID4gMVxuICAgICAgXCJcbiAgICA+XG4gICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICByZXNwb25zaWJpbGl0aWVzRGF0YT8uZGF0YT8ubGVuZ3RoID09PSAwICYmICFyZXNwb25zaWJpbGl0eUxvYWRlclxuICAgICAgICBcIlxuICAgICAgICBbbm9EYXRhSW1hZ2VdPVwibm9EYXRhSW1hZ2VQYXRoXCJcbiAgICAgICAgW25vRGF0YVRleHRdPVwibm9EYXRhTWVzc2FnZVwiXG4gICAgICA+PC9hcHAtbm8tZGF0YT5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJyZXNwb25zaWJpbGl0aWVzRGF0YT8uZGF0YT8ubGVuZ3RoID4gMCAmJiAhcmVzcG9uc2liaWxpdHlMb2FkZXJcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd1wiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc2VyaWFsXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgI1xuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciByZXNwb25zaWJpbGl0eVwiXG4gICAgICAgICAgICAgIFtjbGFzcy53aXRoLXJjXT1cImlzT25Db21wbGV0aW9uUmNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBSRVNQT05TSUJJTElUSUVTXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHJlc3BvbnNpYmlsaXR5LWNlbnRlclwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNPbkNvbXBsZXRpb25SY1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFJFU1BPTlNJQklMSVRZIENFTlRFUlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtYm9keVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2liaWxpdHkgb2YgcmVzcG9uc2liaWxpdGllc0RhdGE/LmRhdGE7XG4gICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLXJvdyBjbGlja2FibGVcIlxuICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlXT1cIlxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Py5yaWRcbiAgICAgICAgICAgICAgICAgIHwgaXNSZXNwU2VsZWN0ZWQgOiBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5vcGVuXT1cInRoaXMudmlld1Jlc3BvbnNpYmlsaXR5SWQgPT09IHJlc3BvbnNpYmlsaXR5Py5pZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eT8ucmlkXG4gICAgICAgICAgICAgICAgICB8IGlzUmVzcFNlbGVjdGVkIDogc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlc1xuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc2VyaWFsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic3Itbm9cIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiJzEnXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IHJlc3BvbnNpYmlsaXRpZXNEYXRhPy5yZXNwb25zaWJpbGl0aWVzX2Zyb20gKyBpIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGFwcC1jcy1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInJlc3BvbnNpYmlsaXR5Py5yaWRcIlxuICAgICAgICAgICAgICAgICAgW25nVmFsdWVdPVwiXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Py5yaWRcbiAgICAgICAgICAgICAgICAgICAgICB8IGlzUmVzcFNlbGVjdGVkIDogc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlc1xuICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgIChuZ1ZhbHVlQ2hhbmdlKT1cInNlbGVjdFJlc3AocmVzcG9uc2liaWxpdHksICRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L2FwcC1jcy1jaGVja2JveD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciByZXNwb25zaWJpbGl0eS1uYW1lXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXJGaWxlQXJlYSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8YXBwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJBVkFUQVJfQ09OU1RBTlRTLlRZUEUuQVNTSUdOT1JcIlxuICAgICAgICAgICAgICAgICAgICBbdXNlckRldGFpbHNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgW3Jlc3BvbnNpYmlsaXR5Py5hc3NpZ25vcl0gfCBnZXRVc2VyRGV0YWlscyA6IHVzZXJMaXN0XG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICA+PC9hcHAtYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Py5hc3NpZ25lZXM/LnVzZXJJZFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBnZXRVc2VyRGV0YWlscyA6IHVzZXJMaXN0IGFzIGFzc2lnbmVlRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8YXBwLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICAgIFthdmF0YXJDbGFzc109XCJBVkFUQVJfQ09OU1RBTlRTLkNPTE9SLkdSRUVOXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzc2lnbmVlRGV0YWlscz8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IEFWQVRBUl9DT05TVEFOVFMuQU5ZT05FXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogQVZBVEFSX0NPTlNUQU5UUy5BTExcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgIFt1c2VyRGV0YWlsc109XCJhc3NpZ25lZURldGFpbHNcIlxuICAgICAgICAgICAgICAgICAgICAgIGFwcFN0b3BQcm9wYWdhdGlvblxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWUtZGV0YWlsc1wiPlxuICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlIHZ4LWZzLTEzIHZ4LW5ldXRyYWwtMTAwIHZ4LWxoLTVcIlxuICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJyZXNwb25zaWJpbGl0eT8udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgcmVzcG9uc2liaWxpdHk/LnRpdGxlIH19XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1uZXV0cmFsLTEwMCB2eC1saC00IHZ4LXR0LXVwcGVyY2FzZSB2eC1tci0xXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIFJFU1BPTlNJQklMSVRZIENFTlRFUjpcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHk/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdldFJDTGlzdCA6IHJjTGlzdCA6IGFsbFJjTGlzdCBhcyByY0xpc3RcbiAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXNwLW5hbWUgdngtZnMtMTEgdngtZ3JheS02MCB2eC1saC00IHZ4LW1yLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmNMaXN0Py5sZW5ndGggPiAwID8gcmNMaXN0WzBdIDogJy0tJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyByY0xpc3Q/Lmxlbmd0aCA+IDAgPyByY0xpc3RbMF0gOiBcIi0tXCIgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJlc3BvbnNpYmlsaXR5Py5yZXNwb25zaWJpbGl0eUNlbnRlcnM/Lmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidngtYmFkZ2VOdW0geHMgbWluaW1hbFwiXG4gICAgICAgICAgICAgICAgICAgICAgYXBwUG9wb3ZlclxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXNwUG9wb3Zlci5wb3BvdmVyKClcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Py5yZXNwb25zaWJpbGl0eUNlbnRlcnM/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcmVzcFBvcG92ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHJjIG9mIHJjTGlzdCB8IHNsaWNlIDogMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cInJjXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyByYyB9fTwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIGFjdGlvblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eT8uYXNzaWduZWVUeXBlID09PSBBVkFUQVJfQ09OU1RBTlRTLkFMTC50b0xvd2VyQ2FzZSgpIHx8XG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Py5yY1R5cGUgPT09IEFWQVRBUl9DT05TVEFOVFMuQUxMLnRvTG93ZXJDYXNlKClcbiAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAoY2xpY2spPVwidmlld1Jlc3BvbnNpYmlsaXR5KHJlc3BvbnNpYmlsaXR5Py5pZClcIlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1pY29uLWJ1dHRvbiBtaW5pbWFsIHNtYWxsXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgICAgdmlld1Jlc3BvbnNpYmlsaXR5SWQgPT09IHJlc3BvbnNpYmlsaXR5Py5pZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBcIiYjeGU5ZTc7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogXCImI3hlOWU4O1wiXG4gICAgICAgICAgICAgICAgICAgIH19PC9pXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgdmlld1Jlc3BvbnNpYmlsaXR5SWQgPT09IHJlc3BvbnNpYmlsaXR5Py5pZCAmJlxuICAgICAgICAgICAgICAgIHZpZXdSZXNwb25zaWJpbGl0eURhdGFbdmlld1Jlc3BvbnNpYmlsaXR5SWRdPy5sZW5ndGhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJvcGVuLW1vcmVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1yb3dcIlxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgb2Ygdmlld1Jlc3BvbnNpYmlsaXR5RGF0YVt2aWV3UmVzcG9uc2liaWxpdHlJZF1cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc2VyaWFsXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhPy5yaWRcIlxuICAgICAgICAgICAgICAgICAgICBbbmdWYWx1ZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGlzUmVzcFNlbGVjdGVkIDogc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyA6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgKG5nVmFsdWVDaGFuZ2UpPVwic2VsZWN0UmVzcChkYXRhLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwvYXBwLWNzLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHJlc3BvbnNpYmlsaXR5LW5hbWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhPy5hc3NpZ25lZXM/LnVzZXJJZFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBnZXRVc2VyRGV0YWlscyA6IHVzZXJMaXN0IGFzIGFzc2lnbmVlRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLWFyZWFcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1hdmF0YXJcbiAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJBVkFUQVJfQ09OU1RBTlRTLlRZUEUuQVNTSUdOT1JcIlxuICAgICAgICAgICAgICAgICAgICAgIFt1c2VyRGV0YWlsc109XCJhc3NpZ25lZURldGFpbHNcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibmFtZS1kZXRhaWxzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlIHZ4LWZzLTExIHZ4LW5ldXRyYWwtMTAwIHZ4LWxoLTRcIlxuICAgICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImFzc2lnbmVlRGV0YWlsc1swXT8ubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJsYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7eyBhc3NpZ25lZURldGFpbHNbMF0/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ2eC1mcy0xMSB2eC1mdy01MDAgdngtbmV1dHJhbC0xMDAgdngtbGgtNCB2eC10dC11cHBlcmNhc2UgdngtbXItMVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgUkVTUE9OU0lCSUxJVFkgQ0VOVEVSOlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE/LnJlc3BvbnNpYmlsaXR5Q2VudGVyc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2V0UkNMaXN0IDogcmNMaXN0IDogYWxsUmNMaXN0IGFzIGNoaWxkUmNMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJyZXNwLW5hbWUgdngtZnMtMTEgdngtZ3JheS02MCB2eC1saC00IHZ4LW1yLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFJjTGlzdD8ubGVuZ3RoID4gMCA/IGNoaWxkUmNMaXN0WzBdIDogJy0tJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY2hpbGRSY0xpc3Q/Lmxlbmd0aCA+IDAgPyBjaGlsZFJjTGlzdFswXSA6IFwiLS1cIiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBhY3Rpb25cIlxuICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8YXBwLXBhZ2luYXRpb25cbiAgICAgICpuZ0lmPVwiIXJlc3BvbnNpYmlsaXR5TG9hZGVyICYmIHJlc3BvbnNpYmlsaXRpZXNEYXRhPy50b3RhbF9wYWdlcyA+IDFcIlxuICAgICAgW3N0YXJ0XT1cInJlc3BvbnNpYmlsaXRpZXNEYXRhPy5yZXNwb25zaWJpbGl0aWVzX2Zyb21cIlxuICAgICAgW2VuZF09XCJyZXNwb25zaWJpbGl0aWVzRGF0YT8ucmVzcG9uc2liaWxpdGllc190b1wiXG4gICAgICBbdG90YWxdPVwicmVzcG9uc2liaWxpdGllc0RhdGE/LnRvdGFsX3Jlc3BvbnNpYmlsaXRpZXNcIlxuICAgICAgW3BhZ2VDb3VudF09XCJyZXNwb25zaWJpbGl0aWVzRGF0YT8udG90YWxfcGFnZXNcIlxuICAgICAgW2N1cnJlbnRQYWdlXT1cInJlc3BvbnNpYmlsaXRpZXNEYXRhPy5yZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlXCJcbiAgICAgIChzZWxlY3RlZFBhZ2UpPVwicmVzcG9uc2liaWxpdHlQYWdlQ2hhbmdlKCRldmVudClcIlxuICAgID5cbiAgICA8L2FwcC1wYWdpbmF0aW9uPlxuICAgIDxhcHAtZmxvYXRpbmctYmFyXG4gICAgICAqbmdJZj1cIiFyZXNwb25zaWJpbGl0eUxvYWRlclwiXG4gICAgICBbc2VsZWN0ZWREYXRhXT1cInJlc3BvbnNpYmlsaXR5RmxvYXRlckJhckRhdGFcIlxuICAgICAgW2Rpc3BsYXlFbGVtZW50S2V5XT1cIidSZXBvcnROYW1lJ1wiXG4gICAgICAoY2xvc2VMaXN0KT1cImJhY2soKVwiXG4gICAgICAoY2xvc2VFdmVudCk9XCJzYXZlKCRldmVudClcIlxuICAgICAgKGRlbGV0ZUV2ZW50KT1cImRlbGV0ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICBbaXNEaXNhYmxlZF09XCIhcmVzcG9uc2liaWxpdHlGbG9hdGVyQmFyRGF0YT8ubGVuZ3RoXCJcbiAgICAgIFtpc1Jlc3BvbnNpYmlsaXR5XT1cInRydWVcIlxuICAgICAgW3Npbmd1bGFyVGV4dF09XCJmbG9hdGVyQmFyVGV4dC5TSU5HVUxBUl9URVhUXCJcbiAgICAgIFtwbHVyYWxUZXh0XT1cImZsb2F0ZXJCYXJUZXh0LlBMVVJBTF9URVhUXCJcbiAgICA+PC9hcHAtZmxvYXRpbmctYmFyPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
390
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2xpbmstcmVzcG9uc2liaWxpdHkvbGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy92eC13b3JrZmxvdy1lbmdpbmUvc3JjL2xpYi9zaGFyZWRDb21wb25lbnRzL2xpbmstcmVzcG9uc2liaWxpdHkvbGluay1yZXNwb25zaWJpbGl0eS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDbkMsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFHOUYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVF4RSxNQUFNLE9BQU8sK0JBQStCO0lBc0YxQyxZQUNVLGdCQUFrQyxFQUNsQyx1QkFBZ0Q7UUFEaEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBckZqRCxjQUFTLEdBQVcsRUFBRSxDQUFDO1FBQ3ZCLGlDQUE0QixHQUFRLEVBQUUsQ0FBQztRQUN2QyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQUcvQixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDakMsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUV0RCxxQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUVwQyxjQUFTLEdBQVks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QUMzQixNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUM7d0JBQ3BCLFlBQVksRUFBRSxDQUFDLFVBQVUsQ0FBQztxQkFDM0I7b0JBQ0QscUJBQXFCLEVBQUUsQ0FBQyxJQUFJLENBQUM7b0JBQzdCLGVBQWUsRUFBRTt3QkFDZjs0QkFDRSxRQUFRLEVBQUUsVUFBVTs0QkFDcEIsb0JBQW9CLEVBQUUsSUFBSTs0QkFDMUIsV0FBVyxFQUFFLElBQUk7NEJBQ2pCLFdBQVcsRUFBRSxJQUFJOzRCQUNqQixtQkFBbUIsRUFBRSxJQUFJOzRCQUN6QixtQkFBbUIsRUFBRSxJQUFJO3lCQUMxQjtxQkFDRjtpQkFDRixDQUFDO2dCQUNGLG1CQUFtQixDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzlDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLG1CQUFtQixDQUFDO0lBQzdCLENBQUM7K0dBdmJVLCtCQUErQjttR0FBL0IsK0JBQStCLG1hQ2I1QyxvZ1lBdU5NOzs0RkQxTU8sK0JBQStCO2tCQUwzQyxTQUFTOytCQUNFLDhCQUE4Qjs2SUFLL0IsNEJBQTRCO3NCQUFwQyxLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLDRCQUE0QjtzQkFBcEMsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLG9CQUFvQjtzQkFBNUIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLHNCQUFzQjtzQkFBL0IsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBMSU5LX1JFU1BPTlNJQklMSVRZX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy9saW5rLXJlc3BvbnNpYmlsaXR5LmNvbnN0YW50cyc7XG5pbXBvcnQgeyBGcmVxdWVuY3lTZXJ2aWNlIH0gZnJvbSAnLi4vZnJlcXVlbmN5L2ZyZXF1ZW5jeS5zZXJ2aWNlJztcbmltcG9ydCB7IENvbXBsaWFuY2VDb21tb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vd29ya2Zsb3ctc2VydmljZXMvY29tbW9uLXdvcmtmbG93LXNlcnZpY2VzL2NvbXBsaWFuY2UtY29tbW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgQVZBVEFSX0NPTlNUQU5UUyB9IGZyb20gJy4uLy4uL3VpLWtpdC9hdmF0YXIvYXZhdGFyLmNvbnN0YW50cyc7XG5pbXBvcnQgeyBSZXNwb25zaWJpbGl0eSB9IGZyb20gJy4vbGluay1yZXNwb25zaWJpbGl0eS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbGluay1yZXNwb25zaWJpbGl0eS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xpbmstcmVzcG9uc2liaWxpdHkuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9saW5rLXJlc3BvbnNpYmlsaXR5LmNvbXBvbmVudC5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIExpbmtSZXNwb25zaWJpbGl0eUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSBvbkNvbXBsZXRpb25PZlJlc3BvbnNpYmlsaXR5OiBhbnk7XG4gIEBJbnB1dCgpIGZlYXR1cmU6IGFueTtcbiAgQElucHV0KCkgcmVzcElkS2V5OiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlczogYW55ID0gW107XG4gIEBJbnB1dCgpIHJhZGlvU2VsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIHBhcmVudFJlc3BvbnNpYmlsaXR5OiBhbnk7XG5cbiAgQE91dHB1dCgpIGNsb3NlQnV0dG9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgc2VsZWN0ZWRSZXNwb25zaWJpbGl0eSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBBVkFUQVJfQ09OU1RBTlRTID0gQVZBVEFSX0NPTlNUQU5UUztcblxuICBhbmltYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcbiAgcmVzcG9uc2liaWxpdHlMb2FkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgaXNWYWxpZE9iajogYm9vbGVhbiA9IGZhbHNlO1xuICBpc09uQ29tcGxldGlvblJjOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcmVzcG9uc2liaWxpdGllc0RhdGE6IGFueSA9IHt9O1xuICByZXNwb25zaWJpbGl0eVRhYkNvdW50OiBhbnkgPSB7XG4gICAgcmVndWxhdGlvbkNvdW50OiAwLFxuICAgIHN0YW5kYXJkQ291bnQ6IDAsXG4gICAgaW50ZXJuYWxDb3VudDogMCxcbiAgICBvdGhlcnNDb3VudDogMCxcbiAgfTtcbiAgdHlwZVRvQ291bnRQcm9wZXJ0eTogYW55ID0ge1xuICAgIDA6ICdvdGhlcnNDb3VudCcsXG4gICAgMTogJ3JlZ3VsYXRpb25Db3VudCcsXG4gICAgMjogJ3N0YW5kYXJkQ291bnQnLFxuICAgIDM6ICdpbnRlcm5hbENvdW50JyxcbiAgfTtcbiAgcmVzcG9uc2liaWxpdHlQYXlsb2FkID0ge1xuICAgIHR5cGU6ICdhbGwnLFxuICAgIHBhZ2luYXRpb25UeXBlOiAnbGFyZ2UnLFxuICAgIGE6ICcnLFxuICAgIHNlYXJjaFRleHQ6ICcnLFxuICAgIGZpbHRlckRhdGE6IHtcbiAgICAgIGFwcExpc3Q6IFtdLFxuICAgICAgcmlza0lkczogW10sXG4gICAgICByZXZpZXdlcklkOiBbXSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyOiBbXSxcbiAgICAgIGVudHJ1c3RlZEJ5OiBbXSxcbiAgICAgIGVudHJ1c3RlZFRvOiBbXSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2F0ZWdvcnk6IFtdLFxuICAgICAgY29tcGxpYW5jZVR5cGU6IFsxXSxcbiAgICB9LFxuICAgIHBhZ2VObzogMSxcbiAgICBzb3J0T2JqOiB7XG4gICAgICBzb3J0Qnk6ICcnLFxuICAgICAgdHlwZTogJycsXG4gICAgfSxcbiAgICBwYWdlTmFtZTogJ292ZXJ2aWV3JyxcbiAgfTtcblxuICBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5SWQ6IGFueVtdID0gW107XG4gIHJlc3BvbnNpYmlsaXR5VGFiczogYW55W10gPSBbXG4gICAgeyBuYW1lOiAnUkVHVUxBVElPTlMnLCB0eXBlOiAxIH0sXG4gICAgeyBuYW1lOiAnU1RBTkRBUkRTJywgdHlwZTogMiB9LFxuICAgIHsgbmFtZTogJ0lOVEVSTkFMIENPTlRST0xTJywgdHlwZTogMyB9LFxuICAgIHsgbmFtZTogJ09USEVSUycsIHR5cGU6IDAgfSxcbiAgXTtcblxuICBjdXJyZW50VGFiOiBudW1iZXIgPSAxO1xuICByZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlOiBudW1iZXIgPSAxO1xuICByZWd1bGF0aW9uQ291bnQ6IG51bWJlciA9IDA7XG4gIHN0YW5kYXJkc0NvdW50OiBudW1iZXIgPSAwO1xuICBpbnRlcm5hbHNDb3VudDogbnVtYmVyID0gMDtcbiAgb3RoZXJzQ291bnQ6IG51bWJlciA9IDA7XG5cbiAgcmVzcG9uc2liaWxpdHlTZWFyY2hUZXh0OiBzdHJpbmcgPSAnJztcbiAgbm9EYXRhTWVzc2FnZTogc3RyaW5nID0gTElOS19SRVNQT05TSUJJTElUWV9DT05TVEFOVFMuTk9fREFUQV9NRVNTQUdFLk5PX0RBVEE7XG4gIG5vRGF0YUltYWdlUGF0aDogc3RyaW5nID0gTElOS19SRVNQT05TSUJJTElUWV9DT05TVEFOVFMuTk9fREFUQS5JTUFHRTtcbiAgZmxvYXRlckJhclRleHQ6IGFueSA9IExJTktfUkVTUE9OU0lCSUxJVFlfQ09OU1RBTlRTLkZMT0FUSU5HX0JBUjtcblxuICByZXNwb25zaWJpbGl0eUxpc3Q6IGFueTtcbiAgZmVhdHVyZUZsYWdfb25fY29tcGxldGlvbl9vZjogYW55O1xuICBjbG9zZTogYW55O1xuICB1c2VyTGlzdDogYW55W10gPSBbXTtcbiAgcmNMaXN0OiBhbnlbXSA9IFtdO1xuICBhbGxSY0xpc3Q6IGFueVtdID0gW107XG4gIHZpZXdSZXNwb25zaWJpbGl0eUlkOiBhbnk7XG4gIHZpZXdSZXNwb25zaWJpbGl0eURhdGE6IGFueSA9IHt9O1xuICByZXNwb25zaWJpbGl0eUZsb2F0ZXJCYXJEYXRhOiBhbnkgPSBbXTtcblxuICBpc1Jlc3BvbnNpYmlsaXR5U2VsZWN0ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb21wbGlhbmNlQ29tbW9uU2VydmljZTogQ29tcGxpYW5jZUNvbW1vblNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZ2V0UmVzcG9uc2liaWxpdHlWYWx1ZXMoKTtcbiAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXR5TGlzdCgpO1xuICAgIHRoaXMuZ2V0UmNMaXN0KCk7XG4gIH1cblxuICBiYWNrKCkge1xuICAgIHRoaXMuY2xvc2VCdXR0b24uZW1pdCgpO1xuICB9XG5cbiAgZ2V0UmVzcG9uc2liaWxpdHlWYWx1ZXMoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5RmxvYXRlckJhckRhdGEgPSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMubWFwKFxuICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtPy5yZXNwb25zaWJpbGl0eUlkXG4gICAgICApO1xuICAgICAgdGhpcy5wb3B1bGF0ZVJlc3BvbnNpYmlsaXR5VmFsdWVzKCk7XG4gICAgfVxuICAgIHRoaXMuYW5pbWF0aW9uID0gdHJ1ZTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYW5pbWF0aW9uID0gZmFsc2U7XG4gICAgfSwgMzAwKTtcbiAgfVxuXG4gIHBvcHVsYXRlUmVzcG9uc2liaWxpdHlWYWx1ZXMoKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcykpIHJldHVybjtcblxuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyA9XG4gICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMuZmxhdE1hcChcbiAgICAgICAgKHtcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUlkLFxuICAgICAgICAgIHJlcG9ydE5hbWUsXG4gICAgICAgICAgYXNzaWduZWVJZHMgPSBbXSxcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcnMgPSBbXSxcbiAgICAgICAgICBhc3NpZ25lZUJyaWRnZUlkID0gW10sXG4gICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXJCcmlkZ2VJZCA9IFtdLFxuICAgICAgICB9KSA9PiB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkoYXNzaWduZWVJZHMpIHx8XG4gICAgICAgICAgICAhQXJyYXkuaXNBcnJheShyZXNwb25zaWJpbGl0eUNlbnRlcnMpXG4gICAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuXG4gICAgICAgICAgcmV0dXJuIGFzc2lnbmVlSWRzLmZsYXRNYXAoKGFzc2lnbmVlSWQpID0+XG4gICAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlcnMubWFwKChyZXNwb25zaWJpbGl0eUNlbnRlcikgPT4gKHtcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlJZCxcbiAgICAgICAgICAgICAgYXNzaWduZWVJZCxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXIsXG4gICAgICAgICAgICAgIHJlcG9ydE5hbWUsXG4gICAgICAgICAgICAgIGFzc2lnbmVlQnJpZGdlSWQsXG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyQnJpZGdlSWQsXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICApO1xuICB9XG5cbiAgZ2V0UmNMaXN0KCkge1xuICAgIHRoaXMuY29tcGxpYW5jZUNvbW1vblNlcnZpY2UuZ2V0UmNMaXN0SW5mbygpLnN1YnNjcmliZSgocmVzOiBhbnkpID0+IHtcbiAgICAgIHRoaXMuYWxsUmNMaXN0ID0gcmVzO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UmVzcG9uc2liaWxpdHlMaXN0KHBhZ2VObzogbnVtYmVyID0gMSkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlMb2FkZXIgPSB0cnVlO1xuICAgIHRoaXMuZnJlcXVlbmN5U2VydmljZVxuICAgICAgPy5nZXRBbGxSZXNwb25zaWJpbGl0aWVzKHBhZ2VObywgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcz8uZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0aWVzRGF0YSA9IHRoaXMubWFwUmVzcG9uc2liaWxpdGllc0RhdGEocmVzPy5kYXRhKTtcbiAgICAgICAgICAgIHRoaXMudXNlckxpc3QgPSByZXM/LmRhdGE/LnVzZXJzO1xuICAgICAgICAgICAgdGhpcy5yY0xpc3QgPSByZXM/LmRhdGE/LnJlc3BvbnNpYmlsaXR5Q2VudGVycztcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eUxvYWRlciA9IGZhbHNlO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBSZXNwb25zaWJpbGl0aWVzRGF0YShyZXM6IGFueSkge1xuICAgIGNvbnN0IHBhZ2VTaXplID0gMTA7XG4gICAgY29uc3QgY3VycmVudFBhZ2UgPSByZXM/LnBhZ2UgfHwgMTtcbiAgICBjb25zdCB0b3RhbEl0ZW1zID0gcmVzPy50b3RhbCB8fCAwO1xuXG4gICAgY29uc3Qgc3RhcnRJbmRleCA9IChjdXJyZW50UGFnZSAtIDEpICogcGFnZVNpemUgKyAxO1xuICAgIGNvbnN0IGVuZEluZGV4ID0gTWF0aC5taW4oc3RhcnRJbmRleCArIHBhZ2VTaXplIC0gMSwgdG90YWxJdGVtcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YTogcmVzPy5yZXNwb25zaWJpbGl0aWVzLmZpbHRlcigoaXRlbTogYW55KSA9PiBpdGVtPy5yaWQgIT09IHRoaXMucGFyZW50UmVzcG9uc2liaWxpdHk/LnJpZCksXG4gICAgICB0b3RhbF9yZXNwb25zaWJpbGl0aWVzOiB0b3RhbEl0ZW1zLFxuICAgICAgdG90YWxfcGFnZXM6IE1hdGguY2VpbCh0b3RhbEl0ZW1zIC8gcGFnZVNpemUpLFxuICAgICAgcmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZTogY3VycmVudFBhZ2UsXG4gICAgICByZXNwb25zaWJpbGl0aWVzX2Zyb206IHN0YXJ0SW5kZXgsXG4gICAgICByZXNwb25zaWJpbGl0aWVzX3RvOiBlbmRJbmRleCxcbiAgICB9O1xuICB9XG5cbiAgcmVzcG9uc2liaWxpdHlQYWdlQ2hhbmdlKHBhZ2VOdW1iZXI6IG51bWJlcikge1xuICAgIGlmIChwYWdlTnVtYmVyICE9PSB0aGlzLnJlc3BvbnNpYmlsaXRpZXNEYXRhLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2UpIHtcbiAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZSA9IHBhZ2VOdW1iZXI7XG4gICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5UGF5bG9hZC5wYWdlTm8gPSBwYWdlTnVtYmVyO1xuICAgICAgdGhpcy5nZXRSZXNwb25zaWJpbGl0eUxpc3QocGFnZU51bWJlcik7XG4gICAgfVxuICB9XG5cbiAgZGVsZXRlSXRlbShpdGVtOiBhbnkpIHtcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUlkLmZpbmRJbmRleChcbiAgICAgIChlbGVtZW50OiBhbnkpID0+IGVsZW1lbnQgPT0gaXRlbVt0aGlzLnJlc3BJZEtleV1cbiAgICApO1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eUlkLnNwbGljZShpbmRleCwgMSk7XG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzID1cbiAgICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcy5maWx0ZXIoXG4gICAgICAgIChlbGU6IGFueSkgPT4gZWxlW3RoaXMucmVzcElkS2V5XSAhPT0gaXRlbVt0aGlzLnJlc3BJZEtleV1cbiAgICAgICk7XG4gICAgdGhpcy5pc1ZhbGlkT2JqID0gZmFsc2U7XG4gIH1cblxuICBzYXZlKGV2ZW50OiBhbnkpIHtcbiAgICB0aGlzLmNsb3NlQnV0dG9uLmVtaXQoKTtcbiAgICB0aGlzLmZpbHRlclVuaXF1ZVJlc3BvbnNpYmlsaXR5VmFsdWVzKCk7XG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5LmVtaXQodGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzKTtcbiAgfVxuXG4gIGZpbHRlclVuaXF1ZVJlc3BvbnNpYmlsaXR5VmFsdWVzKCkge1xuICAgIGlmICghdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzPy5sZW5ndGgpIHJldHVybjtcbiAgICBcbiAgICBjb25zdCByZXN1bHQ6IFJlc3BvbnNpYmlsaXR5ID0ge307XG5cbiAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG5cbiAgICAgIHRoaXMuaW5zZXJ0VW5pcXVlUmVzcG9uc2liaWxpdHkocmVzdWx0LCBpdGVtKTtcbiAgICB9KTtcbiAgICAvLyBDb252ZXJ0IHRoZSByZXN1bHQgb2JqZWN0IGludG8gYW4gYXJyYXlcbiAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMgPSBPYmplY3QudmFsdWVzKHJlc3VsdCk7XG4gIH1cblxuICBpbnNlcnRVbmlxdWVSZXNwb25zaWJpbGl0eShyZXN1bHQ6IFJlc3BvbnNpYmlsaXR5LCBpdGVtOiBhbnkpIHtcbiAgICBjb25zdCB7IHJlc3BvbnNpYmlsaXR5SWQsIGFzc2lnbmVlSWQsIHJlc3BvbnNpYmlsaXR5Q2VudGVyIH0gPSBpdGVtO1xuICAgIGlmICghcmVzdWx0W3Jlc3BvbnNpYmlsaXR5SWRdKSB7XG4gICAgICByZXN1bHRbcmVzcG9uc2liaWxpdHlJZF0gPSB7XG4gICAgICAgIHJlc3BvbnNpYmlsaXR5SWQsXG4gICAgICAgIGFzc2lnbmVlSWRzOiBbXSxcbiAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXJzOiBbXSxcbiAgICAgICAgYXNzaWduZWVCcmlkZ2VJZDogW10sXG4gICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyQnJpZGdlSWQ6IFtdLFxuICAgICAgICByZXBvcnROYW1lOiBpdGVtPy5yZXBvcnROYW1lLFxuICAgICAgfTtcbiAgICB9IFxuICAgICAgLy8gQWRkIGFzc2lnbmVlSWQgaWYgbm90IGFscmVhZHkgcHJlc2VudFxuICAgICAgaWYgKCFyZXN1bHRbcmVzcG9uc2liaWxpdHlJZF0/LmFzc2lnbmVlSWRzPy5pbmNsdWRlcyhhc3NpZ25lZUlkKSkge1xuICAgICAgICByZXN1bHRbcmVzcG9uc2liaWxpdHlJZF0/LmFzc2lnbmVlSWRzPy5wdXNoKGFzc2lnbmVlSWQpO1xuICAgICAgfVxuXG4gICAgICAvLyBBZGQgcmVzcG9uc2liaWxpdHlDZW50ZXIgaWYgbm90IGFscmVhZHkgcHJlc2VudFxuICAgICAgaWYgKFxuICAgICAgICAhcmVzdWx0W3Jlc3BvbnNpYmlsaXR5SWRdPy5yZXNwb25zaWJpbGl0eUNlbnRlcnM/LmluY2x1ZGVzKFxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyXG4gICAgICAgIClcbiAgICAgICkge1xuICAgICAgICByZXN1bHRbcmVzcG9uc2liaWxpdHlJZF0/LnJlc3BvbnNpYmlsaXR5Q2VudGVycz8ucHVzaChcbiAgICAgICAgICByZXNwb25zaWJpbGl0eUNlbnRlclxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdGhpcy5nZXRCcmlkZ2VJZHMocmVzdWx0KTtcbiAgICBcbiAgfVxuXG4gIGdldEJyaWRnZUlkcyhyZXN1bHQ6IGFueSkge1xuICAgIGZvciAoY29uc3Qga2V5IGluIHJlc3VsdCkge1xuICAgICAgY29uc3QgaXRlbSA9IHJlc3VsdFtrZXldO1xuICAgICAgaXRlbS5hc3NpZ25lZUlkcy5mb3JFYWNoKChhc3NpZ25lZUlkOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgYXNzaWduZWUgPSB0aGlzLnVzZXJMaXN0LmZpbmQoXG4gICAgICAgICAgKHVzZXI6IGFueSkgPT4gdXNlcj8uaWQgPT09IGFzc2lnbmVlSWRcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFpdGVtLmFzc2lnbmVlQnJpZGdlSWQuZmluZCgoaWQ6IGFueSkgPT4gaWQgPT09IGFzc2lnbmVlPy51aWQpKSB7XG4gICAgICAgICAgaXRlbS5hc3NpZ25lZUJyaWRnZUlkPy5wdXNoKGFzc2lnbmVlPy51aWQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGl0ZW0ucmVzcG9uc2liaWxpdHlDZW50ZXJzLmZvckVhY2goKHJlc3BvbnNpYmlsaXR5Q2VudGVyOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgcmMgPSB0aGlzLnJjTGlzdC5maW5kKFxuICAgICAgICAgIChyYzogYW55KSA9PiByYz8uaWQgPT09IHJlc3BvbnNpYmlsaXR5Q2VudGVyXG4gICAgICAgICk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhaXRlbS5yZXNwb25zaWJpbGl0eUNlbnRlckJyaWRnZUlkLmZpbmQoKGlkOiBhbnkpID0+IGlkID09PSByYz8ucmNpZClcbiAgICAgICAgKSB7XG4gICAgICAgICAgaXRlbS5yZXNwb25zaWJpbGl0eUNlbnRlckJyaWRnZUlkPy5wdXNoKHJjPy5yY2lkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgb25DbGlja1RhYkNoYW5nZSh0YWI6IGFueSkge1xuICAgIHRoaXMuY3VycmVudFRhYiA9IHRhYj8udHlwZTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5UGF5bG9hZC5maWx0ZXJEYXRhLmNvbXBsaWFuY2VUeXBlID0gW3RoaXMuY3VycmVudFRhYl07XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5UGF5bG9hZC5wYWdlTm8gPSB0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2U7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eVBheWxvYWQuc2VhcmNoVGV4dCA9IHRoaXMucmVzcG9uc2liaWxpdHlTZWFyY2hUZXh0O1xuICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcyA9IHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcztcbiAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXR5TGlzdCgpO1xuICB9XG5cbiAgc2VhcmNoKCkge1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkLnNlYXJjaFRleHQgPSB0aGlzLnJlc3BvbnNpYmlsaXR5U2VhcmNoVGV4dDtcbiAgICB0aGlzLnJlc3BvbnNpYmlsaXR5Q3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkLnBhZ2VObyA9IHRoaXMucmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZTtcbiAgICB0aGlzLmdldFJlc3BvbnNpYmlsaXR5TGlzdCgpO1xuICB9XG5cbiAgc2V0UmVzcG9uc2liaWxpdGllc0NvdW50KCkge1xuICAgIGNvbnN0IHBheWxvYWQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMucmVzcG9uc2liaWxpdHlQYXlsb2FkKSk7XG4gICAgcGF5bG9hZC5maWx0ZXJEYXRhLmNvbXBsaWFuY2VUeXBlID0gWzAsIDEsIDIsIDNdO1xuICAgIHRoaXMuZnJlcXVlbmN5U2VydmljZVxuICAgICAgPy5nZXRSZXNwb25zaWJpbGl0aWVzQ291bnQocGF5bG9hZClcbiAgICAgIC5zdWJzY3JpYmUoKHJlczogYW55KSA9PiB7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlUYWJDb3VudC5yZWd1bGF0aW9uQ291bnQgPSByZXM/LnJlZ3VsYXRpb25fY291bnQ7XG4gICAgICAgIHRoaXMucmVzcG9uc2liaWxpdHlUYWJDb3VudC5zdGFuZGFyZENvdW50ID0gcmVzPy5zdGFuZGFyZF9jb3VudDtcbiAgICAgICAgdGhpcy5yZXNwb25zaWJpbGl0eVRhYkNvdW50LmludGVybmFsQ291bnQgPSByZXM/LmludGVybmFsX2NvdW50O1xuICAgICAgICB0aGlzLnJlc3BvbnNpYmlsaXR5VGFiQ291bnQub3RoZXJzQ291bnQgPSByZXM/Lm90aGVyc19jb3VudDtcbiAgICAgIH0pO1xuICB9XG5cbiAgLy8gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGluaXRpYWxpemUgYWxsIHRoZSBGZWF0dXJlIGZsYWcgYmFzZWQgdmFyaWFibGVzXG4gIGZlYXR1cmVGbGFnSW5pdGlhbGl6YXRpb24oKSB7XG4gICAgdGhpcy5mZWF0dXJlRmxhZ19vbl9jb21wbGV0aW9uX29mID0gdGhpcy5mZWF0dXJlLmlzRmVhdHVyZUVuYWJsZWQoXG4gICAgICAnZmZfZnJlcXVlbmN5X29uX2NvbXBsZXRpb25fb2YnXG4gICAgKTtcbiAgICB0aGlzLmlzT25Db21wbGV0aW9uUmMgPSB0aGlzLmZlYXR1cmUuaXNGZWF0dXJlRW5hYmxlZChcbiAgICAgICdmZl9vbl9jb21wbGV0aW9uX3JjJ1xuICAgICk7XG4gIH1cblxuICBzZWxlY3RSZXNwKHJlc3A6IGFueSwgbW9kZTogYm9vbGVhbikge1xuICAgIGNvbnN0IGNoZWNrZWRSZXNwID0gdGhpcy5nZW5lcmF0ZVJlc3BvbnNpYmlsaXR5SWQocmVzcCk7XG4gICAgaWYgKCFjaGVja2VkUmVzcD8ubGVuZ3RoKSByZXR1cm47XG5cbiAgICBjaGVja2VkUmVzcC5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0c0luZGV4ID0gdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzLmZpbmRJbmRleChcbiAgICAgICAgKGVsZTogYW55KSA9PlxuICAgICAgICAgIGVsZS5yZXNwb25zaWJpbGl0eUlkID09PSBpdGVtLnJlc3BvbnNpYmlsaXR5SWQgJiZcbiAgICAgICAgICBlbGUuYXNzaWduZWVJZCA9PT0gaXRlbS5hc3NpZ25lZUlkICYmXG4gICAgICAgICAgZWxlLnJlc3BvbnNpYmlsaXR5Q2VudGVyID09PSBpdGVtLnJlc3BvbnNpYmlsaXR5Q2VudGVyXG4gICAgICApO1xuICAgICAgaWYgKG1vZGUgJiYgZXhpc3RzSW5kZXggPT09IC0xKSB7XG4gICAgICAgIC8vIEFkZCBpZiBub3QgcHJlc2VudFxuICAgICAgICB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMucHVzaChpdGVtKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlbW92ZSBpZiBwcmVzZW50XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlcy5zcGxpY2UoZXhpc3RzSW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3RlZFJlc3BvbnNpYmlsaXR5SWQgPSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMubWFwKFxuICAgICAgKGVsZTogYW55KSA9PiBlbGUucmVzcG9uc2liaWxpdHlJZFxuICAgICk7XG4gICAgdGhpcy5pc1Jlc3BvbnNpYmlsaXR5U2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMuc29tZShcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlPy5yZXNwb25zaWJpbGl0eUlkID09PSByZXNwPy5pZFxuICAgICk7XG4gICAgdGhpcy5yZXNwb25zaWJpbGl0eUZsb2F0ZXJCYXJEYXRhID0gW1xuICAgICAgLi4ubmV3IFNldCh0aGlzLnNlbGVjdGVkUmVzcG9uc2liaWxpdHlJZCksXG4gICAgXTtcbiAgfVxuXG4gIGdlbmVyYXRlUmVzcG9uc2liaWxpdHlJZChyZXNwOiBhbnkpIHtcbiAgICBjb25zdCBhc3NpZ25lZUlkcyA9IHJlc3A/LmFzc2lnbmVlcz8udXNlcklkIHx8IFtdO1xuICAgIGNvbnN0IHJlc3BvbnNpYmlsaXR5Q2VudGVycyA9IHJlc3A/LnJlc3BvbnNpYmlsaXR5Q2VudGVycyB8fCBbbnVsbF07XG5cbiAgICBjb25zdCByZXNwT2JqOiBhbnlbXSA9IFtdO1xuXG4gICAgYXNzaWduZWVJZHMuZm9yRWFjaCgoYXNzaWduZWVJZDogYW55KSA9PiB7XG4gICAgICBpZiAoIXJlc3BvbnNpYmlsaXR5Q2VudGVycz8ubGVuZ3RoKSB7XG4gICAgICAgIHJlc3BPYmoucHVzaCh0aGlzLmdlbmVyYXRlUmVzcE9iaihyZXNwLCBhc3NpZ25lZUlkLCBudWxsKSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVycy5mb3JFYWNoKChyYzogYW55KSA9PiB7XG4gICAgICAgIHJlc3BPYmoucHVzaCh0aGlzLmdlbmVyYXRlUmVzcE9iaihyZXNwLCBhc3NpZ25lZUlkLCByYykpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcmVzcE9iajtcbiAgfVxuXG4gIGdlbmVyYXRlUmVzcE9iaihyZXNwOiBhbnksIGFzc2lnbmVlSWQ6IGFueSwgcmVzcG9uc2liaWxpdHlDZW50ZXI6IGFueSkge1xuICAgIHJldHVybiB7XG4gICAgICByZXNwb25zaWJpbGl0eUlkOiByZXNwPy5yaWQsXG4gICAgICBhc3NpZ25lZUlkOiBhc3NpZ25lZUlkLFxuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHJlc3BvbnNpYmlsaXR5Q2VudGVyLFxuICAgICAgcmVwb3J0TmFtZTogcmVzcD8udGl0bGUsXG4gICAgICBhc3NpZ25lZUJyaWRnZUlkOiBbXSxcbiAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyQnJpZGdlSWQ6IFtdLFxuICAgIH07XG4gIH1cblxuICB2aWV3UmVzcG9uc2liaWxpdHkoaWQ6IGFueSkge1xuICAgIGlmICh0aGlzLnZpZXdSZXNwb25zaWJpbGl0eUlkID09PSBpZCkge1xuICAgICAgdGhpcy52aWV3UmVzcG9uc2liaWxpdHlJZCA9IG51bGw7XG4gICAgICB0aGlzLnZpZXdSZXNwb25zaWJpbGl0eURhdGEgPSB7fTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy52aWV3UmVzcG9uc2liaWxpdHlJZCA9IGlkO1xuICAgIGNvbnN0IHJlc3BvbnNpYmlsaXR5ID0gdGhpcy5yZXNwb25zaWJpbGl0aWVzRGF0YT8uZGF0YT8uZmluZChcbiAgICAgIChpdGVtOiBhbnkpID0+IGl0ZW0/LmlkID09PSBpZFxuICAgICk7XG4gICAgdGhpcy52aWV3UmVzcG9uc2liaWxpdHlEYXRhW2lkXSA9XG4gICAgICB0aGlzLmNyZWF0ZVNlcGFyYXRlUmVzcG9uc2liaWxpdGllcyhyZXNwb25zaWJpbGl0eSk7XG4gIH1cblxuICBjcmVhdGVTZXBhcmF0ZVJlc3BvbnNpYmlsaXRpZXMocmVzcG9uc2liaWxpdHk6IGFueSk6IGFueVtdIHtcbiAgICBpZiAoIXJlc3BvbnNpYmlsaXR5KSByZXR1cm4gW107XG5cbiAgICBjb25zdCBhc3NpZ25lZXMgPSByZXNwb25zaWJpbGl0eS5hc3NpZ25lZXM/LnVzZXJJZCB8fCBbXTtcbiAgICBjb25zdCByZXNwb25zaWJpbGl0eUNlbnRlcnMgPSByZXNwb25zaWJpbGl0eS5yZXNwb25zaWJpbGl0eUNlbnRlcnMgfHwgW1xuICAgICAgbnVsbCxcbiAgICBdO1xuICAgIC8vIElmIG5vIGFzc2lnbmVlcyBvciBSQ3MsIHJldHVybiBvcmlnaW5hbCByZXNwb25zaWJpbGl0eVxuICAgIGlmIChhc3NpZ25lZXMubGVuZ3RoID09PSAwICYmIHJlc3BvbnNpYmlsaXR5Q2VudGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBbcmVzcG9uc2liaWxpdHldO1xuICAgIH1cbiAgICBjb25zdCBuZXdSZXNwb25zaWJpbGl0aWVzOiBhbnlbXSA9IFtdO1xuXG4gICAgLy8gQ3JlYXRlIGEgbmV3IHJlc3BvbnNpYmlsaXR5IGZvciBlYWNoIGFzc2lnbmVlLVJDIGNvbWJpbmF0aW9uXG4gICAgYXNzaWduZWVzLmZvckVhY2goKGFzc2lnbmVlSWQ6IG51bWJlcikgPT4ge1xuICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXJzLmZvckVhY2goKHJjSWQ6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdSZXNwb25zaWJpbGl0eSA9IHtcbiAgICAgICAgICAuLi5jbG9uZURlZXAocmVzcG9uc2liaWxpdHkpLFxuICAgICAgICAgIGFzc2lnbmVlczoge1xuICAgICAgICAgICAgLi4ucmVzcG9uc2liaWxpdHkuYXNzaWduZWVzLFxuICAgICAgICAgICAgdXNlcklkOiBbYXNzaWduZWVJZF0sXG4gICAgICAgICAgICBhY3RpdmVVc2VySWQ6IFthc3NpZ25lZUlkXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Q2VudGVyczogW3JjSWRdLFxuICAgICAgICAgIGFzc2lnbmVlRGV0YWlsczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhc3NpZ25lZTogYXNzaWduZWVJZCxcbiAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHlDZW50ZXI6IHJjSWQsXG4gICAgICAgICAgICAgIHBlcmZvcm1hbmNlOiBudWxsLFxuICAgICAgICAgICAgICBuZXh0RHVlRGF0ZTogbnVsbCxcbiAgICAgICAgICAgICAgcmV2aWV3ZXJQZXJmb3JtYW5jZTogbnVsbCxcbiAgICAgICAgICAgICAgcmV2aWV3ZXJOZXh0RHVlRGF0ZTogbnVsbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfTtcbiAgICAgICAgbmV3UmVzcG9uc2liaWxpdGllcy5wdXNoKG5ld1Jlc3BvbnNpYmlsaXR5KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5ld1Jlc3BvbnNpYmlsaXRpZXM7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdFwiIFtjbGFzcy5hbmltYXRlXT1cImFuaW1hdGlvblwiPlxuICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3QtaGVhZCB2eC1wLTMgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTE0IHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHRcIj5TZWxlY3QgYSBSZXNwb25zaWJpbGl0eTwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImZyZXF1ZW5jeS1yZXNwb25zaWJpbGl0eS1saXN0LWJvZHlcIj5cbiAgICA8ZGl2ICpuZ0lmPVwicmVzcG9uc2liaWxpdGllc0RhdGE/LmFsbFJlc3BvbnNpYmlsaXR5Q291bnQgPiAwXCJcbiAgICAgIGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtbWItMlwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGFiIG9mIHJlc3BvbnNpYmlsaXR5VGFiczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJ2eC10YWJsZS1jYXJkIHZ4LWJnLXdoaXRlIHZ4LWQtZmxleCB2eC1qdXN0aWZ5LWJldHdlZW4gdngtYWxpZ24tY2VudGVyIHZ4LW1yLTEgdngtcHQtMiB2eC1wYi0yIHZ4LXBsLTMgdngtcHItMyB2eC13LTEwMFwiXG4gICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50VGFiID09PSBpICsgMSB8fCAoY3VycmVudFRhYiA9PT0gMCAmJiBpID09PSAzKVwiIChjbGljayk9XCJvbkNsaWNrVGFiQ2hhbmdlKHRhYilcIlxuICAgICAgICAgIFtjbGFzcy5wb2ludGVyLW5vbmVdPVwicmVzcG9uc2liaWxpdHlMb2FkZXJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGVmdCB2eC1kLWJsb2NrIHZ4LXctMTAwXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWwgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ2eC1wYXJhZ3JhcGgtdHh0IHZ4LWZ3LTUwMCB2eC10dC11cHBlcmNhc2UgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1hbGlnbi1jZW50ZXJcIj57e1xuICAgICAgICAgICAgICAgIHRhYi5uYW1lIH19PC9sYWJlbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyaWdodCB2eC1kLWZsZXggdngtanVzdGlmeS1lbmQgdngtdy0xMDBcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidngtdHh0LXdoaXRlIHZ4LWZ3LTUwMCB2eC1kLWlubGluZS1ibG9jayB2eC10ZXh0LWNlbnRlclwiPnt7XG4gICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5VGFiQ291bnRbdHlwZVRvQ291bnRQcm9wZXJ0eVt0YWIudHlwZV1dIHx8IDBcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwiZnJlcXVlbmN5LXJlc3BvbnNpYmlsaXR5LWxpc3Qtc2VhcmNoIHZ4LW1iLTJcIj5cbiAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTJcIj4mI3hlOTBiOzwvaT5cbiAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIFsobmdNb2RlbCldPVwicmVzcG9uc2liaWxpdHlTZWFyY2hUZXh0XCIgKGtleXVwLmVudGVyKT1cInNlYXJjaCgpXCJcbiAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggUmVzcG9uc2liaWxpdGllc1wiIC8+XG4gICAgPC9kaXY+XG4gICAgPGFwcC1sb2FkZXItaW5saW5lICpuZ0lmPVwicmVzcG9uc2liaWxpdHlMb2FkZXJcIj48L2FwcC1sb2FkZXItaW5saW5lPlxuICAgIDxkaXYgY2xhc3M9XCJmcmVxdWVuY3ktcmVzcG9uc2liaWxpdHktbGlzdC1taWQgdngtbWItNFwiIFtjbGFzcy53aXRoLXBhZ2luYXRpb25dPVwiXG4gICAgICAgICFyZXNwb25zaWJpbGl0eUxvYWRlciAmJiByZXNwb25zaWJpbGl0aWVzRGF0YT8udG90YWxfcGFnZXMgPiAxXG4gICAgICBcIj5cbiAgICAgIDxhcHAtbm8tZGF0YSAqbmdJZj1cIlxuICAgICAgICAgIHJlc3BvbnNpYmlsaXRpZXNEYXRhPy5kYXRhPy5sZW5ndGggPT09IDAgJiYgIXJlc3BvbnNpYmlsaXR5TG9hZGVyXG4gICAgICAgIFwiIFtub0RhdGFJbWFnZV09XCJub0RhdGFJbWFnZVBhdGhcIiBbbm9EYXRhVGV4dF09XCJub0RhdGFNZXNzYWdlXCI+PC9hcHAtbm8tZGF0YT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXNwb25zaWJpbGl0aWVzRGF0YT8uZGF0YT8ubGVuZ3RoID4gMCAmJiAhcmVzcG9uc2liaWxpdHlMb2FkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWhlYWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yb3dcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHNlcmlhbFwiPlxuICAgICAgICAgICAgICAjXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHJlc3BvbnNpYmlsaXR5XCJcbiAgICAgICAgICAgICAgW2NsYXNzLndpdGgtcmNdPVwiaXNPbkNvbXBsZXRpb25SY1wiPlxuICAgICAgICAgICAgICBSRVNQT05TSUJJTElUSUVTXG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHJlc3BvbnNpYmlsaXR5LWNlbnRlclwiXG4gICAgICAgICAgICAgICpuZ0lmPVwiaXNPbkNvbXBsZXRpb25SY1wiPlxuICAgICAgICAgICAgICBSRVNQT05TSUJJTElUWSBDRU5URVJcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWJvZHlcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2liaWxpdHkgb2YgcmVzcG9uc2liaWxpdGllc0RhdGE/LmRhdGE7XG4gICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJvdyBjbGlja2FibGVcIiBbY2xhc3MuYWN0aXZlXT1cIlxuICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Py5yaWRcbiAgICAgICAgICAgICAgICAgIHwgaXNSZXNwU2VsZWN0ZWQgOiBzZWxlY3RlZFJlc3BvbnNpYmlsaXR5VmFsdWVzXG4gICAgICAgICAgICAgIFwiIFtjbGFzcy5vcGVuXT1cInRoaXMudmlld1Jlc3BvbnNpYmlsaXR5SWQgPT09IHJlc3BvbnNpYmlsaXR5Py5pZFwiIFtjbGFzcy5zZWxlY3RlZF09XCJcbiAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eT8ucmlkXG4gICAgICAgICAgICAgICAgICB8IGlzUmVzcFNlbGVjdGVkIDogc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlc1xuICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzZXJpYWxcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Itbm9cIiBbYXBwVG9vbHRpcF09XCInMSdcIiBwbGFjZW1lbnQ9XCJib3R0b21cIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAge3sgcmVzcG9uc2liaWxpdGllc0RhdGE/LnJlc3BvbnNpYmlsaXRpZXNfZnJvbSArIGkgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8YXBwLWNzLWNoZWNrYm94IFt2YWx1ZV09XCJyZXNwb25zaWJpbGl0eT8ucmlkXCIgW25nVmFsdWVdPVwiXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Py5yaWRcbiAgICAgICAgICAgICAgICAgICAgICB8IGlzUmVzcFNlbGVjdGVkIDogc2VsZWN0ZWRSZXNwb25zaWJpbGl0eVZhbHVlc1xuICAgICAgICAgICAgICAgICAgXCIgKG5nVmFsdWVDaGFuZ2UpPVwic2VsZWN0UmVzcChyZXNwb25zaWJpbGl0eSwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgIDwvYXBwLWNzLWNoZWNrYm94PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciByZXNwb25zaWJpbGl0eS1uYW1lXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhckZpbGVBcmVhIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxhcHAtYXZhdGFyIFt0eXBlXT1cIkFWQVRBUl9DT05TVEFOVFMuVFlQRS5BU1NJR05PUlwiIFt1c2VyRGV0YWlsc109XCJcbiAgICAgICAgICAgICAgICAgICAgICBbcmVzcG9uc2liaWxpdHk/LmFzc2lnbm9yXSB8IGdldFVzZXJEZXRhaWxzIDogdXNlckxpc3RcbiAgICAgICAgICAgICAgICAgICAgXCI+PC9hcHAtYXZhdGFyPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Py5hc3NpZ25lZXM/LnVzZXJJZFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBnZXRVc2VyRGV0YWlscyA6IHVzZXJMaXN0IGFzIGFzc2lnbmVlRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFwcC1hdmF0YXIgW2F2YXRhckNsYXNzXT1cIkFWQVRBUl9DT05TVEFOVFMuQ09MT1IuR1JFRU5cIiBbdHlwZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFzc2lnbmVlRGV0YWlscz8ubGVuZ3RoID4gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICA/IEFWQVRBUl9DT05TVEFOVFMuQU5ZT05FXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogQVZBVEFSX0NPTlNUQU5UUy5BTExcbiAgICAgICAgICAgICAgICAgICAgICBcIiBbdXNlckRldGFpbHNdPVwiYXNzaWduZWVEZXRhaWxzXCIgYXBwU3RvcFByb3BhZ2F0aW9uPjwvYXBwLWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xMyB2eC1uZXV0cmFsLTEwMCB2eC1saC01XCIgW2FwcFRvb2x0aXBdPVwicmVzcG9uc2liaWxpdHk/LnRpdGxlXCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIiBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICB7e3Jlc3BvbnNpYmlsaXR5Py5jb250cm9sSWQgPyAnW0NJRC0nICsgcmVzcG9uc2liaWxpdHk/LmNvbnRyb2xJZCArICddICcgOiAnJ319XG4gICAgICAgICAgICAgICAgICAgIHt7IHJlc3BvbnNpYmlsaXR5Py50aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTEgdngtZnctNTAwIHZ4LW5ldXRyYWwtMTAwIHZ4LWxoLTQgdngtdHQtdXBwZXJjYXNlIHZ4LW1yLTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICBSRVNQT05TSUJJTElUWSBDRU5URVI6XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zaWJpbGl0eT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2V0UkNMaXN0IDogcmNMaXN0IDogYWxsUmNMaXN0IGFzIHJjTGlzdFxuICAgICAgICAgICAgICAgICAgICAgIFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXNwLW5hbWUgdngtZnMtMTEgdngtZ3JheS02MCB2eC1saC00IHZ4LW1yLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwicmNMaXN0Py5sZW5ndGggPiAwID8gcmNMaXN0WzBdIDogJy0tJ1wiIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCIgZGVsYXk9XCIwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyByY0xpc3Q/Lmxlbmd0aCA+IDAgPyByY0xpc3RbMF0gOiBcIi0tXCIgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJyZXNwb25zaWJpbGl0eT8ucmVzcG9uc2liaWxpdHlDZW50ZXJzPy5sZW5ndGggPiAxXCIgY2xhc3M9XCJ2eC1iYWRnZU51bSB4cyBtaW5pbWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcHBQb3BvdmVyIChjbGljayk9XCJyZXNwUG9wb3Zlci5wb3BvdmVyKClcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgK3t7IHJlc3BvbnNpYmlsaXR5Py5yZXNwb25zaWJpbGl0eUNlbnRlcnM/Lmxlbmd0aCAtIDEgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtcG9wb3ZlciAjcmVzcFBvcG92ZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndmLWFjdGlvbi1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJhY3Rpb24taXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHJjIG9mIHJjTGlzdCB8IHNsaWNlIDogMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItY2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZVwiIFthcHBUb29sdGlwXT1cInJjXCIgcGxhY2VtZW50PVwiYm90dG9tLWxlZnRcIiBkZWxheT1cIjBcIiB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcE1hbmRhdG9yeV09XCJmYWxzZVwiPnt7IHJjIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9hcHAtcG9wb3Zlcj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBhY3Rpb25cIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNpYmlsaXR5Py5hc3NpZ25lZVR5cGUgPT09IEFWQVRBUl9DT05TVEFOVFMuQUxMLnRvTG93ZXJDYXNlKCkgfHxcbiAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2liaWxpdHk/LnJjVHlwZSA9PT0gQVZBVEFSX0NPTlNUQU5UUy5BTEwudG9Mb3dlckNhc2UoKVxuICAgICAgICAgICAgICAgICAgXCIgKGNsaWNrKT1cInZpZXdSZXNwb25zaWJpbGl0eShyZXNwb25zaWJpbGl0eT8uaWQpXCIgY2xhc3M9XCJ2eC1pY29uLWJ1dHRvbiBtaW5pbWFsIHNtYWxsXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImljb25zXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgICAgIHZpZXdSZXNwb25zaWJpbGl0eUlkID09PSByZXNwb25zaWJpbGl0eT8uaWRcbiAgICAgICAgICAgICAgICAgICAgPyBcIiYjeGU5ZTc7XCJcbiAgICAgICAgICAgICAgICAgICAgOiBcIiYjeGU5ZTg7XCJcbiAgICAgICAgICAgICAgICAgICAgfX08L2k+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgdmlld1Jlc3BvbnNpYmlsaXR5SWQgPT09IHJlc3BvbnNpYmlsaXR5Py5pZCAmJlxuICAgICAgICAgICAgICAgIHZpZXdSZXNwb25zaWJpbGl0eURhdGFbdmlld1Jlc3BvbnNpYmlsaXR5SWRdPy5sZW5ndGhcbiAgICAgICAgICAgICAgXCIgY2xhc3M9XCJvcGVuLW1vcmVcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJvd1wiICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgb2Ygdmlld1Jlc3BvbnNpYmlsaXR5RGF0YVt2aWV3UmVzcG9uc2liaWxpdHlJZF1cbiAgICAgICAgICAgICAgICBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHNlcmlhbFwiPlxuICAgICAgICAgICAgICAgICAgPGFwcC1jcy1jaGVja2JveCBbdmFsdWVdPVwiZGF0YT8ucmlkXCIgW25nVmFsdWVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBpc1Jlc3BTZWxlY3RlZCA6IHNlbGVjdGVkUmVzcG9uc2liaWxpdHlWYWx1ZXMgOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgIFwiIChuZ1ZhbHVlQ2hhbmdlKT1cInNlbGVjdFJlc3AoZGF0YSwgJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgPC9hcHAtY3MtY2hlY2tib3g+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciByZXNwb25zaWJpbGl0eS1uYW1lXCI+XG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiXG4gICAgICAgICAgICAgICAgICAgICAgZGF0YT8uYXNzaWduZWVzPy51c2VySWRcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2V0VXNlckRldGFpbHMgOiB1c2VyTGlzdCBhcyBhc3NpZ25lZURldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgXCI+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2YXRhci1hcmVhXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGFwcC1hdmF0YXIgW3R5cGVdPVwiQVZBVEFSX0NPTlNUQU5UUy5UWVBFLkFTU0lHTk9SXCIgW3VzZXJEZXRhaWxzXT1cImFzc2lnbmVlRGV0YWlsc1wiPjwvYXBwLWF2YXRhcj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYW1lLWRldGFpbHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWUgdngtZnMtMTEgdngtbmV1dHJhbC0xMDAgdngtbGgtNFwiIFthcHBUb29sdGlwXT1cImFzc2lnbmVlRGV0YWlsc1swXT8ubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBhc3NpZ25lZURldGFpbHNbMF0/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1uZXV0cmFsLTEwMCB2eC1saC00IHZ4LXR0LXVwcGVyY2FzZSB2eC1tci0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFJFU1BPTlNJQklMSVRZIENFTlRFUjpcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhPy5yZXNwb25zaWJpbGl0eUNlbnRlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGdldFJDTGlzdCA6IHJjTGlzdCA6IGFsbFJjTGlzdCBhcyBjaGlsZFJjTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXNwLW5hbWUgdngtZnMtMTEgdngtZ3JheS02MCB2eC1saC00IHZ4LW1yLTJcIiBbYXBwVG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFJjTGlzdD8ubGVuZ3RoID4gMCA/IGNoaWxkUmNMaXN0WzBdIDogJy0tJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICBcIiBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiIGRlbGF5PVwiMFwiIHR5cGU9XCJibGFja1wiIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY2hpbGRSY0xpc3Q/Lmxlbmd0aCA+IDAgPyBjaGlsZFJjTGlzdFswXSA6IFwiLS1cIiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgYWN0aW9uXCI+PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGFwcC1wYWdpbmF0aW9uICpuZ0lmPVwiIXJlc3BvbnNpYmlsaXR5TG9hZGVyICYmIHJlc3BvbnNpYmlsaXRpZXNEYXRhPy50b3RhbF9wYWdlcyA+IDFcIlxuICAgICAgW3N0YXJ0XT1cInJlc3BvbnNpYmlsaXRpZXNEYXRhPy5yZXNwb25zaWJpbGl0aWVzX2Zyb21cIiBbZW5kXT1cInJlc3BvbnNpYmlsaXRpZXNEYXRhPy5yZXNwb25zaWJpbGl0aWVzX3RvXCJcbiAgICAgIFt0b3RhbF09XCJyZXNwb25zaWJpbGl0aWVzRGF0YT8udG90YWxfcmVzcG9uc2liaWxpdGllc1wiIFtwYWdlQ291bnRdPVwicmVzcG9uc2liaWxpdGllc0RhdGE/LnRvdGFsX3BhZ2VzXCJcbiAgICAgIFtjdXJyZW50UGFnZV09XCJyZXNwb25zaWJpbGl0aWVzRGF0YT8ucmVzcG9uc2liaWxpdHlDdXJyZW50UGFnZVwiIChzZWxlY3RlZFBhZ2UpPVwicmVzcG9uc2liaWxpdHlQYWdlQ2hhbmdlKCRldmVudClcIj5cbiAgICA8L2FwcC1wYWdpbmF0aW9uPlxuICAgIDxhcHAtZmxvYXRpbmctYmFyICpuZ0lmPVwiIXJlc3BvbnNpYmlsaXR5TG9hZGVyXCIgW3NlbGVjdGVkRGF0YV09XCJyZXNwb25zaWJpbGl0eUZsb2F0ZXJCYXJEYXRhXCJcbiAgICAgIFtkaXNwbGF5RWxlbWVudEtleV09XCInUmVwb3J0TmFtZSdcIiAoY2xvc2VMaXN0KT1cImJhY2soKVwiIChjbG9zZUV2ZW50KT1cInNhdmUoJGV2ZW50KVwiXG4gICAgICAoZGVsZXRlRXZlbnQpPVwiZGVsZXRlSXRlbSgkZXZlbnQpXCIgW2lzRGlzYWJsZWRdPVwiIXJlc3BvbnNpYmlsaXR5RmxvYXRlckJhckRhdGE/Lmxlbmd0aFwiIFtpc1Jlc3BvbnNpYmlsaXR5XT1cInRydWVcIlxuICAgICAgW3Npbmd1bGFyVGV4dF09XCJmbG9hdGVyQmFyVGV4dC5TSU5HVUxBUl9URVhUXCIgW3BsdXJhbFRleHRdPVwiZmxvYXRlckJhclRleHQuUExVUkFMX1RFWFRcIj48L2FwcC1mbG9hdGluZy1iYXI+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|