vcomply-workflow-engine 5.0.11 → 5.0.13
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/report-a-case/components/case-assignees/case-assignees.component.mjs +21 -10
- package/esm2022/lib/report-a-case/components/case-category/case-category.component.mjs +81 -43
- package/esm2022/lib/report-a-case/components/case-details/case-details.component.mjs +1 -1
- package/esm2022/lib/report-a-case/components/case-owners/case-owners.component.mjs +16 -7
- package/esm2022/lib/report-a-case/components/case-priority/case-priority.component.mjs +11 -12
- package/esm2022/lib/report-a-case/components/case-resolution-deadline/case-resolution-deadline.component.mjs +10 -4
- package/esm2022/lib/report-a-case/components/case-type-dropdown/case-dropdown.component.mjs +11 -12
- package/esm2022/lib/report-a-case/components/due-date/due-date.component.mjs +3 -3
- package/esm2022/lib/report-a-case/components/form-selectBox/form-selectBox.component.mjs +10 -9
- package/esm2022/lib/report-a-case/components/information-block/information-block.component.mjs +3 -3
- package/esm2022/lib/report-a-case/components/linked assessment/linked-assessment.component.mjs +7 -9
- package/esm2022/lib/report-a-case/components/rc-details/rc-details.component.mjs +42 -7
- package/esm2022/lib/report-a-case/components/report-date/report-date.component.mjs +1 -1
- package/esm2022/lib/report-a-case/components/vc-label/vc-label.component.mjs +43 -16
- package/esm2022/lib/report-a-case/constants/report-case.constants.mjs +6 -1
- package/esm2022/lib/report-a-case/workflow-case/workflow-case.component.mjs +97 -39
- package/esm2022/lib/services/report-case-permission.service.mjs +2 -1
- package/esm2022/lib/sharedComponents/category-list-selection/category-list-selection/category-list-selection.component.mjs +5 -4
- package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.component.mjs +3 -2
- package/esm2022/lib/sharedComponents/format-and-evidence/format-and-evidence.module.mjs +8 -4
- package/esm2022/lib/workflow-engine-container/workflow-engine-container.component.mjs +5 -3
- package/fesm2022/vcomply-workflow-engine.mjs +369 -179
- package/fesm2022/vcomply-workflow-engine.mjs.map +1 -1
- package/lib/report-a-case/components/case-assignees/case-assignees.component.d.ts +6 -0
- package/lib/report-a-case/components/case-category/case-category.component.d.ts +10 -1
- package/lib/report-a-case/components/case-details/case-details.component.d.ts +5 -0
- package/lib/report-a-case/components/case-owners/case-owners.component.d.ts +6 -0
- package/lib/report-a-case/components/case-priority/case-priority.component.d.ts +6 -0
- package/lib/report-a-case/components/case-resolution-deadline/case-resolution-deadline.component.d.ts +6 -0
- package/lib/report-a-case/components/case-type-dropdown/case-dropdown.component.d.ts +6 -0
- package/lib/report-a-case/components/case-type-slider/case-type.component.d.ts +5 -0
- package/lib/report-a-case/components/due-date/due-date.component.d.ts +5 -0
- package/lib/report-a-case/components/information-block/information-block.component.d.ts +5 -0
- package/lib/report-a-case/components/linked assessment/linked-assessment.component.d.ts +5 -0
- package/lib/report-a-case/components/linked-responsibilities/linked-responsibilities.component.d.ts +5 -0
- package/lib/report-a-case/components/rc-details/rc-details.component.d.ts +7 -0
- package/lib/report-a-case/components/report-date/report-date.component.d.ts +5 -0
- package/lib/report-a-case/components/vc-label/vc-label.component.d.ts +3 -1
- package/lib/report-a-case/constants/report-case.constants.d.ts +5 -0
- package/lib/report-a-case/workflow-case/workflow-case.component.d.ts +10 -1
- package/lib/sharedComponents/format-and-evidence/format-and-evidence.module.d.ts +2 -1
- package/lib/workflow-engine-container/workflow-engine-container.component.d.ts +1 -0
- package/package.json +1 -1
|
@@ -274,11 +274,11 @@ export class DueDateComponent {
|
|
|
274
274
|
}
|
|
275
275
|
}
|
|
276
276
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DueDateComponent, deps: [{ token: i1.CommonService }, { token: i2.FrequencyService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
277
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DueDateComponent, selector: "app-due-date", inputs: { payload: "payload", dueDate: "dueDate", workflowDetails: "workflowDetails", userList: "userList", groupList: "groupList", initialSelection: "initialSelection" }, outputs: { closeDueDateResolution: "closeDueDateResolution", closeDueDateEvent: "closeDueDateEvent" }, host: { listeners: { "document:click": "documentClick($event)" } }, viewQueries: [{ propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }, { propertyName: "animation", first: true, predicate: ["datePicker"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"configure-resolution\">\n <div\n class=\"configure-resolution-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\n >\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">\n Configure Resolution Deadline & Stage Details\n </div>\n </div>\n <div class=\"configure-resolution-body\">\n <div class=\"configure-resolution-body-inner\">\n <app-loader-inline *ngIf=\"false\"></app-loader-inline>\n <app-no-data\n *ngIf=\"false\"\n [noDataImage]=\"\n 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\n \"\n [noDataText]=\"'No data to display'\"\n ></app-no-data>\n\n <ng-container>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n SPECIFY THE DEADLINE TO CLOSE THIS CASE\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <div\n class=\"case-calendar vx-d-flex vx-justify-between vx-pt-3 vx-pb-3 vx-mb-3\"\n >\n <div class=\"case-calendar-inner vx-d-flex vx-align-center\">\n <input\n type=\"text\"\n readonly\n placeholder=\"{{\n dueDateTexts.case_details.due_date.deadline_placeholder\n }}\"\n (click)=\"openDatePicker()\"\n [value]=\"dueDate | date : 'dd MMM yyyy'\"\n id=\"effective-date\"\n />\n <i class=\"icons\"></i>\n <dp-date-picker\n #datePicker\n (onSelect)=\"datePickerOverlay = false; closeDatePicker($event)\"\n [config]=\"dateConfig\"\n [(ngModel)]=\"dueDate\"\n >\n </dp-date-picker>\n <div\n class=\"vx-overlay\"\n (click)=\"closeDatePicker($event)\"\n *ngIf=\"datePickerOverlay\"\n ></div>\n </div>\n </div>\n <div *ngIf=\"showError\" class=\"errorMsg vx-fs-11 vx-lh-4 vx-mt-1\">\n {{ dueDateTexts.errorMessage.dueDate }}\n </div>\n <div class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-1\">\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-tt-uppercase\"\n >\n CONFIGURE DEADLINE & ASSIGNEE FOR EACH STAGE IN THE WORKFLOW\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <!-- <div class=\"toggle-area vx-d-flex vx-align-center\">\n <app-cs-switch>Allow Reopening of Previous Stage</app-cs-switch>\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-2\"\n [appTooltip]=\"\n 'If enabled, this option allows the assignee to revisit and reopen a previously completed stage. The stage will be reset, and the assigned user will need to complete it again.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\n >\n </div> -->\n </div>\n <div class=\"configure-resolution-table\">\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 stage-name\"\n >\n STAGE NAME\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 status\"\n >\n TRANSITION STATUS\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.transition_status\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\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 assignee\"\n >\n ASSIGNEE\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.assignee\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\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 deadline\"\n >\n DEADLINE\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.deadline\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\n >\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <div\n class=\"table-row\"\n *ngFor=\"\n let data of workflowDetails?.stages_assignees;\n let i = index\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 vx-fs-13 vx-d-flex vx-align-center vx-justify-center\"\n [appTooltip]=\"i + 1\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ i + 1 }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center stage-name\"\n >\n <div\n class=\"value vx-fs-13 vx-pr-2\"\n [appTooltip]=\"data?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ data?.name }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center status\"\n >\n <div class=\"value vx-fs-12\">\n {{ data?.status_transition?.fromName }}<br /><span\n class=\"vx-mr-1\"\n >To</span\n >{{ data?.status_transition?.toName }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center assignee\"\n (click)=\"activateSelector(true, i)\"\n >\n <div\n *ngIf=\"!assigneeData[i]?.length\"\n class=\"select-box vx-d-flex vx-align-center vx-justify-between vx-pl-3 vx-pr-3\"\n >\n <div class=\"value vx-fs-13\">Select a User</div>\n <i class=\"icons arrow vx-fs-12\"></i>\n </div>\n <div\n *ngIf=\"assigneeData[i]?.length > 0\"\n class=\"after-select-box vx-d-flex vx-align-center vx-justify-between vx-pl-3 vx-pr-2\"\n >\n <div\n class=\"value-chip vx-fs-11 vx-pl-2 vx-pr-2 vx-lh-6\"\n [appTooltip]=\"assigneeData[i][0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ assigneeData[i][0]?.member_name }}\n </div>\n <button\n (click)=\"activateSelector(true, i)\"\n class=\"edit-btn vx-fs-11 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\n >\n <i class=\"icons vx-fs-12 vx-txt-blue vx-mr-1\"></i\n >EDIT\n </button>\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-2 vx-d-flex vx-align-center deadline\"\n >\n <div\n class=\"case-calendar vx-d-flex vx-justify-between vx-pt-3 vx-pb-3\"\n [class.disabled]=\"true\"\n >\n <div class=\"case-calendar-inner vx-d-flex vx-align-center\">\n <input\n type=\"text\"\n readonly\n value=\"{{ dueDate | date : 'dd MMM yyyy' }}\"\n (click)=\"openDatePicker()\"\n id=\"effective-date\"\n />\n <i class=\"icons\"></i>\n <dp-date-picker\n #datePicker\n (onSelect)=\"\n datePickerOverlay = false; closeDatePicker($event)\n \"\n [config]=\"dateConfig\"\n >\n </dp-date-picker>\n <div\n class=\"vx-overlay\"\n (click)=\"closeDatePicker($event)\"\n *ngIf=\"datePickerOverlay\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"showAssigneeError\"\n class=\"errorMsg vx-fs-11 vx-lh-4 vx-mt-1\"\n >\n {{ dueDateTexts.errorMessage.stageAssignee }}\n </div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n EMAIL REMINDER CONFIGURATION\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <div class=\"divider vx-mb-2\"></div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n REMINDER EMAIL\n </div>\n <div\n class=\"email-configure-box vx-d-flex vx-align-center vx-flex-wrap vx-p-2 vx-pl-3 vx-pr-3 vx-mb-2\"\n >\n <div class=\"vx-fs-13 vx-mr-1\">\n Send regular email reminders to the assignee\n </div>\n <input\n type=\"number\"\n [(ngModel)]=\"emailReminder\"\n onkeydown=\"return event.key !== '.'\"\n oninput=\"this.value = Math.abs(this.value)\"\n (change)=\"onInputChange()\"\n />\n <div class=\"vx-fs-13 vx-ml-1\">\n <span class=\"black-text\">days</span> before the stage deadline.\n </div>\n </div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n ESCALATION EMAIL\n </div>\n <div\n class=\"email-configure-box vx-d-flex vx-align-center vx-flex-wrap vx-p-2 vx-pl-3 vx-pr-3 vx-mb-2\"\n >\n <div class=\"vx-fs-13 vx-mr-1\">\n Send email escalation to the Case Owner\n </div>\n <input\n type=\"number\"\n [(ngModel)]=\"escalationEmail\"\n onkeydown=\"return event.key !== '.'\"\n oninput=\"this.value = Math.abs(this.value)\"\n (change)=\"onInputChange()\"\n />\n <div class=\"vx-fs-13 vx-ml-1\">\n <span class=\"black-text\">days</span> before the overall case\n deadline, if the case is still open.\n </div>\n </div>\n </ng-container>\n </div>\n <app-floating-bar\n (closeList)=\"closeDueDate()\"\n (closeEvent)=\"saveCaseResolutionDeadline()\"\n ></app-floating-bar>\n </div>\n</div>\n<app-assignee\n *ngIf=\"assigneeClicked\"\n [payload]=\"payload\"\n [assigneeList]=\"assigneeList\"\n [activeAssignee]=\"activeAssignee\"\n (selectedAssigneeEvent)=\"selectedAssignee($event)\"\n (closeEvent)=\"activateSelector(false)\"\n></app-assignee>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.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/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.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-bottom.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/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\";::ng-deep .configure-resolution{background:#fff;position:fixed;inset:0 500px 0 0;z-index:1}::ng-deep .configure-resolution:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .configure-resolution.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .configure-resolution-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .configure-resolution-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .configure-resolution-body-inner{height:calc(100% - 3rem);padding:0 2rem 1rem 0;width:calc(100% + 2rem);overflow-y:auto;scrollbar-width:thin}::ng-deep .configure-resolution-body-inner .divider{background:#e3e3e9;width:100%;height:1px}::ng-deep .configure-resolution-body .label-top .required{color:#c7381b}::ng-deep .configure-resolution-body .errorMsg{color:#a82a1d}::ng-deep .configure-resolution-body .toggle-area{cursor:pointer}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch{order:1;width:24px!important;min-width:24px!important;height:16px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch .switch-box{background:#cdced6!important;border:1px solid #cdced6!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch .switch-ball{height:12px!important;width:12px!important;border:none!important;left:2px!important;top:2px!important;bottom:2px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch input:checked+span.switch-box{background:#34aa44!important;border-color:#34aa44!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch input:checked+span.switch-box .switch-ball{left:10px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .value{order:2;color:#000!important;cursor:pointer;font-size:11px!important;margin-left:.5rem;width:unset!important}::ng-deep .configure-resolution-body .toggle-area i.info{cursor:pointer}::ng-deep .configure-resolution-body .case-calendar{background:#fff;border-radius:.25rem;height:2.5rem}::ng-deep .configure-resolution-body .case-calendar-inner{position:relative;width:100%}::ng-deep .configure-resolution-body .case-calendar-inner input{background:transparent;border-radius:.25rem;border:1px solid #cdced6;color:#747576;font-size:13px;font-weight:400;height:2.5rem;line-height:2.5rem;padding:0 .75rem 0 2rem;outline:none;width:100%;transition:all .2s ease-in-out}::ng-deep .configure-resolution-body .case-calendar-inner input::placeholder{color:#a9aab6}::ng-deep .configure-resolution-body .case-calendar-inner input:hover,::ng-deep .configure-resolution-body .case-calendar-inner input:focus{border-color:#1e5dd3}::ng-deep .configure-resolution-body .case-calendar-inner i{display:flex;justify-content:center;align-items:center;height:.75rem;width:.75rem;position:absolute;left:.75rem;top:.125rem;color:#747576;font-size:12px;pointer-events:none}::ng-deep .configure-resolution-body .case-calendar.disabled{background:#f2f2f5;pointer-events:none;opacity:1}::ng-deep .configure-resolution-body .case-calendar.disabled .case-calendar-inner input,::ng-deep .configure-resolution-body .case-calendar.disabled .case-calendar-inner i{color:#a9aab6}::ng-deep .configure-resolution-body .email-configure-box{border-radius:.25rem;border:1px solid #dbdbdb;color:#787a8c}::ng-deep .configure-resolution-body .email-configure-box input{-moz-appearance:textfield;border-radius:.25rem;border:1px solid #dbdbdb;color:#343952;display:inline-block;font-size:13px;text-align:center;width:2.25rem;height:1.75rem;padding:.125rem;outline:none}::ng-deep .configure-resolution-body .email-configure-box input::-webkit-inner-spin-button,::ng-deep .configure-resolution-body .email-configure-box input::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .configure-resolution-body .email-configure-box input::placeholder{color:#787a8c}::ng-deep .configure-resolution-body .email-configure-box .black-text{color:#000}::ng-deep .configure-resolution-table{border-radius:.25rem;border:1px solid #f2f2f5;margin-bottom:1.5rem}::ng-deep .configure-resolution-table .table-header{background:#fff;border-radius:.25rem .25rem 0 0}::ng-deep .configure-resolution-table .table-header .table-column{color:#787a8c!important;line-height:.75rem!important;min-height:2rem!important}::ng-deep .configure-resolution-table .table-row{display:flex;justify-content:space-between;position:relative}::ng-deep .configure-resolution-table .table-row:last-of-type .table-column,::ng-deep .configure-resolution-table .table-row:only-child .table-column{border-bottom:none}::ng-deep .configure-resolution-table .table-row .table-column{border-bottom:1px solid #f2f2f5;color:#000;min-height:3.25rem;position:relative;width:100%}::ng-deep .configure-resolution-table .table-row .table-column i.info{cursor:pointer}::ng-deep .configure-resolution-table .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .configure-resolution-table .table-row .table-column.serial .sr-no{width:1rem;height:3.25rem}::ng-deep .configure-resolution-table .table-row .table-column.stage-name{width:calc(100% - 37rem);min-width:calc(100% - 37rem)}::ng-deep .configure-resolution-table .table-row .table-column.stage-name .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .configure-resolution-table .table-row .table-column.status{width:10rem;min-width:10rem}::ng-deep .configure-resolution-table .table-row .table-column.status .value span{color:#787a8c}::ng-deep .configure-resolution-table .table-row .table-column.assignee{width:15rem;min-width:15rem}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box{border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;height:2.5rem;width:100%}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box .value{color:#a9aab6}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box .arrow{color:#787a8c}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box{background:#f9f9fa;border-radius:.25rem;border:1px solid #cdced6;height:2.5rem;width:100%}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box .value-chip{background:#fff;border-radius:.125rem;border:1px solid #f4f8ff;box-shadow:0 0 2px #1e5dd326;color:#000;height:1.5rem;max-width:9.5rem;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box button.edit-btn{background:transparent;border-radius:0;border:none}::ng-deep .configure-resolution-table .table-row .table-column.deadline{width:10rem;min-width:10rem}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\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.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { 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", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "deleteGroupEvent", "workflowTypeChanged"] }, { kind: "component", type: i6.DatePickerComponent, selector: "dp-date-picker", inputs: ["config", "mode", "placeholder", "disabled", "displayDate", "theme", "minDate", "maxDate", "minTime", "maxTime"], outputs: ["open", "close", "onChange", "onGoToCurrent", "onLeftNav", "onRightNav", "onSelect"] }, { kind: "directive", type: i7.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: i7.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i9.AssigneeComponent, selector: "app-assignee", inputs: ["assigneeList", "activeAssignee", "payload"], outputs: ["closeEvent", "selectedAssigneeEvent"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }] }); }
|
|
277
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DueDateComponent, selector: "app-due-date", inputs: { payload: "payload", dueDate: "dueDate", workflowDetails: "workflowDetails", userList: "userList", groupList: "groupList", initialSelection: "initialSelection" }, outputs: { closeDueDateResolution: "closeDueDateResolution", closeDueDateEvent: "closeDueDateEvent" }, host: { listeners: { "document:click": "documentClick($event)" } }, viewQueries: [{ propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }, { propertyName: "animation", first: true, predicate: ["datePicker"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"configure-resolution\">\n <div\n class=\"configure-resolution-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\n >\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">\n Configure Resolution Deadline & Stage Details\n </div>\n </div>\n <div class=\"configure-resolution-body\">\n <div class=\"configure-resolution-body-inner\">\n <app-loader-inline *ngIf=\"false\"></app-loader-inline>\n <app-no-data\n *ngIf=\"false\"\n [noDataImage]=\"\n 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\n \"\n [noDataText]=\"'No data to display'\"\n ></app-no-data>\n\n <ng-container>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n SPECIFY THE DEADLINE TO CLOSE THIS CASE\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <div\n class=\"case-calendar vx-mb-3\"\n >\n <div class=\"case-calendar-inner vx-d-flex vx-align-center\">\n <input\n type=\"text\"\n readonly\n placeholder=\"{{\n dueDateTexts.case_details.due_date.deadline_placeholder\n }}\"\n (click)=\"openDatePicker()\"\n [value]=\"dueDate | date : 'dd MMM yyyy'\"\n id=\"effective-date\"\n />\n <i class=\"icons\"></i>\n <dp-date-picker\n #datePicker\n (onSelect)=\"datePickerOverlay = false; closeDatePicker($event)\"\n [config]=\"dateConfig\"\n [(ngModel)]=\"dueDate\"\n >\n </dp-date-picker>\n <div\n class=\"vx-overlay\"\n (click)=\"closeDatePicker($event)\"\n *ngIf=\"datePickerOverlay\"\n ></div>\n </div>\n <div *ngIf=\"showError\" class=\"errorMsg vx-fs-11 vx-lh-4 vx-mt-1\">\n {{ dueDateTexts.errorMessage.dueDate }}\n </div>\n </div>\n <div class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-1\">\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-tt-uppercase\"\n >\n CONFIGURE DEADLINE & ASSIGNEE FOR EACH STAGE IN THE WORKFLOW\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <!-- <div class=\"toggle-area vx-d-flex vx-align-center\">\n <app-cs-switch>Allow Reopening of Previous Stage</app-cs-switch>\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-2\"\n [appTooltip]=\"\n 'If enabled, this option allows the assignee to revisit and reopen a previously completed stage. The stage will be reset, and the assigned user will need to complete it again.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\n >\n </div> -->\n </div>\n <div class=\"configure-resolution-table\">\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 stage-name\"\n >\n STAGE NAME\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 status\"\n >\n TRANSITION STATUS\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.transition_status\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\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 assignee\"\n >\n ASSIGNEE\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.assignee\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\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 deadline\"\n >\n DEADLINE\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.deadline\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\n >\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <div\n class=\"table-row\"\n *ngFor=\"\n let data of workflowDetails?.stages_assignees;\n let i = index\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 vx-fs-13 vx-d-flex vx-align-center vx-justify-center\"\n [appTooltip]=\"i + 1\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ i + 1 }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center stage-name\"\n >\n <div\n class=\"value vx-fs-13 vx-pr-2\"\n [appTooltip]=\"data?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ data?.name }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center status\"\n >\n <div class=\"value vx-fs-12\">\n {{ data?.status_transition?.fromName }}<br /><span\n class=\"vx-mr-1\"\n >To</span\n >{{ data?.status_transition?.toName }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center assignee\"\n (click)=\"activateSelector(true, i)\"\n >\n <div\n *ngIf=\"!assigneeData[i]?.length\"\n class=\"select-box vx-d-flex vx-align-center vx-justify-between vx-pl-3 vx-pr-3\"\n >\n <div class=\"value vx-fs-13\">Select a User</div>\n <i class=\"icons arrow vx-fs-12\"></i>\n </div>\n <div\n *ngIf=\"assigneeData[i]?.length > 0\"\n class=\"after-select-box vx-d-flex vx-align-center vx-justify-between vx-pl-3 vx-pr-2\"\n >\n <div\n class=\"value-chip vx-fs-11 vx-pl-2 vx-pr-2 vx-lh-6\"\n [appTooltip]=\"assigneeData[i][0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ assigneeData[i][0]?.member_name }}\n </div>\n <button\n (click)=\"activateSelector(true, i)\"\n class=\"edit-btn vx-fs-11 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\n >\n <i class=\"icons vx-fs-12 vx-txt-blue vx-mr-1\"></i\n >EDIT\n </button>\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-2 vx-d-flex vx-align-center deadline\"\n >\n <div\n class=\"case-calendar vx-d-flex vx-justify-between vx-pt-3 vx-pb-3\"\n [class.disabled]=\"true\"\n >\n <div class=\"case-calendar-inner vx-d-flex vx-align-center\">\n <input\n type=\"text\"\n readonly\n value=\"{{ dueDate | date : 'dd MMM yyyy' }}\"\n (click)=\"openDatePicker()\"\n id=\"effective-date\"\n />\n <i class=\"icons\"></i>\n <dp-date-picker\n #datePicker\n (onSelect)=\"\n datePickerOverlay = false; closeDatePicker($event)\n \"\n [config]=\"dateConfig\"\n >\n </dp-date-picker>\n <div\n class=\"vx-overlay\"\n (click)=\"closeDatePicker($event)\"\n *ngIf=\"datePickerOverlay\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"showAssigneeError\"\n class=\"errorMsg vx-fs-11 vx-lh-4 vx-mt-1\"\n >\n {{ dueDateTexts.errorMessage.stageAssignee }}\n </div>\n </div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n EMAIL REMINDER CONFIGURATION\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <div class=\"divider vx-mb-2\"></div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n REMINDER EMAIL\n </div>\n <div\n class=\"email-configure-box vx-d-flex vx-align-center vx-flex-wrap vx-p-2 vx-pl-3 vx-pr-3 vx-mb-2\"\n >\n <div class=\"vx-fs-13 vx-mr-1\">\n Send regular email reminders to the assignee\n </div>\n <input\n type=\"number\"\n [(ngModel)]=\"emailReminder\"\n onkeydown=\"return event.key !== '.'\"\n oninput=\"this.value = Math.abs(this.value)\"\n (change)=\"onInputChange()\"\n />\n <div class=\"vx-fs-13 vx-ml-1\">\n <span class=\"black-text\">days</span> before the stage deadline.\n </div>\n </div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n ESCALATION EMAIL\n </div>\n <div\n class=\"email-configure-box vx-d-flex vx-align-center vx-flex-wrap vx-p-2 vx-pl-3 vx-pr-3 vx-mb-2\"\n >\n <div class=\"vx-fs-13 vx-mr-1\">\n Send email escalation to the Case Owner\n </div>\n <input\n type=\"number\"\n [(ngModel)]=\"escalationEmail\"\n onkeydown=\"return event.key !== '.'\"\n oninput=\"this.value = Math.abs(this.value)\"\n (change)=\"onInputChange()\"\n />\n <div class=\"vx-fs-13 vx-ml-1\">\n <span class=\"black-text\">days</span> before the overall case\n deadline, if the case is still open.\n </div>\n </div>\n </ng-container>\n </div>\n <app-floating-bar\n (closeList)=\"closeDueDate()\"\n (closeEvent)=\"saveCaseResolutionDeadline()\"\n ></app-floating-bar>\n </div>\n</div>\n<app-assignee\n *ngIf=\"assigneeClicked\"\n [payload]=\"payload\"\n [assigneeList]=\"assigneeList\"\n [activeAssignee]=\"activeAssignee\"\n (selectedAssigneeEvent)=\"selectedAssignee($event)\"\n (closeEvent)=\"activateSelector(false)\"\n></app-assignee>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.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/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.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-bottom.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/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\";::ng-deep .configure-resolution{background:#fff;position:fixed;inset:0 500px 0 0;z-index:1}::ng-deep .configure-resolution:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .configure-resolution.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .configure-resolution-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .configure-resolution-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .configure-resolution-body-inner{height:calc(100% - 3rem);padding:0 2rem 1rem 0;width:calc(100% + 2rem);overflow-y:auto;scrollbar-width:thin}::ng-deep .configure-resolution-body-inner .divider{background:#e3e3e9;width:100%;height:1px}::ng-deep .configure-resolution-body .label-top .required{color:#c7381b}::ng-deep .configure-resolution-body .errorMsg{color:#a82a1d}::ng-deep .configure-resolution-body .toggle-area{cursor:pointer}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch{order:1;width:24px!important;min-width:24px!important;height:16px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch .switch-box{background:#cdced6!important;border:1px solid #cdced6!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch .switch-ball{height:12px!important;width:12px!important;border:none!important;left:2px!important;top:2px!important;bottom:2px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch input:checked+span.switch-box{background:#34aa44!important;border-color:#34aa44!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch input:checked+span.switch-box .switch-ball{left:10px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .value{order:2;color:#000!important;cursor:pointer;font-size:11px!important;margin-left:.5rem;width:unset!important}::ng-deep .configure-resolution-body .toggle-area i.info{cursor:pointer}::ng-deep .configure-resolution-body .case-calendar{background:#fff;border-radius:.25rem}::ng-deep .configure-resolution-body .case-calendar-inner{position:relative;width:100%}::ng-deep .configure-resolution-body .case-calendar-inner input{background:transparent;border-radius:.25rem;border:1px solid #cdced6;color:#747576;font-size:13px;font-weight:400;height:2.5rem;line-height:2.5rem;padding:0 .75rem 0 2rem;outline:none;width:100%;transition:all .2s ease-in-out}::ng-deep .configure-resolution-body .case-calendar-inner input::placeholder{color:#a9aab6}::ng-deep .configure-resolution-body .case-calendar-inner input:hover,::ng-deep .configure-resolution-body .case-calendar-inner input:focus{border-color:#1e5dd3}::ng-deep .configure-resolution-body .case-calendar-inner i{display:flex;justify-content:center;align-items:center;height:.75rem;width:.75rem;position:absolute;left:.75rem;top:.75rem;color:#747576;font-size:12px;pointer-events:none}::ng-deep .configure-resolution-body .case-calendar.disabled{background:#f2f2f5;pointer-events:none;opacity:1}::ng-deep .configure-resolution-body .case-calendar.disabled .case-calendar-inner input,::ng-deep .configure-resolution-body .case-calendar.disabled .case-calendar-inner i{color:#a9aab6}::ng-deep .configure-resolution-body .email-configure-box{border-radius:.25rem;border:1px solid #dbdbdb;color:#787a8c}::ng-deep .configure-resolution-body .email-configure-box input{-moz-appearance:textfield;border-radius:.25rem;border:1px solid #dbdbdb;color:#343952;display:inline-block;font-size:13px;text-align:center;width:2.25rem;height:1.75rem;padding:.125rem;outline:none}::ng-deep .configure-resolution-body .email-configure-box input::-webkit-inner-spin-button,::ng-deep .configure-resolution-body .email-configure-box input::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .configure-resolution-body .email-configure-box input::placeholder{color:#787a8c}::ng-deep .configure-resolution-body .email-configure-box .black-text{color:#000}::ng-deep .configure-resolution-table{margin-bottom:.75rem}::ng-deep .configure-resolution-table .table-header{background:#fff;border-radius:.25rem .25rem 0 0;border:1px solid #f2f2f5;border-bottom:none}::ng-deep .configure-resolution-table .table-header .table-column{color:#787a8c!important;line-height:.75rem!important;min-height:2rem!important}::ng-deep .configure-resolution-table .table-body{border-radius:0 0 .25rem .25rem;border:1px solid #f2f2f5;border-top:none}::ng-deep .configure-resolution-table .table-row{display:flex;justify-content:space-between;position:relative}::ng-deep .configure-resolution-table .table-row:last-of-type .table-column,::ng-deep .configure-resolution-table .table-row:only-child .table-column{border-bottom:none}::ng-deep .configure-resolution-table .table-row .table-column{border-bottom:1px solid #f2f2f5;color:#000;min-height:3.25rem;position:relative;width:100%}::ng-deep .configure-resolution-table .table-row .table-column i.info{cursor:pointer}::ng-deep .configure-resolution-table .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .configure-resolution-table .table-row .table-column.serial .sr-no{width:1rem;height:3.25rem}::ng-deep .configure-resolution-table .table-row .table-column.stage-name{width:calc(100% - 37rem);min-width:calc(100% - 37rem)}::ng-deep .configure-resolution-table .table-row .table-column.stage-name .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .configure-resolution-table .table-row .table-column.status{width:10rem;min-width:10rem}::ng-deep .configure-resolution-table .table-row .table-column.status .value span{color:#787a8c}::ng-deep .configure-resolution-table .table-row .table-column.assignee{width:15rem;min-width:15rem}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box{border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;height:2.5rem;width:100%}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box .value{color:#a9aab6}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box .arrow{color:#787a8c}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box{background:#f9f9fa;border-radius:.25rem;border:1px solid #cdced6;height:2.5rem;width:100%}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box .value-chip{background:#fff;border-radius:.125rem;border:1px solid #f4f8ff;box-shadow:0 0 2px #1e5dd326;color:#000;height:1.5rem;max-width:9.5rem;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box button.edit-btn{background:transparent;border-radius:0;border:none}::ng-deep .configure-resolution-table .table-row .table-column.deadline{width:10rem;min-width:10rem}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\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.ToolTipDirective, selector: "[appTooltip]", inputs: ["appTooltip", "placement", "type", "tooltipMandatory", "showTooltip", "animate"] }, { 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", "nonRemovableUsersList", "removePosition"], outputs: ["closeEvent", "deleteEvent", "closeList", "deleteGroupEvent", "workflowTypeChanged"] }, { kind: "component", type: i6.DatePickerComponent, selector: "dp-date-picker", inputs: ["config", "mode", "placeholder", "disabled", "displayDate", "theme", "minDate", "maxDate", "minTime", "maxTime"], outputs: ["open", "close", "onChange", "onGoToCurrent", "onLeftNav", "onRightNav", "onSelect"] }, { kind: "directive", type: i7.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: i7.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i8.LoaderInlineComponent, selector: "app-loader-inline" }, { kind: "component", type: i9.AssigneeComponent, selector: "app-assignee", inputs: ["assigneeList", "activeAssignee", "payload"], outputs: ["closeEvent", "selectedAssigneeEvent"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }] }); }
|
|
278
278
|
}
|
|
279
279
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DueDateComponent, decorators: [{
|
|
280
280
|
type: Component,
|
|
281
|
-
args: [{ selector: 'app-due-date', template: "<div class=\"configure-resolution\">\n <div\n class=\"configure-resolution-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\n >\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">\n Configure Resolution Deadline & Stage Details\n </div>\n </div>\n <div class=\"configure-resolution-body\">\n <div class=\"configure-resolution-body-inner\">\n <app-loader-inline *ngIf=\"false\"></app-loader-inline>\n <app-no-data\n *ngIf=\"false\"\n [noDataImage]=\"\n 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\n \"\n [noDataText]=\"'No data to display'\"\n ></app-no-data>\n\n <ng-container>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n SPECIFY THE DEADLINE TO CLOSE THIS CASE\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <div\n class=\"case-calendar vx-d-flex vx-justify-between vx-pt-3 vx-pb-3 vx-mb-3\"\n >\n <div class=\"case-calendar-inner vx-d-flex vx-align-center\">\n <input\n type=\"text\"\n readonly\n placeholder=\"{{\n dueDateTexts.case_details.due_date.deadline_placeholder\n }}\"\n (click)=\"openDatePicker()\"\n [value]=\"dueDate | date : 'dd MMM yyyy'\"\n id=\"effective-date\"\n />\n <i class=\"icons\"></i>\n <dp-date-picker\n #datePicker\n (onSelect)=\"datePickerOverlay = false; closeDatePicker($event)\"\n [config]=\"dateConfig\"\n [(ngModel)]=\"dueDate\"\n >\n </dp-date-picker>\n <div\n class=\"vx-overlay\"\n (click)=\"closeDatePicker($event)\"\n *ngIf=\"datePickerOverlay\"\n ></div>\n </div>\n </div>\n <div *ngIf=\"showError\" class=\"errorMsg vx-fs-11 vx-lh-4 vx-mt-1\">\n {{ dueDateTexts.errorMessage.dueDate }}\n </div>\n <div class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-1\">\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-tt-uppercase\"\n >\n CONFIGURE DEADLINE & ASSIGNEE FOR EACH STAGE IN THE WORKFLOW\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <!-- <div class=\"toggle-area vx-d-flex vx-align-center\">\n <app-cs-switch>Allow Reopening of Previous Stage</app-cs-switch>\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-2\"\n [appTooltip]=\"\n 'If enabled, this option allows the assignee to revisit and reopen a previously completed stage. The stage will be reset, and the assigned user will need to complete it again.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\n >\n </div> -->\n </div>\n <div class=\"configure-resolution-table\">\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 stage-name\"\n >\n STAGE NAME\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 status\"\n >\n TRANSITION STATUS\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.transition_status\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\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 assignee\"\n >\n ASSIGNEE\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.assignee\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\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 deadline\"\n >\n DEADLINE\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.deadline\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\n >\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <div\n class=\"table-row\"\n *ngFor=\"\n let data of workflowDetails?.stages_assignees;\n let i = index\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 vx-fs-13 vx-d-flex vx-align-center vx-justify-center\"\n [appTooltip]=\"i + 1\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ i + 1 }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center stage-name\"\n >\n <div\n class=\"value vx-fs-13 vx-pr-2\"\n [appTooltip]=\"data?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ data?.name }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center status\"\n >\n <div class=\"value vx-fs-12\">\n {{ data?.status_transition?.fromName }}<br /><span\n class=\"vx-mr-1\"\n >To</span\n >{{ data?.status_transition?.toName }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center assignee\"\n (click)=\"activateSelector(true, i)\"\n >\n <div\n *ngIf=\"!assigneeData[i]?.length\"\n class=\"select-box vx-d-flex vx-align-center vx-justify-between vx-pl-3 vx-pr-3\"\n >\n <div class=\"value vx-fs-13\">Select a User</div>\n <i class=\"icons arrow vx-fs-12\"></i>\n </div>\n <div\n *ngIf=\"assigneeData[i]?.length > 0\"\n class=\"after-select-box vx-d-flex vx-align-center vx-justify-between vx-pl-3 vx-pr-2\"\n >\n <div\n class=\"value-chip vx-fs-11 vx-pl-2 vx-pr-2 vx-lh-6\"\n [appTooltip]=\"assigneeData[i][0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ assigneeData[i][0]?.member_name }}\n </div>\n <button\n (click)=\"activateSelector(true, i)\"\n class=\"edit-btn vx-fs-11 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\n >\n <i class=\"icons vx-fs-12 vx-txt-blue vx-mr-1\"></i\n >EDIT\n </button>\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-2 vx-d-flex vx-align-center deadline\"\n >\n <div\n class=\"case-calendar vx-d-flex vx-justify-between vx-pt-3 vx-pb-3\"\n [class.disabled]=\"true\"\n >\n <div class=\"case-calendar-inner vx-d-flex vx-align-center\">\n <input\n type=\"text\"\n readonly\n value=\"{{ dueDate | date : 'dd MMM yyyy' }}\"\n (click)=\"openDatePicker()\"\n id=\"effective-date\"\n />\n <i class=\"icons\"></i>\n <dp-date-picker\n #datePicker\n (onSelect)=\"\n datePickerOverlay = false; closeDatePicker($event)\n \"\n [config]=\"dateConfig\"\n >\n </dp-date-picker>\n <div\n class=\"vx-overlay\"\n (click)=\"closeDatePicker($event)\"\n *ngIf=\"datePickerOverlay\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"showAssigneeError\"\n class=\"errorMsg vx-fs-11 vx-lh-4 vx-mt-1\"\n >\n {{ dueDateTexts.errorMessage.stageAssignee }}\n </div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n EMAIL REMINDER CONFIGURATION\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <div class=\"divider vx-mb-2\"></div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n REMINDER EMAIL\n </div>\n <div\n class=\"email-configure-box vx-d-flex vx-align-center vx-flex-wrap vx-p-2 vx-pl-3 vx-pr-3 vx-mb-2\"\n >\n <div class=\"vx-fs-13 vx-mr-1\">\n Send regular email reminders to the assignee\n </div>\n <input\n type=\"number\"\n [(ngModel)]=\"emailReminder\"\n onkeydown=\"return event.key !== '.'\"\n oninput=\"this.value = Math.abs(this.value)\"\n (change)=\"onInputChange()\"\n />\n <div class=\"vx-fs-13 vx-ml-1\">\n <span class=\"black-text\">days</span> before the stage deadline.\n </div>\n </div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n ESCALATION EMAIL\n </div>\n <div\n class=\"email-configure-box vx-d-flex vx-align-center vx-flex-wrap vx-p-2 vx-pl-3 vx-pr-3 vx-mb-2\"\n >\n <div class=\"vx-fs-13 vx-mr-1\">\n Send email escalation to the Case Owner\n </div>\n <input\n type=\"number\"\n [(ngModel)]=\"escalationEmail\"\n onkeydown=\"return event.key !== '.'\"\n oninput=\"this.value = Math.abs(this.value)\"\n (change)=\"onInputChange()\"\n />\n <div class=\"vx-fs-13 vx-ml-1\">\n <span class=\"black-text\">days</span> before the overall case\n deadline, if the case is still open.\n </div>\n </div>\n </ng-container>\n </div>\n <app-floating-bar\n (closeList)=\"closeDueDate()\"\n (closeEvent)=\"saveCaseResolutionDeadline()\"\n ></app-floating-bar>\n </div>\n</div>\n<app-assignee\n *ngIf=\"assigneeClicked\"\n [payload]=\"payload\"\n [assigneeList]=\"assigneeList\"\n [activeAssignee]=\"activeAssignee\"\n (selectedAssigneeEvent)=\"selectedAssignee($event)\"\n (closeEvent)=\"activateSelector(false)\"\n></app-assignee>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.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/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.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-bottom.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/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\";::ng-deep .configure-resolution{background:#fff;position:fixed;inset:0 500px 0 0;z-index:1}::ng-deep .configure-resolution:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .configure-resolution.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .configure-resolution-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .configure-resolution-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .configure-resolution-body-inner{height:calc(100% - 3rem);padding:0 2rem 1rem 0;width:calc(100% + 2rem);overflow-y:auto;scrollbar-width:thin}::ng-deep .configure-resolution-body-inner .divider{background:#e3e3e9;width:100%;height:1px}::ng-deep .configure-resolution-body .label-top .required{color:#c7381b}::ng-deep .configure-resolution-body .errorMsg{color:#a82a1d}::ng-deep .configure-resolution-body .toggle-area{cursor:pointer}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch{order:1;width:24px!important;min-width:24px!important;height:16px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch .switch-box{background:#cdced6!important;border:1px solid #cdced6!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch .switch-ball{height:12px!important;width:12px!important;border:none!important;left:2px!important;top:2px!important;bottom:2px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch input:checked+span.switch-box{background:#34aa44!important;border-color:#34aa44!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch input:checked+span.switch-box .switch-ball{left:10px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .value{order:2;color:#000!important;cursor:pointer;font-size:11px!important;margin-left:.5rem;width:unset!important}::ng-deep .configure-resolution-body .toggle-area i.info{cursor:pointer}::ng-deep .configure-resolution-body .case-calendar{background:#fff;border-radius:.25rem;height:2.5rem}::ng-deep .configure-resolution-body .case-calendar-inner{position:relative;width:100%}::ng-deep .configure-resolution-body .case-calendar-inner input{background:transparent;border-radius:.25rem;border:1px solid #cdced6;color:#747576;font-size:13px;font-weight:400;height:2.5rem;line-height:2.5rem;padding:0 .75rem 0 2rem;outline:none;width:100%;transition:all .2s ease-in-out}::ng-deep .configure-resolution-body .case-calendar-inner input::placeholder{color:#a9aab6}::ng-deep .configure-resolution-body .case-calendar-inner input:hover,::ng-deep .configure-resolution-body .case-calendar-inner input:focus{border-color:#1e5dd3}::ng-deep .configure-resolution-body .case-calendar-inner i{display:flex;justify-content:center;align-items:center;height:.75rem;width:.75rem;position:absolute;left:.75rem;top:.125rem;color:#747576;font-size:12px;pointer-events:none}::ng-deep .configure-resolution-body .case-calendar.disabled{background:#f2f2f5;pointer-events:none;opacity:1}::ng-deep .configure-resolution-body .case-calendar.disabled .case-calendar-inner input,::ng-deep .configure-resolution-body .case-calendar.disabled .case-calendar-inner i{color:#a9aab6}::ng-deep .configure-resolution-body .email-configure-box{border-radius:.25rem;border:1px solid #dbdbdb;color:#787a8c}::ng-deep .configure-resolution-body .email-configure-box input{-moz-appearance:textfield;border-radius:.25rem;border:1px solid #dbdbdb;color:#343952;display:inline-block;font-size:13px;text-align:center;width:2.25rem;height:1.75rem;padding:.125rem;outline:none}::ng-deep .configure-resolution-body .email-configure-box input::-webkit-inner-spin-button,::ng-deep .configure-resolution-body .email-configure-box input::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .configure-resolution-body .email-configure-box input::placeholder{color:#787a8c}::ng-deep .configure-resolution-body .email-configure-box .black-text{color:#000}::ng-deep .configure-resolution-table{border-radius:.25rem;border:1px solid #f2f2f5;margin-bottom:1.5rem}::ng-deep .configure-resolution-table .table-header{background:#fff;border-radius:.25rem .25rem 0 0}::ng-deep .configure-resolution-table .table-header .table-column{color:#787a8c!important;line-height:.75rem!important;min-height:2rem!important}::ng-deep .configure-resolution-table .table-row{display:flex;justify-content:space-between;position:relative}::ng-deep .configure-resolution-table .table-row:last-of-type .table-column,::ng-deep .configure-resolution-table .table-row:only-child .table-column{border-bottom:none}::ng-deep .configure-resolution-table .table-row .table-column{border-bottom:1px solid #f2f2f5;color:#000;min-height:3.25rem;position:relative;width:100%}::ng-deep .configure-resolution-table .table-row .table-column i.info{cursor:pointer}::ng-deep .configure-resolution-table .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .configure-resolution-table .table-row .table-column.serial .sr-no{width:1rem;height:3.25rem}::ng-deep .configure-resolution-table .table-row .table-column.stage-name{width:calc(100% - 37rem);min-width:calc(100% - 37rem)}::ng-deep .configure-resolution-table .table-row .table-column.stage-name .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .configure-resolution-table .table-row .table-column.status{width:10rem;min-width:10rem}::ng-deep .configure-resolution-table .table-row .table-column.status .value span{color:#787a8c}::ng-deep .configure-resolution-table .table-row .table-column.assignee{width:15rem;min-width:15rem}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box{border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;height:2.5rem;width:100%}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box .value{color:#a9aab6}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box .arrow{color:#787a8c}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box{background:#f9f9fa;border-radius:.25rem;border:1px solid #cdced6;height:2.5rem;width:100%}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box .value-chip{background:#fff;border-radius:.125rem;border:1px solid #f4f8ff;box-shadow:0 0 2px #1e5dd326;color:#000;height:1.5rem;max-width:9.5rem;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box button.edit-btn{background:transparent;border-radius:0;border:none}::ng-deep .configure-resolution-table .table-row .table-column.deadline{width:10rem;min-width:10rem}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"] }]
|
|
281
|
+
args: [{ selector: 'app-due-date', template: "<div class=\"configure-resolution\">\n <div\n class=\"configure-resolution-head vx-d-flex vx-align-center vx-justify-between vx-pl-4 vx-pr-4\"\n >\n <div class=\"vx-fs-14 vx-fw-500 vx-label-txt\">\n Configure Resolution Deadline & Stage Details\n </div>\n </div>\n <div class=\"configure-resolution-body\">\n <div class=\"configure-resolution-body-inner\">\n <app-loader-inline *ngIf=\"false\"></app-loader-inline>\n <app-no-data\n *ngIf=\"false\"\n [noDataImage]=\"\n 'https://cdn.v-comply.com/libraries/workflow-engine/assets/workflow/search-data.svg'\n \"\n [noDataText]=\"'No data to display'\"\n ></app-no-data>\n\n <ng-container>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n SPECIFY THE DEADLINE TO CLOSE THIS CASE\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <div\n class=\"case-calendar vx-mb-3\"\n >\n <div class=\"case-calendar-inner vx-d-flex vx-align-center\">\n <input\n type=\"text\"\n readonly\n placeholder=\"{{\n dueDateTexts.case_details.due_date.deadline_placeholder\n }}\"\n (click)=\"openDatePicker()\"\n [value]=\"dueDate | date : 'dd MMM yyyy'\"\n id=\"effective-date\"\n />\n <i class=\"icons\"></i>\n <dp-date-picker\n #datePicker\n (onSelect)=\"datePickerOverlay = false; closeDatePicker($event)\"\n [config]=\"dateConfig\"\n [(ngModel)]=\"dueDate\"\n >\n </dp-date-picker>\n <div\n class=\"vx-overlay\"\n (click)=\"closeDatePicker($event)\"\n *ngIf=\"datePickerOverlay\"\n ></div>\n </div>\n <div *ngIf=\"showError\" class=\"errorMsg vx-fs-11 vx-lh-4 vx-mt-1\">\n {{ dueDateTexts.errorMessage.dueDate }}\n </div>\n </div>\n <div class=\"vx-d-flex vx-align-center vx-justify-between vx-mb-1\">\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-tt-uppercase\"\n >\n CONFIGURE DEADLINE & ASSIGNEE FOR EACH STAGE IN THE WORKFLOW\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <!-- <div class=\"toggle-area vx-d-flex vx-align-center\">\n <app-cs-switch>Allow Reopening of Previous Stage</app-cs-switch>\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-2\"\n [appTooltip]=\"\n 'If enabled, this option allows the assignee to revisit and reopen a previously completed stage. The stage will be reset, and the assigned user will need to complete it again.'\n \"\n placement=\"bottom-right\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\n >\n </div> -->\n </div>\n <div class=\"configure-resolution-table\">\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 stage-name\"\n >\n STAGE NAME\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 status\"\n >\n TRANSITION STATUS\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.transition_status\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\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 assignee\"\n >\n ASSIGNEE\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.assignee\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\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 deadline\"\n >\n DEADLINE\n <i\n class=\"icons info vx-fs-12 vx-txt-blue vx-ml-1\"\n [appTooltip]=\"helperText.deadline\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"white\"\n [tooltipMandatory]=\"true\"\n ></i\n >\n </div>\n </div>\n </div>\n <div class=\"table-body\">\n <div\n class=\"table-row\"\n *ngFor=\"\n let data of workflowDetails?.stages_assignees;\n let i = index\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 vx-fs-13 vx-d-flex vx-align-center vx-justify-center\"\n [appTooltip]=\"i + 1\"\n placement=\"bottom\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"true\"\n >\n {{ i + 1 }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center stage-name\"\n >\n <div\n class=\"value vx-fs-13 vx-pr-2\"\n [appTooltip]=\"data?.name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ data?.name }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center status\"\n >\n <div class=\"value vx-fs-12\">\n {{ data?.status_transition?.fromName }}<br /><span\n class=\"vx-mr-1\"\n >To</span\n >{{ data?.status_transition?.toName }}\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-1 vx-d-flex vx-align-center assignee\"\n (click)=\"activateSelector(true, i)\"\n >\n <div\n *ngIf=\"!assigneeData[i]?.length\"\n class=\"select-box vx-d-flex vx-align-center vx-justify-between vx-pl-3 vx-pr-3\"\n >\n <div class=\"value vx-fs-13\">Select a User</div>\n <i class=\"icons arrow vx-fs-12\"></i>\n </div>\n <div\n *ngIf=\"assigneeData[i]?.length > 0\"\n class=\"after-select-box vx-d-flex vx-align-center vx-justify-between vx-pl-3 vx-pr-2\"\n >\n <div\n class=\"value-chip vx-fs-11 vx-pl-2 vx-pr-2 vx-lh-6\"\n [appTooltip]=\"assigneeData[i][0]?.member_name\"\n placement=\"bottom-left\"\n delay=\"0\"\n type=\"black\"\n [tooltipMandatory]=\"false\"\n >\n {{ assigneeData[i][0]?.member_name }}\n </div>\n <button\n (click)=\"activateSelector(true, i)\"\n class=\"edit-btn vx-fs-11 vx-fw-500 vx-txt-blue vx-tt-uppercase vx-p-0 vx-m-0 vx-d-flex vx-align-center\"\n >\n <i class=\"icons vx-fs-12 vx-txt-blue vx-mr-1\"></i\n >EDIT\n </button>\n </div>\n </div>\n <div\n class=\"table-column vx-pl-1 vx-pr-2 vx-d-flex vx-align-center deadline\"\n >\n <div\n class=\"case-calendar vx-d-flex vx-justify-between vx-pt-3 vx-pb-3\"\n [class.disabled]=\"true\"\n >\n <div class=\"case-calendar-inner vx-d-flex vx-align-center\">\n <input\n type=\"text\"\n readonly\n value=\"{{ dueDate | date : 'dd MMM yyyy' }}\"\n (click)=\"openDatePicker()\"\n id=\"effective-date\"\n />\n <i class=\"icons\"></i>\n <dp-date-picker\n #datePicker\n (onSelect)=\"\n datePickerOverlay = false; closeDatePicker($event)\n \"\n [config]=\"dateConfig\"\n >\n </dp-date-picker>\n <div\n class=\"vx-overlay\"\n (click)=\"closeDatePicker($event)\"\n *ngIf=\"datePickerOverlay\"\n ></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div\n *ngIf=\"showAssigneeError\"\n class=\"errorMsg vx-fs-11 vx-lh-4 vx-mt-1\"\n >\n {{ dueDateTexts.errorMessage.stageAssignee }}\n </div>\n </div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n EMAIL REMINDER CONFIGURATION\n <span class=\"required vx-fs-16 vx-fw-400\">*</span>\n </div>\n <div class=\"divider vx-mb-2\"></div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n REMINDER EMAIL\n </div>\n <div\n class=\"email-configure-box vx-d-flex vx-align-center vx-flex-wrap vx-p-2 vx-pl-3 vx-pr-3 vx-mb-2\"\n >\n <div class=\"vx-fs-13 vx-mr-1\">\n Send regular email reminders to the assignee\n </div>\n <input\n type=\"number\"\n [(ngModel)]=\"emailReminder\"\n onkeydown=\"return event.key !== '.'\"\n oninput=\"this.value = Math.abs(this.value)\"\n (change)=\"onInputChange()\"\n />\n <div class=\"vx-fs-13 vx-ml-1\">\n <span class=\"black-text\">days</span> before the stage deadline.\n </div>\n </div>\n <div\n class=\"label-top vx-fs-11 vx-fw-500 vx-label-txt vx-lh-4 vx-mb-1 vx-tt-uppercase\"\n >\n ESCALATION EMAIL\n </div>\n <div\n class=\"email-configure-box vx-d-flex vx-align-center vx-flex-wrap vx-p-2 vx-pl-3 vx-pr-3 vx-mb-2\"\n >\n <div class=\"vx-fs-13 vx-mr-1\">\n Send email escalation to the Case Owner\n </div>\n <input\n type=\"number\"\n [(ngModel)]=\"escalationEmail\"\n onkeydown=\"return event.key !== '.'\"\n oninput=\"this.value = Math.abs(this.value)\"\n (change)=\"onInputChange()\"\n />\n <div class=\"vx-fs-13 vx-ml-1\">\n <span class=\"black-text\">days</span> before the overall case\n deadline, if the case is still open.\n </div>\n </div>\n </ng-container>\n </div>\n <app-floating-bar\n (closeList)=\"closeDueDate()\"\n (closeEvent)=\"saveCaseResolutionDeadline()\"\n ></app-floating-bar>\n </div>\n</div>\n<app-assignee\n *ngIf=\"assigneeClicked\"\n [payload]=\"payload\"\n [assigneeList]=\"assigneeList\"\n [activeAssignee]=\"activeAssignee\"\n (selectedAssigneeEvent)=\"selectedAssignee($event)\"\n (closeEvent)=\"activateSelector(false)\"\n></app-assignee>\n", styles: ["@import\"https://cdn.v-comply.com/design-system/css/icons/icons.css\";@import\"https://cdn.v-comply.com/design-system/css/display/display.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/color/color.css\";@import\"https://cdn.v-comply.com/design-system/css/width/width.css\";@import\"https://cdn.v-comply.com/design-system/css/margin/margin.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-bottom.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/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\";::ng-deep .configure-resolution{background:#fff;position:fixed;inset:0 500px 0 0;z-index:1}::ng-deep .configure-resolution:before{background:#1e5dd3;content:\"\";position:absolute;top:0;left:0;right:0;width:100%;height:3px}::ng-deep .configure-resolution.animate{animation:animate-right .2s cubic-bezier(.25,.46,.45,.94) both;z-index:-1}::ng-deep .configure-resolution-head{background:#fbfbfb;border-bottom:1px solid #f1f1f1;height:2.75rem}::ng-deep .configure-resolution-body{background:#fff;height:calc(100vh - 2.75rem);padding:2rem}::ng-deep .configure-resolution-body-inner{height:calc(100% - 3rem);padding:0 2rem 1rem 0;width:calc(100% + 2rem);overflow-y:auto;scrollbar-width:thin}::ng-deep .configure-resolution-body-inner .divider{background:#e3e3e9;width:100%;height:1px}::ng-deep .configure-resolution-body .label-top .required{color:#c7381b}::ng-deep .configure-resolution-body .errorMsg{color:#a82a1d}::ng-deep .configure-resolution-body .toggle-area{cursor:pointer}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch{order:1;width:24px!important;min-width:24px!important;height:16px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch .switch-box{background:#cdced6!important;border:1px solid #cdced6!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch .switch-ball{height:12px!important;width:12px!important;border:none!important;left:2px!important;top:2px!important;bottom:2px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch input:checked+span.switch-box{background:#34aa44!important;border-color:#34aa44!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .switch input:checked+span.switch-box .switch-ball{left:10px!important}::ng-deep .configure-resolution-body .toggle-area app-cs-switch .cs-switch .value{order:2;color:#000!important;cursor:pointer;font-size:11px!important;margin-left:.5rem;width:unset!important}::ng-deep .configure-resolution-body .toggle-area i.info{cursor:pointer}::ng-deep .configure-resolution-body .case-calendar{background:#fff;border-radius:.25rem}::ng-deep .configure-resolution-body .case-calendar-inner{position:relative;width:100%}::ng-deep .configure-resolution-body .case-calendar-inner input{background:transparent;border-radius:.25rem;border:1px solid #cdced6;color:#747576;font-size:13px;font-weight:400;height:2.5rem;line-height:2.5rem;padding:0 .75rem 0 2rem;outline:none;width:100%;transition:all .2s ease-in-out}::ng-deep .configure-resolution-body .case-calendar-inner input::placeholder{color:#a9aab6}::ng-deep .configure-resolution-body .case-calendar-inner input:hover,::ng-deep .configure-resolution-body .case-calendar-inner input:focus{border-color:#1e5dd3}::ng-deep .configure-resolution-body .case-calendar-inner i{display:flex;justify-content:center;align-items:center;height:.75rem;width:.75rem;position:absolute;left:.75rem;top:.75rem;color:#747576;font-size:12px;pointer-events:none}::ng-deep .configure-resolution-body .case-calendar.disabled{background:#f2f2f5;pointer-events:none;opacity:1}::ng-deep .configure-resolution-body .case-calendar.disabled .case-calendar-inner input,::ng-deep .configure-resolution-body .case-calendar.disabled .case-calendar-inner i{color:#a9aab6}::ng-deep .configure-resolution-body .email-configure-box{border-radius:.25rem;border:1px solid #dbdbdb;color:#787a8c}::ng-deep .configure-resolution-body .email-configure-box input{-moz-appearance:textfield;border-radius:.25rem;border:1px solid #dbdbdb;color:#343952;display:inline-block;font-size:13px;text-align:center;width:2.25rem;height:1.75rem;padding:.125rem;outline:none}::ng-deep .configure-resolution-body .email-configure-box input::-webkit-inner-spin-button,::ng-deep .configure-resolution-body .email-configure-box input::-webkit-outer-spin-button{-webkit-appearance:none}::ng-deep .configure-resolution-body .email-configure-box input::placeholder{color:#787a8c}::ng-deep .configure-resolution-body .email-configure-box .black-text{color:#000}::ng-deep .configure-resolution-table{margin-bottom:.75rem}::ng-deep .configure-resolution-table .table-header{background:#fff;border-radius:.25rem .25rem 0 0;border:1px solid #f2f2f5;border-bottom:none}::ng-deep .configure-resolution-table .table-header .table-column{color:#787a8c!important;line-height:.75rem!important;min-height:2rem!important}::ng-deep .configure-resolution-table .table-body{border-radius:0 0 .25rem .25rem;border:1px solid #f2f2f5;border-top:none}::ng-deep .configure-resolution-table .table-row{display:flex;justify-content:space-between;position:relative}::ng-deep .configure-resolution-table .table-row:last-of-type .table-column,::ng-deep .configure-resolution-table .table-row:only-child .table-column{border-bottom:none}::ng-deep .configure-resolution-table .table-row .table-column{border-bottom:1px solid #f2f2f5;color:#000;min-height:3.25rem;position:relative;width:100%}::ng-deep .configure-resolution-table .table-row .table-column i.info{cursor:pointer}::ng-deep .configure-resolution-table .table-row .table-column.serial{width:2rem;max-width:2rem;justify-content:center}::ng-deep .configure-resolution-table .table-row .table-column.serial .sr-no{width:1rem;height:3.25rem}::ng-deep .configure-resolution-table .table-row .table-column.stage-name{width:calc(100% - 37rem);min-width:calc(100% - 37rem)}::ng-deep .configure-resolution-table .table-row .table-column.stage-name .value{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .configure-resolution-table .table-row .table-column.status{width:10rem;min-width:10rem}::ng-deep .configure-resolution-table .table-row .table-column.status .value span{color:#787a8c}::ng-deep .configure-resolution-table .table-row .table-column.assignee{width:15rem;min-width:15rem}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box{border-radius:.25rem;border:1px solid #cdced6;cursor:pointer;height:2.5rem;width:100%}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box .value{color:#a9aab6}::ng-deep .configure-resolution-table .table-row .table-column.assignee .select-box .arrow{color:#787a8c}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box{background:#f9f9fa;border-radius:.25rem;border:1px solid #cdced6;height:2.5rem;width:100%}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box .value-chip{background:#fff;border-radius:.125rem;border:1px solid #f4f8ff;box-shadow:0 0 2px #1e5dd326;color:#000;height:1.5rem;max-width:9.5rem;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::ng-deep .configure-resolution-table .table-row .table-column.assignee .after-select-box button.edit-btn{background:transparent;border-radius:0;border:none}::ng-deep .configure-resolution-table .table-row .table-column.deadline{width:10rem;min-width:10rem}@keyframes animate-right{0%{transform:translate(100%)}to{transform:translate(0)}}\n"] }]
|
|
282
282
|
}], ctorParameters: function () { return [{ type: i1.CommonService }, { type: i2.FrequencyService }]; }, propDecorators: { datePicker: [{
|
|
283
283
|
type: ViewChild,
|
|
284
284
|
args: ['datePicker']
|
|
@@ -305,4 +305,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
305
305
|
type: HostListener,
|
|
306
306
|
args: ['document:click', ['$event']]
|
|
307
307
|
}] } });
|
|
308
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVlLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvcmVwb3J0LWEtY2FzZS9jb21wb25lbnRzL2R1ZS1kYXRlL2R1ZS1kYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3JlcG9ydC1hLWNhc2UvY29tcG9uZW50cy9kdWUtZGF0ZS9kdWUtZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBQ1osWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFDTCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGVBQWUsR0FDaEIsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7QUFVL0MsTUFBTSxPQUFPLGdCQUFnQjtJQWdDM0IsSUFBYSxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3RDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsQ0FBQztRQUNwRCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsQ0FBQztRQUN4RSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsQ0FBQztJQUN6RSxDQUFDO0lBS0QsWUFDVSxpQkFBZ0MsRUFDaEMsZ0JBQWtDO1FBRGxDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBZTtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBeEM1QyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWpCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixlQUFV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QiwwakJBRU0sVUFBVSw2QkM1QjdDLG1qWkFzVUE7OzRGRDVTYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsY0FBYzttSUFLQyxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBRXZCLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBeUJuRCxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNPLGdCQUFnQjtzQkFBNUIsS0FBSztnQkFNSSxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQW9RUCxhQUFhO3NCQURaLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50LCBJRGF0ZVBpY2tlckNvbmZpZyB9IGZyb20gJ25nMi1kYXRlLXBpY2tlcic7XG5cbmltcG9ydCB7XG4gIFJFUE9SVF9DQVNFLFxuICBIRUxQRVJfVEVYVCxcbiAgRU1BSUxfUkVNSU5ERVJTLFxufSBmcm9tICcuLi8uLi9jb25zdGFudHMvcmVwb3J0LWNhc2UuY29uc3RhbnRzJztcblxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZyZXF1ZW5jeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kdWUtZGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kdWUtZGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2R1ZS1kYXRlLmNvbXBvbmVudC5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIER1ZURhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2RhdGVQaWNrZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgYW5pbWF0aW9uID0gdHJ1ZTtcbiAgZGF0ZVBpY2tlclBvcFVwITogRWxlbWVudFJlZjtcbiAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcbiAgZGF0ZUNvbmZpZzogSURhdGVQaWNrZXJDb25maWcgPSB7XG4gICAgZGlzYWJsZUtleXByZXNzOiB0cnVlLFxuICAgIGZvcm1hdDogJ0REIE1NIFlZWVknLFxuICAgIHVuU2VsZWN0T25DbGljazogdHJ1ZSxcbiAgICBvcGVuT25DbGljazogZmFsc2UsXG4gICAgb3Blbk9uRm9jdXM6IGZhbHNlLFxuICAgIG1pbjogJycsXG4gIH07XG4gIGNvbW1vblNlcnZpY2U6IGFueTtcbiAgZHVlRGF0ZVRleHRzID0gUkVQT1JUX0NBU0U7XG4gIGhlbHBlclRleHQgPSBIRUxQRVJfVEVYVDtcbiAgYXNzaWduZWVDbGlja2VkOiBib29sZWFuID0gZmFsc2U7XG4gIGFzc2lnbmVlTGlzdDogYW55W10gPSBbXTtcbiAgYXNzaWduZWVEYXRhOiB7IFtrZXk6IG51bWJlcl06IGFueVtdIH0gPSB7fTtcbiAgY3VycmVudFN0YWdlSW5kZXg6IG51bWJlciA9IC0xO1xuICBhY3RpdmVBc3NpZ25lZTogYW55W10gPSBbXTtcbiAgZW1haWxSZW1pbmRlcjogbnVtYmVyID0gRU1BSUxfUkVNSU5ERVJTLmVtYWlsX3JlbWluZGVyO1xuICBlc2NhbGF0aW9uRW1haWw6IG51bWJlciA9IEVNQUlMX1JFTUlOREVSUy5lc2NhbGF0aW9uX2VtYWlsX3JlbWluZGVyO1xuICBzaG93RXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0Fzc2lnbmVlRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBwYXlsb2FkOiBhbnk7XG4gIEBJbnB1dCgpIGR1ZURhdGU6IGFueTtcbiAgQElucHV0KCkgd29ya2Zsb3dEZXRhaWxzOiBhbnk7XG4gIEBJbnB1dCgpIHVzZXJMaXN0OiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBncm91cExpc3Q6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIHNldCBpbml0aWFsU2VsZWN0aW9uKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmR1ZURhdGUgPSB2YWx1ZT8ucmVzb2x1dGlvbl9kZWFkbGluZT8uZHVlX2RhdGU7XG4gICAgdGhpcy5lbWFpbFJlbWluZGVyID0gdmFsdWU/LnJlc29sdXRpb25fZGVhZGxpbmU/LmFzc2lnbmVlX3JlbWluZF9iZWZvcmU7XG4gICAgdGhpcy5lc2NhbGF0aW9uRW1haWwgPSB2YWx1ZT8ucmVzb2x1dGlvbl9kZWFkbGluZT8ub3duZXJfcmVtaW5kX2JlZm9yZTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBjbG9zZUR1ZURhdGVSZXNvbHV0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2xvc2VEdWVEYXRlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb21tb25EYXRlU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZUNvbmZpZy5taW4gPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZm9ybWF0RGF0ZSgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcbiAgICB9LCAzMDApO1xuICAgIHRoaXMuc2V0QXNzaWduZWVMaXN0KCk7XG4gICAgdGhpcy5pbml0aWFsaXplRWRpdE1vZGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUVkaXRNb2RlKCkge1xuICAgIGlmICghdGhpcy5wYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8ucmVzb2x1dGlvbl9kZWFkbGluZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgZGVhZGxpbmUgPSB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZTtcbiAgICB0aGlzLmluaXRpYWxpemVEZWFkbGluZVZhbHVlcyhkZWFkbGluZSk7XG4gICAgdGhpcy5pbml0aWFsaXplU3RhZ2VBc3NpZ25lZXMoZGVhZGxpbmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplRGVhZGxpbmVWYWx1ZXMoZGVhZGxpbmU6IGFueSkge1xuICAgIHRoaXMuZHVlRGF0ZSA9IGRlYWRsaW5lLmR1ZV9kYXRlID8gbmV3IERhdGUoZGVhZGxpbmUuZHVlX2RhdGUpIDogbnVsbDtcbiAgICB0aGlzLmVtYWlsUmVtaW5kZXIgPVxuICAgICAgZGVhZGxpbmUuYXNzaWduZWVfcmVtaW5kX2JlZm9yZSB8fCBFTUFJTF9SRU1JTkRFUlMuZW1haWxfcmVtaW5kZXI7XG4gICAgdGhpcy5lc2NhbGF0aW9uRW1haWwgPVxuICAgICAgZGVhZGxpbmUub3duZXJfcmVtaW5kX2JlZm9yZSB8fCBFTUFJTF9SRU1JTkRFUlMuZXNjYWxhdGlvbl9lbWFpbF9yZW1pbmRlcjtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVN0YWdlQXNzaWduZWVzKGRlYWRsaW5lOiBhbnkpIHtcbiAgICBpZiAoIWRlYWRsaW5lPy5zdGFnZXNfYXNzaWduZWVzPy5sZW5ndGgpIHJldHVybjtcblxuICAgIGNvbnN0IHN0YWdlQXNzaWduZWVNYXAgPSB0aGlzLmNyZWF0ZVN0YWdlQXNzaWduZWVNYXAoXG4gICAgICBkZWFkbGluZS5zdGFnZXNfYXNzaWduZWVzXG4gICAgKTtcbiAgICB0aGlzLm1hcFdvcmtmbG93U3RhZ2VzKHN0YWdlQXNzaWduZWVNYXApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTdGFnZUFzc2lnbmVlTWFwKHN0YWdlc0Fzc2lnbmVlczogYW55W10pOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IE1hcChcbiAgICAgIHN0YWdlc0Fzc2lnbmVlcy5tYXAoKHN0YWdlOiBhbnkpID0+IFtzdGFnZT8uc3RhZ2VfaWQsIHN0YWdlPy5hc3NpZ25lZV9pZF0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwV29ya2Zsb3dTdGFnZXMoc3RhZ2VBc3NpZ25lZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPikge1xuICAgIHRoaXMud29ya2Zsb3dEZXRhaWxzPy5zdGFnZXNfYXNzaWduZWVzPy5mb3JFYWNoKFxuICAgICAgKHdvcmtmbG93U3RhZ2U6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBhc3NpZ25lZUlkID0gc3RhZ2VBc3NpZ25lZU1hcD8uZ2V0KHdvcmtmbG93U3RhZ2U/LnN0YWdlX2lkKTtcbiAgICAgICAgaWYgKCFhc3NpZ25lZUlkKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgYXNzaWduZWUgPSB0aGlzLmFzc2lnbmVlTGlzdD8uZmluZChcbiAgICAgICAgICAoYXNzaWduZWU6IGFueSkgPT4gYXNzaWduZWU/Ll9pZCA9PT0gYXNzaWduZWVJZFxuICAgICAgICApO1xuICAgICAgICBpZiAoYXNzaWduZWUpIHtcbiAgICAgICAgICB0aGlzLmFzc2lnbmVlRGF0YVtpbmRleF0gPSBbYXNzaWduZWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG9wZW5EYXRlUGlja2VyKCkge1xuICAgIHRoaXMuZGF0ZVBpY2tlcj8uYXBpPy5vcGVuKCk7XG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogY2xvc2VzIHRoZSBkYXRlIHBpY2tlciBmcm9tIHBvbGljeSBmb3JtXG4gICAqL1xuICBjbG9zZURhdGVQaWNrZXIoZXZ0OiBhbnkpIHtcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XG5cbiAgICBpZiAoIWV2dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXZ0Py5kYXRlPy4kZCkge1xuICAgICAgbGV0IG1vbnRoQXJyYXkgPSBbXG4gICAgICAgICdKYW4nLFxuICAgICAgICAnRmViJyxcbiAgICAgICAgJ01hcicsXG4gICAgICAgICdBcHInLFxuICAgICAgICAnSnVuJyxcbiAgICAgICAgJ0p1bCcsXG4gICAgICAgICdBdWcnLFxuICAgICAgICAnU2VwJyxcbiAgICAgICAgJ09jdCcsXG4gICAgICAgICdOb3YnLFxuICAgICAgICAnRGVjJyxcbiAgICAgIF07XG4gICAgICBjb25zdCBkYXRlVmFsdWUgPSBuZXcgRGF0ZShldnQ/LmRhdGU/LiRkKS5nZXREYXRlKCk7XG4gICAgICBjb25zdCBtb250aFZhbHVlID0gbW9udGhBcnJheVtuZXcgRGF0ZShldnQ/LmRhdGU/LiRkKS5nZXRNb250aCgpXTtcbiAgICAgIGNvbnN0IHllYXJWYWx1ZSA9IG5ldyBEYXRlKGV2dD8uZGF0ZT8uJGQpLmdldEZ1bGxZZWFyKCk7XG4gICAgICBjb25zdCBkYXRlU3RyID0gYCR7ZGF0ZVZhbHVlfSAke21vbnRoVmFsdWV9ICR7eWVhclZhbHVlfWA7XG4gICAgfVxuICAgIGlmIChldnQ/LmRhdGU/LiRkKSB7XG4gICAgICB0aGlzLmR1ZURhdGUgPSBldnQ/LmRhdGU/LiRkO1xuICAgICAgdGhpcy5zaG93RXJyb3IgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5kYXRlUGlja2VyPy5hcGk/LmNsb3NlKCk7XG4gIH1cblxuICBjbG9zZUR1ZURhdGUoKSB7XG4gICAgdGhpcy5jbG9zZUR1ZURhdGVFdmVudC5lbWl0KCk7XG4gIH1cblxuICBhY3RpdmF0ZVNlbGVjdG9yKGFjdGl2ZTogYm9vbGVhbiwgc3RhZ2VJbmRleD86IG51bWJlcikge1xuICAgIHRoaXMuYXNzaWduZWVDbGlja2VkID0gYWN0aXZlO1xuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIHRoaXMuY3VycmVudFN0YWdlSW5kZXggPSBzdGFnZUluZGV4ID8/IC0xO1xuICAgICAgdGhpcy5hY3RpdmVBc3NpZ25lZSA9XG4gICAgICAgIHRoaXMuY3VycmVudFN0YWdlSW5kZXggIT09IC0xXG4gICAgICAgICAgPyB0aGlzLmFzc2lnbmVlRGF0YVt0aGlzLmN1cnJlbnRTdGFnZUluZGV4XVxuICAgICAgICAgIDogW107XG4gICAgfVxuICB9XG5cbiAgc2V0QXNzaWduZWVMaXN0KCkge1xuICAgIGNvbnN0IGRpcmVjdEFzc2lnbmVlcyA9IHRoaXMuZ2V0QXNzaWduZWVzKCk7XG4gICAgY29uc3QgZ3JvdXBBc3NpZ25lZXMgPSB0aGlzLmdldEdyb3VwQXNzaWduZWVzKCk7XG4gICAgdGhpcy5hc3NpZ25lZUxpc3QgPSB0aGlzLmdldFVuaXF1ZUFzc2lnbmVlcyhkaXJlY3RBc3NpZ25lZXMsIGdyb3VwQXNzaWduZWVzKTtcbiAgfVxuXG4gIGdldEFzc2lnbmVlcygpOiBhbnlbXSB7XG4gICAgY29uc3QgYXNzaWduZWVJZHMgPSB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3c/LmFzc2lnbmVlcyB8fCBbXTtcbiAgICBcbiAgICByZXR1cm4gdGhpcy51c2VyTGlzdFxuICAgICAgPy5maWx0ZXIoKHVzZXI6IGFueSkgPT4gYXNzaWduZWVJZHMuaW5jbHVkZXModXNlcj8uX2lkKSlcbiAgICAgID8ubWFwKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgdXNlckdyb3VwcyA9IHRoaXMuZ2V0VXNlckdyb3Vwcyh1c2VyKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi51c2VyLFxuICAgICAgICAgIGFzc29jaWF0ZWRHcm91cHM6IHVzZXJHcm91cHMsXG4gICAgICAgIH07XG4gICAgICB9KSB8fCBbXTtcbiAgfVxuXG4gIGdldFVzZXJHcm91cHModXNlcjogYW55KTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLmdyb3VwTGlzdD8uZmlsdGVyKChncm91cDogYW55KSA9PlxuICAgICAgdXNlcj8udXNlcmdyb3VwX2lkPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpXG4gICAgKTtcbiAgfVxuXG4gIGdldEdyb3VwQXNzaWduZWVzKCk6IGFueVtdIHtcbiAgICBjb25zdCBhc3NpZ25lZUdyb3VwSWRzID0gdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93Py5hc3NpZ25lZXNfZ3JvdXAgfHwgW107XG4gICAgXG4gICAgcmV0dXJuIGFzc2lnbmVlR3JvdXBJZHMuZmxhdE1hcCgoZ3JvdXBJZDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBncm91cCA9IHRoaXMuZmluZEdyb3VwQnlJZChncm91cElkKTtcbiAgICAgIHJldHVybiB0aGlzLmdldEFzc2lnbmVlc0Zyb21Hcm91cChncm91cCk7XG4gICAgfSkgfHwgW107XG4gIH1cblxuICBmaW5kR3JvdXBCeUlkKGdyb3VwSWQ6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBMaXN0Py5maW5kKChncm91cDogYW55KSA9PiBncm91cD8uX2lkID09PSBncm91cElkKTtcbiAgfVxuXG4gIGdldEFzc2lnbmVlc0Zyb21Hcm91cChncm91cDogYW55KTogYW55W10ge1xuICAgIHJldHVybiBncm91cD8uYXNzb2NpYXRlZFVzZXJzPy5tYXAoKHVzZXI6IGFueSkgPT4ge1xuICAgICAgY29uc3QgdXNlckZyb21MaXN0ID0gdGhpcy5maW5kVXNlckJ5SWQodXNlcj8udXNlcklkPy5faWQpO1xuICAgICAgaWYgKHVzZXJGcm9tTGlzdCkge1xuICAgICAgICBjb25zdCB1c2VyR3JvdXBzID0gdGhpcy5nZXRVc2VyR3JvdXBzKHVzZXJGcm9tTGlzdCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4udXNlckZyb21MaXN0LFxuICAgICAgICAgIGFzc29jaWF0ZWRHcm91cHM6IHVzZXJHcm91cHMsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9KS5maWx0ZXIoKHVzZXI6IGFueSkgPT4gdXNlciAhPT0gbnVsbCkgfHwgW107XG4gIH1cblxuICBmaW5kVXNlckJ5SWQodXNlcklkOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnVzZXJMaXN0Py5maW5kKCh1c2VyOiBhbnkpID0+IHVzZXI/Ll9pZCA9PT0gdXNlcklkKTtcbiAgfVxuXG4gIGdldFVuaXF1ZUFzc2lnbmVlcyhkaXJlY3RBc3NpZ25lZXM6IGFueVtdLCBncm91cEFzc2lnbmVlczogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIFsuLi5kaXJlY3RBc3NpZ25lZXMsIC4uLmdyb3VwQXNzaWduZWVzXS5yZWR1Y2UoKGFjYzogYW55W10sIHVzZXI6IGFueSkgPT4ge1xuICAgICAgaWYgKCFhY2Muc29tZSgodTogYW55KSA9PiB1Py5faWQgPT09IHVzZXI/Ll9pZCkpIHtcbiAgICAgICAgYWNjLnB1c2godXNlcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHNlbGVjdGVkQXNzaWduZWUoZXZlbnQ6IGFueVtdKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFN0YWdlSW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLmFzc2lnbmVlRGF0YVt0aGlzLmN1cnJlbnRTdGFnZUluZGV4XSA9IGV2ZW50O1xuICAgIH1cbiAgICB0aGlzLmFzc2lnbmVlQ2xpY2tlZCA9IGZhbHNlO1xuICAgIGlmIChldmVudD8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zaG93QXNzaWduZWVFcnJvciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHNhdmVDYXNlUmVzb2x1dGlvbkRlYWRsaW5lKCkge1xuICAgIGlmICghdGhpcy5pc0R1ZURhdGVWYWxpZCgpKSB7XG4gICAgICB0aGlzLnNob3dFcnJvciA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICghdGhpcy5hcmVBc3NpZ25lZXNWYWxpZCgpKSB7XG4gICAgICB0aGlzLnNob3dBc3NpZ25lZUVycm9yID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zaG93RXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dBc3NpZ25lZUVycm9yID0gZmFsc2U7XG4gICAgdGhpcy5zZXRQYXlsb2FkKCk7XG4gICAgdGhpcy5jbG9zZUR1ZURhdGVSZXNvbHV0aW9uLmVtaXQoKTtcbiAgfVxuXG4gIGlzRHVlRGF0ZVZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZHVlRGF0ZTtcbiAgfVxuXG4gIGFyZUFzc2lnbmVlc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLndvcmtmbG93RGV0YWlscz8uc3RhZ2VzX2Fzc2lnbmVlcz8uZXZlcnkoXG4gICAgICAoc3RhZ2U6IGFueSwgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgdGhpcy5hc3NpZ25lZURhdGFbaW5kZXhdICYmIHRoaXMuYXNzaWduZWVEYXRhW2luZGV4XT8ubGVuZ3RoID4gMFxuICAgICk7XG4gIH1cblxuICBmb3JtYXREdWVEYXRlKGRhdGU6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUpLnRvSVNPU3RyaW5nKCk7XG4gIH1cblxuICBzZXREZWFkbGluZVJlbWluZGVycygpOiB2b2lkIHtcbiAgICB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZS5hc3NpZ25lZV9yZW1pbmRfYmVmb3JlID1cbiAgICAgIHRoaXMuZW1haWxSZW1pbmRlcjtcbiAgICB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZS5vd25lcl9yZW1pbmRfYmVmb3JlID1cbiAgICAgIHRoaXMuZXNjYWxhdGlvbkVtYWlsO1xuICB9XG5cbiAgc2V0U3RhZ2VzQXNzaWduZWVzKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy53b3JrZmxvd0RldGFpbHM/LnN0YWdlc19hc3NpZ25lZXNcbiAgICAgIC5tYXAoKHN0YWdlOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgYXNzaWduZWVEYXRhID0gdGhpcy5hc3NpZ25lZURhdGFbaW5kZXhdO1xuICAgICAgICByZXR1cm4gYXNzaWduZWVEYXRhXG4gICAgICAgICAgPyB0aGlzLmNyZWF0ZVN0YWdlQXNzaWduZWUoc3RhZ2UsIGFzc2lnbmVlRGF0YSlcbiAgICAgICAgICA6IG51bGw7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgfVxuXG4gIGNyZWF0ZVN0YWdlQXNzaWduZWUoc3RhZ2U6IGFueSwgYXNzaWduZWVEYXRhOiBhbnlbXSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YWdlX2lkOiBzdGFnZT8uc3RhZ2VfaWQgfHwgJycsXG4gICAgICBhc3NpZ25lZV9pZDogYXNzaWduZWVEYXRhWzBdPy5faWQgfHwgJycsXG4gICAgICBkdWVfZGF0ZTogc3RhZ2U/LmR1ZV9kYXRlIHx8ICcnLFxuICAgIH07XG4gIH1cblxuICBzZXRQYXlsb2FkKCkge1xuICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLmZvcm1hdER1ZURhdGUodGhpcy5kdWVEYXRlKTtcbiAgICB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZS5kdWVfZGF0ZSA9IGZvcm1hdHRlZERhdGU7XG4gICAgdGhpcy5zZXREZWFkbGluZVJlbWluZGVycygpO1xuICAgIGNvbnN0IHN0YWdlc0Fzc2lnbmVlcyA9IHRoaXMuc2V0U3RhZ2VzQXNzaWduZWVzKCk7XG4gICAgdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93LnJlc29sdXRpb25fZGVhZGxpbmUuc3RhZ2VzX2Fzc2lnbmVlcyA9XG4gICAgICBzdGFnZXNBc3NpZ25lZXM7XG4gICAgdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93LndvcmtmbG93X2lkID0gdGhpcy53b3JrZmxvd0RldGFpbHM/Ll9pZDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgZG9jdW1lbnRDbGljayhldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZVBpY2tlck9iamVjdCA9IHtcbiAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgIGNsYXNzOiAnZWZmZWN0aXZlLWRhdGUnLFxuICAgICAgcG9wdXA6IHRoaXMuZGF0ZVBpY2tlclBvcFVwLFxuICAgICAgY29tcG9uZW50OiB0aGlzLmRhdGVQaWNrZXIsXG4gICAgICBvdmVybGF5OiB0aGlzLmRhdGVQaWNrZXJPdmVybGF5LFxuICAgIH07XG4gICAgdGhpcy5jb21tb25EYXRlU2VydmljZS5oYW5kbGVEb2N1bWVudENsaWNrKGRhdGVQaWNrZXJPYmplY3QpO1xuICB9XG5cbiAgb25JbnB1dENoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5lbWFpbFJlbWluZGVyID09PSAwKSB7XG4gICAgICB0aGlzLmVtYWlsUmVtaW5kZXIgPSBFTUFJTF9SRU1JTkRFUlMuZW1haWxfcmVtaW5kZXI7XG4gICAgfVxuICAgIGlmICh0aGlzLmVzY2FsYXRpb25FbWFpbCA9PT0gMCkge1xuICAgICAgdGhpcy5lc2NhbGF0aW9uRW1haWwgPSBFTUFJTF9SRU1JTkRFUlMuZXNjYWxhdGlvbl9lbWFpbF9yZW1pbmRlcjtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvblwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvbi1oZWFkIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBsLTQgdngtcHItNFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPlxuICAgICAgQ29uZmlndXJlIFJlc29sdXRpb24gRGVhZGxpbmUgJiBTdGFnZSBEZXRhaWxzXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29uZmlndXJlLXJlc29sdXRpb24tYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvbi1ib2R5LWlubmVyXCI+XG4gICAgICA8YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJmYWxzZVwiPjwvYXBwLWxvYWRlci1pbmxpbmU+XG4gICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgKm5nSWY9XCJmYWxzZVwiXG4gICAgICAgIFtub0RhdGFJbWFnZV09XCJcbiAgICAgICAgICAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3NlYXJjaC1kYXRhLnN2ZydcbiAgICAgICAgXCJcbiAgICAgICAgW25vRGF0YVRleHRdPVwiJ05vIGRhdGEgdG8gZGlzcGxheSdcIlxuICAgICAgPjwvYXBwLW5vLWRhdGE+XG5cbiAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImxhYmVsLXRvcCB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LWxoLTQgdngtbWItMSB2eC10dC11cHBlcmNhc2VcIlxuICAgICAgICA+XG4gICAgICAgICAgU1BFQ0lGWSBUSEUgREVBRExJTkUgVE8gQ0xPU0UgVEhJUyBDQVNFXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZCB2eC1mcy0xNiB2eC1mdy00MDBcIj4qPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY2FzZS1jYWxlbmRhciB2eC1kLWZsZXggdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXB0LTMgdngtcGItMyB2eC1tYi0zXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXNlLWNhbGVuZGFyLWlubmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tcbiAgICAgICAgICAgICAgICBkdWVEYXRlVGV4dHMuY2FzZV9kZXRhaWxzLmR1ZV9kYXRlLmRlYWRsaW5lX3BsYWNlaG9sZGVyXG4gICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5EYXRlUGlja2VyKClcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiZHVlRGF0ZSB8IGRhdGUgOiAnZGQgTU1NIHl5eXknXCJcbiAgICAgICAgICAgICAgaWQ9XCJlZmZlY3RpdmUtZGF0ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MmQ7PC9pPlxuICAgICAgICAgICAgPGRwLWRhdGUtcGlja2VyXG4gICAgICAgICAgICAgICNkYXRlUGlja2VyXG4gICAgICAgICAgICAgIChvblNlbGVjdCk9XCJkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlOyBjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtjb25maWddPVwiZGF0ZUNvbmZpZ1wiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZHVlRGF0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2RwLWRhdGUtcGlja2VyPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LW92ZXJsYXlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VEYXRlUGlja2VyKCRldmVudClcIlxuICAgICAgICAgICAgICAqbmdJZj1cImRhdGVQaWNrZXJPdmVybGF5XCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzaG93RXJyb3JcIiBjbGFzcz1cImVycm9yTXNnIHZ4LWZzLTExIHZ4LWxoLTQgdngtbXQtMVwiPlxuICAgICAgICAgIHt7IGR1ZURhdGVUZXh0cy5lcnJvck1lc3NhZ2UuZHVlRGF0ZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LW1iLTFcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImxhYmVsLXRvcCB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LWxoLTQgdngtdHQtdXBwZXJjYXNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBDT05GSUdVUkUgREVBRExJTkUgJiBBU1NJR05FRSBGT1IgRUFDSCBTVEFHRSBJTiBUSEUgV09SS0ZMT1dcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWQgdngtZnMtMTYgdngtZnctNDAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0b2dnbGUtYXJlYSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8YXBwLWNzLXN3aXRjaD5BbGxvdyBSZW9wZW5pbmcgb2YgUHJldmlvdXMgU3RhZ2U8L2FwcC1jcy1zd2l0Y2g+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMlwiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdJZiBlbmFibGVkLCB0aGlzIG9wdGlvbiBhbGxvd3MgdGhlIGFzc2lnbmVlIHRvIHJldmlzaXQgYW5kIHJlb3BlbiBhIHByZXZpb3VzbHkgY29tcGxldGVkIHN0YWdlLiBUaGUgc3RhZ2Ugd2lsbCBiZSByZXNldCwgYW5kIHRoZSBhc3NpZ25lZCB1c2VyIHdpbGwgbmVlZCB0byBjb21wbGV0ZSBpdCBhZ2Fpbi4nXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJlLXJlc29sdXRpb24tdGFibGVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcm93XCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc2VyaWFsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICNcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc3RhZ2UtbmFtZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBTVEFHRSBOQU1FXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHN0YXR1c1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBUUkFOU0lUSU9OIFNUQVRVU1xuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJoZWxwZXJUZXh0LnRyYW5zaXRpb25fc3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBhc3NpZ25lZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBBU1NJR05FRVxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJoZWxwZXJUZXh0LmFzc2lnbmVlXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBkZWFkbGluZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBERUFETElORVxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJoZWxwZXJUZXh0LmRlYWRsaW5lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib2R5XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtcm93XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgb2Ygd29ya2Zsb3dEZXRhaWxzPy5zdGFnZXNfYXNzaWduZWVzO1xuICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHNlcmlhbFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNyLW5vIHZ4LWZzLTEzIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiaSArIDFcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgaSArIDEgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzdGFnZS1uYW1lXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWUgdngtZnMtMTMgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJkYXRhPy5uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGRhdGE/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzdGF0dXNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlIHZ4LWZzLTEyXCI+XG4gICAgICAgICAgICAgICAgICB7eyBkYXRhPy5zdGF0dXNfdHJhbnNpdGlvbj8uZnJvbU5hbWUgfX08YnIgLz48c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgICA+VG88L3NwYW5cbiAgICAgICAgICAgICAgICAgID57eyBkYXRhPy5zdGF0dXNfdHJhbnNpdGlvbj8udG9OYW1lIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgYXNzaWduZWVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKHRydWUsIGkpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWFzc2lnbmVlRGF0YVtpXT8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWJveCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wbC0zIHZ4LXByLTNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xM1wiPlNlbGVjdCBhIFVzZXI8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgYXJyb3cgdngtZnMtMTJcIj4mI3hlOWU4OzwvaT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImFzc2lnbmVlRGF0YVtpXT8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImFmdGVyLXNlbGVjdC1ib3ggdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGwtMyB2eC1wci0yXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWUtY2hpcCB2eC1mcy0xMSB2eC1wbC0yIHZ4LXByLTIgdngtbGgtNlwiXG4gICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImFzc2lnbmVlRGF0YVtpXVswXT8ubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgYXNzaWduZWVEYXRhW2ldWzBdPy5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKHRydWUsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0LWJ0biB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbXItMVwiPiYjeGU5YmE7PC9pXG4gICAgICAgICAgICAgICAgICAgID5FRElUXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBkZWFkbGluZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNhc2UtY2FsZW5kYXIgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wdC0zIHZ4LXBiLTNcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXNlLWNhbGVuZGFyLWlubmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7eyBkdWVEYXRlIHwgZGF0ZSA6ICdkZCBNTU0geXl5eScgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuRGF0ZVBpY2tlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImVmZmVjdGl2ZS1kYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MmQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICA8ZHAtZGF0ZS1waWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAjZGF0ZVBpY2tlclxuICAgICAgICAgICAgICAgICAgICAgIChvblNlbGVjdCk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7IGNsb3NlRGF0ZVBpY2tlcigkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImRhdGVDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvZHAtZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LW92ZXJsYXlcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkYXRlUGlja2VyT3ZlcmxheVwiXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwic2hvd0Fzc2lnbmVlRXJyb3JcIlxuICAgICAgICAgIGNsYXNzPVwiZXJyb3JNc2cgdngtZnMtMTEgdngtbGgtNCB2eC1tdC0xXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGR1ZURhdGVUZXh0cy5lcnJvck1lc3NhZ2Uuc3RhZ2VBc3NpZ25lZSB9fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibGFiZWwtdG9wIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtbGgtNCB2eC1tYi0xIHZ4LXR0LXVwcGVyY2FzZVwiXG4gICAgICAgID5cbiAgICAgICAgICBFTUFJTCBSRU1JTkRFUiBDT05GSUdVUkFUSU9OXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZCB2eC1mcy0xNiB2eC1mdy00MDBcIj4qPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXIgdngtbWItMlwiPjwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJsYWJlbC10b3AgdngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC1saC00IHZ4LW1iLTEgdngtdHQtdXBwZXJjYXNlXCJcbiAgICAgICAgPlxuICAgICAgICAgIFJFTUlOREVSIEVNQUlMXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJlbWFpbC1jb25maWd1cmUtYm94IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtZmxleC13cmFwIHZ4LXAtMiB2eC1wbC0zIHZ4LXByLTMgdngtbWItMlwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtbXItMVwiPlxuICAgICAgICAgICAgU2VuZCByZWd1bGFyIGVtYWlsIHJlbWluZGVycyB0byB0aGUgYXNzaWduZWVcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbWFpbFJlbWluZGVyXCJcbiAgICAgICAgICAgIG9ua2V5ZG93bj1cInJldHVybiBldmVudC5rZXkgIT09ICcuJ1wiXG4gICAgICAgICAgICBvbmlucHV0PVwidGhpcy52YWx1ZSA9IE1hdGguYWJzKHRoaXMudmFsdWUpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25JbnB1dENoYW5nZSgpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMyB2eC1tbC0xXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJsYWNrLXRleHRcIj5kYXlzPC9zcGFuPiBiZWZvcmUgdGhlIHN0YWdlIGRlYWRsaW5lLlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibGFiZWwtdG9wIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtbGgtNCB2eC1tYi0xIHZ4LXR0LXVwcGVyY2FzZVwiXG4gICAgICAgID5cbiAgICAgICAgICBFU0NBTEFUSU9OIEVNQUlMXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJlbWFpbC1jb25maWd1cmUtYm94IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtZmxleC13cmFwIHZ4LXAtMiB2eC1wbC0zIHZ4LXByLTMgdngtbWItMlwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtbXItMVwiPlxuICAgICAgICAgICAgU2VuZCBlbWFpbCBlc2NhbGF0aW9uIHRvIHRoZSBDYXNlIE93bmVyXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZXNjYWxhdGlvbkVtYWlsXCJcbiAgICAgICAgICAgIG9ua2V5ZG93bj1cInJldHVybiBldmVudC5rZXkgIT09ICcuJ1wiXG4gICAgICAgICAgICBvbmlucHV0PVwidGhpcy52YWx1ZSA9IE1hdGguYWJzKHRoaXMudmFsdWUpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25JbnB1dENoYW5nZSgpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMyB2eC1tbC0xXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJsYWNrLXRleHRcIj5kYXlzPC9zcGFuPiBiZWZvcmUgdGhlIG92ZXJhbGwgY2FzZVxuICAgICAgICAgICAgZGVhZGxpbmUsIGlmIHRoZSBjYXNlIGlzIHN0aWxsIG9wZW4uXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGFwcC1mbG9hdGluZy1iYXJcbiAgICAgIChjbG9zZUxpc3QpPVwiY2xvc2VEdWVEYXRlKClcIlxuICAgICAgKGNsb3NlRXZlbnQpPVwic2F2ZUNhc2VSZXNvbHV0aW9uRGVhZGxpbmUoKVwiXG4gICAgPjwvYXBwLWZsb2F0aW5nLWJhcj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxhcHAtYXNzaWduZWVcbiAgKm5nSWY9XCJhc3NpZ25lZUNsaWNrZWRcIlxuICBbcGF5bG9hZF09XCJwYXlsb2FkXCJcbiAgW2Fzc2lnbmVlTGlzdF09XCJhc3NpZ25lZUxpc3RcIlxuICBbYWN0aXZlQXNzaWduZWVdPVwiYWN0aXZlQXNzaWduZWVcIlxuICAoc2VsZWN0ZWRBc3NpZ25lZUV2ZW50KT1cInNlbGVjdGVkQXNzaWduZWUoJGV2ZW50KVwiXG4gIChjbG9zZUV2ZW50KT1cImFjdGl2YXRlU2VsZWN0b3IoZmFsc2UpXCJcbj48L2FwcC1hc3NpZ25lZT5cbiJdfQ==
|
|
308
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVlLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdngtd29ya2Zsb3ctZW5naW5lL3NyYy9saWIvcmVwb3J0LWEtY2FzZS9jb21wb25lbnRzL2R1ZS1kYXRlL2R1ZS1kYXRlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Z4LXdvcmtmbG93LWVuZ2luZS9zcmMvbGliL3JlcG9ydC1hLWNhc2UvY29tcG9uZW50cy9kdWUtZGF0ZS9kdWUtZGF0ZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBRUwsU0FBUyxFQUNULE1BQU0sRUFDTixZQUFZLEVBQ1osWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBR3ZCLE9BQU8sRUFDTCxXQUFXLEVBQ1gsV0FBVyxFQUNYLGVBQWUsR0FDaEIsTUFBTSx1Q0FBdUMsQ0FBQzs7Ozs7Ozs7Ozs7QUFVL0MsTUFBTSxPQUFPLGdCQUFnQjtJQWdDM0IsSUFBYSxnQkFBZ0IsQ0FBQyxLQUFVO1FBQ3RDLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxFQUFFLG1CQUFtQixFQUFFLFFBQVEsQ0FBQztRQUNwRCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsQ0FBQztRQUN4RSxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxtQkFBbUIsQ0FBQztJQUN6RSxDQUFDO0lBS0QsWUFDVSxpQkFBZ0MsRUFDaEMsZ0JBQWtDO1FBRGxDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBZTtRQUNoQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBeEM1QyxjQUFTLEdBQUcsSUFBSSxDQUFDO1FBRWpCLHNCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMxQixlQUFVLEdBQXNCO1lBQzlCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLE1BQU0sRUFBRSxZQUFZO1lBQ3BCLGVBQWUsRUFBRSxJQUFJO1lBQ3JCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLEdBQUcsRUFBRSxFQUFFO1NBQ1IsQ0FBQztRQUVGLGlCQUFZLEdBQUcsV0FBVyxDQUFDO1FBQzNCLGVBQVUsR0FBRyxXQUFXLENBQUM7UUFDekIsb0JBQWUsR0FBWSxLQUFLLENBQUM7UUFDakMsaUJBQVksR0FBVSxFQUFFLENBQUM7UUFDekIsaUJBQVksR0FBNkIsRUFBRSxDQUFDO1FBQzVDLHNCQUFpQixHQUFXLENBQUMsQ0FBQyxDQUFDO1FBQy9CLG1CQUFjLEdBQVUsRUFBRSxDQUFDO1FBQzNCLGtCQUFhLEdBQVcsZUFBZSxDQUFDLGNBQWMsQ0FBQztRQUN2RCxvQkFBZSxHQUFXLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQztRQUNwRSxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUsxQixhQUFRLEdBQVUsRUFBRSxDQUFDO1FBQ3JCLGNBQVMsR0FBVSxFQUFFLENBQUM7UUFPckIsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUM1QyxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO0lBSzlDLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3pELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztRQUN6QixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDUixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLGtCQUFrQjtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsbUJBQW1CO1lBQUUsT0FBTztRQUUvRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQztRQUNqRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFTyx3QkFBd0IsQ0FBQyxRQUFhO1FBQzVDLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDdEUsSUFBSSxDQUFDLGFBQWE7WUFDaEIsUUFBUSxDQUFDLHNCQUFzQixJQUFJLGVBQWUsQ0FBQyxjQUFjLENBQUM7UUFDcEUsSUFBSSxDQUFDLGVBQWU7WUFDbEIsUUFBUSxDQUFDLG1CQUFtQixJQUFJLGVBQWUsQ0FBQyx5QkFBeUIsQ0FBQztJQUM5RSxDQUFDO0lBRU8sd0JBQXdCLENBQUMsUUFBYTtRQUM1QyxJQUFJLENBQUMsUUFBUSxFQUFFLGdCQUFnQixFQUFFLE1BQU07WUFBRSxPQUFPO1FBRWhELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUNsRCxRQUFRLENBQUMsZ0JBQWdCLENBQzFCLENBQUM7UUFDRixJQUFJLENBQUMsaUJBQWlCLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU8sc0JBQXNCLENBQUMsZUFBc0I7UUFDbkQsT0FBTyxJQUFJLEdBQUcsQ0FDWixlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQzNFLENBQUM7SUFDSixDQUFDO0lBRU8saUJBQWlCLENBQUMsZ0JBQXFDO1FBQzdELElBQUksQ0FBQyxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxDQUM3QyxDQUFDLGFBQWtCLEVBQUUsS0FBYSxFQUFFLEVBQUU7WUFDcEMsTUFBTSxVQUFVLEdBQUcsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsVUFBVTtnQkFBRSxPQUFPO1lBRXhCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUN0QyxDQUFDLFFBQWEsRUFBRSxFQUFFLENBQUMsUUFBUSxFQUFFLEdBQUcsS0FBSyxVQUFVLENBQ2hELENBQUM7WUFDRixJQUFJLFFBQVEsRUFBRTtnQkFDWixJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDdkM7UUFDSCxDQUFDLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlLENBQUMsR0FBUTtRQUN0QixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1FBRS9CLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDUixPQUFPO1NBQ1I7UUFDRCxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ2pCLElBQUksVUFBVSxHQUFHO2dCQUNmLEtBQUs7Z0JBQ0wsS0FBSztnQkFDTCxLQUFLO2dCQUNMLEtBQUs7Z0JBQ0wsS0FBSztnQkFDTCxLQUFLO2dCQUNMLEtBQUs7Z0JBQ0wsS0FBSztnQkFDTCxLQUFLO2dCQUNMLEtBQUs7Z0JBQ0wsS0FBSzthQUNOLENBQUM7WUFDRixNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BELE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDbEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN4RCxNQUFNLE9BQU8sR0FBRyxHQUFHLFNBQVMsSUFBSSxVQUFVLElBQUksU0FBUyxFQUFFLENBQUM7U0FDM0Q7UUFDRCxJQUFJLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7U0FDeEI7UUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsWUFBWTtRQUNWLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsTUFBZSxFQUFFLFVBQW1CO1FBQ25ELElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDO1FBQzlCLElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFVBQVUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsY0FBYztnQkFDakIsSUFBSSxDQUFDLGlCQUFpQixLQUFLLENBQUMsQ0FBQztvQkFDM0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDO29CQUMzQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQ1Y7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUM1QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELFlBQVk7UUFDVixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxTQUFTLElBQUksRUFBRSxDQUFDO1FBRWpFLE9BQU8sSUFBSSxDQUFDLFFBQVE7WUFDbEIsRUFBRSxNQUFNLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3hELEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUU7WUFDbEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxPQUFPO2dCQUNMLEdBQUcsSUFBSTtnQkFDUCxnQkFBZ0IsRUFBRSxVQUFVO2FBQzdCLENBQUM7UUFDSixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDYixDQUFDO0lBRUQsYUFBYSxDQUFDLElBQVM7UUFDckIsT0FBTyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEtBQVUsRUFBRSxFQUFFLENBQzNDLElBQUksRUFBRSxZQUFZLEVBQUUsUUFBUSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FDOUMsQ0FBQztJQUNKLENBQUM7SUFFRCxpQkFBaUI7UUFDZixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLGVBQWUsSUFBSSxFQUFFLENBQUM7UUFFNUUsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFlLEVBQUUsRUFBRTtZQUNsRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFDLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNYLENBQUM7SUFFRCxhQUFhLENBQUMsT0FBZTtRQUMzQixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxLQUFVO1FBQzlCLE9BQU8sS0FBSyxFQUFFLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUMvQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDMUQsSUFBSSxZQUFZLEVBQUU7Z0JBQ2hCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQ3BELE9BQU87b0JBQ0wsR0FBRyxZQUFZO29CQUNmLGdCQUFnQixFQUFFLFVBQVU7aUJBQzdCLENBQUM7YUFDSDtZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRCxZQUFZLENBQUMsTUFBYztRQUN6QixPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLE1BQU0sQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxlQUFzQixFQUFFLGNBQXFCO1FBQzlELE9BQU8sQ0FBQyxHQUFHLGVBQWUsRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVUsRUFBRSxJQUFTLEVBQUUsRUFBRTtZQUM5RSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQy9DLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDaEI7WUFDRCxPQUFPLEdBQUcsQ0FBQztRQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNULENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFZO1FBQzNCLElBQUksSUFBSSxDQUFDLGlCQUFpQixLQUFLLENBQUMsQ0FBQyxFQUFFO1lBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsS0FBSyxDQUFDO1NBQ25EO1FBQ0QsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDN0IsSUFBSSxLQUFLLEVBQUUsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVELDBCQUEwQjtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFO1lBQzFCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLE9BQU87U0FDUjthQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBRTtZQUNwQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQzlCLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRUQsY0FBYztRQUNaLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxLQUFLLENBQ2xELENBQUMsS0FBVSxFQUFFLEtBQWEsRUFBRSxFQUFFLENBQzVCLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxNQUFNLEdBQUcsQ0FBQyxDQUNuRSxDQUFDO0lBQ0osQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFTO1FBQ3JCLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDdEMsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxzQkFBc0I7WUFDcEUsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUI7WUFDakUsSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxnQkFBZ0I7YUFDMUMsR0FBRyxDQUFDLENBQUMsS0FBVSxFQUFFLEtBQWEsRUFBRSxFQUFFO1lBQ2pDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDOUMsT0FBTyxZQUFZO2dCQUNqQixDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLEtBQUssRUFBRSxZQUFZLENBQUM7Z0JBQy9DLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDWCxDQUFDLENBQUM7YUFDRCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELG1CQUFtQixDQUFDLEtBQVUsRUFBRSxZQUFtQjtRQUNqRCxPQUFPO1lBQ0wsUUFBUSxFQUFFLEtBQUssRUFBRSxRQUFRLElBQUksRUFBRTtZQUMvQixXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFO1lBQ3ZDLFFBQVEsRUFBRSxLQUFLLEVBQUUsUUFBUSxJQUFJLEVBQUU7U0FDaEMsQ0FBQztJQUNKLENBQUM7SUFFRCxVQUFVO1FBQ1IsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsbUJBQW1CLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQztRQUN6RSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUM1QixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNsRCxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0I7WUFDOUQsZUFBZSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLEdBQUcsQ0FBQztJQUN0RSxDQUFDO0lBR0QsYUFBYSxDQUFDLEtBQVU7UUFDdEIsTUFBTSxnQkFBZ0IsR0FBRztZQUN2QixLQUFLLEVBQUUsS0FBSztZQUNaLEtBQUssRUFBRSxnQkFBZ0I7WUFDdkIsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQzNCLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMxQixPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQjtTQUNoQyxDQUFDO1FBQ0YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1CQUFtQixDQUFDLGdCQUFnQixDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxhQUFhLEtBQUssQ0FBQyxFQUFFO1lBQzVCLElBQUksQ0FBQyxhQUFhLEdBQUcsZUFBZSxDQUFDLGNBQWMsQ0FBQztTQUNyRDtRQUNELElBQUksSUFBSSxDQUFDLGVBQWUsS0FBSyxDQUFDLEVBQUU7WUFDOUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUMseUJBQXlCLENBQUM7U0FDbEU7SUFDSCxDQUFDOytHQTdUVSxnQkFBZ0I7bUdBQWhCLGdCQUFnQiwwakJBRU0sVUFBVSw2QkM1QjdDLHdoWkFzVUE7OzRGRDVTYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsY0FBYzttSUFLQyxVQUFVO3NCQUFsQyxTQUFTO3VCQUFDLFlBQVk7Z0JBRXZCLFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBeUJuRCxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNPLGdCQUFnQjtzQkFBNUIsS0FBSztnQkFNSSxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQW9RUCxhQUFhO3NCQURaLFlBQVk7dUJBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYXRlUGlja2VyQ29tcG9uZW50LCBJRGF0ZVBpY2tlckNvbmZpZyB9IGZyb20gJ25nMi1kYXRlLXBpY2tlcic7XG5cbmltcG9ydCB7XG4gIFJFUE9SVF9DQVNFLFxuICBIRUxQRVJfVEVYVCxcbiAgRU1BSUxfUkVNSU5ERVJTLFxufSBmcm9tICcuLi8uLi9jb25zdGFudHMvcmVwb3J0LWNhc2UuY29uc3RhbnRzJztcblxuaW1wb3J0IHsgQ29tbW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbW1vbi5zZXJ2aWNlJztcbmltcG9ydCB7IEZyZXF1ZW5jeVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWRDb21wb25lbnRzL2ZyZXF1ZW5jeS9mcmVxdWVuY3kuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1kdWUtZGF0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kdWUtZGF0ZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2R1ZS1kYXRlLmNvbXBvbmVudC5sZXNzJ10sXG59KVxuZXhwb3J0IGNsYXNzIER1ZURhdGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBAVmlld0NoaWxkKCdkYXRlUGlja2VyJykgZGF0ZVBpY2tlciE6IERhdGVQaWNrZXJDb21wb25lbnQ7XG4gIEBWaWV3Q2hpbGQoJ2RhdGVQaWNrZXInLCB7IHJlYWQ6IEVsZW1lbnRSZWYsIHN0YXRpYzogZmFsc2UgfSlcbiAgYW5pbWF0aW9uID0gdHJ1ZTtcbiAgZGF0ZVBpY2tlclBvcFVwITogRWxlbWVudFJlZjtcbiAgZGF0ZVBpY2tlck92ZXJsYXkgPSBmYWxzZTtcbiAgZGF0ZUNvbmZpZzogSURhdGVQaWNrZXJDb25maWcgPSB7XG4gICAgZGlzYWJsZUtleXByZXNzOiB0cnVlLFxuICAgIGZvcm1hdDogJ0REIE1NIFlZWVknLFxuICAgIHVuU2VsZWN0T25DbGljazogdHJ1ZSxcbiAgICBvcGVuT25DbGljazogZmFsc2UsXG4gICAgb3Blbk9uRm9jdXM6IGZhbHNlLFxuICAgIG1pbjogJycsXG4gIH07XG4gIGNvbW1vblNlcnZpY2U6IGFueTtcbiAgZHVlRGF0ZVRleHRzID0gUkVQT1JUX0NBU0U7XG4gIGhlbHBlclRleHQgPSBIRUxQRVJfVEVYVDtcbiAgYXNzaWduZWVDbGlja2VkOiBib29sZWFuID0gZmFsc2U7XG4gIGFzc2lnbmVlTGlzdDogYW55W10gPSBbXTtcbiAgYXNzaWduZWVEYXRhOiB7IFtrZXk6IG51bWJlcl06IGFueVtdIH0gPSB7fTtcbiAgY3VycmVudFN0YWdlSW5kZXg6IG51bWJlciA9IC0xO1xuICBhY3RpdmVBc3NpZ25lZTogYW55W10gPSBbXTtcbiAgZW1haWxSZW1pbmRlcjogbnVtYmVyID0gRU1BSUxfUkVNSU5ERVJTLmVtYWlsX3JlbWluZGVyO1xuICBlc2NhbGF0aW9uRW1haWw6IG51bWJlciA9IEVNQUlMX1JFTUlOREVSUy5lc2NhbGF0aW9uX2VtYWlsX3JlbWluZGVyO1xuICBzaG93RXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2hvd0Fzc2lnbmVlRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBwYXlsb2FkOiBhbnk7XG4gIEBJbnB1dCgpIGR1ZURhdGU6IGFueTtcbiAgQElucHV0KCkgd29ya2Zsb3dEZXRhaWxzOiBhbnk7XG4gIEBJbnB1dCgpIHVzZXJMaXN0OiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSBncm91cExpc3Q6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIHNldCBpbml0aWFsU2VsZWN0aW9uKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmR1ZURhdGUgPSB2YWx1ZT8ucmVzb2x1dGlvbl9kZWFkbGluZT8uZHVlX2RhdGU7XG4gICAgdGhpcy5lbWFpbFJlbWluZGVyID0gdmFsdWU/LnJlc29sdXRpb25fZGVhZGxpbmU/LmFzc2lnbmVlX3JlbWluZF9iZWZvcmU7XG4gICAgdGhpcy5lc2NhbGF0aW9uRW1haWwgPSB2YWx1ZT8ucmVzb2x1dGlvbl9kZWFkbGluZT8ub3duZXJfcmVtaW5kX2JlZm9yZTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBjbG9zZUR1ZURhdGVSZXNvbHV0aW9uID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgY2xvc2VEdWVEYXRlRXZlbnQgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjb21tb25EYXRlU2VydmljZTogQ29tbW9uU2VydmljZSxcbiAgICBwcml2YXRlIGZyZXF1ZW5jeVNlcnZpY2U6IEZyZXF1ZW5jeVNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuZGF0ZUNvbmZpZy5taW4gPSB0aGlzLmZyZXF1ZW5jeVNlcnZpY2UuZm9ybWF0RGF0ZSgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5hbmltYXRpb24gPSBmYWxzZTtcbiAgICB9LCAzMDApO1xuICAgIHRoaXMuc2V0QXNzaWduZWVMaXN0KCk7XG4gICAgdGhpcy5pbml0aWFsaXplRWRpdE1vZGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUVkaXRNb2RlKCkge1xuICAgIGlmICghdGhpcy5wYXlsb2FkPy5jYXNlVG9Xb3JrZmxvdz8ucmVzb2x1dGlvbl9kZWFkbGluZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgZGVhZGxpbmUgPSB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZTtcbiAgICB0aGlzLmluaXRpYWxpemVEZWFkbGluZVZhbHVlcyhkZWFkbGluZSk7XG4gICAgdGhpcy5pbml0aWFsaXplU3RhZ2VBc3NpZ25lZXMoZGVhZGxpbmUpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplRGVhZGxpbmVWYWx1ZXMoZGVhZGxpbmU6IGFueSkge1xuICAgIHRoaXMuZHVlRGF0ZSA9IGRlYWRsaW5lLmR1ZV9kYXRlID8gbmV3IERhdGUoZGVhZGxpbmUuZHVlX2RhdGUpIDogbnVsbDtcbiAgICB0aGlzLmVtYWlsUmVtaW5kZXIgPVxuICAgICAgZGVhZGxpbmUuYXNzaWduZWVfcmVtaW5kX2JlZm9yZSB8fCBFTUFJTF9SRU1JTkRFUlMuZW1haWxfcmVtaW5kZXI7XG4gICAgdGhpcy5lc2NhbGF0aW9uRW1haWwgPVxuICAgICAgZGVhZGxpbmUub3duZXJfcmVtaW5kX2JlZm9yZSB8fCBFTUFJTF9SRU1JTkRFUlMuZXNjYWxhdGlvbl9lbWFpbF9yZW1pbmRlcjtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVN0YWdlQXNzaWduZWVzKGRlYWRsaW5lOiBhbnkpIHtcbiAgICBpZiAoIWRlYWRsaW5lPy5zdGFnZXNfYXNzaWduZWVzPy5sZW5ndGgpIHJldHVybjtcblxuICAgIGNvbnN0IHN0YWdlQXNzaWduZWVNYXAgPSB0aGlzLmNyZWF0ZVN0YWdlQXNzaWduZWVNYXAoXG4gICAgICBkZWFkbGluZS5zdGFnZXNfYXNzaWduZWVzXG4gICAgKTtcbiAgICB0aGlzLm1hcFdvcmtmbG93U3RhZ2VzKHN0YWdlQXNzaWduZWVNYXApO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVTdGFnZUFzc2lnbmVlTWFwKHN0YWdlc0Fzc2lnbmVlczogYW55W10pOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICByZXR1cm4gbmV3IE1hcChcbiAgICAgIHN0YWdlc0Fzc2lnbmVlcy5tYXAoKHN0YWdlOiBhbnkpID0+IFtzdGFnZT8uc3RhZ2VfaWQsIHN0YWdlPy5hc3NpZ25lZV9pZF0pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgbWFwV29ya2Zsb3dTdGFnZXMoc3RhZ2VBc3NpZ25lZU1hcDogTWFwPHN0cmluZywgc3RyaW5nPikge1xuICAgIHRoaXMud29ya2Zsb3dEZXRhaWxzPy5zdGFnZXNfYXNzaWduZWVzPy5mb3JFYWNoKFxuICAgICAgKHdvcmtmbG93U3RhZ2U6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBhc3NpZ25lZUlkID0gc3RhZ2VBc3NpZ25lZU1hcD8uZ2V0KHdvcmtmbG93U3RhZ2U/LnN0YWdlX2lkKTtcbiAgICAgICAgaWYgKCFhc3NpZ25lZUlkKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgYXNzaWduZWUgPSB0aGlzLmFzc2lnbmVlTGlzdD8uZmluZChcbiAgICAgICAgICAoYXNzaWduZWU6IGFueSkgPT4gYXNzaWduZWU/Ll9pZCA9PT0gYXNzaWduZWVJZFxuICAgICAgICApO1xuICAgICAgICBpZiAoYXNzaWduZWUpIHtcbiAgICAgICAgICB0aGlzLmFzc2lnbmVlRGF0YVtpbmRleF0gPSBbYXNzaWduZWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIG9wZW5EYXRlUGlja2VyKCkge1xuICAgIHRoaXMuZGF0ZVBpY2tlcj8uYXBpPy5vcGVuKCk7XG4gICAgdGhpcy5kYXRlUGlja2VyT3ZlcmxheSA9IHRydWU7XG4gIH1cblxuICAvKipcbiAgICogY2xvc2VzIHRoZSBkYXRlIHBpY2tlciBmcm9tIHBvbGljeSBmb3JtXG4gICAqL1xuICBjbG9zZURhdGVQaWNrZXIoZXZ0OiBhbnkpIHtcbiAgICB0aGlzLmRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7XG5cbiAgICBpZiAoIWV2dCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoZXZ0Py5kYXRlPy4kZCkge1xuICAgICAgbGV0IG1vbnRoQXJyYXkgPSBbXG4gICAgICAgICdKYW4nLFxuICAgICAgICAnRmViJyxcbiAgICAgICAgJ01hcicsXG4gICAgICAgICdBcHInLFxuICAgICAgICAnSnVuJyxcbiAgICAgICAgJ0p1bCcsXG4gICAgICAgICdBdWcnLFxuICAgICAgICAnU2VwJyxcbiAgICAgICAgJ09jdCcsXG4gICAgICAgICdOb3YnLFxuICAgICAgICAnRGVjJyxcbiAgICAgIF07XG4gICAgICBjb25zdCBkYXRlVmFsdWUgPSBuZXcgRGF0ZShldnQ/LmRhdGU/LiRkKS5nZXREYXRlKCk7XG4gICAgICBjb25zdCBtb250aFZhbHVlID0gbW9udGhBcnJheVtuZXcgRGF0ZShldnQ/LmRhdGU/LiRkKS5nZXRNb250aCgpXTtcbiAgICAgIGNvbnN0IHllYXJWYWx1ZSA9IG5ldyBEYXRlKGV2dD8uZGF0ZT8uJGQpLmdldEZ1bGxZZWFyKCk7XG4gICAgICBjb25zdCBkYXRlU3RyID0gYCR7ZGF0ZVZhbHVlfSAke21vbnRoVmFsdWV9ICR7eWVhclZhbHVlfWA7XG4gICAgfVxuICAgIGlmIChldnQ/LmRhdGU/LiRkKSB7XG4gICAgICB0aGlzLmR1ZURhdGUgPSBldnQ/LmRhdGU/LiRkO1xuICAgICAgdGhpcy5zaG93RXJyb3IgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5kYXRlUGlja2VyPy5hcGk/LmNsb3NlKCk7XG4gIH1cblxuICBjbG9zZUR1ZURhdGUoKSB7XG4gICAgdGhpcy5jbG9zZUR1ZURhdGVFdmVudC5lbWl0KCk7XG4gIH1cblxuICBhY3RpdmF0ZVNlbGVjdG9yKGFjdGl2ZTogYm9vbGVhbiwgc3RhZ2VJbmRleD86IG51bWJlcikge1xuICAgIHRoaXMuYXNzaWduZWVDbGlja2VkID0gYWN0aXZlO1xuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIHRoaXMuY3VycmVudFN0YWdlSW5kZXggPSBzdGFnZUluZGV4ID8/IC0xO1xuICAgICAgdGhpcy5hY3RpdmVBc3NpZ25lZSA9XG4gICAgICAgIHRoaXMuY3VycmVudFN0YWdlSW5kZXggIT09IC0xXG4gICAgICAgICAgPyB0aGlzLmFzc2lnbmVlRGF0YVt0aGlzLmN1cnJlbnRTdGFnZUluZGV4XVxuICAgICAgICAgIDogW107XG4gICAgfVxuICB9XG5cbiAgc2V0QXNzaWduZWVMaXN0KCkge1xuICAgIGNvbnN0IGRpcmVjdEFzc2lnbmVlcyA9IHRoaXMuZ2V0QXNzaWduZWVzKCk7XG4gICAgY29uc3QgZ3JvdXBBc3NpZ25lZXMgPSB0aGlzLmdldEdyb3VwQXNzaWduZWVzKCk7XG4gICAgdGhpcy5hc3NpZ25lZUxpc3QgPSB0aGlzLmdldFVuaXF1ZUFzc2lnbmVlcyhkaXJlY3RBc3NpZ25lZXMsIGdyb3VwQXNzaWduZWVzKTtcbiAgfVxuXG4gIGdldEFzc2lnbmVlcygpOiBhbnlbXSB7XG4gICAgY29uc3QgYXNzaWduZWVJZHMgPSB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3c/LmFzc2lnbmVlcyB8fCBbXTtcbiAgICBcbiAgICByZXR1cm4gdGhpcy51c2VyTGlzdFxuICAgICAgPy5maWx0ZXIoKHVzZXI6IGFueSkgPT4gYXNzaWduZWVJZHMuaW5jbHVkZXModXNlcj8uX2lkKSlcbiAgICAgID8ubWFwKCh1c2VyOiBhbnkpID0+IHtcbiAgICAgICAgY29uc3QgdXNlckdyb3VwcyA9IHRoaXMuZ2V0VXNlckdyb3Vwcyh1c2VyKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi51c2VyLFxuICAgICAgICAgIGFzc29jaWF0ZWRHcm91cHM6IHVzZXJHcm91cHMsXG4gICAgICAgIH07XG4gICAgICB9KSB8fCBbXTtcbiAgfVxuXG4gIGdldFVzZXJHcm91cHModXNlcjogYW55KTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLmdyb3VwTGlzdD8uZmlsdGVyKChncm91cDogYW55KSA9PlxuICAgICAgdXNlcj8udXNlcmdyb3VwX2lkPy5pbmNsdWRlcyhncm91cD8uZ3JvdXBfaWQpXG4gICAgKTtcbiAgfVxuXG4gIGdldEdyb3VwQXNzaWduZWVzKCk6IGFueVtdIHtcbiAgICBjb25zdCBhc3NpZ25lZUdyb3VwSWRzID0gdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93Py5hc3NpZ25lZXNfZ3JvdXAgfHwgW107XG4gICAgXG4gICAgcmV0dXJuIGFzc2lnbmVlR3JvdXBJZHMuZmxhdE1hcCgoZ3JvdXBJZDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBncm91cCA9IHRoaXMuZmluZEdyb3VwQnlJZChncm91cElkKTtcbiAgICAgIHJldHVybiB0aGlzLmdldEFzc2lnbmVlc0Zyb21Hcm91cChncm91cCk7XG4gICAgfSkgfHwgW107XG4gIH1cblxuICBmaW5kR3JvdXBCeUlkKGdyb3VwSWQ6IHN0cmluZyk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXBMaXN0Py5maW5kKChncm91cDogYW55KSA9PiBncm91cD8uX2lkID09PSBncm91cElkKTtcbiAgfVxuXG4gIGdldEFzc2lnbmVlc0Zyb21Hcm91cChncm91cDogYW55KTogYW55W10ge1xuICAgIHJldHVybiBncm91cD8uYXNzb2NpYXRlZFVzZXJzPy5tYXAoKHVzZXI6IGFueSkgPT4ge1xuICAgICAgY29uc3QgdXNlckZyb21MaXN0ID0gdGhpcy5maW5kVXNlckJ5SWQodXNlcj8udXNlcklkPy5faWQpO1xuICAgICAgaWYgKHVzZXJGcm9tTGlzdCkge1xuICAgICAgICBjb25zdCB1c2VyR3JvdXBzID0gdGhpcy5nZXRVc2VyR3JvdXBzKHVzZXJGcm9tTGlzdCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4udXNlckZyb21MaXN0LFxuICAgICAgICAgIGFzc29jaWF0ZWRHcm91cHM6IHVzZXJHcm91cHMsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9KS5maWx0ZXIoKHVzZXI6IGFueSkgPT4gdXNlciAhPT0gbnVsbCkgfHwgW107XG4gIH1cblxuICBmaW5kVXNlckJ5SWQodXNlcklkOiBzdHJpbmcpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLnVzZXJMaXN0Py5maW5kKCh1c2VyOiBhbnkpID0+IHVzZXI/Ll9pZCA9PT0gdXNlcklkKTtcbiAgfVxuXG4gIGdldFVuaXF1ZUFzc2lnbmVlcyhkaXJlY3RBc3NpZ25lZXM6IGFueVtdLCBncm91cEFzc2lnbmVlczogYW55W10pOiBhbnlbXSB7XG4gICAgcmV0dXJuIFsuLi5kaXJlY3RBc3NpZ25lZXMsIC4uLmdyb3VwQXNzaWduZWVzXS5yZWR1Y2UoKGFjYzogYW55W10sIHVzZXI6IGFueSkgPT4ge1xuICAgICAgaWYgKCFhY2Muc29tZSgodTogYW55KSA9PiB1Py5faWQgPT09IHVzZXI/Ll9pZCkpIHtcbiAgICAgICAgYWNjLnB1c2godXNlcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIFtdKTtcbiAgfVxuXG4gIHNlbGVjdGVkQXNzaWduZWUoZXZlbnQ6IGFueVtdKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFN0YWdlSW5kZXggIT09IC0xKSB7XG4gICAgICB0aGlzLmFzc2lnbmVlRGF0YVt0aGlzLmN1cnJlbnRTdGFnZUluZGV4XSA9IGV2ZW50O1xuICAgIH1cbiAgICB0aGlzLmFzc2lnbmVlQ2xpY2tlZCA9IGZhbHNlO1xuICAgIGlmIChldmVudD8ubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5zaG93QXNzaWduZWVFcnJvciA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHNhdmVDYXNlUmVzb2x1dGlvbkRlYWRsaW5lKCkge1xuICAgIGlmICghdGhpcy5pc0R1ZURhdGVWYWxpZCgpKSB7XG4gICAgICB0aGlzLnNob3dFcnJvciA9IHRydWU7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICghdGhpcy5hcmVBc3NpZ25lZXNWYWxpZCgpKSB7XG4gICAgICB0aGlzLnNob3dBc3NpZ25lZUVycm9yID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zaG93RXJyb3IgPSBmYWxzZTtcbiAgICB0aGlzLnNob3dBc3NpZ25lZUVycm9yID0gZmFsc2U7XG4gICAgdGhpcy5zZXRQYXlsb2FkKCk7XG4gICAgdGhpcy5jbG9zZUR1ZURhdGVSZXNvbHV0aW9uLmVtaXQoKTtcbiAgfVxuXG4gIGlzRHVlRGF0ZVZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMuZHVlRGF0ZTtcbiAgfVxuXG4gIGFyZUFzc2lnbmVlc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLndvcmtmbG93RGV0YWlscz8uc3RhZ2VzX2Fzc2lnbmVlcz8uZXZlcnkoXG4gICAgICAoc3RhZ2U6IGFueSwgaW5kZXg6IG51bWJlcikgPT5cbiAgICAgICAgdGhpcy5hc3NpZ25lZURhdGFbaW5kZXhdICYmIHRoaXMuYXNzaWduZWVEYXRhW2luZGV4XT8ubGVuZ3RoID4gMFxuICAgICk7XG4gIH1cblxuICBmb3JtYXREdWVEYXRlKGRhdGU6IGFueSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBEYXRlKGRhdGUpLnRvSVNPU3RyaW5nKCk7XG4gIH1cblxuICBzZXREZWFkbGluZVJlbWluZGVycygpOiB2b2lkIHtcbiAgICB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZS5hc3NpZ25lZV9yZW1pbmRfYmVmb3JlID1cbiAgICAgIHRoaXMuZW1haWxSZW1pbmRlcjtcbiAgICB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZS5vd25lcl9yZW1pbmRfYmVmb3JlID1cbiAgICAgIHRoaXMuZXNjYWxhdGlvbkVtYWlsO1xuICB9XG5cbiAgc2V0U3RhZ2VzQXNzaWduZWVzKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy53b3JrZmxvd0RldGFpbHM/LnN0YWdlc19hc3NpZ25lZXNcbiAgICAgIC5tYXAoKHN0YWdlOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgYXNzaWduZWVEYXRhID0gdGhpcy5hc3NpZ25lZURhdGFbaW5kZXhdO1xuICAgICAgICByZXR1cm4gYXNzaWduZWVEYXRhXG4gICAgICAgICAgPyB0aGlzLmNyZWF0ZVN0YWdlQXNzaWduZWUoc3RhZ2UsIGFzc2lnbmVlRGF0YSlcbiAgICAgICAgICA6IG51bGw7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcbiAgfVxuXG4gIGNyZWF0ZVN0YWdlQXNzaWduZWUoc3RhZ2U6IGFueSwgYXNzaWduZWVEYXRhOiBhbnlbXSk6IGFueSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN0YWdlX2lkOiBzdGFnZT8uc3RhZ2VfaWQgfHwgJycsXG4gICAgICBhc3NpZ25lZV9pZDogYXNzaWduZWVEYXRhWzBdPy5faWQgfHwgJycsXG4gICAgICBkdWVfZGF0ZTogc3RhZ2U/LmR1ZV9kYXRlIHx8ICcnLFxuICAgIH07XG4gIH1cblxuICBzZXRQYXlsb2FkKCkge1xuICAgIGNvbnN0IGZvcm1hdHRlZERhdGUgPSB0aGlzLmZvcm1hdER1ZURhdGUodGhpcy5kdWVEYXRlKTtcbiAgICB0aGlzLnBheWxvYWQuY2FzZVRvV29ya2Zsb3cucmVzb2x1dGlvbl9kZWFkbGluZS5kdWVfZGF0ZSA9IGZvcm1hdHRlZERhdGU7XG4gICAgdGhpcy5zZXREZWFkbGluZVJlbWluZGVycygpO1xuICAgIGNvbnN0IHN0YWdlc0Fzc2lnbmVlcyA9IHRoaXMuc2V0U3RhZ2VzQXNzaWduZWVzKCk7XG4gICAgdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93LnJlc29sdXRpb25fZGVhZGxpbmUuc3RhZ2VzX2Fzc2lnbmVlcyA9XG4gICAgICBzdGFnZXNBc3NpZ25lZXM7XG4gICAgdGhpcy5wYXlsb2FkLmNhc2VUb1dvcmtmbG93LndvcmtmbG93X2lkID0gdGhpcy53b3JrZmxvd0RldGFpbHM/Ll9pZDtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgZG9jdW1lbnRDbGljayhldmVudDogYW55KTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZVBpY2tlck9iamVjdCA9IHtcbiAgICAgIGV2ZW50OiBldmVudCxcbiAgICAgIGNsYXNzOiAnZWZmZWN0aXZlLWRhdGUnLFxuICAgICAgcG9wdXA6IHRoaXMuZGF0ZVBpY2tlclBvcFVwLFxuICAgICAgY29tcG9uZW50OiB0aGlzLmRhdGVQaWNrZXIsXG4gICAgICBvdmVybGF5OiB0aGlzLmRhdGVQaWNrZXJPdmVybGF5LFxuICAgIH07XG4gICAgdGhpcy5jb21tb25EYXRlU2VydmljZS5oYW5kbGVEb2N1bWVudENsaWNrKGRhdGVQaWNrZXJPYmplY3QpO1xuICB9XG5cbiAgb25JbnB1dENoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5lbWFpbFJlbWluZGVyID09PSAwKSB7XG4gICAgICB0aGlzLmVtYWlsUmVtaW5kZXIgPSBFTUFJTF9SRU1JTkRFUlMuZW1haWxfcmVtaW5kZXI7XG4gICAgfVxuICAgIGlmICh0aGlzLmVzY2FsYXRpb25FbWFpbCA9PT0gMCkge1xuICAgICAgdGhpcy5lc2NhbGF0aW9uRW1haWwgPSBFTUFJTF9SRU1JTkRFUlMuZXNjYWxhdGlvbl9lbWFpbF9yZW1pbmRlcjtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvblwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvbi1oZWFkIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LXBsLTQgdngtcHItNFwiXG4gID5cbiAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTQgdngtZnctNTAwIHZ4LWxhYmVsLXR4dFwiPlxuICAgICAgQ29uZmlndXJlIFJlc29sdXRpb24gRGVhZGxpbmUgJiBTdGFnZSBEZXRhaWxzXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiY29uZmlndXJlLXJlc29sdXRpb24tYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb25maWd1cmUtcmVzb2x1dGlvbi1ib2R5LWlubmVyXCI+XG4gICAgICA8YXBwLWxvYWRlci1pbmxpbmUgKm5nSWY9XCJmYWxzZVwiPjwvYXBwLWxvYWRlci1pbmxpbmU+XG4gICAgICA8YXBwLW5vLWRhdGFcbiAgICAgICAgKm5nSWY9XCJmYWxzZVwiXG4gICAgICAgIFtub0RhdGFJbWFnZV09XCJcbiAgICAgICAgICAnaHR0cHM6Ly9jZG4udi1jb21wbHkuY29tL2xpYnJhcmllcy93b3JrZmxvdy1lbmdpbmUvYXNzZXRzL3dvcmtmbG93L3NlYXJjaC1kYXRhLnN2ZydcbiAgICAgICAgXCJcbiAgICAgICAgW25vRGF0YVRleHRdPVwiJ05vIGRhdGEgdG8gZGlzcGxheSdcIlxuICAgICAgPjwvYXBwLW5vLWRhdGE+XG5cbiAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImxhYmVsLXRvcCB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LWxoLTQgdngtbWItMSB2eC10dC11cHBlcmNhc2VcIlxuICAgICAgICA+XG4gICAgICAgICAgU1BFQ0lGWSBUSEUgREVBRExJTkUgVE8gQ0xPU0UgVEhJUyBDQVNFXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZCB2eC1mcy0xNiB2eC1mdy00MDBcIj4qPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY2FzZS1jYWxlbmRhciB2eC1tYi0zXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXNlLWNhbGVuZGFyLWlubmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tcbiAgICAgICAgICAgICAgICBkdWVEYXRlVGV4dHMuY2FzZV9kZXRhaWxzLmR1ZV9kYXRlLmRlYWRsaW5lX3BsYWNlaG9sZGVyXG4gICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5EYXRlUGlja2VyKClcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwiZHVlRGF0ZSB8IGRhdGUgOiAnZGQgTU1NIHl5eXknXCJcbiAgICAgICAgICAgICAgaWQ9XCJlZmZlY3RpdmUtZGF0ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MmQ7PC9pPlxuICAgICAgICAgICAgPGRwLWRhdGUtcGlja2VyXG4gICAgICAgICAgICAgICNkYXRlUGlja2VyXG4gICAgICAgICAgICAgIChvblNlbGVjdCk9XCJkYXRlUGlja2VyT3ZlcmxheSA9IGZhbHNlOyBjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIFtjb25maWddPVwiZGF0ZUNvbmZpZ1wiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZHVlRGF0ZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2RwLWRhdGUtcGlja2VyPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInZ4LW92ZXJsYXlcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VEYXRlUGlja2VyKCRldmVudClcIlxuICAgICAgICAgICAgICAqbmdJZj1cImRhdGVQaWNrZXJPdmVybGF5XCJcbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2hvd0Vycm9yXCIgY2xhc3M9XCJlcnJvck1zZyB2eC1mcy0xMSB2eC1saC00IHZ4LW10LTFcIj5cbiAgICAgICAgICAgIHt7IGR1ZURhdGVUZXh0cy5lcnJvck1lc3NhZ2UuZHVlRGF0ZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1iZXR3ZWVuIHZ4LW1iLTFcIj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImxhYmVsLXRvcCB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGFiZWwtdHh0IHZ4LWxoLTQgdngtdHQtdXBwZXJjYXNlXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBDT05GSUdVUkUgREVBRExJTkUgJiBBU1NJR05FRSBGT1IgRUFDSCBTVEFHRSBJTiBUSEUgV09SS0ZMT1dcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVxdWlyZWQgdngtZnMtMTYgdngtZnctNDAwXCI+Kjwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJ0b2dnbGUtYXJlYSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyXCI+XG4gICAgICAgICAgICA8YXBwLWNzLXN3aXRjaD5BbGxvdyBSZW9wZW5pbmcgb2YgUHJldmlvdXMgU3RhZ2U8L2FwcC1jcy1zd2l0Y2g+XG4gICAgICAgICAgICA8aVxuICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMlwiXG4gICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cIlxuICAgICAgICAgICAgICAgICdJZiBlbmFibGVkLCB0aGlzIG9wdGlvbiBhbGxvd3MgdGhlIGFzc2lnbmVlIHRvIHJldmlzaXQgYW5kIHJlb3BlbiBhIHByZXZpb3VzbHkgY29tcGxldGVkIHN0YWdlLiBUaGUgc3RhZ2Ugd2lsbCBiZSByZXNldCwgYW5kIHRoZSBhc3NpZ25lZCB1c2VyIHdpbGwgbmVlZCB0byBjb21wbGV0ZSBpdCBhZ2Fpbi4nXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1yaWdodFwiXG4gICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICA+JiN4ZTkxZjs8L2lcbiAgICAgICAgICAgID5cbiAgICAgICAgICA8L2Rpdj4gLS0+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29uZmlndXJlLXJlc29sdXRpb24tdGFibGVcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtaGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcm93XCI+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc2VyaWFsXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICNcbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1mcy0xMSB2eC1mdy01MDAgdngtbGgtNSB2eC10dC11cHBlcmNhc2UgdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgc3RhZ2UtbmFtZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBTVEFHRSBOQU1FXG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtZnMtMTEgdngtZnctNTAwIHZ4LWxoLTUgdngtdHQtdXBwZXJjYXNlIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHN0YXR1c1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBUUkFOU0lUSU9OIFNUQVRVU1xuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJoZWxwZXJUZXh0LnRyYW5zaXRpb25fc3RhdHVzXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBhc3NpZ25lZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBBU1NJR05FRVxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJoZWxwZXJUZXh0LmFzc2lnbmVlXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1saC01IHZ4LXR0LXVwcGVyY2FzZSB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBkZWFkbGluZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBERUFETElORVxuICAgICAgICAgICAgICAgIDxpXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb25zIGluZm8gdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbWwtMVwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJoZWxwZXJUZXh0LmRlYWRsaW5lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXG4gICAgICAgICAgICAgICAgICBkZWxheT1cIjBcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cIndoaXRlXCJcbiAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgPiYjeGU5MWY7PC9pXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1ib2R5XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtcm93XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwiXG4gICAgICAgICAgICAgICAgbGV0IGRhdGEgb2Ygd29ya2Zsb3dEZXRhaWxzPy5zdGFnZXNfYXNzaWduZWVzO1xuICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXhcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidGFibGUtY29sdW1uIHZ4LXBsLTEgdngtcHItMSB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHNlcmlhbFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInNyLW5vIHZ4LWZzLTEzIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtanVzdGlmeS1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgW2FwcFRvb2x0aXBdPVwiaSArIDFcIlxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3sgaSArIDEgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzdGFnZS1uYW1lXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWUgdngtZnMtMTMgdngtcHItMlwiXG4gICAgICAgICAgICAgICAgICBbYXBwVG9vbHRpcF09XCJkYXRhPy5uYW1lXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbS1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBNYW5kYXRvcnldPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt7IGRhdGE/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTEgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBzdGF0dXNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlIHZ4LWZzLTEyXCI+XG4gICAgICAgICAgICAgICAgICB7eyBkYXRhPy5zdGF0dXNfdHJhbnNpdGlvbj8uZnJvbU5hbWUgfX08YnIgLz48c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LW1yLTFcIlxuICAgICAgICAgICAgICAgICAgICA+VG88L3NwYW5cbiAgICAgICAgICAgICAgICAgID57eyBkYXRhPy5zdGF0dXNfdHJhbnNpdGlvbj8udG9OYW1lIH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0YWJsZS1jb2x1bW4gdngtcGwtMSB2eC1wci0xIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgYXNzaWduZWVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKHRydWUsIGkpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWFzc2lnbmVlRGF0YVtpXT8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2VsZWN0LWJveCB2eC1kLWZsZXggdngtYWxpZ24tY2VudGVyIHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wbC0zIHZ4LXByLTNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZSB2eC1mcy0xM1wiPlNlbGVjdCBhIFVzZXI8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgYXJyb3cgdngtZnMtMTJcIj4mI3hlOWU4OzwvaT5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImFzc2lnbmVlRGF0YVtpXT8ubGVuZ3RoID4gMFwiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImFmdGVyLXNlbGVjdC1ib3ggdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciB2eC1qdXN0aWZ5LWJldHdlZW4gdngtcGwtMyB2eC1wci0yXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidmFsdWUtY2hpcCB2eC1mcy0xMSB2eC1wbC0yIHZ4LXByLTIgdngtbGgtNlwiXG4gICAgICAgICAgICAgICAgICAgIFthcHBUb29sdGlwXT1cImFzc2lnbmVlRGF0YVtpXVswXT8ubWVtYmVyX25hbWVcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b20tbGVmdFwiXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5PVwiMFwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJibGFja1wiXG4gICAgICAgICAgICAgICAgICAgIFt0b29sdGlwTWFuZGF0b3J5XT1cImZhbHNlXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3sgYXNzaWduZWVEYXRhW2ldWzBdPy5tZW1iZXJfbmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmF0ZVNlbGVjdG9yKHRydWUsIGkpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJlZGl0LWJ0biB2eC1mcy0xMSB2eC1mdy01MDAgdngtdHh0LWJsdWUgdngtdHQtdXBwZXJjYXNlIHZ4LXAtMCB2eC1tLTAgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlclwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbnMgdngtZnMtMTIgdngtdHh0LWJsdWUgdngtbXItMVwiPiYjeGU5YmE7PC9pXG4gICAgICAgICAgICAgICAgICAgID5FRElUXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInRhYmxlLWNvbHVtbiB2eC1wbC0xIHZ4LXByLTIgdngtZC1mbGV4IHZ4LWFsaWduLWNlbnRlciBkZWFkbGluZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImNhc2UtY2FsZW5kYXIgdngtZC1mbGV4IHZ4LWp1c3RpZnktYmV0d2VlbiB2eC1wdC0zIHZ4LXBiLTNcIlxuICAgICAgICAgICAgICAgICAgW2NsYXNzLmRpc2FibGVkXT1cInRydWVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXNlLWNhbGVuZGFyLWlubmVyIHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7eyBkdWVEYXRlIHwgZGF0ZSA6ICdkZCBNTU0geXl5eScgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuRGF0ZVBpY2tlcigpXCJcbiAgICAgICAgICAgICAgICAgICAgICBpZD1cImVmZmVjdGl2ZS1kYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uc1wiPiYjeGU5MmQ7PC9pPlxuICAgICAgICAgICAgICAgICAgICA8ZHAtZGF0ZS1waWNrZXJcbiAgICAgICAgICAgICAgICAgICAgICAjZGF0ZVBpY2tlclxuICAgICAgICAgICAgICAgICAgICAgIChvblNlbGVjdCk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGVQaWNrZXJPdmVybGF5ID0gZmFsc2U7IGNsb3NlRGF0ZVBpY2tlcigkZXZlbnQpXG4gICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICBbY29uZmlnXT1cImRhdGVDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvZHAtZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInZ4LW92ZXJsYXlcIlxuICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZURhdGVQaWNrZXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJkYXRlUGlja2VyT3ZlcmxheVwiXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd0Fzc2lnbmVlRXJyb3JcIlxuICAgICAgICAgICAgY2xhc3M9XCJlcnJvck1zZyB2eC1mcy0xMSB2eC1saC00IHZ4LW10LTFcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IGR1ZURhdGVUZXh0cy5lcnJvck1lc3NhZ2Uuc3RhZ2VBc3NpZ25lZSB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibGFiZWwtdG9wIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtbGgtNCB2eC1tYi0xIHZ4LXR0LXVwcGVyY2FzZVwiXG4gICAgICAgID5cbiAgICAgICAgICBFTUFJTCBSRU1JTkRFUiBDT05GSUdVUkFUSU9OXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXF1aXJlZCB2eC1mcy0xNiB2eC1mdy00MDBcIj4qPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXIgdngtbWItMlwiPjwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJsYWJlbC10b3AgdngtZnMtMTEgdngtZnctNTAwIHZ4LWxhYmVsLXR4dCB2eC1saC00IHZ4LW1iLTEgdngtdHQtdXBwZXJjYXNlXCJcbiAgICAgICAgPlxuICAgICAgICAgIFJFTUlOREVSIEVNQUlMXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJlbWFpbC1jb25maWd1cmUtYm94IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtZmxleC13cmFwIHZ4LXAtMiB2eC1wbC0zIHZ4LXByLTMgdngtbWItMlwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtbXItMVwiPlxuICAgICAgICAgICAgU2VuZCByZWd1bGFyIGVtYWlsIHJlbWluZGVycyB0byB0aGUgYXNzaWduZWVcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJlbWFpbFJlbWluZGVyXCJcbiAgICAgICAgICAgIG9ua2V5ZG93bj1cInJldHVybiBldmVudC5rZXkgIT09ICcuJ1wiXG4gICAgICAgICAgICBvbmlucHV0PVwidGhpcy52YWx1ZSA9IE1hdGguYWJzKHRoaXMudmFsdWUpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25JbnB1dENoYW5nZSgpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMyB2eC1tbC0xXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJsYWNrLXRleHRcIj5kYXlzPC9zcGFuPiBiZWZvcmUgdGhlIHN0YWdlIGRlYWRsaW5lLlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwibGFiZWwtdG9wIHZ4LWZzLTExIHZ4LWZ3LTUwMCB2eC1sYWJlbC10eHQgdngtbGgtNCB2eC1tYi0xIHZ4LXR0LXVwcGVyY2FzZVwiXG4gICAgICAgID5cbiAgICAgICAgICBFU0NBTEFUSU9OIEVNQUlMXG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJlbWFpbC1jb25maWd1cmUtYm94IHZ4LWQtZmxleCB2eC1hbGlnbi1jZW50ZXIgdngtZmxleC13cmFwIHZ4LXAtMiB2eC1wbC0zIHZ4LXByLTMgdngtbWItMlwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidngtZnMtMTMgdngtbXItMVwiPlxuICAgICAgICAgICAgU2VuZCBlbWFpbCBlc2NhbGF0aW9uIHRvIHRoZSBDYXNlIE93bmVyXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZXNjYWxhdGlvbkVtYWlsXCJcbiAgICAgICAgICAgIG9ua2V5ZG93bj1cInJldHVybiBldmVudC5rZXkgIT09ICcuJ1wiXG4gICAgICAgICAgICBvbmlucHV0PVwidGhpcy52YWx1ZSA9IE1hdGguYWJzKHRoaXMudmFsdWUpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25JbnB1dENoYW5nZSgpXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2eC1mcy0xMyB2eC1tbC0xXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJsYWNrLXRleHRcIj5kYXlzPC9zcGFuPiBiZWZvcmUgdGhlIG92ZXJhbGwgY2FzZVxuICAgICAgICAgICAgZGVhZGxpbmUsIGlmIHRoZSBjYXNlIGlzIHN0aWxsIG9wZW4uXG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGFwcC1mbG9hdGluZy1iYXJcbiAgICAgIChjbG9zZUxpc3QpPVwiY2xvc2VEdWVEYXRlKClcIlxuICAgICAgKGNsb3NlRXZlbnQpPVwic2F2ZUNhc2VSZXNvbHV0aW9uRGVhZGxpbmUoKVwiXG4gICAgPjwvYXBwLWZsb2F0aW5nLWJhcj5cbiAgPC9kaXY+XG48L2Rpdj5cbjxhcHAtYXNzaWduZWVcbiAgKm5nSWY9XCJhc3NpZ25lZUNsaWNrZWRcIlxuICBbcGF5bG9hZF09XCJwYXlsb2FkXCJcbiAgW2Fzc2lnbmVlTGlzdF09XCJhc3NpZ25lZUxpc3RcIlxuICBbYWN0aXZlQXNzaWduZWVdPVwiYWN0aXZlQXNzaWduZWVcIlxuICAoc2VsZWN0ZWRBc3NpZ25lZUV2ZW50KT1cInNlbGVjdGVkQXNzaWduZWUoJGV2ZW50KVwiXG4gIChjbG9zZUV2ZW50KT1cImFjdGl2YXRlU2VsZWN0b3IoZmFsc2UpXCJcbj48L2FwcC1hc3NpZ25lZT5cbiJdfQ==
|