commons-assessment 12.0.39-dev.0 → 12.0.39-dev.2

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.
@@ -162,7 +162,7 @@ export class ProctoringResultComponent {
162
162
  }
163
163
  }
164
164
  ProctoringResultComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProctoringResultComponent, deps: [{ token: i1.MatDialogRef }, { token: i2.AssessmentTakerService }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
165
- ProctoringResultComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ProctoringResultComponent, selector: "lib-proctoring-result", ngImport: i0, template: "<div class=\"d-flex flex-column h-100 overflow-hidden assessment-bg-white\">\r\n\r\n <!-- Header -->\r\n <div class=\"d-flex align-items-start justify-content-between gap-3 p-3 px-md-4 border-bottom\">\r\n <div class=\"flex-grow-1\">\r\n <p class=\"assessment-text-semibold-16 assessment-text-grey-ten mb-1\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.RESULT_TITLE'] }}\r\n </p>\r\n <p class=\"assessment-text-regular-12 assessment-text-grey-seven mb-0\">\r\n <span *ngIf=\"assesseeName\">{{ assesseeName }} \u00B7 </span>{{ totalElements }} {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_COUNT'] }}\r\n </p>\r\n </div>\r\n <button type=\"button\" class=\"btn-close\" (click)=\"close()\" aria-label=\"Close\"></button>\r\n </div>\r\n\r\n <!-- Body -->\r\n <div class=\"flex-grow-1 overflow-auto p-3 px-md-4\">\r\n\r\n <!-- Loading (initial) -->\r\n <div *ngIf=\"loading && !sessions.length\" class=\"d-flex align-items-center justify-content-center gap-2 py-5 assessment-text-regular-13 assessment-text-grey-seven\">\r\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_LOADING'] }}\r\n </div>\r\n\r\n <!-- Error -->\r\n <div *ngIf=\"errored && !sessions.length\" class=\"text-center py-5\">\r\n <p class=\"assessment-text-regular-13 assessment-text-danger mb-3\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_ERROR'] }}</p>\r\n <button type=\"button\" (click)=\"loadSessions()\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORTS_RETRY'] }}\r\n </button>\r\n </div>\r\n\r\n <!-- Empty -->\r\n <div *ngIf=\"!loading && !errored && !sessions.length\" class=\"text-center py-5 assessment-text-regular-13 assessment-text-grey-seven\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_EMPTY'] }}\r\n </div>\r\n\r\n <!-- Sessions accordion -->\r\n <mat-accordion class=\"d-block\" *ngIf=\"sessions.length\">\r\n <mat-expansion-panel *ngFor=\"let session of sessions; trackBy: trackBySessionId\"\r\n class=\"shadow-none assessment-border-radius-two assessment-panel border mb-2\" (opened)=\"loadReport(session)\">\r\n\r\n <mat-expansion-panel-header class=\"proctoring-panel-header p-3\">\r\n <mat-panel-title class=\"d-flex flex-column my-1 align-items-start\">\r\n <span class=\"assessment-text-semibold-13 assessment-text-grey-ten\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_SESSION'] }} {{ session.id }}\r\n </span>\r\n <span class=\"d-flex align-items-center gap-2 mt-1\">\r\n <span *ngIf=\"session.status\" class=\"badge rounded-pill text-capitalize assessment-text-medium-10\" [ngClass]=\"statusBadgeClass(session.status)\">\r\n {{ session.status }}\r\n </span>\r\n <span *ngIf=\"session.integrityFlagged || reportBySession[session.id!]?.integrityFlagged\"\r\n class=\"badge rounded-pill assessment-bg-danger assessment-text-white assessment-text-medium-10\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_FLAGGED'] }}\r\n </span>\r\n </span>\r\n </mat-panel-title>\r\n <mat-panel-description class=\"justify-content-end align-items-center me-3\">\r\n <span *ngIf=\"toMillis(session.startedAt) as started\" class=\"assessment-text-regular-11 assessment-text-grey-seven\">\r\n {{ started | date:'dd MMM, HH:mm' }}\r\n </span>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n <!-- Report is fetched when the panel opens -->\r\n <ng-template matExpansionPanelContent>\r\n <div class=\"p-3 pt-1\" [ngSwitch]=\"reportState[session.id!]\">\r\n\r\n <!-- Loading -->\r\n <div *ngSwitchCase=\"'loading'\" class=\"d-flex align-items-center gap-2 py-3 assessment-text-regular-13 assessment-text-grey-seven\">\r\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_LOADING'] }}\r\n </div>\r\n\r\n <!-- Error -->\r\n <div *ngSwitchCase=\"'error'\" class=\"py-3\">\r\n <p class=\"assessment-text-regular-13 assessment-text-danger mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_ERROR'] }}</p>\r\n <button type=\"button\" (click)=\"loadReport(session)\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORTS_RETRY'] }}\r\n </button>\r\n </div>\r\n\r\n <!-- No report yet -->\r\n <div *ngSwitchCase=\"'empty'\" class=\"py-3 assessment-text-regular-13 assessment-text-grey-seven\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_EMPTY'] }}\r\n </div>\r\n\r\n <!-- Loaded report -->\r\n <ng-container *ngSwitchCase=\"'loaded'\">\r\n <ng-container *ngIf=\"reportBySession[session.id!] as report\">\r\n\r\n <!-- Integrity summary (report top-level) -->\r\n <div class=\"row g-2\">\r\n <div class=\"col-6\">\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven text-uppercase mb-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_INTEGRITY_SCORE'] }}</p>\r\n <p class=\"assessment-text-regular-13 assessment-text-grey-ten mb-0\" [class.assessment-text-danger]=\"report.integrityFlagged\">\r\n {{ report.integrityScore }}<span *ngIf=\"report.integrityLevel\"> ({{ report.integrityLevel }})</span>\r\n </p>\r\n </div>\r\n <div class=\"col-6\" *ngIf=\"report.identityMatch\">\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven text-uppercase mb-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_IDENTITY_MATCH'] }}</p>\r\n <p class=\"assessment-text-regular-13 assessment-text-grey-ten mb-0\">{{ report.identityMatch }}</p>\r\n </div>\r\n <div class=\"col-12\" *ngIf=\"report.failureReason\">\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven text-uppercase mb-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_FAILURE_REASON'] }}</p>\r\n <p class=\"assessment-text-regular-13 assessment-text-danger mb-0\">{{ report.failureReason }}</p>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getParsedPayload(report) as p; else rawPayload\">\r\n\r\n <!-- Summary meta -->\r\n <div class=\"d-flex flex-wrap align-items-center gap-2 mt-3 assessment-text-regular-12 assessment-text-grey-seven\">\r\n <span *ngIf=\"p.duration_seconds != null\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_DURATION'] }}: {{ formatDuration(p.duration_seconds) }}</span>\r\n <span *ngIf=\"p.started_at\">\u00B7 {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_STARTED'] }}: {{ p.started_at | date:'dd MMM, HH:mm:ss' }}</span>\r\n <span *ngIf=\"p.ended_at\">\u00B7 {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_ENDED'] }}: {{ p.ended_at | date:'HH:mm:ss' }}</span>\r\n </div>\r\n\r\n <!-- Reasons -->\r\n <div *ngIf=\"p.integrity?.reasons?.length\" class=\"d-flex flex-column gap-2 mt-2\">\r\n <div *ngFor=\"let r of p.integrity?.reasons; trackBy: trackByIndex\" class=\"border rounded p-2\">\r\n <div class=\"d-flex align-items-center justify-content-between gap-2\">\r\n <span class=\"assessment-text-semibold-12 assessment-text-grey-ten\">{{ reasonCodeLabel(r.code) }}</span>\r\n <span *ngIf=\"r.weight != null\" class=\"badge rounded-pill assessment-text-white\" [ngClass]=\"(r.weight || 0) < 0 ? 'assessment-bg-danger' : 'assessment-bg-success'\">{{ (r.weight || 0) > 0 ? '+' : '' }}{{ r.weight }}</span>\r\n </div>\r\n <p class=\"assessment-text-regular-12 assessment-text-grey-seven mb-0 mt-1\">{{ r.detail }}</p>\r\n </div>\r\n </div>\r\n\r\n <!-- Stat tiles: face analysis -->\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mt-3 mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_ANALYSIS'] }}</p>\r\n <div class=\"row row-cols-2 row-cols-md-4 g-2 text-center\">\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\">{{ p.face_analysis?.frames_checked ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_FRAMES'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\" [class.assessment-text-danger]=\"(p.face_analysis?.no_face_frames || 0) > 0\">{{ p.face_analysis?.no_face_frames ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_NO_FACE'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\" [class.assessment-text-danger]=\"(p.face_analysis?.multi_face_frames || 0) > 0\">{{ p.face_analysis?.multi_face_frames ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_MULTI_FACE'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\" [class.assessment-text-danger]=\"(p.face_analysis?.impersonation_frames || 0) > 0\">{{ p.face_analysis?.impersonation_frames ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_IMPERSONATION'] }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Activity breakdown -->\r\n <div *ngIf=\"p.activity?.by_type\" class=\"d-flex flex-wrap gap-2 mt-3\">\r\n <span *ngFor=\"let item of (p.activity?.by_type | keyvalue); trackBy: trackByIndex\"\r\n class=\"badge rounded-pill assessment-bg-palette-EDF3FD assessment-text-grey-ten assessment-text-medium-12\">\r\n {{ eventTypeLabel(item.key) }} <span class=\"assessment-text-semibold-12\">{{ item.value }}</span>\r\n </span>\r\n </div>\r\n\r\n <!-- Evidence images -->\r\n <ng-container *ngIf=\"p.evidence?.length\">\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mt-3 mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_EVIDENCE'] }}</p>\r\n <div class=\"d-flex flex-wrap gap-3\">\r\n <a *ngFor=\"let ev of p.evidence; trackBy: trackByIndex\" class=\"text-center text-decoration-none\"\r\n [href]=\"ev.image_url\" target=\"_blank\" rel=\"noopener\">\r\n <img class=\"proctoring-evi-img rounded border\" [src]=\"ev.image_url\" [attr.alt]=\"'frame ' + ev.seq\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/user.svg')\" />\r\n <span class=\"d-block assessment-text-regular-11 assessment-text-grey-seven mt-1\">\r\n <span *ngIf=\"ev.is_reference\" class=\"badge rounded-pill assessment-bg-primary-one assessment-text-white me-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_REFERENCE'] }}</span>\r\n #{{ ev.seq }} \u00B7 {{ ev.captured_at | date:'HH:mm:ss' }}\r\n </span>\r\n </a>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Timeline -->\r\n <ng-container *ngIf=\"p.timeline?.length\">\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mt-3 mb-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_TIMELINE'] }} ({{ p.timeline?.length }})\r\n </p>\r\n <div class=\"proctoring-log assessment-bg-grey-ten assessment-text-grey-one font-monospace small rounded p-3 overflow-auto\">\r\n <div *ngFor=\"let ev of p.timeline; trackBy: trackByIndex\" class=\"text-nowrap\" [class.fw-semibold]=\"isNoteworthy(ev.type)\">\r\n <span class=\"assessment-text-grey-five me-2\">#{{ ev.seq }}</span>\r\n <span [class.assessment-text-palette-ADC9F6]=\"isNoteworthy(ev.type)\">{{ eventTypeLabel(ev.type) }}</span>\r\n <span class=\"assessment-text-grey-five ms-2\">{{ ev.at | date:'HH:mm:ss' }} ({{ ev.source }})</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <!-- Fallback: raw payload if it isn't parseable JSON -->\r\n <ng-template #rawPayload>\r\n <pre *ngIf=\"report.reportPayload\" class=\"proctoring-payload assessment-bg-grey-ten assessment-text-grey-one small rounded p-3 overflow-auto mb-0 mt-3\">{{ report.reportPayload }}</pre>\r\n </ng-template>\r\n\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n\r\n <!-- Load more -->\r\n <div *ngIf=\"sessions.length && !last\" class=\"text-center mt-3\">\r\n <button type=\"button\" (click)=\"loadMore()\" [disabled]=\"loading\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2 d-inline-flex align-items-center gap-2\">\r\n <span *ngIf=\"loading\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.LOAD_MORE'] }}\r\n </button>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.assessment-text-grey-ten{color:var(--assessment-grey-ten)!important}.assessment-bg-grey-ten{background-color:var(--assessment-grey-ten)!important}.assessment-text-grey-nine{color:var(--assessment-grey-nine)!important}.assessment-bg-grey-nine{background-color:var(--assessment-grey-nine)!important}.assessment-text-grey-eight{color:var(--assessment-grey-eight)!important}.assessment-bg-grey-eight{background-color:var(--assessment-grey-eight)!important}.assessment-text-grey-seven{color:var(--assessment-grey-seven)!important}.assessment-bg-grey-seven{background-color:var(--assessment-grey-seven)!important}.assessment-text-grey-six{color:var(--assessment-grey-six)!important}.assessment-bg-grey-six{background-color:var(--assessment-grey-six)!important}.assessment-text-grey-five{color:var(--assessment-grey-five)!important}.assessment-bg-grey-five{background-color:var(--assessment-grey-five)!important}.assessment-text-grey-four{color:var(--assessment-grey-four)!important}.assessment-bg-grey-four{background-color:var(--assessment-grey-four)!important}.assessment-text-grey-three{color:var(--assessment-grey-three)!important}.assessment-bg-grey-three{background-color:var(--assessment-grey-three)!important}.assessment-text-grey-two{color:var(--assessment-grey-two)!important}.assessment-bg-grey-two{background-color:var(--assessment-grey-two)!important}.assessment-text-grey-one{color:var(--assessment-grey-one)!important}.assessment-bg-grey-one{background-color:var(--assessment-grey-one)!important}.assessment-text-white{color:var(--assessment-white)!important}.assessment-bg-white{background-color:var(--assessment-white)!important}.assessment-text-black{color:var(--assessment-black)!important}.assessment-bg-black{background-color:var(--assessment-black)!important}.assessment-text-danger{color:var(--assessment-danger)!important}.assessment-bg-danger{background-color:var(--assessment-danger)!important}.assessment-text-danger-bg{color:var(--assessment-danger-bg)!important}.assessment-bg-danger-bg{background-color:var(--assessment-danger-bg)!important}.assessment-text-success{color:var(--assessment-success)!important}.assessment-bg-success{background-color:var(--assessment-success)!important}.assessment-text-success-bg{color:var(--assessment-success-bg)!important}.assessment-bg-success-bg{background-color:var(--assessment-success-bg)!important}.assessment-text-warning{color:var(--assessment-warning)!important}.assessment-bg-warning{background-color:var(--assessment-warning)!important}.assessment-text-warning-bg{color:var(--assessment-warning-bg)!important}.assessment-bg-warning-bg{background-color:var(--assessment-warning-bg)!important}.assessment-text-primary-one{color:var(--assessment-primary-one)!important}.assessment-bg-primary-one{background-color:var(--assessment-primary-one)!important}.assessment-text-primary-four{color:var(--assessment-primary-four)!important}.assessment-bg-primary-four{background-color:var(--assessment-primary-four)!important}.assessment-text-palette-EDF3FD{color:var(--assessment-palette-EDF3FD)!important}.assessment-bg-palette-EDF3FD{background-color:var(--assessment-palette-EDF3FD)!important}.assessment-text-palette-C8DAF9{color:var(--assessment-palette-C8DAF9)!important}.assessment-bg-palette-C8DAF9{background-color:var(--assessment-palette-C8DAF9)!important}.assessment-text-palette-ADC9F6{color:var(--assessment-palette-ADC9F6)!important}.assessment-bg-palette-ADC9F6{background-color:var(--assessment-palette-ADC9F6)!important}.assessment-text-palette-FEF9F1{color:var(--assessment-palette-FEF9F1)!important}.assessment-bg-palette-FEF9F1{background-color:var(--assessment-palette-FEF9F1)!important}.assessment-text-palette-F9DAA6{color:var(--assessment-palette-F9DAA6)!important}.assessment-bg-palette-F9DAA6{background-color:var(--assessment-palette-F9DAA6)!important}.assessment-text-palette-E8F7F0{color:var(--assessment-palette-E8F7F0)!important}.assessment-bg-palette-E8F7F0{background-color:var(--assessment-palette-E8F7F0)!important}.assessment-text-palette-B7E7CF{color:var(--assessment-palette-B7E7CF)!important}.assessment-bg-palette-B7E7CF{background-color:var(--assessment-palette-B7E7CF)!important}.assessment-text-palette-FEF1E8{color:var(--assessment-palette-FEF1E8)!important}.assessment-bg-palette-FEF1E8{background-color:var(--assessment-palette-FEF1E8)!important}.assessment-text-palette-FAD2B9{color:var(--assessment-palette-FAD2B9)!important}.assessment-bg-palette-FAD2B9{background-color:var(--assessment-palette-FAD2B9)!important}.assessment-box-shadow-one{box-shadow:var(--assessment-box-shadow-one)!important}.assessment-border-radius-one{border-radius:var(--assessment-border-radius-one)!important}.assessment-border-radius-two{border-radius:var(--assessment-border-radius-two)!important}.assessment-border-radius-three{border-radius:var(--assessment-border-radius-three)!important}.assessment-border-radius-four{border-radius:var(--assessment-border-radius-four)!important}.assessment-border-radius-five{border-radius:var(--assessment-border-radius-five)!important}.assessment-border-radius-six{border-radius:var(--assessment-border-radius-six)!important}.assessment-input-border-one{border:var(--assessment-input-border-one)!important}.assessment-input-border-invalid{border:var(--assessment-input-border-invalid)!important}.assessment-input-focus-border{border:var(--assessment-input-focus-border)!important}.assessment-border-two{border:var(--assessment-border-two)!important}.assessment-card-border{border:var(--assessment-card-border)!important}.assessment-tooltip-border{border:var(--assessment-tooltip-border)!important}.assessment-box-shadow-tooltip{box-shadow:var(--assessment-box-shadow-tooltip)!important}.assessment-button-padding{padding:var(--assessment-button-padding)!important}.assessment-button-padding-large{padding:var(--assessment-button-padding-large)!important}.assessment-input-padding{padding:var(--assessment-input-padding)!important}.assessment-text-font-family{color:var(--assessment-font-family)!important}.assessment-bg-font-family{background-color:var(--assessment-font-family)!important}.assessment-text-regular-12{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-semibold-12{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-medium-11{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.48rem + .25vw);line-height:calc(.8rem + .25vw)}.assessment-text-medium-10{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.42rem + .2vw);line-height:calc(.72rem + .2vw)}.assessment-text-regular-11{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.48rem + .25vw);line-height:calc(.8rem + .25vw)}.assessment-text-medium-12{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-regular-13{font-weight:400;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-semibold-13{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-medium-13{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-medium-14{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.7rem + .2vw)!important;line-height:calc(1.2rem + .2vw)!important}.assessment-text-semibold-14{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.7rem + .2vw);line-height:calc(1.2rem + .2vw)}.assessment-text-regular-15{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.85rem + .1vw);line-height:calc(1.4rem + .1vw)}.assessment-text-medium-15{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.85rem + .1vw);line-height:calc(1.25rem + .1vw)}.assessment-text-semibold-15{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.85rem + .1vw);line-height:calc(1.25rem + .1vw)}.assessment-text-semibold-16{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.77rem + .25vw);line-height:calc(1.25rem + .2vw)}.assessment-text-medium-16{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.77rem + .25vw);line-height:calc(1.25rem + .2vw)}.assessment-text-medium-18{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .125vw)!important;line-height:calc(1.5rem + .1vw)!important}.assessment-text-semibold-18{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .125vw)!important;line-height:calc(1.5rem + .1vw)!important}@media (min-height: 100vw) and (orientation: portrait){.assessment-text-medium-18,.assessment-text-semibold-18{font-size:calc(1rem + .1vh)!important;line-height:calc(1.6rem + .1vh)!important}.assessment-text-medium-16,.assessment-text-semibold-16{font-size:calc(.9rem + .2vh)!important;line-height:calc(1.4rem + .2vh)!important}.assessment-text-regular-15,.assessment-text-semibold-15{font-size:calc(.8rem + .2vh);line-height:calc(1.27rem + .2vh)}.assessment-text-medium-15{font-size:calc(.82rem + .2vh);line-height:calc(1.27rem + .2vh)}.assessment-text-medium-12,.assessment-text-regular-12,.assessment-text-semibold-12{font-size:calc(.5rem + .4vh);line-height:calc(.8rem + .4vh)}.assessment-text-medium-14,.assessment-text-semibold-14{font-size:calc(.8rem + .1vh)!important;line-height:calc(1.2rem + .2vh)!important}.assessment-text-regular-13,.assessment-text-medium-13,.assessment-text-semibold-13{font-size:calc(.7rem + .2vh)!important;line-height:calc(1rem + .3vh)!important}.assessment-text-regular-11,.assessment-text-medium-11{font-size:calc(.5rem + .2vh)!important;line-height:calc(.8rem + .2vh)!important}.assessment-text-medium-10{font-size:calc(.45rem + .2vh)!important;line-height:calc(.72rem + .2vh)!important}}.assessment-btn-primary{background-color:var(--assessment-primary-one);color:var(--assessment-white);border:.064rem solid var(--assessment-primary-one);border-radius:var(--assessment-border-radius-two)}.assessment-btn-primary-transparent{background-color:var(--assessment-white);color:var(--assessment-primary-one);border-radius:var(--assessment-border-radius-two);border:.064rem solid var(--assessment-primary-one)}.assessment-zoom-animation{transition:transform .2s ease;transform:translateZ(0);text-rendering:optimizeLegibility}.assessment-zoom-animation:hover{transform:scale(1.03)}.assessment-zoom-animation:active{transform:scale(1)}.assessment-zoom-animation:disabled{transform:none!important}.change-direction{transform:rotate(180deg);transition:.3s ease-out}.change-direction-reverse{transform:rotate(0);transition:.3s ease-out}.outline-0{outline:none}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.action-icon{width:1.2rem}.mat-menu-item,.mat-mdc-menu-item{height:inherit;min-height:unset;--mat-menu-item-label-text-font: var(--assessment-font-family) !important;--mat-menu-item-label-text-size: 14px !important;--mat-menu-item-label-text-weight: 600 !important;--mat-menu-item-label-text-line-height: inherit !important}.skill-chip{width:-moz-fit-content;width:fit-content;background:var(--assessment-palette-EDF3FD);border:.064rem solid var(--assessment-palette-C8DAF9)}.assessment-form-check-input-primary-one{min-height:unset}.assessment-form-check-input-primary-one .form-check-input{width:1rem;height:1rem}.assessment-form-check-input-primary-one .form-check-input:checked{background-color:var(--assessment-primary-one);color:var(--assessment-primary-one)}.assessment-form-check-input-primary-one .form-check-input:disabled{opacity:.8}.form-check-input:checked{background-color:var(--assessment-primary-one);border-color:var(--assessment-primary-one)}.form-check-input:focus{border-color:var(--assessment-primary-one);box-shadow:none}.badge{font-weight:500}.proctoring-panel-header{height:auto!important}.proctoring-log{max-height:16rem}.proctoring-payload{max-height:18rem;white-space:pre-wrap;word-break:break-word}.proctoring-evi-img{width:5rem;height:5rem;object-fit:cover}\n"], components: [{ type: i3.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i3.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.MatAccordion, selector: "mat-accordion", inputs: ["multi", "displayMode", "togglePosition", "hideToggle"], exportAs: ["matAccordion"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.MatExpansionPanelDescription, selector: "mat-panel-description" }, { type: i3.MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], pipes: { "date": i4.DatePipe, "keyvalue": i4.KeyValuePipe } });
165
+ ProctoringResultComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: ProctoringResultComponent, selector: "lib-proctoring-result", ngImport: i0, template: "<div class=\"d-flex flex-column h-100 overflow-hidden assessment-bg-white\">\r\n\r\n <!-- Header -->\r\n <div class=\"d-flex align-items-start justify-content-between gap-3 p-3 px-md-4 border-bottom\">\r\n <div class=\"flex-grow-1\">\r\n <p class=\"assessment-text-semibold-16 assessment-text-grey-ten mb-1\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.RESULT_TITLE'] }}\r\n </p>\r\n <p class=\"assessment-text-regular-12 assessment-text-grey-seven mb-0\">\r\n <span *ngIf=\"assesseeName\">{{ assesseeName }} \u00B7 </span>{{ totalElements }} {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_COUNT'] }}\r\n </p>\r\n </div>\r\n <button type=\"button\" class=\"btn-close\" (click)=\"close()\" aria-label=\"Close\"></button>\r\n </div>\r\n\r\n <!-- Body -->\r\n <div class=\"flex-grow-1 overflow-auto p-3 px-md-4\">\r\n\r\n <!-- Loading (initial) -->\r\n <div *ngIf=\"loading && !sessions.length\" class=\"d-flex align-items-center justify-content-center gap-2 py-5 assessment-text-regular-13 assessment-text-grey-seven\">\r\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_LOADING'] }}\r\n </div>\r\n\r\n <!-- Error -->\r\n <div *ngIf=\"errored && !sessions.length\" class=\"text-center py-5\">\r\n <p class=\"assessment-text-regular-13 assessment-text-danger mb-3\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_ERROR'] }}</p>\r\n <button type=\"button\" (click)=\"loadSessions()\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORTS_RETRY'] }}\r\n </button>\r\n </div>\r\n\r\n <!-- Empty -->\r\n <div *ngIf=\"!loading && !errored && !sessions.length\" class=\"text-center py-5 assessment-text-regular-13 assessment-text-grey-seven\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.SESSIONS_EMPTY'] }}\r\n </div>\r\n\r\n <!-- Sessions accordion -->\r\n <mat-accordion class=\"d-block\" *ngIf=\"sessions.length\">\r\n <mat-expansion-panel *ngFor=\"let session of sessions; trackBy: trackBySessionId\"\r\n class=\"shadow-none assessment-border-radius-two assessment-panel border mb-2\" (opened)=\"loadReport(session)\">\r\n\r\n <mat-expansion-panel-header class=\"proctoring-panel-header p-3\">\r\n <mat-panel-title class=\"d-flex flex-column my-1 align-items-start\">\r\n <span class=\"assessment-text-semibold-13 assessment-text-grey-ten\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_SESSION'] }} {{ session.id }}\r\n </span>\r\n <span class=\"d-flex align-items-center gap-2 mt-1\">\r\n <span *ngIf=\"session.status\" class=\"badge rounded-pill text-capitalize assessment-text-medium-10\" [ngClass]=\"statusBadgeClass(session.status)\">\r\n {{ session.status }}\r\n </span>\r\n <span *ngIf=\"session?.integritySummary?.integrityFlagged\"\r\n class=\"badge rounded-pill assessment-bg-danger assessment-text-white assessment-text-medium-10\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_FLAGGED'] }}\r\n </span>\r\n </span>\r\n </mat-panel-title>\r\n <mat-panel-description class=\"justify-content-end align-items-center me-3\">\r\n <span *ngIf=\"toMillis(session.startedAt) as started\" class=\"assessment-text-regular-11 assessment-text-grey-seven\">\r\n {{ started | date:'dd MMM, HH:mm' }}\r\n </span>\r\n </mat-panel-description>\r\n </mat-expansion-panel-header>\r\n\r\n <!-- Report is fetched when the panel opens -->\r\n <ng-template matExpansionPanelContent>\r\n <div class=\"p-3 pt-1\" [ngSwitch]=\"reportState[session.id!]\">\r\n\r\n <!-- Loading -->\r\n <div *ngSwitchCase=\"'loading'\" class=\"d-flex align-items-center gap-2 py-3 assessment-text-regular-13 assessment-text-grey-seven\">\r\n <span class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_LOADING'] }}\r\n </div>\r\n\r\n <!-- Error -->\r\n <div *ngSwitchCase=\"'error'\" class=\"py-3\">\r\n <p class=\"assessment-text-regular-13 assessment-text-danger mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_ERROR'] }}</p>\r\n <button type=\"button\" (click)=\"loadReport(session)\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORTS_RETRY'] }}\r\n </button>\r\n </div>\r\n\r\n <!-- No report yet -->\r\n <div *ngSwitchCase=\"'empty'\" class=\"py-3 assessment-text-regular-13 assessment-text-grey-seven\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_EMPTY'] }}\r\n </div>\r\n\r\n <!-- Loaded report -->\r\n <ng-container *ngSwitchCase=\"'loaded'\">\r\n <ng-container *ngIf=\"reportBySession[session.id!] as report\">\r\n\r\n <!-- Integrity summary (report top-level) -->\r\n <div class=\"row g-2\">\r\n <div class=\"col-6\">\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven text-uppercase mb-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_INTEGRITY_SCORE'] }}</p>\r\n <p class=\"assessment-text-regular-13 assessment-text-grey-ten mb-0\" [class.assessment-text-danger]=\"report.integrityFlagged\">\r\n {{ report.integrityScore }}<span *ngIf=\"report.integrityLevel\"> ({{ report.integrityLevel }})</span>\r\n </p>\r\n </div>\r\n <div class=\"col-6\" *ngIf=\"report.identityMatch\">\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven text-uppercase mb-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_IDENTITY_MATCH'] }}</p>\r\n <p class=\"assessment-text-regular-13 assessment-text-grey-ten mb-0\">{{ report.identityMatch }}</p>\r\n </div>\r\n <div class=\"col-12\" *ngIf=\"report.failureReason\">\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven text-uppercase mb-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_FAILURE_REASON'] }}</p>\r\n <p class=\"assessment-text-regular-13 assessment-text-danger mb-0\">{{ report.failureReason }}</p>\r\n </div>\r\n </div>\r\n\r\n <ng-container *ngIf=\"getParsedPayload(report) as p; else rawPayload\">\r\n\r\n <!-- Summary meta -->\r\n <div class=\"d-flex flex-wrap align-items-center gap-2 mt-3 assessment-text-regular-12 assessment-text-grey-seven\">\r\n <span *ngIf=\"p.duration_seconds != null\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_DURATION'] }}: {{ formatDuration(p.duration_seconds) }}</span>\r\n <span *ngIf=\"p.started_at\">\u00B7 {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_STARTED'] }}: {{ p.started_at | date:'dd MMM, HH:mm:ss' }}</span>\r\n <span *ngIf=\"p.ended_at\">\u00B7 {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_ENDED'] }}: {{ p.ended_at | date:'HH:mm:ss' }}</span>\r\n </div>\r\n\r\n <!-- Reasons -->\r\n <div *ngIf=\"p.integrity?.reasons?.length\" class=\"d-flex flex-column gap-2 mt-2\">\r\n <div *ngFor=\"let r of p.integrity?.reasons; trackBy: trackByIndex\" class=\"border rounded p-2\">\r\n <div class=\"d-flex align-items-center justify-content-between gap-2\">\r\n <span class=\"assessment-text-semibold-12 assessment-text-grey-ten\">{{ reasonCodeLabel(r.code) }}</span>\r\n <span *ngIf=\"r.weight != null\" class=\"badge rounded-pill assessment-text-white\" [ngClass]=\"(r.weight || 0) < 0 ? 'assessment-bg-danger' : 'assessment-bg-success'\">{{ (r.weight || 0) > 0 ? '+' : '' }}{{ r.weight }}</span>\r\n </div>\r\n <p class=\"assessment-text-regular-12 assessment-text-grey-seven mb-0 mt-1\">{{ r.detail }}</p>\r\n </div>\r\n </div>\r\n\r\n <!-- Stat tiles: face analysis -->\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mt-3 mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_ANALYSIS'] }}</p>\r\n <div class=\"row row-cols-2 row-cols-md-4 g-2 text-center\">\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\">{{ p.face_analysis?.frames_checked ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_FRAMES'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\" [class.assessment-text-danger]=\"(p.face_analysis?.no_face_frames || 0) > 0\">{{ p.face_analysis?.no_face_frames ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_NO_FACE'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\" [class.assessment-text-danger]=\"(p.face_analysis?.multi_face_frames || 0) > 0\">{{ p.face_analysis?.multi_face_frames ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_MULTI_FACE'] }}</p>\r\n </div>\r\n </div>\r\n <div class=\"col\">\r\n <div class=\"border rounded p-2 h-100\">\r\n <p class=\"assessment-text-semibold-18 mb-1\" [class.assessment-text-danger]=\"(p.face_analysis?.impersonation_frames || 0) > 0\">{{ p.face_analysis?.impersonation_frames ?? 0 }}</p>\r\n <p class=\"assessment-text-regular-11 assessment-text-grey-seven mb-0\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_IMPERSONATION'] }}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Activity breakdown -->\r\n <div *ngIf=\"p.activity?.by_type\" class=\"d-flex flex-wrap gap-2 mt-3\">\r\n <span *ngFor=\"let item of (p.activity?.by_type | keyvalue); trackBy: trackByIndex\"\r\n class=\"badge rounded-pill assessment-bg-palette-EDF3FD assessment-text-grey-ten assessment-text-medium-12\">\r\n {{ eventTypeLabel(item.key) }} <span class=\"assessment-text-semibold-12\">{{ item.value }}</span>\r\n </span>\r\n </div>\r\n\r\n <!-- Evidence images -->\r\n <ng-container *ngIf=\"p.evidence?.length\">\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mt-3 mb-2\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_EVIDENCE'] }}</p>\r\n <div class=\"d-flex flex-wrap gap-3\">\r\n <a *ngFor=\"let ev of p.evidence; trackBy: trackByIndex\" class=\"text-center text-decoration-none\"\r\n [href]=\"ev.image_url\" target=\"_blank\" rel=\"noopener\">\r\n <img class=\"proctoring-evi-img rounded border\" [src]=\"ev.image_url\" [attr.alt]=\"'frame ' + ev.seq\"\r\n (error)=\"imageErrorHandler($event, 'assets/commons-assessment/images/user.svg')\" />\r\n <span class=\"d-block assessment-text-regular-11 assessment-text-grey-seven mt-1\">\r\n <span *ngIf=\"ev.is_reference\" class=\"badge rounded-pill assessment-bg-primary-one assessment-text-white me-1\">{{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_REFERENCE'] }}</span>\r\n #{{ ev.seq }} \u00B7 {{ ev.captured_at | date:'HH:mm:ss' }}\r\n </span>\r\n </a>\r\n </div>\r\n </ng-container>\r\n\r\n <!-- Timeline -->\r\n <ng-container *ngIf=\"p.timeline?.length\">\r\n <p class=\"assessment-text-semibold-13 assessment-text-grey-ten mt-3 mb-2\">\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.REPORT_TIMELINE'] }} ({{ p.timeline?.length }})\r\n </p>\r\n <div class=\"proctoring-log assessment-bg-grey-ten assessment-text-grey-one font-monospace small rounded p-3 overflow-auto\">\r\n <div *ngFor=\"let ev of p.timeline; trackBy: trackByIndex\" class=\"text-nowrap\" [class.fw-semibold]=\"isNoteworthy(ev.type)\">\r\n <span class=\"assessment-text-grey-five me-2\">#{{ ev.seq }}</span>\r\n <span [class.assessment-text-palette-ADC9F6]=\"isNoteworthy(ev.type)\">{{ eventTypeLabel(ev.type) }}</span>\r\n <span class=\"assessment-text-grey-five ms-2\">{{ ev.at | date:'HH:mm:ss' }} ({{ ev.source }})</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n </ng-container>\r\n\r\n <!-- Fallback: raw payload if it isn't parseable JSON -->\r\n <ng-template #rawPayload>\r\n <pre *ngIf=\"report.reportPayload\" class=\"proctoring-payload assessment-bg-grey-ten assessment-text-grey-one small rounded p-3 overflow-auto mb-0 mt-3\">{{ report.reportPayload }}</pre>\r\n </ng-template>\r\n\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n </ng-template>\r\n </mat-expansion-panel>\r\n </mat-accordion>\r\n\r\n <!-- Load more -->\r\n <div *ngIf=\"sessions.length && !last\" class=\"text-center mt-3\">\r\n <button type=\"button\" (click)=\"loadMore()\" [disabled]=\"loading\"\r\n class=\"assessment-btn-primary-transparent assessment-border-radius-two assessment-text-semibold-13 px-3 py-2 d-inline-flex align-items-center gap-2\">\r\n <span *ngIf=\"loading\" class=\"spinner-border spinner-border-sm\" role=\"status\" aria-hidden=\"true\"></span>\r\n {{ labelConfig['COMMONS_ASSESSMENT.PROCTORING.LOAD_MORE'] }}\r\n </button>\r\n </div>\r\n\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.assessment-text-grey-ten{color:var(--assessment-grey-ten)!important}.assessment-bg-grey-ten{background-color:var(--assessment-grey-ten)!important}.assessment-text-grey-nine{color:var(--assessment-grey-nine)!important}.assessment-bg-grey-nine{background-color:var(--assessment-grey-nine)!important}.assessment-text-grey-eight{color:var(--assessment-grey-eight)!important}.assessment-bg-grey-eight{background-color:var(--assessment-grey-eight)!important}.assessment-text-grey-seven{color:var(--assessment-grey-seven)!important}.assessment-bg-grey-seven{background-color:var(--assessment-grey-seven)!important}.assessment-text-grey-six{color:var(--assessment-grey-six)!important}.assessment-bg-grey-six{background-color:var(--assessment-grey-six)!important}.assessment-text-grey-five{color:var(--assessment-grey-five)!important}.assessment-bg-grey-five{background-color:var(--assessment-grey-five)!important}.assessment-text-grey-four{color:var(--assessment-grey-four)!important}.assessment-bg-grey-four{background-color:var(--assessment-grey-four)!important}.assessment-text-grey-three{color:var(--assessment-grey-three)!important}.assessment-bg-grey-three{background-color:var(--assessment-grey-three)!important}.assessment-text-grey-two{color:var(--assessment-grey-two)!important}.assessment-bg-grey-two{background-color:var(--assessment-grey-two)!important}.assessment-text-grey-one{color:var(--assessment-grey-one)!important}.assessment-bg-grey-one{background-color:var(--assessment-grey-one)!important}.assessment-text-white{color:var(--assessment-white)!important}.assessment-bg-white{background-color:var(--assessment-white)!important}.assessment-text-black{color:var(--assessment-black)!important}.assessment-bg-black{background-color:var(--assessment-black)!important}.assessment-text-danger{color:var(--assessment-danger)!important}.assessment-bg-danger{background-color:var(--assessment-danger)!important}.assessment-text-danger-bg{color:var(--assessment-danger-bg)!important}.assessment-bg-danger-bg{background-color:var(--assessment-danger-bg)!important}.assessment-text-success{color:var(--assessment-success)!important}.assessment-bg-success{background-color:var(--assessment-success)!important}.assessment-text-success-bg{color:var(--assessment-success-bg)!important}.assessment-bg-success-bg{background-color:var(--assessment-success-bg)!important}.assessment-text-warning{color:var(--assessment-warning)!important}.assessment-bg-warning{background-color:var(--assessment-warning)!important}.assessment-text-warning-bg{color:var(--assessment-warning-bg)!important}.assessment-bg-warning-bg{background-color:var(--assessment-warning-bg)!important}.assessment-text-primary-one{color:var(--assessment-primary-one)!important}.assessment-bg-primary-one{background-color:var(--assessment-primary-one)!important}.assessment-text-primary-four{color:var(--assessment-primary-four)!important}.assessment-bg-primary-four{background-color:var(--assessment-primary-four)!important}.assessment-text-palette-EDF3FD{color:var(--assessment-palette-EDF3FD)!important}.assessment-bg-palette-EDF3FD{background-color:var(--assessment-palette-EDF3FD)!important}.assessment-text-palette-C8DAF9{color:var(--assessment-palette-C8DAF9)!important}.assessment-bg-palette-C8DAF9{background-color:var(--assessment-palette-C8DAF9)!important}.assessment-text-palette-ADC9F6{color:var(--assessment-palette-ADC9F6)!important}.assessment-bg-palette-ADC9F6{background-color:var(--assessment-palette-ADC9F6)!important}.assessment-text-palette-FEF9F1{color:var(--assessment-palette-FEF9F1)!important}.assessment-bg-palette-FEF9F1{background-color:var(--assessment-palette-FEF9F1)!important}.assessment-text-palette-F9DAA6{color:var(--assessment-palette-F9DAA6)!important}.assessment-bg-palette-F9DAA6{background-color:var(--assessment-palette-F9DAA6)!important}.assessment-text-palette-E8F7F0{color:var(--assessment-palette-E8F7F0)!important}.assessment-bg-palette-E8F7F0{background-color:var(--assessment-palette-E8F7F0)!important}.assessment-text-palette-B7E7CF{color:var(--assessment-palette-B7E7CF)!important}.assessment-bg-palette-B7E7CF{background-color:var(--assessment-palette-B7E7CF)!important}.assessment-text-palette-FEF1E8{color:var(--assessment-palette-FEF1E8)!important}.assessment-bg-palette-FEF1E8{background-color:var(--assessment-palette-FEF1E8)!important}.assessment-text-palette-FAD2B9{color:var(--assessment-palette-FAD2B9)!important}.assessment-bg-palette-FAD2B9{background-color:var(--assessment-palette-FAD2B9)!important}.assessment-box-shadow-one{box-shadow:var(--assessment-box-shadow-one)!important}.assessment-border-radius-one{border-radius:var(--assessment-border-radius-one)!important}.assessment-border-radius-two{border-radius:var(--assessment-border-radius-two)!important}.assessment-border-radius-three{border-radius:var(--assessment-border-radius-three)!important}.assessment-border-radius-four{border-radius:var(--assessment-border-radius-four)!important}.assessment-border-radius-five{border-radius:var(--assessment-border-radius-five)!important}.assessment-border-radius-six{border-radius:var(--assessment-border-radius-six)!important}.assessment-input-border-one{border:var(--assessment-input-border-one)!important}.assessment-input-border-invalid{border:var(--assessment-input-border-invalid)!important}.assessment-input-focus-border{border:var(--assessment-input-focus-border)!important}.assessment-border-two{border:var(--assessment-border-two)!important}.assessment-card-border{border:var(--assessment-card-border)!important}.assessment-tooltip-border{border:var(--assessment-tooltip-border)!important}.assessment-box-shadow-tooltip{box-shadow:var(--assessment-box-shadow-tooltip)!important}.assessment-button-padding{padding:var(--assessment-button-padding)!important}.assessment-button-padding-large{padding:var(--assessment-button-padding-large)!important}.assessment-input-padding{padding:var(--assessment-input-padding)!important}.assessment-text-font-family{color:var(--assessment-font-family)!important}.assessment-bg-font-family{background-color:var(--assessment-font-family)!important}.assessment-text-regular-12{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-semibold-12{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-medium-11{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.48rem + .25vw);line-height:calc(.8rem + .25vw)}.assessment-text-medium-10{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.42rem + .2vw);line-height:calc(.72rem + .2vw)}.assessment-text-regular-11{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.48rem + .25vw);line-height:calc(.8rem + .25vw)}.assessment-text-medium-12{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.48rem + .3vw);line-height:calc(.9rem + .3vw)}.assessment-text-regular-13{font-weight:400;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-semibold-13{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-medium-13{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.64rem + .2vw)!important;line-height:calc(.9rem + .2vw)!important}.assessment-text-medium-14{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.7rem + .2vw)!important;line-height:calc(1.2rem + .2vw)!important}.assessment-text-semibold-14{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.7rem + .2vw);line-height:calc(1.2rem + .2vw)}.assessment-text-regular-15{font-weight:400;font-family:var(--assessment-font-family);font-size:calc(.85rem + .1vw);line-height:calc(1.4rem + .1vw)}.assessment-text-medium-15{font-weight:500;font-family:var(--assessment-font-family);font-size:calc(.85rem + .1vw);line-height:calc(1.25rem + .1vw)}.assessment-text-semibold-15{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.85rem + .1vw);line-height:calc(1.25rem + .1vw)}.assessment-text-semibold-16{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(.77rem + .25vw);line-height:calc(1.25rem + .2vw)}.assessment-text-medium-16{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(.77rem + .25vw);line-height:calc(1.25rem + .2vw)}.assessment-text-medium-18{font-weight:500;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .125vw)!important;line-height:calc(1.5rem + .1vw)!important}.assessment-text-semibold-18{font-weight:600;font-family:var(--assessment-font-family)!important;font-size:calc(1rem + .125vw)!important;line-height:calc(1.5rem + .1vw)!important}@media (min-height: 100vw) and (orientation: portrait){.assessment-text-medium-18,.assessment-text-semibold-18{font-size:calc(1rem + .1vh)!important;line-height:calc(1.6rem + .1vh)!important}.assessment-text-medium-16,.assessment-text-semibold-16{font-size:calc(.9rem + .2vh)!important;line-height:calc(1.4rem + .2vh)!important}.assessment-text-regular-15,.assessment-text-semibold-15{font-size:calc(.8rem + .2vh);line-height:calc(1.27rem + .2vh)}.assessment-text-medium-15{font-size:calc(.82rem + .2vh);line-height:calc(1.27rem + .2vh)}.assessment-text-medium-12,.assessment-text-regular-12,.assessment-text-semibold-12{font-size:calc(.5rem + .4vh);line-height:calc(.8rem + .4vh)}.assessment-text-medium-14,.assessment-text-semibold-14{font-size:calc(.8rem + .1vh)!important;line-height:calc(1.2rem + .2vh)!important}.assessment-text-regular-13,.assessment-text-medium-13,.assessment-text-semibold-13{font-size:calc(.7rem + .2vh)!important;line-height:calc(1rem + .3vh)!important}.assessment-text-regular-11,.assessment-text-medium-11{font-size:calc(.5rem + .2vh)!important;line-height:calc(.8rem + .2vh)!important}.assessment-text-medium-10{font-size:calc(.45rem + .2vh)!important;line-height:calc(.72rem + .2vh)!important}}.assessment-btn-primary{background-color:var(--assessment-primary-one);color:var(--assessment-white);border:.064rem solid var(--assessment-primary-one);border-radius:var(--assessment-border-radius-two)}.assessment-btn-primary-transparent{background-color:var(--assessment-white);color:var(--assessment-primary-one);border-radius:var(--assessment-border-radius-two);border:.064rem solid var(--assessment-primary-one)}.assessment-zoom-animation{transition:transform .2s ease;transform:translateZ(0);text-rendering:optimizeLegibility}.assessment-zoom-animation:hover{transform:scale(1.03)}.assessment-zoom-animation:active{transform:scale(1)}.assessment-zoom-animation:disabled{transform:none!important}.change-direction{transform:rotate(180deg);transition:.3s ease-out}.change-direction-reverse{transform:rotate(0);transition:.3s ease-out}.outline-0{outline:none}.cursor-grab{cursor:grab}.cursor-pointer{cursor:pointer}.action-icon{width:1.2rem}.mat-menu-item,.mat-mdc-menu-item{height:inherit;min-height:unset;--mat-menu-item-label-text-font: var(--assessment-font-family) !important;--mat-menu-item-label-text-size: 14px !important;--mat-menu-item-label-text-weight: 600 !important;--mat-menu-item-label-text-line-height: inherit !important}.skill-chip{width:-moz-fit-content;width:fit-content;background:var(--assessment-palette-EDF3FD);border:.064rem solid var(--assessment-palette-C8DAF9)}.assessment-form-check-input-primary-one{min-height:unset}.assessment-form-check-input-primary-one .form-check-input{width:1rem;height:1rem}.assessment-form-check-input-primary-one .form-check-input:checked{background-color:var(--assessment-primary-one);color:var(--assessment-primary-one)}.assessment-form-check-input-primary-one .form-check-input:disabled{opacity:.8}.form-check-input:checked{background-color:var(--assessment-primary-one);border-color:var(--assessment-primary-one)}.form-check-input:focus{border-color:var(--assessment-primary-one);box-shadow:none}.badge{font-weight:500}.proctoring-panel-header{height:auto!important}.proctoring-log{max-height:16rem}.proctoring-payload{max-height:18rem;white-space:pre-wrap;word-break:break-word}.proctoring-evi-img{width:5rem;height:5rem;object-fit:cover}\n"], components: [{ type: i3.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { type: i3.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.MatAccordion, selector: "mat-accordion", inputs: ["multi", "displayMode", "togglePosition", "hideToggle"], exportAs: ["matAccordion"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.MatExpansionPanelTitle, selector: "mat-panel-title" }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.MatExpansionPanelDescription, selector: "mat-panel-description" }, { type: i3.MatExpansionPanelContent, selector: "ng-template[matExpansionPanelContent]" }, { type: i4.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i4.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], pipes: { "date": i4.DatePipe, "keyvalue": i4.KeyValuePipe } });
166
166
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: ProctoringResultComponent, decorators: [{
167
167
  type: Component,
168
168
  args: [{
@@ -174,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
174
174
  type: Inject,
175
175
  args: [MAT_DIALOG_DATA]
176
176
  }] }]; } });
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY3RvcmluZy1yZXN1bHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LXRha2VyL2NvbXBvbmVudHMvcHJvY3RvcmluZy1yZXN1bHQvcHJvY3RvcmluZy1yZXN1bHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LXRha2VyL2NvbXBvbmVudHMvcHJvY3RvcmluZy1yZXN1bHQvcHJvY3RvcmluZy1yZXN1bHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBV3pFLE1BQU0sT0FBTyx5QkFBeUI7SUFtQnBDLFlBQ1MsU0FBa0QsRUFDakQsc0JBQThDLEVBQ3RCLElBSy9CO1FBUE0sY0FBUyxHQUFULFNBQVMsQ0FBeUM7UUFDakQsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUN0QixTQUFJLEdBQUosSUFBSSxDQUtuQztRQXJCSCxhQUFRLEdBQStCLEVBQUUsQ0FBQztRQUMxQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIsU0FBSSxHQUFHLElBQUksQ0FBQztRQUNKLFNBQUksR0FBRyxDQUFDLENBQUM7UUFDQSxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBRTNCLDZEQUE2RDtRQUM3RCxvQkFBZSxHQUE4QyxFQUFFLENBQUM7UUFDaEUsZ0JBQVcsR0FBeUMsRUFBRSxDQUFD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LENBQUMsS0FBVSxFQUFFLFFBQWdCO1FBQzVDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDOzt1SEF4S1UseUJBQXlCLG9GQXNCMUIsZUFBZTsyR0F0QmQseUJBQXlCLDZEQ1p0QyxxbmVBZ09BOzRGRHBOYSx5QkFBeUI7a0JBTHJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsV0FBVyxFQUFFLG9DQUFvQztvQkFDakQsU0FBUyxFQUFFLENBQUMsb0NBQW9DLENBQUM7aUJBQ2xEOzswQkF1QkksTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEFzc2Vzc21lbnRUYWtlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hc3Nlc3NtZW50LXRha2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9jdG9yaW5nUGF5bG9hZCwgUHJvY3RvcmluZ1JlcG9ydCwgUHJvY3RvcmluZ1Nlc3Npb25TdW1tYXJ5IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvcHJvY3RvcmluZy5pbnRlcmZhY2UnO1xyXG5cclxudHlwZSBSZXBvcnRTdGF0ZSA9ICdsb2FkaW5nJyB8ICdsb2FkZWQnIHwgJ2VtcHR5JyB8ICdlcnJvcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1wcm9jdG9yaW5nLXJlc3VsdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2N0b3JpbmctcmVzdWx0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9jdG9yaW5nLXJlc3VsdC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9jdG9yaW5nUmVzdWx0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBsYWJlbENvbmZpZzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICBpbWFnZUNvbmZpZzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICBhc3Nlc3NlZUlkOiBudW1iZXI7XHJcbiAgYXNzZXNzZWVOYW1lOiBzdHJpbmc7XHJcblxyXG4gIHNlc3Npb25zOiBQcm9jdG9yaW5nU2Vzc2lvblN1bW1hcnlbXSA9IFtdO1xyXG4gIGxvYWRpbmcgPSBmYWxzZTtcclxuICBlcnJvcmVkID0gZmFsc2U7XHJcbiAgdG90YWxFbGVtZW50cyA9IDA7XHJcbiAgbGFzdCA9IHRydWU7XHJcbiAgcHJpdmF0ZSBwYWdlID0gMDtcclxuICBwcml2YXRlIHJlYWRvbmx5IHNpemUgPSAyMDtcclxuXHJcbiAgLy8gcGVyLXNlc3Npb24gbGF6eSByZXBvcnQgZGF0YSArIHN0YXRlIChrZXllZCBieSBzZXNzaW9uIGlkKVxyXG4gIHJlcG9ydEJ5U2Vzc2lvbjogeyBbc2Vzc2lvbklkOiBudW1iZXJdOiBQcm9jdG9yaW5nUmVwb3J0IH0gPSB7fTtcclxuICByZXBvcnRTdGF0ZTogeyBbc2Vzc2lvbklkOiBudW1iZXJdOiBSZXBvcnRTdGF0ZSB9ID0ge307XHJcbiAgcHJpdmF0ZSBwYXJzZWRDYWNoZTogeyBbcmVwb3J0SWQ6IG51bWJlcl06IFByb2N0b3JpbmdQYXlsb2FkIHwgbnVsbCB9ID0ge307XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFByb2N0b3JpbmdSZXN1bHRDb21wb25lbnQ+LFxyXG4gICAgcHJpdmF0ZSBhc3Nlc3NtZW50VGFrZXJTZXJ2aWNlOiBBc3Nlc3NtZW50VGFrZXJTZXJ2aWNlLFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiB7XHJcbiAgICAgIGxhYmVsQ29uZmlnPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICAgICAgaW1hZ2VDb25maWc/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gICAgICBhc3Nlc3NlZUlkPzogbnVtYmVyO1xyXG4gICAgICBhc3Nlc3NlZU5hbWU/OiBzdHJpbmc7XHJcbiAgICB9XHJcbiAgKSB7XHJcbiAgICB0aGlzLmxhYmVsQ29uZmlnID0gZGF0YT8ubGFiZWxDb25maWcgfHwge307XHJcbiAgICB0aGlzLmltYWdlQ29uZmlnID0gZGF0YT8uaW1hZ2VDb25maWcgfHwge307XHJcbiAgICB0aGlzLmFzc2Vzc2VlSWQgPSBkYXRhPy5hc3Nlc3NlZUlkIGFzIG51bWJlcjtcclxuICAgIHRoaXMuYXNzZXNzZWVOYW1lID0gZGF0YT8uYXNzZXNzZWVOYW1lIHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRTZXNzaW9ucygpO1xyXG4gIH1cclxuXHJcbiAgbG9hZFNlc3Npb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmFzc2Vzc2VlSWQgfHwgdGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgIGlmICghdGhpcy5hc3Nlc3NlZUlkKSB7IHRoaXMuZXJyb3JlZCA9IHRydWU7IH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZXJyb3JlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5hc3Nlc3NtZW50VGFrZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRQcm9jdG9yaW5nU2Vzc2lvbnModGhpcy5hc3Nlc3NlZUlkLCB7IGRpcmVjdGlvbjogJ2Rlc2MnLCBwYWdlOiB0aGlzLnBhZ2UsIHNpemU6IHRoaXMuc2l6ZSwgc29ydEJ5OiAnaWQnIH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZXNzaW9ucyA9IFsuLi50aGlzLnNlc3Npb25zLCAuLi4ocmVzPy5jb250ZW50IHx8IFtdKV07XHJcbiAgICAgICAgICB0aGlzLnRvdGFsRWxlbWVudHMgPSByZXM/LnRvdGFsRWxlbWVudHMgPz8gdGhpcy5zZXNzaW9ucy5sZW5ndGg7XHJcbiAgICAgICAgICB0aGlzLmxhc3QgPSByZXM/Lmxhc3QgPz8gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5lcnJvcmVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZE1vcmUoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMubGFzdCAmJiAhdGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgIHRoaXMucGFnZSsrO1xyXG4gICAgICB0aGlzLmxvYWRTZXNzaW9ucygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEZldGNoZXMgdGhlIHJlcG9ydCBmb3IgYSBzZXNzaW9uIHRoZSBmaXJzdCB0aW1lIGl0cyBwYW5lbCBpcyBleHBhbmRlZC4gKi9cclxuICBsb2FkUmVwb3J0KHNlc3Npb246IFByb2N0b3JpbmdTZXNzaW9uU3VtbWFyeSk6IHZvaWQge1xyXG4gICAgY29uc3QgaWQgPSBzZXNzaW9uPy5pZDtcclxuICAgIGlmIChpZCA9PSBudWxsIHx8IHRoaXMucmVwb3J0U3RhdGVbaWRdID09PSAnbG9hZGluZycgfHwgdGhpcy5yZXBvcnRTdGF0ZVtpZF0gPT09ICdsb2FkZWQnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucmVwb3J0U3RhdGVbaWRdID0gJ2xvYWRpbmcnO1xyXG4gICAgdGhpcy5hc3Nlc3NtZW50VGFrZXJTZXJ2aWNlLmdldFByb2N0b3JpbmdSZXBvcnRCeVNlc3Npb24oaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghcmVzIHx8IHR5cGVvZiByZXMgIT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICB0aGlzLnJlcG9ydFN0YXRlW2lkXSA9ICdlbXB0eSc7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVwb3J0QnlTZXNzaW9uW2lkXSA9IHJlcztcclxuICAgICAgICB0aGlzLnJlcG9ydFN0YXRlW2lkXSA9ICdsb2FkZWQnO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgLy8gbm8gcmVwb3J0IHlldCAoZS5nLiBzZXNzaW9uIG5vdCB2YWxpZGF0ZWQpIOKGkiBlbXB0eTsgYW55dGhpbmcgZWxzZSDihpIgZXJyb3JcclxuICAgICAgICB0aGlzLnJlcG9ydFN0YXRlW2lkXSA9IGVycj8uc3RhdHVzID09PSA0MDQgPyAnZW1wdHknIDogJ2Vycm9yJztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5U2Vzc2lvbklkKF9pbmRleDogbnVtYmVyLCBzZXNzaW9uOiBQcm9jdG9yaW5nU2Vzc2lvblN1bW1hcnkpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHNlc3Npb24/LmlkID8/IF9pbmRleDtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcblxyXG4gIC8qKiBQYXJzZXMgKGFuZCBjYWNoZXMpIHRoZSByZXBvcnRQYXlsb2FkIEpTT04uIFJldHVybnMgbnVsbCBpZiBhYnNlbnQgb3Igbm90IHZhbGlkIEpTT04uICovXHJcbiAgZ2V0UGFyc2VkUGF5bG9hZChyZXBvcnQ6IFByb2N0b3JpbmdSZXBvcnQpOiBQcm9jdG9yaW5nUGF5bG9hZCB8IG51bGwge1xyXG4gICAgY29uc3QgaWQgPSByZXBvcnQ/LmlkID8/IC0xO1xyXG4gICAgaWYgKCEoaWQgaW4gdGhpcy5wYXJzZWRDYWNoZSkpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICB0aGlzLnBhcnNlZENhY2hlW2lkXSA9IHJlcG9ydD8ucmVwb3J0UGF5bG9hZCA/IEpTT04ucGFyc2UocmVwb3J0LnJlcG9ydFBheWxvYWQpIDogbnVsbDtcclxuICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgdGhpcy5wYXJzZWRDYWNoZVtpZF0gPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5wYXJzZWRDYWNoZVtpZF07XHJcbiAgfVxyXG5cclxuICAvKiogRm9ybWF0cyBhIGR1cmF0aW9uIGluIHNlY29uZHMgYXMgYE1tIFNzYCAob3IgYFNzYCB1bmRlciBhIG1pbnV0ZSkuICovXHJcbiAgZm9ybWF0RHVyYXRpb24oc2Vjb25kcz86IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAoc2Vjb25kcyA9PSBudWxsKSB7IHJldHVybiAnJzsgfVxyXG4gICAgY29uc3QgbSA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTtcclxuICAgIGNvbnN0IHMgPSBzZWNvbmRzICUgNjA7XHJcbiAgICByZXR1cm4gbSA+IDAgPyBgJHttfW0gJHtzfXNgIDogYCR7c31zYDtcclxuICB9XHJcblxyXG4gIC8qKiBTZXNzaW9uIHRpbWVzdGFtcHMgYXJlIGVwb2NoIG1pbGxpc2Vjb25kcyBhbHJlYWR5OyBndWFyZCAwL3VuZGVmaW5lZCBzbyBub3RoaW5nIHJlbmRlcnMuICovXHJcbiAgdG9NaWxsaXMoZXBvY2hNaWxsaXM/OiBudW1iZXIpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIHJldHVybiBlcG9jaE1pbGxpcyA/IGVwb2NoTWlsbGlzIDogbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZW1lIGJhZGdlIGNsYXNzZXMgZm9yIGEgc2Vzc2lvbiBzdGF0dXMuXHJcbiAgICogQUNUSVZFID0gcnVubmluZywgVkFMSURBVElORyA9IHJlcG9ydCBpbiBwcm9ncmVzcywgVkFMSURBVEVEID0gcmVwb3J0IHJlYWR5LFxyXG4gICAqIEVOREVEID0gc3RvcHBlZC9pbnZhbGlkYXRlZCwgRkFJTEVEID0gZXJyb3JlZC5cclxuICAgKi9cclxuICBzdGF0dXNCYWRnZUNsYXNzKHN0YXR1cz86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKChzdGF0dXMgfHwgJycpLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgY2FzZSAnQUNUSVZFJzogcmV0dXJuICdhc3Nlc3NtZW50LWJnLXByaW1hcnktb25lIGFzc2Vzc21lbnQtdGV4dC13aGl0ZSc7XHJcbiAgICAgIGNhc2UgJ1ZBTElEQVRJTkcnOiByZXR1cm4gJ2Fzc2Vzc21lbnQtYmctd2FybmluZyBhc3Nlc3NtZW50LXRleHQtd2hpdGUnO1xyXG4gICAgICBjYXNlICdWQUxJREFURUQnOiByZXR1cm4gJ2Fzc2Vzc21lbnQtYmctc3VjY2VzcyBhc3Nlc3NtZW50LXRleHQtd2hpdGUnO1xyXG4gICAgICBjYXNlICdGQUlMRUQnOiByZXR1cm4gJ2Fzc2Vzc21lbnQtYmctZGFuZ2VyIGFzc2Vzc21lbnQtdGV4dC13aGl0ZSc7XHJcbiAgICAgIGNhc2UgJ0VOREVEJzpcclxuICAgICAgZGVmYXVsdDogcmV0dXJuICdhc3Nlc3NtZW50LWJnLWdyZXktc2l4IGFzc2Vzc21lbnQtdGV4dC13aGl0ZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogTWFwcyBhIHJhdyBldmVudCBjb2RlIChlLmcuIGB0YWIuaGlkZGVuYCkgdG8gYSBmcmllbmRseSBsYWJlbCwgZmFsbGluZyBiYWNrIHRvIHRoZSByYXcgY29kZS4gKi9cclxuICBldmVudFR5cGVMYWJlbCh0eXBlPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdHlwZSkgeyByZXR1cm4gJyc7IH1cclxuICAgIHJldHVybiB0aGlzLmxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5FVkVOVC4nICsgdHlwZV0gfHwgdHlwZTtcclxuICB9XHJcblxyXG4gIC8qKiBNYXBzIGEgcmF3IHJlYXNvbiBjb2RlIChlLmcuIGBicm93c2VyX2FjdGl2aXR5YCkgdG8gYSBmcmllbmRseSBsYWJlbCwgZmFsbGluZyBiYWNrIHRvIHRoZSByYXcgY29kZS4gKi9cclxuICByZWFzb25Db2RlTGFiZWwoY29kZT86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWNvZGUpIHsgcmV0dXJuICcnOyB9XHJcbiAgICByZXR1cm4gdGhpcy5sYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVBU09OLicgKyBjb2RlXSB8fCBjb2RlO1xyXG4gIH1cclxuXHJcbiAgLyoqIEhpZ2hsaWdodHMgaW50ZWdyaXR5LXJlbGV2YW50IHRpbWVsaW5lIGV2ZW50cyAodGFiIHN3aXRjaGVzLCBmYWNlIGlzc3Vlcywgc2Vzc2lvbiBtYXJrZXJzKS4gKi9cclxuICBpc05vdGV3b3J0aHkodHlwZT86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0eXBlKSB7IHJldHVybiBmYWxzZTsgfVxyXG4gICAgcmV0dXJuIHR5cGUuaW5jbHVkZXMoJ3RhYi4nKSB8fCB0eXBlLmluY2x1ZGVzKCdub19mYWNlJykgfHwgdHlwZS5pbmNsdWRlcygnbXVsdGlfZmFjZScpXHJcbiAgICAgIHx8IHR5cGUuaW5jbHVkZXMoJ3Nlc3Npb24uJykgfHwgdHlwZS5pbmNsdWRlcygnY2FtZXJhLicpIHx8IHR5cGUuaW5jbHVkZXMoJ2NsaXBib2FyZCcpXHJcbiAgICAgIHx8IHR5cGUuaW5jbHVkZXMoJ2Z1bGxzY3JlZW4nKTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIGltYWdlRXJyb3JIYW5kbGVyKGV2ZW50OiBhbnksIGZpbGVQYXRoOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGV2ZW50LnRhcmdldC5zcmMgPSBmaWxlUGF0aDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBoLTEwMCBvdmVyZmxvdy1oaWRkZW4gYXNzZXNzbWVudC1iZy13aGl0ZVwiPlxyXG5cclxuICA8IS0tIEhlYWRlciAtLT5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC0zIHAtMyBweC1tZC00IGJvcmRlci1ib3R0b21cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxyXG4gICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xNiBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW4gbWItMVwiPlxyXG4gICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVNVTFRfVElUTEUnXSB9fVxyXG4gICAgICA8L3A+XHJcbiAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbWItMFwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiYXNzZXNzZWVOYW1lXCI+e3sgYXNzZXNzZWVOYW1lIH19IMK3IDwvc3Bhbj57eyB0b3RhbEVsZW1lbnRzIH19IHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5TRVNTSU9OU19DT1VOVCddIH19XHJcbiAgICAgIDwvcD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiAoY2xpY2spPVwiY2xvc2UoKVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPjwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIEJvZHkgLS0+XHJcbiAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIG92ZXJmbG93LWF1dG8gcC0zIHB4LW1kLTRcIj5cclxuXHJcbiAgICA8IS0tIExvYWRpbmcgKGluaXRpYWwpIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmcgJiYgIXNlc3Npb25zLmxlbmd0aFwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yIHB5LTUgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW5cIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5TRVNTSU9OU19MT0FESU5HJ10gfX1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gRXJyb3IgLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JlZCAmJiAhc2Vzc2lvbnMubGVuZ3RoXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBweS01XCI+XHJcbiAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWRhbmdlciBtYi0zXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlNFU1NJT05TX0VSUk9SJ10gfX08L3A+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJsb2FkU2Vzc2lvbnMoKVwiXHJcbiAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LWJ0bi1wcmltYXJ5LXRyYW5zcGFyZW50IGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIHB4LTMgcHktMlwiPlxyXG4gICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRTX1JFVFJZJ10gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEVtcHR5IC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nICYmICFlcnJvcmVkICYmICFzZXNzaW9ucy5sZW5ndGhcIiBjbGFzcz1cInRleHQtY2VudGVyIHB5LTUgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW5cIj5cclxuICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlNFU1NJT05TX0VNUFRZJ10gfX1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gU2Vzc2lvbnMgYWNjb3JkaW9uIC0tPlxyXG4gICAgPG1hdC1hY2NvcmRpb24gY2xhc3M9XCJkLWJsb2NrXCIgKm5nSWY9XCJzZXNzaW9ucy5sZW5ndGhcIj5cclxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgKm5nRm9yPVwibGV0IHNlc3Npb24gb2Ygc2Vzc2lvbnM7IHRyYWNrQnk6IHRyYWNrQnlTZXNzaW9uSWRcIlxyXG4gICAgICAgIGNsYXNzPVwic2hhZG93LW5vbmUgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LXBhbmVsIGJvcmRlciBtYi0yXCIgKG9wZW5lZCk9XCJsb2FkUmVwb3J0KHNlc3Npb24pXCI+XHJcblxyXG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBjbGFzcz1cInByb2N0b3JpbmctcGFuZWwtaGVhZGVyIHAtM1wiPlxyXG4gICAgICAgICAgPG1hdC1wYW5lbC10aXRsZSBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBteS0xIGFsaWduLWl0ZW1zLXN0YXJ0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlblwiPlxyXG4gICAgICAgICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfU0VTU0lPTiddIH19IHt7IHNlc3Npb24uaWQgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbXQtMVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2Vzc2lvbi5zdGF0dXNcIiBjbGFzcz1cImJhZGdlIHJvdW5kZWQtcGlsbCB0ZXh0LWNhcGl0YWxpemUgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMFwiIFtuZ0NsYXNzXT1cInN0YXR1c0JhZGdlQ2xhc3Moc2Vzc2lvbi5zdGF0dXMpXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBzZXNzaW9uLnN0YXR1cyB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlc3Npb24uaW50ZWdyaXR5RmxhZ2dlZCB8fCByZXBvcnRCeVNlc3Npb25bc2Vzc2lvbi5pZCFdPy5pbnRlZ3JpdHlGbGFnZ2VkXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYmFkZ2Ugcm91bmRlZC1waWxsIGFzc2Vzc21lbnQtYmctZGFuZ2VyIGFzc2Vzc21lbnQtdGV4dC13aGl0ZSBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEwXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0ZMQUdHRUQnXSB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XHJcbiAgICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uIGNsYXNzPVwianVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgbWUtM1wiPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRvTWlsbGlzKHNlc3Npb24uc3RhcnRlZEF0KSBhcyBzdGFydGVkXCIgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMSBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlblwiPlxyXG4gICAgICAgICAgICAgIHt7IHN0YXJ0ZWQgfCBkYXRlOidkZCBNTU0sIEhIOm1tJyB9fVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L21hdC1wYW5lbC1kZXNjcmlwdGlvbj5cclxuICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxyXG5cclxuICAgICAgICA8IS0tIFJlcG9ydCBpcyBmZXRjaGVkIHdoZW4gdGhlIHBhbmVsIG9wZW5zIC0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRFeHBhbnNpb25QYW5lbENvbnRlbnQ+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0zIHB0LTFcIiBbbmdTd2l0Y2hdPVwicmVwb3J0U3RhdGVbc2Vzc2lvbi5pZCFdXCI+XHJcblxyXG4gICAgICAgICAgICA8IS0tIExvYWRpbmcgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidsb2FkaW5nJ1wiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBweS0zIGFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9MT0FESU5HJ10gfX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEVycm9yIC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInZXJyb3InXCIgY2xhc3M9XCJweS0zXCI+XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMyBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyIG1iLTJcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0VSUk9SJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImxvYWRSZXBvcnQoc2Vzc2lvbilcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LWJ0bi1wcmltYXJ5LXRyYW5zcGFyZW50IGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIHB4LTMgcHktMlwiPlxyXG4gICAgICAgICAgICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVFNfUkVUUlknXSB9fVxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gTm8gcmVwb3J0IHlldCAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2VtcHR5J1wiIGNsYXNzPVwicHktMyBhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlblwiPlxyXG4gICAgICAgICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfRU1QVFknXSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gTG9hZGVkIHJlcG9ydCAtLT5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2xvYWRlZCdcIj5cclxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVwb3J0QnlTZXNzaW9uW3Nlc3Npb24uaWQhXSBhcyByZXBvcnRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIEludGVncml0eSBzdW1tYXJ5IChyZXBvcnQgdG9wLWxldmVsKSAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgZy0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gdGV4dC11cHBlcmNhc2UgbWItMVwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfSU5URUdSSVRZX1NDT1JFJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW4gbWItMFwiIFtjbGFzcy5hc3Nlc3NtZW50LXRleHQtZGFuZ2VyXT1cInJlcG9ydC5pbnRlZ3JpdHlGbGFnZ2VkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyByZXBvcnQuaW50ZWdyaXR5U2NvcmUgfX08c3BhbiAqbmdJZj1cInJlcG9ydC5pbnRlZ3JpdHlMZXZlbFwiPiAoe3sgcmVwb3J0LmludGVncml0eUxldmVsIH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIiAqbmdJZj1cInJlcG9ydC5pZGVudGl0eU1hdGNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMSBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiB0ZXh0LXVwcGVyY2FzZSBtYi0xXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9JREVOVElUWV9NQVRDSCddIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuIG1iLTBcIj57eyByZXBvcnQuaWRlbnRpdHlNYXRjaCB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiAqbmdJZj1cInJlcG9ydC5mYWlsdXJlUmVhc29uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMSBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiB0ZXh0LXVwcGVyY2FzZSBtYi0xXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9GQUlMVVJFX1JFQVNPTiddIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWRhbmdlciBtYi0wXCI+e3sgcmVwb3J0LmZhaWx1cmVSZWFzb24gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldFBhcnNlZFBheWxvYWQocmVwb3J0KSBhcyBwOyBlbHNlIHJhd1BheWxvYWRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gU3VtbWFyeSBtZXRhIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbXQtMyBhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicC5kdXJhdGlvbl9zZWNvbmRzICE9IG51bGxcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0RVUkFUSU9OJ10gfX06IHt7IGZvcm1hdER1cmF0aW9uKHAuZHVyYXRpb25fc2Vjb25kcykgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwLnN0YXJ0ZWRfYXRcIj7CtyB7eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX1NUQVJURUQnXSB9fToge3sgcC5zdGFydGVkX2F0IHwgZGF0ZTonZGQgTU1NLCBISDptbTpzcycgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwLmVuZGVkX2F0XCI+wrcge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9FTkRFRCddIH19OiB7eyBwLmVuZGVkX2F0IHwgZGF0ZTonSEg6bW06c3MnIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gUmVhc29ucyAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInAuaW50ZWdyaXR5Py5yZWFzb25zPy5sZW5ndGhcIiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMiBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgciBvZiBwLmludGVncml0eT8ucmVhc29uczsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCIgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEyIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlblwiPnt7IHJlYXNvbkNvZGVMYWJlbChyLmNvZGUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInIud2VpZ2h0ICE9IG51bGxcIiBjbGFzcz1cImJhZGdlIHJvdW5kZWQtcGlsbCBhc3Nlc3NtZW50LXRleHQtd2hpdGVcIiBbbmdDbGFzc109XCIoci53ZWlnaHQgfHwgMCkgPCAwID8gJ2Fzc2Vzc21lbnQtYmctZGFuZ2VyJyA6ICdhc3Nlc3NtZW50LWJnLXN1Y2Nlc3MnXCI+e3sgKHIud2VpZ2h0IHx8IDApID4gMCA/ICcrJyA6ICcnIH19e3sgci53ZWlnaHQgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbWItMCBtdC0xXCI+e3sgci5kZXRhaWwgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBTdGF0IHRpbGVzOiBmYWNlIGFuYWx5c2lzIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW4gbXQtMyBtYi0yXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9BTkFMWVNJUyddIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHJvdy1jb2xzLTIgcm93LWNvbHMtbWQtNCBnLTIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQgcC0yIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTE4IG1iLTFcIj57eyBwLmZhY2VfYW5hbHlzaXM/LmZyYW1lc19jaGVja2VkID8/IDAgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbWItMFwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfRlJBTUVTJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQgcC0yIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTE4IG1iLTFcIiBbY2xhc3MuYXNzZXNzbWVudC10ZXh0LWRhbmdlcl09XCIocC5mYWNlX2FuYWx5c2lzPy5ub19mYWNlX2ZyYW1lcyB8fCAwKSA+IDBcIj57eyBwLmZhY2VfYW5hbHlzaXM/Lm5vX2ZhY2VfZnJhbWVzID8/IDAgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbWItMFwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfTk9fRkFDRSddIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMiBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xOCBtYi0xXCIgW2NsYXNzLmFzc2Vzc21lbnQtdGV4dC1kYW5nZXJdPVwiKHAuZmFjZV9hbmFseXNpcz8ubXVsdGlfZmFjZV9mcmFtZXMgfHwgMCkgPiAwXCI+e3sgcC5mYWNlX2FuYWx5c2lzPy5tdWx0aV9mYWNlX2ZyYW1lcyA/PyAwIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTExIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuIG1iLTBcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX01VTFRJX0ZBQ0UnXSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTggbWItMVwiIFtjbGFzcy5hc3Nlc3NtZW50LXRleHQtZGFuZ2VyXT1cIihwLmZhY2VfYW5hbHlzaXM/LmltcGVyc29uYXRpb25fZnJhbWVzIHx8IDApID4gMFwiPnt7IHAuZmFjZV9hbmFseXNpcz8uaW1wZXJzb25hdGlvbl9mcmFtZXMgPz8gMCB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMSBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiBtYi0wXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9JTVBFUlNPTkFUSU9OJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2aXR5IGJyZWFrZG93biAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInAuYWN0aXZpdHk/LmJ5X3R5cGVcIiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAgZ2FwLTIgbXQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBpdGVtIG9mIChwLmFjdGl2aXR5Py5ieV90eXBlIHwga2V5dmFsdWUpOyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSByb3VuZGVkLXBpbGwgYXNzZXNzbWVudC1iZy1wYWxldHRlLUVERjNGRCBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW4gYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgZXZlbnRUeXBlTGFiZWwoaXRlbS5rZXkpIH19IDxzcGFuIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEyXCI+e3sgaXRlbS52YWx1ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBFdmlkZW5jZSBpbWFnZXMgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwLmV2aWRlbmNlPy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW4gbXQtMyBtYi0yXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9FVklERU5DRSddIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGdhcC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdGb3I9XCJsZXQgZXYgb2YgcC5ldmlkZW5jZTsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciB0ZXh0LWRlY29yYXRpb24tbm9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImV2LmltYWdlX3VybFwiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vb3BlbmVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJwcm9jdG9yaW5nLWV2aS1pbWcgcm91bmRlZCBib3JkZXJcIiBbc3JjXT1cImV2LmltYWdlX3VybFwiIFthdHRyLmFsdF09XCInZnJhbWUgJyArIGV2LnNlcVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yKT1cImltYWdlRXJyb3JIYW5kbGVyKCRldmVudCwgJ2Fzc2V0cy9jb21tb25zLWFzc2Vzc21lbnQvaW1hZ2VzL3VzZXIuc3ZnJylcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtYmxvY2sgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZXYuaXNfcmVmZXJlbmNlXCIgY2xhc3M9XCJiYWRnZSByb3VuZGVkLXBpbGwgYXNzZXNzbWVudC1iZy1wcmltYXJ5LW9uZSBhc3Nlc3NtZW50LXRleHQtd2hpdGUgbWUtMVwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfUkVGRVJFTkNFJ10gfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgI3t7IGV2LnNlcSB9fSDCtyB7eyBldi5jYXB0dXJlZF9hdCB8IGRhdGU6J0hIOm1tOnNzJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBUaW1lbGluZSAtLT5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInAudGltZWxpbmU/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlbiBtdC0zIG1iLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfVElNRUxJTkUnXSB9fSAoe3sgcC50aW1lbGluZT8ubGVuZ3RoIH19KVxyXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvY3RvcmluZy1sb2cgYXNzZXNzbWVudC1iZy1ncmV5LXRlbiBhc3Nlc3NtZW50LXRleHQtZ3JleS1vbmUgZm9udC1tb25vc3BhY2Ugc21hbGwgcm91bmRlZCBwLTMgb3ZlcmZsb3ctYXV0b1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZXYgb2YgcC50aW1lbGluZTsgdHJhY2tCeTogdHJhY2tCeUluZGV4XCIgY2xhc3M9XCJ0ZXh0LW5vd3JhcFwiIFtjbGFzcy5mdy1zZW1pYm9sZF09XCJpc05vdGV3b3J0aHkoZXYudHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtZ3JleS1maXZlIG1lLTJcIj4je3sgZXYuc2VxIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbY2xhc3MuYXNzZXNzbWVudC10ZXh0LXBhbGV0dGUtQURDOUY2XT1cImlzTm90ZXdvcnRoeShldi50eXBlKVwiPnt7IGV2ZW50VHlwZUxhYmVsKGV2LnR5cGUpIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1ncmV5LWZpdmUgbXMtMlwiPnt7IGV2LmF0IHwgZGF0ZTonSEg6bW06c3MnIH19ICh7eyBldi5zb3VyY2UgfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gRmFsbGJhY2s6IHJhdyBwYXlsb2FkIGlmIGl0IGlzbid0IHBhcnNlYWJsZSBKU09OIC0tPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyYXdQYXlsb2FkPlxyXG4gICAgICAgICAgICAgICAgICA8cHJlICpuZ0lmPVwicmVwb3J0LnJlcG9ydFBheWxvYWRcIiBjbGFzcz1cInByb2N0b3JpbmctcGF5bG9hZCBhc3Nlc3NtZW50LWJnLWdyZXktdGVuIGFzc2Vzc21lbnQtdGV4dC1ncmV5LW9uZSBzbWFsbCByb3VuZGVkIHAtMyBvdmVyZmxvdy1hdXRvIG1iLTAgbXQtM1wiPnt7IHJlcG9ydC5yZXBvcnRQYXlsb2FkIH19PC9wcmU+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxyXG4gICAgPC9tYXQtYWNjb3JkaW9uPlxyXG5cclxuICAgIDwhLS0gTG9hZCBtb3JlIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cInNlc3Npb25zLmxlbmd0aCAmJiAhbGFzdFwiIGNsYXNzPVwidGV4dC1jZW50ZXIgbXQtM1wiPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibG9hZE1vcmUoKVwiIFtkaXNhYmxlZF09XCJsb2FkaW5nXCJcclxuICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtYnRuLXByaW1hcnktdHJhbnNwYXJlbnQgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTMgcHgtMyBweS0yIGQtaW5saW5lLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJsb2FkaW5nXCIgY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLkxPQURfTU9SRSddIH19XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY3RvcmluZy1yZXN1bHQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LXRha2VyL2NvbXBvbmVudHMvcHJvY3RvcmluZy1yZXN1bHQvcHJvY3RvcmluZy1yZXN1bHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LXRha2VyL2NvbXBvbmVudHMvcHJvY3RvcmluZy1yZXN1bHQvcHJvY3RvcmluZy1yZXN1bHQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBZ0IsTUFBTSwwQkFBMEIsQ0FBQzs7Ozs7O0FBV3pFLE1BQU0sT0FBTyx5QkFBeUI7SUFtQnBDLFlBQ1MsU0FBa0QsRUFDakQsc0JBQThDLEVBQ3RCLElBSy9CO1FBUE0sY0FBUyxHQUFULFNBQVMsQ0FBeUM7UUFDakQsMkJBQXNCLEdBQXRCLHNCQUFzQixDQUF3QjtRQUN0QixTQUFJLEdBQUosSUFBSSxDQUtuQztRQXJCSCxhQUFRLEdBQStCLEVBQUUsQ0FBQztRQUMxQyxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsa0JBQWEsR0FBRyxDQUFDLENBQUM7UUFDbEIsU0FBSSxHQUFHLElBQUksQ0FBQztRQUNKLFNBQUksR0FBRyxDQUFDLENBQUM7UUFDQSxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBRTNCLDZEQUE2RDtRQUM3RCxvQkFBZSxHQUE4QyxFQUFFLENBQUM7UUFDaEUsZ0JBQVcsR0FBeUMsRUFBRSxDQUFD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LENBQUMsS0FBVSxFQUFFLFFBQWdCO1FBQzVDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxHQUFHLFFBQVEsQ0FBQztJQUM5QixDQUFDOzt1SEF4S1UseUJBQXlCLG9GQXNCMUIsZUFBZTsyR0F0QmQseUJBQXlCLDZEQ1p0QyxzbGVBZ09BOzRGRHBOYSx5QkFBeUI7a0JBTHJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHVCQUF1QjtvQkFDakMsV0FBVyxFQUFFLG9DQUFvQztvQkFDakQsU0FBUyxFQUFFLENBQUMsb0NBQW9DLENBQUM7aUJBQ2xEOzswQkF1QkksTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEFzc2Vzc21lbnRUYWtlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hc3Nlc3NtZW50LXRha2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQcm9jdG9yaW5nUGF5bG9hZCwgUHJvY3RvcmluZ1JlcG9ydCwgUHJvY3RvcmluZ1Nlc3Npb25TdW1tYXJ5IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvcHJvY3RvcmluZy5pbnRlcmZhY2UnO1xyXG5cclxudHlwZSBSZXBvcnRTdGF0ZSA9ICdsb2FkaW5nJyB8ICdsb2FkZWQnIHwgJ2VtcHR5JyB8ICdlcnJvcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2xpYi1wcm9jdG9yaW5nLXJlc3VsdCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3Byb2N0b3JpbmctcmVzdWx0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9wcm9jdG9yaW5nLXJlc3VsdC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBQcm9jdG9yaW5nUmVzdWx0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBsYWJlbENvbmZpZzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICBpbWFnZUNvbmZpZzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICBhc3Nlc3NlZUlkOiBudW1iZXI7XHJcbiAgYXNzZXNzZWVOYW1lOiBzdHJpbmc7XHJcblxyXG4gIHNlc3Npb25zOiBQcm9jdG9yaW5nU2Vzc2lvblN1bW1hcnlbXSA9IFtdO1xyXG4gIGxvYWRpbmcgPSBmYWxzZTtcclxuICBlcnJvcmVkID0gZmFsc2U7XHJcbiAgdG90YWxFbGVtZW50cyA9IDA7XHJcbiAgbGFzdCA9IHRydWU7XHJcbiAgcHJpdmF0ZSBwYWdlID0gMDtcclxuICBwcml2YXRlIHJlYWRvbmx5IHNpemUgPSAyMDtcclxuXHJcbiAgLy8gcGVyLXNlc3Npb24gbGF6eSByZXBvcnQgZGF0YSArIHN0YXRlIChrZXllZCBieSBzZXNzaW9uIGlkKVxyXG4gIHJlcG9ydEJ5U2Vzc2lvbjogeyBbc2Vzc2lvbklkOiBudW1iZXJdOiBQcm9jdG9yaW5nUmVwb3J0IH0gPSB7fTtcclxuICByZXBvcnRTdGF0ZTogeyBbc2Vzc2lvbklkOiBudW1iZXJdOiBSZXBvcnRTdGF0ZSB9ID0ge307XHJcbiAgcHJpdmF0ZSBwYXJzZWRDYWNoZTogeyBbcmVwb3J0SWQ6IG51bWJlcl06IFByb2N0b3JpbmdQYXlsb2FkIHwgbnVsbCB9ID0ge307XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPFByb2N0b3JpbmdSZXN1bHRDb21wb25lbnQ+LFxyXG4gICAgcHJpdmF0ZSBhc3Nlc3NtZW50VGFrZXJTZXJ2aWNlOiBBc3Nlc3NtZW50VGFrZXJTZXJ2aWNlLFxyXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIHB1YmxpYyBkYXRhOiB7XHJcbiAgICAgIGxhYmVsQ29uZmlnPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICAgICAgaW1hZ2VDb25maWc/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gICAgICBhc3Nlc3NlZUlkPzogbnVtYmVyO1xyXG4gICAgICBhc3Nlc3NlZU5hbWU/OiBzdHJpbmc7XHJcbiAgICB9XHJcbiAgKSB7XHJcbiAgICB0aGlzLmxhYmVsQ29uZmlnID0gZGF0YT8ubGFiZWxDb25maWcgfHwge307XHJcbiAgICB0aGlzLmltYWdlQ29uZmlnID0gZGF0YT8uaW1hZ2VDb25maWcgfHwge307XHJcbiAgICB0aGlzLmFzc2Vzc2VlSWQgPSBkYXRhPy5hc3Nlc3NlZUlkIGFzIG51bWJlcjtcclxuICAgIHRoaXMuYXNzZXNzZWVOYW1lID0gZGF0YT8uYXNzZXNzZWVOYW1lIHx8ICcnO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRTZXNzaW9ucygpO1xyXG4gIH1cclxuXHJcbiAgbG9hZFNlc3Npb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmFzc2Vzc2VlSWQgfHwgdGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgIGlmICghdGhpcy5hc3Nlc3NlZUlkKSB7IHRoaXMuZXJyb3JlZCA9IHRydWU7IH1cclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZXJyb3JlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5hc3Nlc3NtZW50VGFrZXJTZXJ2aWNlXHJcbiAgICAgIC5nZXRQcm9jdG9yaW5nU2Vzc2lvbnModGhpcy5hc3Nlc3NlZUlkLCB7IGRpcmVjdGlvbjogJ2Rlc2MnLCBwYWdlOiB0aGlzLnBhZ2UsIHNpemU6IHRoaXMuc2l6ZSwgc29ydEJ5OiAnaWQnIH0pXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zZXNzaW9ucyA9IFsuLi50aGlzLnNlc3Npb25zLCAuLi4ocmVzPy5jb250ZW50IHx8IFtdKV07XHJcbiAgICAgICAgICB0aGlzLnRvdGFsRWxlbWVudHMgPSByZXM/LnRvdGFsRWxlbWVudHMgPz8gdGhpcy5zZXNzaW9ucy5sZW5ndGg7XHJcbiAgICAgICAgICB0aGlzLmxhc3QgPSByZXM/Lmxhc3QgPz8gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5lcnJvcmVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZE1vcmUoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMubGFzdCAmJiAhdGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgIHRoaXMucGFnZSsrO1xyXG4gICAgICB0aGlzLmxvYWRTZXNzaW9ucygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqIEZldGNoZXMgdGhlIHJlcG9ydCBmb3IgYSBzZXNzaW9uIHRoZSBmaXJzdCB0aW1lIGl0cyBwYW5lbCBpcyBleHBhbmRlZC4gKi9cclxuICBsb2FkUmVwb3J0KHNlc3Npb246IFByb2N0b3JpbmdTZXNzaW9uU3VtbWFyeSk6IHZvaWQge1xyXG4gICAgY29uc3QgaWQgPSBzZXNzaW9uPy5pZDtcclxuICAgIGlmIChpZCA9PSBudWxsIHx8IHRoaXMucmVwb3J0U3RhdGVbaWRdID09PSAnbG9hZGluZycgfHwgdGhpcy5yZXBvcnRTdGF0ZVtpZF0gPT09ICdsb2FkZWQnKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMucmVwb3J0U3RhdGVbaWRdID0gJ2xvYWRpbmcnO1xyXG4gICAgdGhpcy5hc3Nlc3NtZW50VGFrZXJTZXJ2aWNlLmdldFByb2N0b3JpbmdSZXBvcnRCeVNlc3Npb24oaWQpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmICghcmVzIHx8IHR5cGVvZiByZXMgIT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICB0aGlzLnJlcG9ydFN0YXRlW2lkXSA9ICdlbXB0eSc7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVwb3J0QnlTZXNzaW9uW2lkXSA9IHJlcztcclxuICAgICAgICB0aGlzLnJlcG9ydFN0YXRlW2lkXSA9ICdsb2FkZWQnO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgLy8gbm8gcmVwb3J0IHlldCAoZS5nLiBzZXNzaW9uIG5vdCB2YWxpZGF0ZWQpIOKGkiBlbXB0eTsgYW55dGhpbmcgZWxzZSDihpIgZXJyb3JcclxuICAgICAgICB0aGlzLnJlcG9ydFN0YXRlW2lkXSA9IGVycj8uc3RhdHVzID09PSA0MDQgPyAnZW1wdHknIDogJ2Vycm9yJztcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5U2Vzc2lvbklkKF9pbmRleDogbnVtYmVyLCBzZXNzaW9uOiBQcm9jdG9yaW5nU2Vzc2lvblN1bW1hcnkpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHNlc3Npb24/LmlkID8/IF9pbmRleDtcclxuICB9XHJcblxyXG4gIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIHJldHVybiBpbmRleDtcclxuICB9XHJcblxyXG4gIC8qKiBQYXJzZXMgKGFuZCBjYWNoZXMpIHRoZSByZXBvcnRQYXlsb2FkIEpTT04uIFJldHVybnMgbnVsbCBpZiBhYnNlbnQgb3Igbm90IHZhbGlkIEpTT04uICovXHJcbiAgZ2V0UGFyc2VkUGF5bG9hZChyZXBvcnQ6IFByb2N0b3JpbmdSZXBvcnQpOiBQcm9jdG9yaW5nUGF5bG9hZCB8IG51bGwge1xyXG4gICAgY29uc3QgaWQgPSByZXBvcnQ/LmlkID8/IC0xO1xyXG4gICAgaWYgKCEoaWQgaW4gdGhpcy5wYXJzZWRDYWNoZSkpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICB0aGlzLnBhcnNlZENhY2hlW2lkXSA9IHJlcG9ydD8ucmVwb3J0UGF5bG9hZCA/IEpTT04ucGFyc2UocmVwb3J0LnJlcG9ydFBheWxvYWQpIDogbnVsbDtcclxuICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgdGhpcy5wYXJzZWRDYWNoZVtpZF0gPSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5wYXJzZWRDYWNoZVtpZF07XHJcbiAgfVxyXG5cclxuICAvKiogRm9ybWF0cyBhIGR1cmF0aW9uIGluIHNlY29uZHMgYXMgYE1tIFNzYCAob3IgYFNzYCB1bmRlciBhIG1pbnV0ZSkuICovXHJcbiAgZm9ybWF0RHVyYXRpb24oc2Vjb25kcz86IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBpZiAoc2Vjb25kcyA9PSBudWxsKSB7IHJldHVybiAnJzsgfVxyXG4gICAgY29uc3QgbSA9IE1hdGguZmxvb3Ioc2Vjb25kcyAvIDYwKTtcclxuICAgIGNvbnN0IHMgPSBzZWNvbmRzICUgNjA7XHJcbiAgICByZXR1cm4gbSA+IDAgPyBgJHttfW0gJHtzfXNgIDogYCR7c31zYDtcclxuICB9XHJcblxyXG4gIC8qKiBTZXNzaW9uIHRpbWVzdGFtcHMgYXJlIGVwb2NoIG1pbGxpc2Vjb25kcyBhbHJlYWR5OyBndWFyZCAwL3VuZGVmaW5lZCBzbyBub3RoaW5nIHJlbmRlcnMuICovXHJcbiAgdG9NaWxsaXMoZXBvY2hNaWxsaXM/OiBudW1iZXIpOiBudW1iZXIgfCBudWxsIHtcclxuICAgIHJldHVybiBlcG9jaE1pbGxpcyA/IGVwb2NoTWlsbGlzIDogbnVsbDtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRoZW1lIGJhZGdlIGNsYXNzZXMgZm9yIGEgc2Vzc2lvbiBzdGF0dXMuXHJcbiAgICogQUNUSVZFID0gcnVubmluZywgVkFMSURBVElORyA9IHJlcG9ydCBpbiBwcm9ncmVzcywgVkFMSURBVEVEID0gcmVwb3J0IHJlYWR5LFxyXG4gICAqIEVOREVEID0gc3RvcHBlZC9pbnZhbGlkYXRlZCwgRkFJTEVEID0gZXJyb3JlZC5cclxuICAgKi9cclxuICBzdGF0dXNCYWRnZUNsYXNzKHN0YXR1cz86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKChzdGF0dXMgfHwgJycpLnRvVXBwZXJDYXNlKCkpIHtcclxuICAgICAgY2FzZSAnQUNUSVZFJzogcmV0dXJuICdhc3Nlc3NtZW50LWJnLXByaW1hcnktb25lIGFzc2Vzc21lbnQtdGV4dC13aGl0ZSc7XHJcbiAgICAgIGNhc2UgJ1ZBTElEQVRJTkcnOiByZXR1cm4gJ2Fzc2Vzc21lbnQtYmctd2FybmluZyBhc3Nlc3NtZW50LXRleHQtd2hpdGUnO1xyXG4gICAgICBjYXNlICdWQUxJREFURUQnOiByZXR1cm4gJ2Fzc2Vzc21lbnQtYmctc3VjY2VzcyBhc3Nlc3NtZW50LXRleHQtd2hpdGUnO1xyXG4gICAgICBjYXNlICdGQUlMRUQnOiByZXR1cm4gJ2Fzc2Vzc21lbnQtYmctZGFuZ2VyIGFzc2Vzc21lbnQtdGV4dC13aGl0ZSc7XHJcbiAgICAgIGNhc2UgJ0VOREVEJzpcclxuICAgICAgZGVmYXVsdDogcmV0dXJuICdhc3Nlc3NtZW50LWJnLWdyZXktc2l4IGFzc2Vzc21lbnQtdGV4dC13aGl0ZSc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKiogTWFwcyBhIHJhdyBldmVudCBjb2RlIChlLmcuIGB0YWIuaGlkZGVuYCkgdG8gYSBmcmllbmRseSBsYWJlbCwgZmFsbGluZyBiYWNrIHRvIHRoZSByYXcgY29kZS4gKi9cclxuICBldmVudFR5cGVMYWJlbCh0eXBlPzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghdHlwZSkgeyByZXR1cm4gJyc7IH1cclxuICAgIHJldHVybiB0aGlzLmxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5FVkVOVC4nICsgdHlwZV0gfHwgdHlwZTtcclxuICB9XHJcblxyXG4gIC8qKiBNYXBzIGEgcmF3IHJlYXNvbiBjb2RlIChlLmcuIGBicm93c2VyX2FjdGl2aXR5YCkgdG8gYSBmcmllbmRseSBsYWJlbCwgZmFsbGluZyBiYWNrIHRvIHRoZSByYXcgY29kZS4gKi9cclxuICByZWFzb25Db2RlTGFiZWwoY29kZT86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAoIWNvZGUpIHsgcmV0dXJuICcnOyB9XHJcbiAgICByZXR1cm4gdGhpcy5sYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVBU09OLicgKyBjb2RlXSB8fCBjb2RlO1xyXG4gIH1cclxuXHJcbiAgLyoqIEhpZ2hsaWdodHMgaW50ZWdyaXR5LXJlbGV2YW50IHRpbWVsaW5lIGV2ZW50cyAodGFiIHN3aXRjaGVzLCBmYWNlIGlzc3Vlcywgc2Vzc2lvbiBtYXJrZXJzKS4gKi9cclxuICBpc05vdGV3b3J0aHkodHlwZT86IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKCF0eXBlKSB7IHJldHVybiBmYWxzZTsgfVxyXG4gICAgcmV0dXJuIHR5cGUuaW5jbHVkZXMoJ3RhYi4nKSB8fCB0eXBlLmluY2x1ZGVzKCdub19mYWNlJykgfHwgdHlwZS5pbmNsdWRlcygnbXVsdGlfZmFjZScpXHJcbiAgICAgIHx8IHR5cGUuaW5jbHVkZXMoJ3Nlc3Npb24uJykgfHwgdHlwZS5pbmNsdWRlcygnY2FtZXJhLicpIHx8IHR5cGUuaW5jbHVkZXMoJ2NsaXBib2FyZCcpXHJcbiAgICAgIHx8IHR5cGUuaW5jbHVkZXMoJ2Z1bGxzY3JlZW4nKTtcclxuICB9XHJcblxyXG4gIGNsb3NlKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIGltYWdlRXJyb3JIYW5kbGVyKGV2ZW50OiBhbnksIGZpbGVQYXRoOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGV2ZW50LnRhcmdldC5zcmMgPSBmaWxlUGF0aDtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBoLTEwMCBvdmVyZmxvdy1oaWRkZW4gYXNzZXNzbWVudC1iZy13aGl0ZVwiPlxyXG5cclxuICA8IS0tIEhlYWRlciAtLT5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLXN0YXJ0IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGdhcC0zIHAtMyBweC1tZC00IGJvcmRlci1ib3R0b21cIj5cclxuICAgIDxkaXYgY2xhc3M9XCJmbGV4LWdyb3ctMVwiPlxyXG4gICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xNiBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW4gbWItMVwiPlxyXG4gICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVNVTFRfVElUTEUnXSB9fVxyXG4gICAgICA8L3A+XHJcbiAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbWItMFwiPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiYXNzZXNzZWVOYW1lXCI+e3sgYXNzZXNzZWVOYW1lIH19IMK3IDwvc3Bhbj57eyB0b3RhbEVsZW1lbnRzIH19IHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5TRVNTSU9OU19DT1VOVCddIH19XHJcbiAgICAgIDwvcD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tY2xvc2VcIiAoY2xpY2spPVwiY2xvc2UoKVwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiPjwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIEJvZHkgLS0+XHJcbiAgPGRpdiBjbGFzcz1cImZsZXgtZ3Jvdy0xIG92ZXJmbG93LWF1dG8gcC0zIHB4LW1kLTRcIj5cclxuXHJcbiAgICA8IS0tIExvYWRpbmcgKGluaXRpYWwpIC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmcgJiYgIXNlc3Npb25zLmxlbmd0aFwiIGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGdhcC0yIHB5LTUgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW5cIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzcGlubmVyLWJvcmRlciBzcGlubmVyLWJvcmRlci1zbVwiIHJvbGU9XCJzdGF0dXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XHJcbiAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5TRVNTSU9OU19MT0FESU5HJ10gfX1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gRXJyb3IgLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZXJyb3JlZCAmJiAhc2Vzc2lvbnMubGVuZ3RoXCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBweS01XCI+XHJcbiAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWRhbmdlciBtYi0zXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlNFU1NJT05TX0VSUk9SJ10gfX08L3A+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJsb2FkU2Vzc2lvbnMoKVwiXHJcbiAgICAgICAgY2xhc3M9XCJhc3Nlc3NtZW50LWJ0bi1wcmltYXJ5LXRyYW5zcGFyZW50IGFzc2Vzc21lbnQtYm9yZGVyLXJhZGl1cy10d28gYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIHB4LTMgcHktMlwiPlxyXG4gICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRTX1JFVFJZJ10gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tIEVtcHR5IC0tPlxyXG4gICAgPGRpdiAqbmdJZj1cIiFsb2FkaW5nICYmICFlcnJvcmVkICYmICFzZXNzaW9ucy5sZW5ndGhcIiBjbGFzcz1cInRleHQtY2VudGVyIHB5LTUgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW5cIj5cclxuICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlNFU1NJT05TX0VNUFRZJ10gfX1cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS0gU2Vzc2lvbnMgYWNjb3JkaW9uIC0tPlxyXG4gICAgPG1hdC1hY2NvcmRpb24gY2xhc3M9XCJkLWJsb2NrXCIgKm5nSWY9XCJzZXNzaW9ucy5sZW5ndGhcIj5cclxuICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgKm5nRm9yPVwibGV0IHNlc3Npb24gb2Ygc2Vzc2lvbnM7IHRyYWNrQnk6IHRyYWNrQnlTZXNzaW9uSWRcIlxyXG4gICAgICAgIGNsYXNzPVwic2hhZG93LW5vbmUgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LXBhbmVsIGJvcmRlciBtYi0yXCIgKG9wZW5lZCk9XCJsb2FkUmVwb3J0KHNlc3Npb24pXCI+XHJcblxyXG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBjbGFzcz1cInByb2N0b3JpbmctcGFuZWwtaGVhZGVyIHAtM1wiPlxyXG4gICAgICAgICAgPG1hdC1wYW5lbC10aXRsZSBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBteS0xIGFsaWduLWl0ZW1zLXN0YXJ0XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlblwiPlxyXG4gICAgICAgICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfU0VTU0lPTiddIH19IHt7IHNlc3Npb24uaWQgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTIgbXQtMVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2Vzc2lvbi5zdGF0dXNcIiBjbGFzcz1cImJhZGdlIHJvdW5kZWQtcGlsbCB0ZXh0LWNhcGl0YWxpemUgYXNzZXNzbWVudC10ZXh0LW1lZGl1bS0xMFwiIFtuZ0NsYXNzXT1cInN0YXR1c0JhZGdlQ2xhc3Moc2Vzc2lvbi5zdGF0dXMpXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBzZXNzaW9uLnN0YXR1cyB9fVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNlc3Npb24/LmludGVncml0eVN1bW1hcnk/LmludGVncml0eUZsYWdnZWRcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJiYWRnZSByb3VuZGVkLXBpbGwgYXNzZXNzbWVudC1iZy1kYW5nZXIgYXNzZXNzbWVudC10ZXh0LXdoaXRlIGFzc2Vzc21lbnQtdGV4dC1tZWRpdW0tMTBcIj5cclxuICAgICAgICAgICAgICAgIHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfRkxBR0dFRCddIH19XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cclxuICAgICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24gY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlciBtZS0zXCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidG9NaWxsaXMoc2Vzc2lvbi5zdGFydGVkQXQpIGFzIHN0YXJ0ZWRcIiBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTExIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuXCI+XHJcbiAgICAgICAgICAgICAge3sgc3RhcnRlZCB8IGRhdGU6J2RkIE1NTSwgSEg6bW0nIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxyXG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblxyXG4gICAgICAgIDwhLS0gUmVwb3J0IGlzIGZldGNoZWQgd2hlbiB0aGUgcGFuZWwgb3BlbnMgLS0+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIG1hdEV4cGFuc2lvblBhbmVsQ29udGVudD5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLTMgcHQtMVwiIFtuZ1N3aXRjaF09XCJyZXBvcnRTdGF0ZVtzZXNzaW9uLmlkIV1cIj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gTG9hZGluZyAtLT5cclxuICAgICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ2xvYWRpbmcnXCIgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIHB5LTMgYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW5cIj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICB7eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0xPQURJTkcnXSB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gRXJyb3IgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidlcnJvcidcIiBjbGFzcz1cInB5LTNcIj5cclxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEzIGFzc2Vzc21lbnQtdGV4dC1kYW5nZXIgbWItMlwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfRVJST1InXSB9fTwvcD5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwibG9hZFJlcG9ydChzZXNzaW9uKVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFzc2Vzc21lbnQtYnRuLXByaW1hcnktdHJhbnNwYXJlbnQgYXNzZXNzbWVudC1ib3JkZXItcmFkaXVzLXR3byBhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTMgcHgtMyBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICB7eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUU19SRVRSWSddIH19XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBObyByZXBvcnQgeWV0IC0tPlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInZW1wdHknXCIgY2xhc3M9XCJweS0zIGFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuXCI+XHJcbiAgICAgICAgICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9FTVBUWSddIH19XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBMb2FkZWQgcmVwb3J0IC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCInbG9hZGVkJ1wiPlxyXG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJyZXBvcnRCeVNlc3Npb25bc2Vzc2lvbi5pZCFdIGFzIHJlcG9ydFwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0gSW50ZWdyaXR5IHN1bW1hcnkgKHJlcG9ydCB0b3AtbGV2ZWwpIC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBnLTJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMSBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiB0ZXh0LXVwcGVyY2FzZSBtYi0xXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9JTlRFR1JJVFlfU0NPUkUnXSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlbiBtYi0wXCIgW2NsYXNzLmFzc2Vzc21lbnQtdGV4dC1kYW5nZXJdPVwicmVwb3J0LmludGVncml0eUZsYWdnZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7IHJlcG9ydC5pbnRlZ3JpdHlTY29yZSB9fTxzcGFuICpuZ0lmPVwicmVwb3J0LmludGVncml0eUxldmVsXCI+ICh7eyByZXBvcnQuaW50ZWdyaXR5TGV2ZWwgfX0pPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiICpuZ0lmPVwicmVwb3J0LmlkZW50aXR5TWF0Y2hcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTExIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuIHRleHQtdXBwZXJjYXNlIG1iLTFcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0lERU5USVRZX01BVENIJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMyBhc3Nlc3NtZW50LXRleHQtZ3JleS10ZW4gbWItMFwiPnt7IHJlcG9ydC5pZGVudGl0eU1hdGNoIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiICpuZ0lmPVwicmVwb3J0LmZhaWx1cmVSZWFzb25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTExIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuIHRleHQtdXBwZXJjYXNlIG1iLTFcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0ZBSUxVUkVfUkVBU09OJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMyBhc3Nlc3NtZW50LXRleHQtZGFuZ2VyIG1iLTBcIj57eyByZXBvcnQuZmFpbHVyZVJlYXNvbiB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZ2V0UGFyc2VkUGF5bG9hZChyZXBvcnQpIGFzIHA7IGVsc2UgcmF3UGF5bG9hZFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBTdW1tYXJ5IG1ldGEgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtdC0zIGFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTEyIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwLmR1cmF0aW9uX3NlY29uZHMgIT0gbnVsbFwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfRFVSQVRJT04nXSB9fToge3sgZm9ybWF0RHVyYXRpb24ocC5kdXJhdGlvbl9zZWNvbmRzKSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInAuc3RhcnRlZF9hdFwiPsK3IHt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfU1RBUlRFRCddIH19OiB7eyBwLnN0YXJ0ZWRfYXQgfCBkYXRlOidkZCBNTU0sIEhIOm1tOnNzJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cInAuZW5kZWRfYXRcIj7CtyB7eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0VOREVEJ10gfX06IHt7IHAuZW5kZWRfYXQgfCBkYXRlOidISDptbTpzcycgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBSZWFzb25zIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicC5pbnRlZ3JpdHk/LnJlYXNvbnM/Lmxlbmd0aFwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGdhcC0yIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByIG9mIHAuaW50ZWdyaXR5Py5yZWFzb25zOyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTIgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuXCI+e3sgcmVhc29uQ29kZUxhYmVsKHIuY29kZSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwici53ZWlnaHQgIT0gbnVsbFwiIGNsYXNzPVwiYmFkZ2Ugcm91bmRlZC1waWxsIGFzc2Vzc21lbnQtdGV4dC13aGl0ZVwiIFtuZ0NsYXNzXT1cIihyLndlaWdodCB8fCAwKSA8IDAgPyAnYXNzZXNzbWVudC1iZy1kYW5nZXInIDogJ2Fzc2Vzc21lbnQtYmctc3VjY2VzcydcIj57eyAoci53ZWlnaHQgfHwgMCkgPiAwID8gJysnIDogJycgfX17eyByLndlaWdodCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMiBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiBtYi0wIG10LTFcIj57eyByLmRldGFpbCB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8IS0tIFN0YXQgdGlsZXM6IGZhY2UgYW5hbHlzaXMgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlbiBtdC0zIG1iLTJcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0FOQUxZU0lTJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcm93LWNvbHMtMiByb3ctY29scy1tZC00IGctMiB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTggbWItMVwiPnt7IHAuZmFjZV9hbmFseXNpcz8uZnJhbWVzX2NoZWNrZWQgPz8gMCB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMSBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiBtYi0wXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9GUkFNRVMnXSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJib3JkZXIgcm91bmRlZCBwLTIgaC0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTggbWItMVwiIFtjbGFzcy5hc3Nlc3NtZW50LXRleHQtZGFuZ2VyXT1cIihwLmZhY2VfYW5hbHlzaXM/Lm5vX2ZhY2VfZnJhbWVzIHx8IDApID4gMFwiPnt7IHAuZmFjZV9hbmFseXNpcz8ubm9fZmFjZV9mcmFtZXMgPz8gMCB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMSBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiBtYi0wXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9OT19GQUNFJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyIHJvdW5kZWQgcC0yIGgtMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTE4IG1iLTFcIiBbY2xhc3MuYXNzZXNzbWVudC10ZXh0LWRhbmdlcl09XCIocC5mYWNlX2FuYWx5c2lzPy5tdWx0aV9mYWNlX2ZyYW1lcyB8fCAwKSA+IDBcIj57eyBwLmZhY2VfYW5hbHlzaXM/Lm11bHRpX2ZhY2VfZnJhbWVzID8/IDAgfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXJlZ3VsYXItMTEgYXNzZXNzbWVudC10ZXh0LWdyZXktc2V2ZW4gbWItMFwiPnt7IGxhYmVsQ29uZmlnWydDT01NT05TX0FTU0VTU01FTlQuUFJPQ1RPUklORy5SRVBPUlRfTVVMVElfRkFDRSddIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJvcmRlciByb3VuZGVkIHAtMiBoLTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xOCBtYi0xXCIgW2NsYXNzLmFzc2Vzc21lbnQtdGV4dC1kYW5nZXJdPVwiKHAuZmFjZV9hbmFseXNpcz8uaW1wZXJzb25hdGlvbl9mcmFtZXMgfHwgMCkgPiAwXCI+e3sgcC5mYWNlX2FuYWx5c2lzPy5pbXBlcnNvbmF0aW9uX2ZyYW1lcyA/PyAwIH19PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1yZWd1bGFyLTExIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXNldmVuIG1iLTBcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0lNUEVSU09OQVRJT04nXSB9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gQWN0aXZpdHkgYnJlYWtkb3duIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicC5hY3Rpdml0eT8uYnlfdHlwZVwiIGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBnYXAtMiBtdC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2YgKHAuYWN0aXZpdHk/LmJ5X3R5cGUgfCBrZXl2YWx1ZSk7IHRyYWNrQnk6IHRyYWNrQnlJbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJhZGdlIHJvdW5kZWQtcGlsbCBhc3Nlc3NtZW50LWJnLXBhbGV0dGUtRURGM0ZEIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlbiBhc3Nlc3NtZW50LXRleHQtbWVkaXVtLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7eyBldmVudFR5cGVMYWJlbChpdGVtLmtleSkgfX0gPHNwYW4gY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTJcIj57eyBpdGVtLnZhbHVlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8IS0tIEV2aWRlbmNlIGltYWdlcyAtLT5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInAuZXZpZGVuY2U/Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LXNlbWlib2xkLTEzIGFzc2Vzc21lbnQtdGV4dC1ncmV5LXRlbiBtdC0zIG1iLTJcIj57eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuUkVQT1JUX0VWSURFTkNFJ10gfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAgZ2FwLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0Zvcj1cImxldCBldiBvZiBwLmV2aWRlbmNlOyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIiBjbGFzcz1cInRleHQtY2VudGVyIHRleHQtZGVjb3JhdGlvbi1ub25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiZXYuaW1hZ2VfdXJsXCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cInByb2N0b3JpbmctZXZpLWltZyByb3VuZGVkIGJvcmRlclwiIFtzcmNdPVwiZXYuaW1hZ2VfdXJsXCIgW2F0dHIuYWx0XT1cIidmcmFtZSAnICsgZXYuc2VxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IpPVwiaW1hZ2VFcnJvckhhbmRsZXIoJGV2ZW50LCAnYXNzZXRzL2NvbW1vbnMtYXNzZXNzbWVudC9pbWFnZXMvdXNlci5zdmcnKVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZC1ibG9jayBhc3Nlc3NtZW50LXRleHQtcmVndWxhci0xMSBhc3Nlc3NtZW50LXRleHQtZ3JleS1zZXZlbiBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJldi5pc19yZWZlcmVuY2VcIiBjbGFzcz1cImJhZGdlIHJvdW5kZWQtcGlsbCBhc3Nlc3NtZW50LWJnLXByaW1hcnktb25lIGFzc2Vzc21lbnQtdGV4dC13aGl0ZSBtZS0xXCI+e3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9SRUZFUkVOQ0UnXSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAje3sgZXYuc2VxIH19IMK3IHt7IGV2LmNhcHR1cmVkX2F0IHwgZGF0ZTonSEg6bW06c3MnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8IS0tIFRpbWVsaW5lIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicC50aW1lbGluZT8ubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJhc3Nlc3NtZW50LXRleHQtc2VtaWJvbGQtMTMgYXNzZXNzbWVudC10ZXh0LWdyZXktdGVuIG10LTMgbWItMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3sgbGFiZWxDb25maWdbJ0NPTU1PTlNfQVNTRVNTTUVOVC5QUk9DVE9SSU5HLlJFUE9SVF9USU1FTElORSddIH19ICh7eyBwLnRpbWVsaW5lPy5sZW5ndGggfX0pXHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9jdG9yaW5nLWxvZyBhc3Nlc3NtZW50LWJnLWdyZXktdGVuIGFzc2Vzc21lbnQtdGV4dC1ncmV5LW9uZSBmb250LW1vbm9zcGFjZSBzbWFsbCByb3VuZGVkIHAtMyBvdmVyZmxvdy1hdXRvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBldiBvZiBwLnRpbWVsaW5lOyB0cmFja0J5OiB0cmFja0J5SW5kZXhcIiBjbGFzcz1cInRleHQtbm93cmFwXCIgW2NsYXNzLmZ3LXNlbWlib2xkXT1cImlzTm90ZXdvcnRoeShldi50eXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFzc2Vzc21lbnQtdGV4dC1ncmV5LWZpdmUgbWUtMlwiPiN7eyBldi5zZXEgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtjbGFzcy5hc3Nlc3NtZW50LXRleHQtcGFsZXR0ZS1BREM5RjZdPVwiaXNOb3Rld29ydGh5KGV2LnR5cGUpXCI+e3sgZXZlbnRUeXBlTGFiZWwoZXYudHlwZSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXNzZXNzbWVudC10ZXh0LWdyZXktZml2ZSBtcy0yXCI+e3sgZXYuYXQgfCBkYXRlOidISDptbTpzcycgfX0gKHt7IGV2LnNvdXJjZSB9fSk8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBGYWxsYmFjazogcmF3IHBheWxvYWQgaWYgaXQgaXNuJ3QgcGFyc2VhYmxlIEpTT04gLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Jhd1BheWxvYWQ+XHJcbiAgICAgICAgICAgICAgICAgIDxwcmUgKm5nSWY9XCJyZXBvcnQucmVwb3J0UGF5bG9hZFwiIGNsYXNzPVwicHJvY3RvcmluZy1wYXlsb2FkIGFzc2Vzc21lbnQtYmctZ3JleS10ZW4gYXNzZXNzbWVudC10ZXh0LWdyZXktb25lIHNtYWxsIHJvdW5kZWQgcC0zIG92ZXJmbG93LWF1dG8gbWItMCBtdC0zXCI+e3sgcmVwb3J0LnJlcG9ydFBheWxvYWQgfX08L3ByZT5cclxuICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XHJcbiAgICA8L21hdC1hY2NvcmRpb24+XHJcblxyXG4gICAgPCEtLSBMb2FkIG1vcmUgLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwic2Vzc2lvbnMubGVuZ3RoICYmICFsYXN0XCIgY2xhc3M9XCJ0ZXh0LWNlbnRlciBtdC0zXCI+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJsb2FkTW9yZSgpXCIgW2Rpc2FibGVkXT1cImxvYWRpbmdcIlxyXG4gICAgICAgIGNsYXNzPVwiYXNzZXNzbWVudC1idG4tcHJpbWFyeS10cmFuc3BhcmVudCBhc3Nlc3NtZW50LWJvcmRlci1yYWRpdXMtdHdvIGFzc2Vzc21lbnQtdGV4dC1zZW1pYm9sZC0xMyBweC0zIHB5LTIgZC1pbmxpbmUtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImxvYWRpbmdcIiBjbGFzcz1cInNwaW5uZXItYm9yZGVyIHNwaW5uZXItYm9yZGVyLXNtXCIgcm9sZT1cInN0YXR1c1wiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cclxuICAgICAgICB7eyBsYWJlbENvbmZpZ1snQ09NTU9OU19BU1NFU1NNRU5ULlBST0NUT1JJTkcuTE9BRF9NT1JFJ10gfX1cclxuICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -11,6 +11,10 @@ import * as i0 from "@angular/core";
11
11
  * package is installed. Consumers who don't use proctoring never reference it and build cleanly.
12
12
  */
13
13
  export class ProctoringService {
14
+ constructor() {
15
+ // SDK event unsubscribers — kept for the life of the session and removed only in destroy()
16
+ this.offHandlers = [];
17
+ }
14
18
  /**
15
19
  * Creates a ProctorLink session with the given id + JWT and requests camera access.
16
20
  * The returned observable completes once the candidate GRANTS camera access, and errors
@@ -23,7 +27,6 @@ export class ProctoringService {
23
27
  start(options) {
24
28
  return new Observable((observer) => {
25
29
  let settled = false;
26
- let cleanup;
27
30
  const succeed = () => {
28
31
  if (!settled) {
29
32
  settled = true;
@@ -70,7 +73,10 @@ export class ProctoringService {
70
73
  error: () => { }
71
74
  });
72
75
  });
73
- cleanup = () => { offPermission === null || offPermission === void 0 ? void 0 : offPermission(); offError === null || offError === void 0 ? void 0 : offError(); offTokenExpired === null || offTokenExpired === void 0 ? void 0 : offTokenExpired(); };
76
+ // Keep these listeners for the LIFE of the session they are removed in destroy().
77
+ // (Do NOT tear them down when this observable completes on camera-granted, otherwise the
78
+ // long-lived `token-expired`/`error` events would never reach us again.)
79
+ this.offHandlers = [offPermission, offError, offTokenExpired].filter((fn) => typeof fn === 'function');
74
80
  // mounts the enclave, requests the camera and begins capture
75
81
  Promise.resolve(this.session.start()).catch((err) => fail(err));
76
82
  }
@@ -78,9 +84,6 @@ export class ProctoringService {
78
84
  fail(err);
79
85
  }
80
86
  }).catch((err) => fail(err));
81
- return () => { if (cleanup) {
82
- cleanup();
83
- } };
84
87
  });
85
88
  }
86
89
  /** Subscribe to the live proctoring event stream. */
@@ -97,10 +100,15 @@ export class ProctoringService {
97
100
  catch (e) { /* noop */ }
98
101
  }
99
102
  /** Tear down and remove the camera preview. */
100
- destroy() {
103
+ destroy(params = { endSession: true }) {
101
104
  var _a, _b;
105
+ this.offHandlers.forEach((off) => { try {
106
+ off();
107
+ }
108
+ catch (e) { /* noop */ } });
109
+ this.offHandlers = [];
102
110
  try {
103
- (_b = (_a = this.session) === null || _a === void 0 ? void 0 : _a.destroy) === null || _b === void 0 ? void 0 : _b.call(_a);
111
+ (_b = (_a = this.session) === null || _a === void 0 ? void 0 : _a.destroy) === null || _b === void 0 ? void 0 : _b.call(_a, params);
104
112
  }
105
113
  catch (e) { /* noop */ }
106
114
  this.session = undefined;
@@ -114,4 +122,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImpo
114
122
  providedIn: 'root'
115
123
  }]
116
124
  }] });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY3RvcmluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LXRha2VyL3NlcnZpY2VzL3Byb2N0b3Jpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRWxDOzs7Ozs7OztHQVFHO0FBSUgsTUFBTSxPQUFPLGlCQUFpQjtJQUc1Qjs7Ozs7Ozs7T0FRRztJQUNILEtBQUssQ0FBQyxPQU1MO1FBQ0MsT0FBTyxJQUFJLFVBQVUsQ0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ3ZDLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNwQixJQUFJLE9BQWlDLENBQUM7WUFFdEMsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFO2dCQUNuQixJQUFJLENBQUMsT0FBTyxFQUFFO29CQUFFLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztpQkFBRTtZQUN6RSxDQUFDLENBQUM7WUFDRixNQUFNLElBQUksR0FBRyxDQUFDLEdBQVEsRUFBRSxFQUFFO2dCQUN4QixJQUFJLENBQUMsT0FBTyxFQUFFO29CQUFFLE9BQU8sR0FBRyxJQUFJLENBQUM7b0JBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFBRTtZQUN4RCxDQUFDLENBQUM7WUFFRixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLHFDQUFxQyxFQUFFLENBQUMsQ0FBQztnQkFDekQsT0FBTzthQUNSO1lB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QUFDO0lBQ0wsQ0FBQztJQUVELHFEQUFxRDtJQUNyRCxPQUFPLENBQUMsRUFBd0I7O1FBQzlCLE9BQU8sTUFBQSxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLE9BQU8sbURBQUcsRUFBRSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxJQUFJOztRQUNGLElBQUk7WUFBRSxNQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsSUFBSSxrREFBSSxDQUFDO1NBQUU7UUFBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRTtJQUMxRCxDQUFDO0lBRUQsK0NBQStDO0lBQy9DLE9BQU87O1FBQ0wsSUFBSTtZQUFFLE1BQUEsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxPQUFPLGtEQUFJLENBQUM7U0FBRTtRQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFO1FBQzNELElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO0lBQzNCLENBQUM7OytHQXhGVSxpQkFBaUI7bUhBQWpCLGlCQUFpQixjQUZoQixNQUFNOzRGQUVQLGlCQUFpQjtrQkFIN0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbi8qKlxyXG4gKiBUaGluIHdyYXBwZXIgYXJvdW5kIHRoZSBQcm9jdG9yTGluayBicm93c2VyIFNESyAoYEBwcm9jdG9ybGluay9zZGtgKS5cclxuICpcclxuICogVGhlIFNESyBpcyBhbiBPUFRJT05BTCBkZXBlbmRlbmN5LiBUaGUgbGlicmFyeSBuZXZlciBpbXBvcnRzIGl0IGRpcmVjdGx5IOKAlCBvdGhlcndpc2UgZXZlcnlcclxuICogY29uc3VtZXIncyBidW5kbGVyIHdvdWxkIGhhdmUgdG8gcmVzb2x2ZSBgQHByb2N0b3JsaW5rL3Nka2AgYXQgYnVpbGQgdGltZSAoYW5kIGZhaWwgd2hlbiBpdFxyXG4gKiBpc24ndCBpbnN0YWxsZWQpLiBJbnN0ZWFkLCBhIGhvc3QgdGhhdCB1c2VzIHByb2N0b3JpbmcgcGFzc2VzIGEgYHNka0xvYWRlcmAgKGUuZy5cclxuICogYCgpID0+IGltcG9ydCgnQHByb2N0b3JsaW5rL3NkaycpYCkgc28gdGhlIG1vZHVsZSByZWZlcmVuY2UgbGl2ZXMgaW4gdGhlIGhvc3QgYXBwLCB3aGVyZSB0aGVcclxuICogcGFja2FnZSBpcyBpbnN0YWxsZWQuIENvbnN1bWVycyB3aG8gZG9uJ3QgdXNlIHByb2N0b3JpbmcgbmV2ZXIgcmVmZXJlbmNlIGl0IGFuZCBidWlsZCBjbGVhbmx5LlxyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgUHJvY3RvcmluZ1NlcnZpY2Uge1xyXG4gIHByaXZhdGUgc2Vzc2lvbjogYW55O1xyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgUHJvY3Rvckxpbmsgc2Vzc2lvbiB3aXRoIHRoZSBnaXZlbiBpZCArIEpXVCBhbmQgcmVxdWVzdHMgY2FtZXJhIGFjY2Vzcy5cclxuICAgKiBUaGUgcmV0dXJuZWQgb2JzZXJ2YWJsZSBjb21wbGV0ZXMgb25jZSB0aGUgY2FuZGlkYXRlIEdSQU5UUyBjYW1lcmEgYWNjZXNzLCBhbmQgZXJyb3JzXHJcbiAgICogd2l0aCBgeyBjb2RlOiAnY2FtZXJhX2RlbmllZCcgfWAgaWYgdGhlIGNhbWVyYSBpcyBkZW5pZWQgKHNvIHRoZSBjYWxsZXIgY2FuIHByb21wdCBhIHJldHJ5KS5cclxuICAgKlxyXG4gICAqIGByZWZyZXNoVG9rZW5gIGlzIGNhbGxlZCBpZiB0aGUgU0RLIGVtaXRzIGB0b2tlbi1leHBpcmVkYCAodGhlIGV4YW0gb3V0bGl2ZWQgdGhlIHRva2VuKTogaXRcclxuICAgKiBtdXN0IHJldHVybiBPTkxZIHRoZSBuZXcgc2Vzc2lvbiBKV1QsIHdoaWNoIGlzIGhhbmRlZCBiYWNrIHRvIHRoZSBTREsgdmlhIGB1cGRhdGVUb2tlbmAgdG9cclxuICAgKiByZXN1bWUgdGhlIHNhbWUgc2Vzc2lvbi5cclxuICAgKi9cclxuICBzdGFydChvcHRpb25zOiB7XHJcbiAgICBzZXNzaW9uSWQ/OiBzdHJpbmc7XHJcbiAgICBqd3Q6IHN0cmluZztcclxuICAgIHJlZnJlc2hUb2tlbj86ICgpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcclxuICAgIC8vIGhvc3QtcHJvdmlkZWQgbG9hZGVyIGZvciB0aGUgU0RLLCBlLmcuIGAoKSA9PiBpbXBvcnQoJ0Bwcm9jdG9ybGluay9zZGsnKWBcclxuICAgIHNka0xvYWRlcj86ICgpID0+IFByb21pc2U8YW55PjtcclxuICB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8dm9pZD4oKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgIGxldCBzZXR0bGVkID0gZmFsc2U7XHJcbiAgICAgIGxldCBjbGVhbnVwOiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XHJcblxyXG4gICAgICBjb25zdCBzdWNjZWVkID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICghc2V0dGxlZCkgeyBzZXR0bGVkID0gdHJ1ZTsgb2JzZXJ2ZXIubmV4dCgpOyBvYnNlcnZlci5jb21wbGV0ZSgpOyB9XHJcbiAgICAgIH07XHJcbiAgICAgIGNvbnN0IGZhaWwgPSAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoIXNldHRsZWQpIHsgc2V0dGxlZCA9IHRydWU7IG9ic2VydmVyLmVycm9yKGVycik7IH1cclxuICAgICAgfTtcclxuXHJcbiAgICAgIGlmICghb3B0aW9ucy5zZGtMb2FkZXIpIHtcclxuICAgICAgICBmYWlsKHsgbWVzc2FnZTogJ1Byb2N0b3JMaW5rIFNESyBsb2FkZXIgbm90IHByb3ZpZGVkJyB9KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIFByb21pc2UucmVzb2x2ZShvcHRpb25zLnNka0xvYWRlcigpKS50aGVuKChzZGs6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBjb25zdCBQcm9jdG9yTGluayA9IHNkaz8uUHJvY3RvckxpbmsgfHwgc2RrPy5kZWZhdWx0Py5Qcm9jdG9yTGluayB8fCBzZGs/LmRlZmF1bHQ7XHJcbiAgICAgICAgICB0aGlzLnNlc3Npb24gPSBQcm9jdG9yTGluay5jcmVhdGVTZXNzaW9uKHtcclxuICAgICAgICAgICAgand0OiBvcHRpb25zLmp3dCxcclxuICAgICAgICAgICAgc2Vzc2lvbklkOiBvcHRpb25zLnNlc3Npb25JZCxcclxuICAgICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBjb25zdCBvZmZQZXJtaXNzaW9uID0gdGhpcy5zZXNzaW9uLm9uKCdwZXJtaXNzaW9uJywgKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQ/LmNhbWVyYSA9PT0gJ2RlbmllZCcpIHtcclxuICAgICAgICAgICAgICBmYWlsKHsgY29kZTogJ2NhbWVyYV9kZW5pZWQnIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdD8uY2FtZXJhID09PSAnZ3JhbnRlZCcpIHtcclxuICAgICAgICAgICAgICBzdWNjZWVkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgY29uc3Qgb2ZmRXJyb3IgPSB0aGlzLnNlc3Npb24ub24oJ2Vycm9yJywgKGVycjogYW55KSA9PiBmYWlsKGVycikpO1xyXG5cclxuICAgICAgICAgIC8vIHRva2VuIG91dGxpdmVkIHRoZSBleGFtIOKAlCByZS1taW50IGZvciB0aGUgc2FtZSBzZXNzaW9uIGFuZCBoYW5kIHRoZSBuZXcgSldUIGJhY2tcclxuICAgICAgICAgIGNvbnN0IG9mZlRva2VuRXhwaXJlZCA9IHRoaXMuc2Vzc2lvbi5vbigndG9rZW4tZXhwaXJlZCcsICgpID0+IHtcclxuICAgICAgICAgICAgb3B0aW9ucy5yZWZyZXNoVG9rZW4/LigpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgbmV4dDogKGp3dDogc3RyaW5nKSA9PiB7IHRyeSB7IHRoaXMuc2Vzc2lvbj8udXBkYXRlVG9rZW4/Lihqd3QpOyB9IGNhdGNoIChlKSB7IC8qIG5vb3AgKi8gfSB9LFxyXG4gICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7IC8qIHJlZnJlc2ggZmFpbGVkOyBTREsgd2lsbCBzdXJmYWNlIGEgc2Vzc2lvbiBlcnJvciBpZiBpdCBjYW4ndCBjb250aW51ZSAqLyB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgY2xlYW51cCA9ICgpID0+IHsgb2ZmUGVybWlzc2lvbj8uKCk7IG9mZkVycm9yPy4oKTsgb2ZmVG9rZW5FeHBpcmVkPy4oKTsgfTtcclxuXHJcbiAgICAgICAgICAvLyBtb3VudHMgdGhlIGVuY2xhdmUsIHJlcXVlc3RzIHRoZSBjYW1lcmEgYW5kIGJlZ2lucyBjYXB0dXJlXHJcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUodGhpcy5zZXNzaW9uLnN0YXJ0KCkpLmNhdGNoKChlcnI6IGFueSkgPT4gZmFpbChlcnIpKTtcclxuICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgIGZhaWwoZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pLmNhdGNoKChlcnI6IGFueSkgPT4gZmFpbChlcnIpKTtcclxuXHJcbiAgICAgIHJldHVybiAoKSA9PiB7IGlmIChjbGVhbnVwKSB7IGNsZWFudXAoKTsgfSB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKiogU3Vic2NyaWJlIHRvIHRoZSBsaXZlIHByb2N0b3JpbmcgZXZlbnQgc3RyZWFtLiAqL1xyXG4gIG9uRXZlbnQoY2I6IChldmVudDogYW55KSA9PiB2b2lkKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXNzaW9uPy5vbkV2ZW50Py4oY2IpO1xyXG4gIH1cclxuXHJcbiAgLyoqIEVuZCBjYXB0dXJlIGFuZCBmbHVzaCBwZW5kaW5nIGRhdGEuICovXHJcbiAgc3RvcCgpIHtcclxuICAgIHRyeSB7IHRoaXMuc2Vzc2lvbj8uc3RvcD8uKCk7IH0gY2F0Y2ggKGUpIHsgLyogbm9vcCAqLyB9XHJcbiAgfVxyXG5cclxuICAvKiogVGVhciBkb3duIGFuZCByZW1vdmUgdGhlIGNhbWVyYSBwcmV2aWV3LiAqL1xyXG4gIGRlc3Ryb3koKSB7XHJcbiAgICB0cnkgeyB0aGlzLnNlc3Npb24/LmRlc3Ryb3k/LigpOyB9IGNhdGNoIChlKSB7IC8qIG5vb3AgKi8gfVxyXG4gICAgdGhpcy5zZXNzaW9uID0gdW5kZWZpbmVkO1xyXG4gIH1cclxufVxyXG4iXX0=
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY3RvcmluZy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tbW9ucy1hc3Nlc3NtZW50L3NyYy9saWIvbW9kdWxlcy9hc3Nlc3NtZW50LXRha2VyL3NlcnZpY2VzL3Byb2N0b3Jpbmcuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRWxDOzs7Ozs7OztHQVFHO0FBSUgsTUFBTSxPQUFPLGlCQUFpQjtJQUg5QjtRQUtFLDJGQUEyRjtRQUNuRixnQkFBVyxHQUFzQixFQUFFLENBQUM7S0EwRjdDO0lBeEZDOzs7Ozs7OztPQVFHO0lBQ0gsS0FBSyxDQUFDLE9BTUw7UUFDQyxPQUFPLElBQUksVUFBVSxDQUFPLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDdkMsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBRXBCLE1BQU0sT0FBTyxHQUFHLEdBQUcsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFBRSxPQUFPLEdBQUcsSUFBSSxDQUFDO29CQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7aUJBQUU7WUFDekUsQ0FBQyxDQUFDO1lBQ0YsTUFBTSxJQUFJLEdBQUcsQ0FBQyxHQUFRLEVBQUUsRUFBRTtnQkFDeEIsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFBRSxPQUFPLEdBQUcsSUFBSSxDQUFDO29CQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQUU7WUFDeEQsQ0FBQyxDQUFDO1lBRUYsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7Z0JBQ3RCLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxxQ0FBcUMsRUFB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RUFBd0I7O1FBQzlCLE9BQU8sTUFBQSxNQUFBLElBQUksQ0FBQyxPQUFPLDBDQUFFLE9BQU8sbURBQUcsRUFBRSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELDBDQUEwQztJQUMxQyxJQUFJOztRQUNGLElBQUk7WUFBRSxNQUFBLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsSUFBSSxrREFBSSxDQUFDO1NBQUU7UUFBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRTtJQUMxRCxDQUFDO0lBRUQsK0NBQStDO0lBQy9DLE9BQU8sQ0FBQyxTQUFrQyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUU7O1FBQzVELElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsR0FBRyxJQUFJO1lBQUUsR0FBRyxFQUFFLENBQUM7U0FBRTtRQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSTtZQUFFLE1BQUEsTUFBQSxJQUFJLENBQUMsT0FBTywwQ0FBRSxPQUFPLG1EQUFHLE1BQU0sQ0FBQyxDQUFDO1NBQUU7UUFBQyxPQUFPLENBQUMsRUFBRSxFQUFFLFVBQVUsRUFBRTtRQUNqRSxJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztJQUMzQixDQUFDOzsrR0E1RlUsaUJBQWlCO21IQUFqQixpQkFBaUIsY0FGaEIsTUFBTTs0RkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG4vKipcclxuICogVGhpbiB3cmFwcGVyIGFyb3VuZCB0aGUgUHJvY3RvckxpbmsgYnJvd3NlciBTREsgKGBAcHJvY3Rvcmxpbmsvc2RrYCkuXHJcbiAqXHJcbiAqIFRoZSBTREsgaXMgYW4gT1BUSU9OQUwgZGVwZW5kZW5jeS4gVGhlIGxpYnJhcnkgbmV2ZXIgaW1wb3J0cyBpdCBkaXJlY3RseSDigJQgb3RoZXJ3aXNlIGV2ZXJ5XHJcbiAqIGNvbnN1bWVyJ3MgYnVuZGxlciB3b3VsZCBoYXZlIHRvIHJlc29sdmUgYEBwcm9jdG9ybGluay9zZGtgIGF0IGJ1aWxkIHRpbWUgKGFuZCBmYWlsIHdoZW4gaXRcclxuICogaXNuJ3QgaW5zdGFsbGVkKS4gSW5zdGVhZCwgYSBob3N0IHRoYXQgdXNlcyBwcm9jdG9yaW5nIHBhc3NlcyBhIGBzZGtMb2FkZXJgIChlLmcuXHJcbiAqIGAoKSA9PiBpbXBvcnQoJ0Bwcm9jdG9ybGluay9zZGsnKWApIHNvIHRoZSBtb2R1bGUgcmVmZXJlbmNlIGxpdmVzIGluIHRoZSBob3N0IGFwcCwgd2hlcmUgdGhlXHJcbiAqIHBhY2thZ2UgaXMgaW5zdGFsbGVkLiBDb25zdW1lcnMgd2hvIGRvbid0IHVzZSBwcm9jdG9yaW5nIG5ldmVyIHJlZmVyZW5jZSBpdCBhbmQgYnVpbGQgY2xlYW5seS5cclxuICovXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb2N0b3JpbmdTZXJ2aWNlIHtcclxuICBwcml2YXRlIHNlc3Npb246IGFueTtcclxuICAvLyBTREsgZXZlbnQgdW5zdWJzY3JpYmVycyDigJQga2VwdCBmb3IgdGhlIGxpZmUgb2YgdGhlIHNlc3Npb24gYW5kIHJlbW92ZWQgb25seSBpbiBkZXN0cm95KClcclxuICBwcml2YXRlIG9mZkhhbmRsZXJzOiBBcnJheTwoKSA9PiB2b2lkPiA9IFtdO1xyXG5cclxuICAvKipcclxuICAgKiBDcmVhdGVzIGEgUHJvY3Rvckxpbmsgc2Vzc2lvbiB3aXRoIHRoZSBnaXZlbiBpZCArIEpXVCBhbmQgcmVxdWVzdHMgY2FtZXJhIGFjY2Vzcy5cclxuICAgKiBUaGUgcmV0dXJuZWQgb2JzZXJ2YWJsZSBjb21wbGV0ZXMgb25jZSB0aGUgY2FuZGlkYXRlIEdSQU5UUyBjYW1lcmEgYWNjZXNzLCBhbmQgZXJyb3JzXHJcbiAgICogd2l0aCBgeyBjb2RlOiAnY2FtZXJhX2RlbmllZCcgfWAgaWYgdGhlIGNhbWVyYSBpcyBkZW5pZWQgKHNvIHRoZSBjYWxsZXIgY2FuIHByb21wdCBhIHJldHJ5KS5cclxuICAgKlxyXG4gICAqIGByZWZyZXNoVG9rZW5gIGlzIGNhbGxlZCBpZiB0aGUgU0RLIGVtaXRzIGB0b2tlbi1leHBpcmVkYCAodGhlIGV4YW0gb3V0bGl2ZWQgdGhlIHRva2VuKTogaXRcclxuICAgKiBtdXN0IHJldHVybiBPTkxZIHRoZSBuZXcgc2Vzc2lvbiBKV1QsIHdoaWNoIGlzIGhhbmRlZCBiYWNrIHRvIHRoZSBTREsgdmlhIGB1cGRhdGVUb2tlbmAgdG9cclxuICAgKiByZXN1bWUgdGhlIHNhbWUgc2Vzc2lvbi5cclxuICAgKi9cclxuICBzdGFydChvcHRpb25zOiB7XHJcbiAgICBzZXNzaW9uSWQ/OiBzdHJpbmc7XHJcbiAgICBqd3Q6IHN0cmluZztcclxuICAgIHJlZnJlc2hUb2tlbj86ICgpID0+IE9ic2VydmFibGU8c3RyaW5nPjtcclxuICAgIC8vIGhvc3QtcHJvdmlkZWQgbG9hZGVyIGZvciB0aGUgU0RLLCBlLmcuIGAoKSA9PiBpbXBvcnQoJ0Bwcm9jdG9ybGluay9zZGsnKWBcclxuICAgIHNka0xvYWRlcj86ICgpID0+IFByb21pc2U8YW55PjtcclxuICB9KTogT2JzZXJ2YWJsZTx2b2lkPiB7XHJcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8dm9pZD4oKG9ic2VydmVyKSA9PiB7XHJcbiAgICAgIGxldCBzZXR0bGVkID0gZmFsc2U7XHJcblxyXG4gICAgICBjb25zdCBzdWNjZWVkID0gKCkgPT4ge1xyXG4gICAgICAgIGlmICghc2V0dGxlZCkgeyBzZXR0bGVkID0gdHJ1ZTsgb2JzZXJ2ZXIubmV4dCgpOyBvYnNlcnZlci5jb21wbGV0ZSgpOyB9XHJcbiAgICAgIH07XHJcbiAgICAgIGNvbnN0IGZhaWwgPSAoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoIXNldHRsZWQpIHsgc2V0dGxlZCA9IHRydWU7IG9ic2VydmVyLmVycm9yKGVycik7IH1cclxuICAgICAgfTtcclxuXHJcbiAgICAgIGlmICghb3B0aW9ucy5zZGtMb2FkZXIpIHtcclxuICAgICAgICBmYWlsKHsgbWVzc2FnZTogJ1Byb2N0b3JMaW5rIFNESyBsb2FkZXIgbm90IHByb3ZpZGVkJyB9KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIFByb21pc2UucmVzb2x2ZShvcHRpb25zLnNka0xvYWRlcigpKS50aGVuKChzZGs6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBjb25zdCBQcm9jdG9yTGluayA9IHNkaz8uUHJvY3RvckxpbmsgfHwgc2RrPy5kZWZhdWx0Py5Qcm9jdG9yTGluayB8fCBzZGs/LmRlZmF1bHQ7XHJcbiAgICAgICAgICB0aGlzLnNlc3Npb24gPSBQcm9jdG9yTGluay5jcmVhdGVTZXNzaW9uKHtcclxuICAgICAgICAgICAgand0OiBvcHRpb25zLmp3dCxcclxuICAgICAgICAgICAgc2Vzc2lvbklkOiBvcHRpb25zLnNlc3Npb25JZCxcclxuICAgICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlXHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICBjb25zdCBvZmZQZXJtaXNzaW9uID0gdGhpcy5zZXNzaW9uLm9uKCdwZXJtaXNzaW9uJywgKHJlc3VsdDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQ/LmNhbWVyYSA9PT0gJ2RlbmllZCcpIHtcclxuICAgICAgICAgICAgICBmYWlsKHsgY29kZTogJ2NhbWVyYV9kZW5pZWQnIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdD8uY2FtZXJhID09PSAnZ3JhbnRlZCcpIHtcclxuICAgICAgICAgICAgICBzdWNjZWVkKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgY29uc3Qgb2ZmRXJyb3IgPSB0aGlzLnNlc3Npb24ub24oJ2Vycm9yJywgKGVycjogYW55KSA9PiBmYWlsKGVycikpO1xyXG5cclxuICAgICAgICAgIC8vIHRva2VuIG91dGxpdmVkIHRoZSBleGFtIOKAlCByZS1taW50IGZvciB0aGUgc2FtZSBzZXNzaW9uIGFuZCBoYW5kIHRoZSBuZXcgSldUIGJhY2tcclxuICAgICAgICAgIGNvbnN0IG9mZlRva2VuRXhwaXJlZCA9IHRoaXMuc2Vzc2lvbi5vbigndG9rZW4tZXhwaXJlZCcsICgpID0+IHtcclxuICAgICAgICAgICAgb3B0aW9ucy5yZWZyZXNoVG9rZW4/LigpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgICAgbmV4dDogKGp3dDogc3RyaW5nKSA9PiB7IHRyeSB7IHRoaXMuc2Vzc2lvbj8udXBkYXRlVG9rZW4/Lihqd3QpOyB9IGNhdGNoIChlKSB7IC8qIG5vb3AgKi8gfSB9LFxyXG4gICAgICAgICAgICAgIGVycm9yOiAoKSA9PiB7IC8qIHJlZnJlc2ggZmFpbGVkOyBTREsgd2lsbCBzdXJmYWNlIGEgc2Vzc2lvbiBlcnJvciBpZiBpdCBjYW4ndCBjb250aW51ZSAqLyB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgLy8gS2VlcCB0aGVzZSBsaXN0ZW5lcnMgZm9yIHRoZSBMSUZFIG9mIHRoZSBzZXNzaW9uIOKAlCB0aGV5IGFyZSByZW1vdmVkIGluIGRlc3Ryb3koKS5cclxuICAgICAgICAgIC8vIChEbyBOT1QgdGVhciB0aGVtIGRvd24gd2hlbiB0aGlzIG9ic2VydmFibGUgY29tcGxldGVzIG9uIGNhbWVyYS1ncmFudGVkLCBvdGhlcndpc2UgdGhlXHJcbiAgICAgICAgICAvLyBsb25nLWxpdmVkIGB0b2tlbi1leHBpcmVkYC9gZXJyb3JgIGV2ZW50cyB3b3VsZCBuZXZlciByZWFjaCB1cyBhZ2Fpbi4pXHJcbiAgICAgICAgICB0aGlzLm9mZkhhbmRsZXJzID0gW29mZlBlcm1pc3Npb24sIG9mZkVycm9yLCBvZmZUb2tlbkV4cGlyZWRdLmZpbHRlcigoZm4pID0+IHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJyk7XHJcblxyXG4gICAgICAgICAgLy8gbW91bnRzIHRoZSBlbmNsYXZlLCByZXF1ZXN0cyB0aGUgY2FtZXJhIGFuZCBiZWdpbnMgY2FwdHVyZVxyXG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHRoaXMuc2Vzc2lvbi5zdGFydCgpKS5jYXRjaCgoZXJyOiBhbnkpID0+IGZhaWwoZXJyKSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICBmYWlsKGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KS5jYXRjaCgoZXJyOiBhbnkpID0+IGZhaWwoZXJyKSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKiBTdWJzY3JpYmUgdG8gdGhlIGxpdmUgcHJvY3RvcmluZyBldmVudCBzdHJlYW0uICovXHJcbiAgb25FdmVudChjYjogKGV2ZW50OiBhbnkpID0+IHZvaWQpIHtcclxuICAgIHJldHVybiB0aGlzLnNlc3Npb24/Lm9uRXZlbnQ/LihjYik7XHJcbiAgfVxyXG5cclxuICAvKiogRW5kIGNhcHR1cmUgYW5kIGZsdXNoIHBlbmRpbmcgZGF0YS4gKi9cclxuICBzdG9wKCkge1xyXG4gICAgdHJ5IHsgdGhpcy5zZXNzaW9uPy5zdG9wPy4oKTsgfSBjYXRjaCAoZSkgeyAvKiBub29wICovIH1cclxuICB9XHJcblxyXG4gIC8qKiBUZWFyIGRvd24gYW5kIHJlbW92ZSB0aGUgY2FtZXJhIHByZXZpZXcuICovXHJcbiAgZGVzdHJveShwYXJhbXM6IHsgZW5kU2Vzc2lvbjogYm9vbGVhbiB9ID0geyBlbmRTZXNzaW9uOiB0cnVlIH0pIHtcclxuICAgIHRoaXMub2ZmSGFuZGxlcnMuZm9yRWFjaCgob2ZmKSA9PiB7IHRyeSB7IG9mZigpOyB9IGNhdGNoIChlKSB7IC8qIG5vb3AgKi8gfSB9KTtcclxuICAgIHRoaXMub2ZmSGFuZGxlcnMgPSBbXTtcclxuICAgIHRyeSB7IHRoaXMuc2Vzc2lvbj8uZGVzdHJveT8uKHBhcmFtcyk7IH0gY2F0Y2ggKGUpIHsgLyogbm9vcCAqLyB9XHJcbiAgICB0aGlzLnNlc3Npb24gPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY3RvcmluZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb25zLWFzc2Vzc21lbnQvc3JjL2xpYi9zaGFyZWQvaW50ZXJmYWNlcy9wcm9jdG9yaW5nLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFByb2N0b3Jpbmcgc2Vzc2lvbiBpc3N1ZWQgdG8gdGhlIHRha2VyIChjcmVhdGUvcmVmcmVzaCByZXNwb25zZSkuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvY3RvcmluZ1Nlc3Npb24ge1xyXG4gICAgcHJvdmlkZXJTZXNzaW9uSWQ/OiBzdHJpbmc7XHJcbiAgICBwcm92aWRlclNlc3Npb25Kd3Q/OiBzdHJpbmc7XHJcbiAgICBwcm92aWRlclNlc3Npb25FeHBpcmVzQXQ/OiBudW1iZXI7XHJcbiAgICByZWZlcmVuY2VJbWFnZUJhc2U2ND86IHN0cmluZztcclxuICAgIGFwcEJhc2VVcmw/OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKiBBIHJvdyBpbiB0aGUgcHJvY3RvcmluZy1zZXNzaW9ucyBsaXN0IGZvciBhbiBhc3Nlc3NlZS4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBQcm9jdG9yaW5nU2Vzc2lvblN1bW1hcnkge1xyXG4gICAgaWQ/OiBudW1iZXI7XHJcbiAgICBjb250ZXh0SWQ/OiBzdHJpbmc7XHJcbiAgICBlbnRpdHlJZD86IHN0cmluZztcclxuICAgIGVudGl0eVR5cGU/OiBzdHJpbmc7XHJcbiAgICByZWZlcmVuY2VJZD86IHN0cmluZztcclxuICAgIHByb3ZpZGVyPzogc3RyaW5nO1xyXG4gICAgcHJvdmlkZXJJZD86IG51bWJlcjtcclxuICAgIHN0YXR1cz86IHN0cmluZztcclxuICAgIGlzQWN0aXZlPzogYm9vbGVhbjtcclxuICAgIGludGVncml0eUZsYWdnZWQ/OiBib29sZWFuO1xyXG4gICAgc3RhcnRlZEF0PzogbnVtYmVyO1xyXG4gICAgZW5kZWRBdD86IG51bWJlcjtcclxuICAgIGV4cGlyZXNBdD86IG51bWJlcjtcclxuICAgIHZhbGlkYXRlZEF0PzogbnVtYmVyO1xyXG59XHJcblxyXG4vKiogVGhlIHByb2N0b3JpbmcgcmVwb3J0IGZvciBhIHNpbmdsZSBzZXNzaW9uIChmZXRjaGVkIG9uIGRlbWFuZCBieSBzZXNzaW9uIGlkKS4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBQcm9jdG9yaW5nUmVwb3J0IHtcclxuICAgIGlkPzogbnVtYmVyO1xyXG4gICAgcHJvY3RvcmluZ1Nlc3Npb25JZD86IG51bWJlcjtcclxuICAgIGludGVncml0eVNjb3JlPzogbnVtYmVyO1xyXG4gICAgaW50ZWdyaXR5TGV2ZWw/OiBzdHJpbmc7XHJcbiAgICBpbnRlZ3JpdHlGbGFnZ2VkPzogYm9vbGVhbjtcclxuICAgIGlkZW50aXR5TWF0Y2g/OiBzdHJpbmc7XHJcbiAgICBmYWlsdXJlUmVhc29uPzogc3RyaW5nO1xyXG4gICAgaXNBY3RpdmU/OiBib29sZWFuO1xyXG4gICAgcmVwb3J0UGF5bG9hZD86IHN0cmluZztcclxufVxyXG5cclxuLyoqIEEgd2VpZ2h0ZWQgaW50ZWdyaXR5IGZsYWcgaW5zaWRlIHRoZSByZXBvcnQgcGF5bG9hZC4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBQcm9jdG9yaW5nUmVhc29uIHtcclxuICAgIGNvZGU/OiBzdHJpbmc7XHJcbiAgICBkZXRhaWw/OiBzdHJpbmc7XHJcbiAgICB3ZWlnaHQ/OiBudW1iZXI7XHJcbn1cclxuXHJcbi8qKiBBIGNhcHR1cmVkIGV2aWRlbmNlIGZyYW1lIGluc2lkZSB0aGUgcmVwb3J0IHBheWxvYWQuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvY3RvcmluZ0V2aWRlbmNlIHtcclxuICAgIHNlcT86IG51bWJlcjtcclxuICAgIGNhcHR1cmVkX2F0Pzogc3RyaW5nO1xyXG4gICAgaXNfcmVmZXJlbmNlPzogYm9vbGVhbjtcclxuICAgIHNvdXJjZT86IHN0cmluZztcclxuICAgIGltYWdlX3VybD86IHN0cmluZztcclxufVxyXG5cclxuLyoqIEEgc2luZ2xlIGV2ZW50IGluIHRoZSByZXBvcnQgcGF5bG9hZCB0aW1lbGluZS4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBQcm9jdG9yaW5nVGltZWxpbmVFdmVudCB7XHJcbiAgICB0eXBlPzogc3RyaW5nO1xyXG4gICAgc2VxPzogbnVtYmVyO1xyXG4gICAgYXQ/OiBzdHJpbmc7XHJcbiAgICBzb3VyY2U/OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKiBQYXJzZWQgc2hhcGUgb2YgYFByb2N0b3JpbmdSZXBvcnQucmVwb3J0UGF5bG9hZGAgKGEgSlNPTiBzdHJpbmcpLiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFByb2N0b3JpbmdQYXlsb2FkIHtcclxuICAgIHNlc3Npb25faWQ/OiBzdHJpbmc7XHJcbiAgICBzdGF0dXM/OiBzdHJpbmc7XHJcbiAgICBleHRlcm5hbF91c2VyX2lkPzogc3RyaW5nO1xyXG4gICAgZXhhbV9pZD86IHN0cmluZztcclxuICAgIGF0dGVtcHRfaWQ/OiBzdHJpbmc7XHJcbiAgICBzdGFydGVkX2F0Pzogc3RyaW5nO1xyXG4gICAgZW5kZWRfYXQ/OiBzdHJpbmc7XHJcbiAgICB2YWxpZGF0ZWRfYXQ/OiBzdHJpbmc7XHJcbiAgICBkdXJhdGlvbl9zZWNvbmRzPzogbnVtYmVyO1xyXG4gICAgaW50ZWdyaXR5Pzoge1xyXG4gICAgICAgIHNjb3JlPzogbnVtYmVyO1xyXG4gICAgICAgIGxldmVsPzogc3RyaW5nO1xyXG4gICAgICAgIGZsYWdnZWQ/OiBib29sZWFuO1xyXG4gICAgICAgIGFuYWx5c2lzX2NvbXBsZXRlPzogYm9vbGVhbjtcclxuICAgICAgICBpZGVudGl0eV9tYXRjaD86IHN0cmluZztcclxuICAgICAgICByZWFzb25zPzogUHJvY3RvcmluZ1JlYXNvbltdO1xyXG4gICAgfTtcclxuICAgIGZhY2VfYW5hbHlzaXM/OiB7XHJcbiAgICAgICAgZnJhbWVzX2NoZWNrZWQ/OiBudW1iZXI7XHJcbiAgICAgICAgbm9fZmFjZV9mcmFtZXM/OiBudW1iZXI7XHJcbiAgICAgICAgbXVsdGlfZmFjZV9mcmFtZXM/OiBudW1iZXI7XHJcbiAgICAgICAgaW1wZXJzb25hdGlvbl9mcmFtZXM/OiBudW1iZXI7XHJcbiAgICB9O1xyXG4gICAgYWN0aXZpdHk/OiB7XHJcbiAgICAgICAgdG90YWxfZnJhbWVzPzogbnVtYmVyO1xyXG4gICAgICAgIHRvdGFsX2V2ZW50cz86IG51bWJlcjtcclxuICAgICAgICBmbGFnZ2VkX2V2ZW50cz86IG51bWJlcjtcclxuICAgICAgICBieV90eXBlPzogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfTtcclxuICAgIH07XHJcbiAgICBldmlkZW5jZT86IFByb2N0b3JpbmdFdmlkZW5jZVtdO1xyXG4gICAgdGltZWxpbmU/OiBQcm9jdG9yaW5nVGltZWxpbmVFdmVudFtdO1xyXG59XHJcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvY3RvcmluZy5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21tb25zLWFzc2Vzc21lbnQvc3JjL2xpYi9zaGFyZWQvaW50ZXJmYWNlcy9wcm9jdG9yaW5nLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFByb2N0b3Jpbmcgc2Vzc2lvbiBpc3N1ZWQgdG8gdGhlIHRha2VyIChjcmVhdGUvcmVmcmVzaCByZXNwb25zZSkuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvY3RvcmluZ1Nlc3Npb24ge1xyXG4gICAgcHJvdmlkZXJTZXNzaW9uSWQ/OiBzdHJpbmc7XHJcbiAgICBwcm92aWRlclNlc3Npb25Kd3Q/OiBzdHJpbmc7XHJcbiAgICBwcm92aWRlclNlc3Npb25FeHBpcmVzQXQ/OiBudW1iZXI7XHJcbiAgICByZWZlcmVuY2VJbWFnZUJhc2U2ND86IHN0cmluZztcclxuICAgIGFwcEJhc2VVcmw/OiBzdHJpbmc7XHJcbn1cclxuXHJcbi8qKiBBIHJvdyBpbiB0aGUgcHJvY3RvcmluZy1zZXNzaW9ucyBsaXN0IGZvciBhbiBhc3Nlc3NlZS4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBQcm9jdG9yaW5nU2Vzc2lvblN1bW1hcnkge1xyXG4gICAgaWQ/OiBudW1iZXI7XHJcbiAgICBjb250ZXh0SWQ/OiBzdHJpbmc7XHJcbiAgICBlbnRpdHlJZD86IHN0cmluZztcclxuICAgIGVudGl0eVR5cGU/OiBzdHJpbmc7XHJcbiAgICByZWZlcmVuY2VJZD86IHN0cmluZztcclxuICAgIHByb3ZpZGVyPzogc3RyaW5nO1xyXG4gICAgcHJvdmlkZXJJZD86IG51bWJlcjtcclxuICAgIHN0YXR1cz86IHN0cmluZztcclxuICAgIGlzQWN0aXZlPzogYm9vbGVhbjtcclxuICAgIGludGVncml0eUZsYWdnZWQ/OiBib29sZWFuO1xyXG4gICAgc3RhcnRlZEF0PzogbnVtYmVyO1xyXG4gICAgZW5kZWRBdD86IG51bWJlcjtcclxuICAgIGV4cGlyZXNBdD86IG51bWJlcjtcclxuICAgIHZhbGlkYXRlZEF0PzogbnVtYmVyO1xyXG4gICAgaW50ZWdyaXR5U3VtbWFyeT86IEludGVncml0eVN1bW1hcnk7XHJcbn1cclxuXHJcbi8qKiBUaGUgcHJvY3RvcmluZyByZXBvcnQgZm9yIGEgc2luZ2xlIHNlc3Npb24gKGZldGNoZWQgb24gZGVtYW5kIGJ5IHNlc3Npb24gaWQpLiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFByb2N0b3JpbmdSZXBvcnQge1xyXG4gICAgaWQ/OiBudW1iZXI7XHJcbiAgICBwcm9jdG9yaW5nU2Vzc2lvbklkPzogbnVtYmVyO1xyXG4gICAgaW50ZWdyaXR5U2NvcmU/OiBudW1iZXI7XHJcbiAgICBpbnRlZ3JpdHlMZXZlbD86IHN0cmluZztcclxuICAgIGludGVncml0eUZsYWdnZWQ/OiBib29sZWFuO1xyXG4gICAgaWRlbnRpdHlNYXRjaD86IHN0cmluZztcclxuICAgIGZhaWx1cmVSZWFzb24/OiBzdHJpbmc7XHJcbiAgICBpc0FjdGl2ZT86IGJvb2xlYW47XHJcbiAgICByZXBvcnRQYXlsb2FkPzogc3RyaW5nO1xyXG59XHJcblxyXG4vKiogQSB3ZWlnaHRlZCBpbnRlZ3JpdHkgZmxhZyBpbnNpZGUgdGhlIHJlcG9ydCBwYXlsb2FkLiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFByb2N0b3JpbmdSZWFzb24ge1xyXG4gICAgY29kZT86IHN0cmluZztcclxuICAgIGRldGFpbD86IHN0cmluZztcclxuICAgIHdlaWdodD86IG51bWJlcjtcclxufVxyXG5cclxuLyoqIEEgY2FwdHVyZWQgZXZpZGVuY2UgZnJhbWUgaW5zaWRlIHRoZSByZXBvcnQgcGF5bG9hZC4gKi9cclxuZXhwb3J0IGludGVyZmFjZSBQcm9jdG9yaW5nRXZpZGVuY2Uge1xyXG4gICAgc2VxPzogbnVtYmVyO1xyXG4gICAgY2FwdHVyZWRfYXQ/OiBzdHJpbmc7XHJcbiAgICBpc19yZWZlcmVuY2U/OiBib29sZWFuO1xyXG4gICAgc291cmNlPzogc3RyaW5nO1xyXG4gICAgaW1hZ2VfdXJsPzogc3RyaW5nO1xyXG59XHJcblxyXG4vKiogQSBzaW5nbGUgZXZlbnQgaW4gdGhlIHJlcG9ydCBwYXlsb2FkIHRpbWVsaW5lLiAqL1xyXG5leHBvcnQgaW50ZXJmYWNlIFByb2N0b3JpbmdUaW1lbGluZUV2ZW50IHtcclxuICAgIHR5cGU/OiBzdHJpbmc7XHJcbiAgICBzZXE/OiBudW1iZXI7XHJcbiAgICBhdD86IHN0cmluZztcclxuICAgIHNvdXJjZT86IHN0cmluZztcclxufVxyXG5cclxuLyoqIFBhcnNlZCBzaGFwZSBvZiBgUHJvY3RvcmluZ1JlcG9ydC5yZXBvcnRQYXlsb2FkYCAoYSBKU09OIHN0cmluZykuICovXHJcbmV4cG9ydCBpbnRlcmZhY2UgUHJvY3RvcmluZ1BheWxvYWQge1xyXG4gICAgc2Vzc2lvbl9pZD86IHN0cmluZztcclxuICAgIHN0YXR1cz86IHN0cmluZztcclxuICAgIGV4dGVybmFsX3VzZXJfaWQ/OiBzdHJpbmc7XHJcbiAgICBleGFtX2lkPzogc3RyaW5nO1xyXG4gICAgYXR0ZW1wdF9pZD86IHN0cmluZztcclxuICAgIHN0YXJ0ZWRfYXQ/OiBzdHJpbmc7XHJcbiAgICBlbmRlZF9hdD86IHN0cmluZztcclxuICAgIHZhbGlkYXRlZF9hdD86IHN0cmluZztcclxuICAgIGR1cmF0aW9uX3NlY29uZHM/OiBudW1iZXI7XHJcbiAgICBpbnRlZ3JpdHk/OiB7XHJcbiAgICAgICAgc2NvcmU/OiBudW1iZXI7XHJcbiAgICAgICAgbGV2ZWw/OiBzdHJpbmc7XHJcbiAgICAgICAgZmxhZ2dlZD86IGJvb2xlYW47XHJcbiAgICAgICAgYW5hbHlzaXNfY29tcGxldGU/OiBib29sZWFuO1xyXG4gICAgICAgIGlkZW50aXR5X21hdGNoPzogc3RyaW5nO1xyXG4gICAgICAgIHJlYXNvbnM/OiBQcm9jdG9yaW5nUmVhc29uW107XHJcbiAgICB9O1xyXG4gICAgZmFjZV9hbmFseXNpcz86IHtcclxuICAgICAgICBmcmFtZXNfY2hlY2tlZD86IG51bWJlcjtcclxuICAgICAgICBub19mYWNlX2ZyYW1lcz86IG51bWJlcjtcclxuICAgICAgICBtdWx0aV9mYWNlX2ZyYW1lcz86IG51bWJlcjtcclxuICAgICAgICBpbXBlcnNvbmF0aW9uX2ZyYW1lcz86IG51bWJlcjtcclxuICAgIH07XHJcbiAgICBhY3Rpdml0eT86IHtcclxuICAgICAgICB0b3RhbF9mcmFtZXM/OiBudW1iZXI7XHJcbiAgICAgICAgdG90YWxfZXZlbnRzPzogbnVtYmVyO1xyXG4gICAgICAgIGZsYWdnZWRfZXZlbnRzPzogbnVtYmVyO1xyXG4gICAgICAgIGJ5X3R5cGU/OiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9O1xyXG4gICAgfTtcclxuICAgIGV2aWRlbmNlPzogUHJvY3RvcmluZ0V2aWRlbmNlW107XHJcbiAgICB0aW1lbGluZT86IFByb2N0b3JpbmdUaW1lbGluZUV2ZW50W107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSW50ZWdyaXR5U3VtbWFyeSB7XHJcbiAgICBwcm9jdG9yaW5nU2Vzc2lvbklkPzogbnVtYmVyO1xyXG4gICAgaW50ZWdyaXR5U2NvcmU/OiBudW1iZXI7XHJcbiAgICBpbnRlZ3JpdHlMZXZlbD86IHN0cmluZztcclxuICAgIGludGVncml0eUZsYWdnZWQ/OiBib29sZWFuO1xyXG59Il19