tango-app-ui-analyse-trax 4.0.41 → 4.0.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/audit-v2/action-centre/audit-v2-action-centre.component.mjs +26 -5
- package/esm2022/lib/components/audit-v2/audit-v2-access.mjs +30 -3
- package/esm2022/lib/components/audit-v2/audit-v2-layout/audit-v2-layout.component.mjs +14 -4
- package/esm2022/lib/components/audit-v2/audit-v2.module.mjs +11 -3
- package/esm2022/lib/components/audit-v2/configure/audit-v2-configure.component.mjs +22 -4
- package/esm2022/lib/components/audit-v2/dashboard/audit-v2-dashboard.component.mjs +82 -52
- package/esm2022/lib/components/audit-v2/detail/audit-v2-detail.component.mjs +18 -5
- package/esm2022/lib/components/audit-v2/flags/audit-v2-flags.component.mjs +47 -18
- package/esm2022/lib/components/audit-v2/flags/flag-detail/audit-v2-flag-detail.component.mjs +36 -8
- package/esm2022/lib/components/audit-v2/gallery/audit-v2-gallery.component.mjs +293 -29
- package/esm2022/lib/components/audit-v2/manage/audit-v2-manage.component.mjs +80 -34
- package/esm2022/lib/components/audit-v2/predefined/audit-v2-predefined.component.mjs +2 -2
- package/esm2022/lib/components/audit-v2/reports/audit-v2-reports.component.mjs +641 -105
- package/esm2022/lib/components/audit-v2/schedule/audit-v2-schedule-detail.component.mjs +7 -6
- package/esm2022/lib/components/audit-v2/schedule/audit-v2-schedule-editor.component.mjs +327 -44
- package/esm2022/lib/components/audit-v2/select/audit-v2-select.component.mjs +2 -2
- package/esm2022/lib/components/audit-v2/shimmer/audit-v2-shimmer.component.mjs +2 -2
- package/esm2022/lib/components/audit-v2/sort-icon/audit-v2-sort-icon.component.mjs +32 -0
- package/esm2022/lib/components/audit-v2/tip/audit-v2-tip.directive.mjs +51 -0
- package/esm2022/lib/services/trax.service.mjs +10 -1
- package/fesm2022/{tango-app-ui-analyse-trax-audit-v2.module-CB3XDI7t.mjs → tango-app-ui-analyse-trax-audit-v2.module-44MagGnJ.mjs} +1695 -323
- package/fesm2022/tango-app-ui-analyse-trax-audit-v2.module-44MagGnJ.mjs.map +1 -0
- package/fesm2022/{tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-uhvCerWQ.mjs → tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-B7xZY63U.mjs} +11 -2
- package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-B7xZY63U.mjs.map +1 -0
- package/fesm2022/tango-app-ui-analyse-trax.mjs +1 -1
- package/lib/components/audit-v2/action-centre/audit-v2-action-centre.component.d.ts +8 -0
- package/lib/components/audit-v2/audit-v2-access.d.ts +25 -4
- package/lib/components/audit-v2/audit-v2-layout/audit-v2-layout.component.d.ts +3 -2
- package/lib/components/audit-v2/audit-v2.module.d.ts +21 -19
- package/lib/components/audit-v2/configure/audit-v2-configure.component.d.ts +2 -0
- package/lib/components/audit-v2/dashboard/audit-v2-dashboard.component.d.ts +34 -4
- package/lib/components/audit-v2/detail/audit-v2-detail.component.d.ts +4 -0
- package/lib/components/audit-v2/flags/audit-v2-flags.component.d.ts +15 -4
- package/lib/components/audit-v2/flags/flag-detail/audit-v2-flag-detail.component.d.ts +13 -1
- package/lib/components/audit-v2/gallery/audit-v2-gallery.component.d.ts +85 -0
- package/lib/components/audit-v2/manage/audit-v2-manage.component.d.ts +17 -2
- package/lib/components/audit-v2/reports/audit-v2-reports.component.d.ts +179 -23
- package/lib/components/audit-v2/schedule/audit-v2-schedule-editor.component.d.ts +58 -8
- package/lib/components/audit-v2/sort-icon/audit-v2-sort-icon.component.d.ts +12 -0
- package/lib/components/audit-v2/tip/audit-v2-tip.directive.d.ts +18 -0
- package/lib/services/trax.service.d.ts +6 -0
- package/package.json +1 -1
- package/fesm2022/tango-app-ui-analyse-trax-audit-v2.module-CB3XDI7t.mjs.map +0 -1
- package/fesm2022/tango-app-ui-analyse-trax-tango-app-ui-analyse-trax-uhvCerWQ.mjs.map +0 -1
|
@@ -10,7 +10,9 @@ import * as i4 from "@angular/common";
|
|
|
10
10
|
import * as i5 from "tango-app-ui-shared";
|
|
11
11
|
import * as i6 from "@angular/forms";
|
|
12
12
|
import * as i7 from "../../activity-log-v2/log-view-popup/date-range-picker/date-range-picker.component";
|
|
13
|
-
import * as i8 from "../
|
|
13
|
+
import * as i8 from "../tip/audit-v2-tip.directive";
|
|
14
|
+
import * as i9 from "../shimmer/audit-v2-shimmer.component";
|
|
15
|
+
import * as i10 from "../sort-icon/audit-v2-sort-icon.component";
|
|
14
16
|
dayjs.extend(utc);
|
|
15
17
|
/**
|
|
16
18
|
* Activity Log badge per action: a short label like the old Checklist Activity Log's (getActionLabel), with
|
|
@@ -275,6 +277,23 @@ export class AuditV2ActionCentreComponent {
|
|
|
275
277
|
}
|
|
276
278
|
this.router.navigate(['/manage/trax/audit-v2/gallery'], { queryParams: card.link });
|
|
277
279
|
}
|
|
280
|
+
/**
|
|
281
|
+
* Activity log column sort, done by the API (the log is paged there). '' = newest first, which the
|
|
282
|
+
* Date & Time arrow shows as its descending state.
|
|
283
|
+
*/
|
|
284
|
+
logSortColumn = '';
|
|
285
|
+
logSortBy = -1;
|
|
286
|
+
get logSortKey() {
|
|
287
|
+
return this.logSortColumn || 'date';
|
|
288
|
+
}
|
|
289
|
+
sortLog(column) {
|
|
290
|
+
const current = this.logSortKey;
|
|
291
|
+
// Date starts newest first (the default); the other columns start A-Z / lowest first.
|
|
292
|
+
this.logSortBy = current === column ? (this.logSortBy === 1 ? -1 : 1) : (column === 'date' ? -1 : 1);
|
|
293
|
+
this.logSortColumn = column === 'date' && this.logSortBy === -1 ? '' : column;
|
|
294
|
+
this.currentPage = 1;
|
|
295
|
+
this.loadActivity();
|
|
296
|
+
}
|
|
278
297
|
loadActivity() {
|
|
279
298
|
this.logLoading = true;
|
|
280
299
|
const actions = this.actionsByTab[this.tab];
|
|
@@ -288,7 +307,9 @@ export class AuditV2ActionCentreComponent {
|
|
|
288
307
|
// Logged audit / schedule actions come back on this browser's clock, stamped as UTC like the visit times.
|
|
289
308
|
tzOffset: new Date().getTimezoneOffset(),
|
|
290
309
|
// Only sent when narrowed, so an API without the filter still serves the unfiltered log.
|
|
291
|
-
...(actions.length ? { action: actions } : {})
|
|
310
|
+
...(actions.length ? { action: actions } : {}),
|
|
311
|
+
// Likewise the column sort: only once a header other than the default newest-first is picked.
|
|
312
|
+
...(this.logSortColumn ? { sortColumn: this.logSortColumn, sortBy: this.logSortBy } : {})
|
|
292
313
|
}).pipe(takeUntil(this.destroy$)).subscribe({
|
|
293
314
|
next: (res) => {
|
|
294
315
|
const data = res?.code === 200 ? (res.data || {}) : {};
|
|
@@ -453,10 +474,10 @@ export class AuditV2ActionCentreComponent {
|
|
|
453
474
|
return col.key;
|
|
454
475
|
}
|
|
455
476
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuditV2ActionCentreComponent, deps: [{ token: i1.TraxService }, { token: i2.GlobalStateService }, { token: i0.ChangeDetectorRef }, { token: i3.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
456
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AuditV2ActionCentreComponent, selector: "lib-audit-v2-action-centre", ngImport: i0, template: "<div class=\"av2-page\">\r\n\r\n <!-- Waiting for approval -->\r\n <div class=\"av2-grid-2\">\r\n <div class=\"av2-stat\">\r\n <span class=\"av2-sk av2-sk--value ac-sk-value\" *ngIf=\"cardsLoading\"></span>\r\n <span class=\"av2-stat-value\" *ngIf=\"!cardsLoading\">{{ auditWaiting }}</span>\r\n <span class=\"av2-stat-label\">Audit waiting for approval</span>\r\n </div>\r\n <div class=\"av2-stat\">\r\n <span class=\"av2-sk av2-sk--value ac-sk-value\" *ngIf=\"cardsLoading\"></span>\r\n <span class=\"av2-stat-value\" *ngIf=\"!cardsLoading\">{{ taskWaiting }}</span>\r\n <span class=\"av2-stat-label\">Task waiting for approval</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Approval -->\r\n <section class=\"av2-card\">\r\n <div class=\"av2-card-head\">\r\n <div class=\"av2-title-block\">\r\n <div class=\"av2-card-title\">Approval</div>\r\n <div class=\"av2-card-sub\">A summary of all the audits awaiting approval</div>\r\n </div>\r\n\r\n <label class=\"av2-search av2-search--md\">\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\r\n stroke-linecap=\"round\">\r\n <circle cx=\"11\" cy=\"11\" r=\"7\"></circle>\r\n <line x1=\"16.5\" y1=\"16.5\" x2=\"21\" y2=\"21\"></line>\r\n </svg>\r\n <input [(ngModel)]=\"approvalSearch\" (ngModelChange)=\"onApprovalSearch()\" type=\"text\" placeholder=\"Search\" autocomplete=\"off\" />\r\n </label>\r\n\r\n <div class=\"approval-scope-select\">\r\n <lib-select [items]=\"approvalScopeItems\" [multi]=\"false\" [searchField]=\"'label'\" [idField]=\"'id'\"\r\n [selectedValues]=\"[approvalScopeSelected]\" (selected)=\"onApprovalScopeSelect($event)\"></lib-select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"av2-grid-3\">\r\n <div class=\"approval-col\" *ngFor=\"let col of columns; trackBy: trackByColumn\">\r\n <div class=\"av2-col-head\">\r\n {{ col.title }}\r\n <span *ngIf=\"!approvalsLoading && col.cards.length\" class=\"av2-badge av2-badge--count\">{{ col.cards.length }}</span>\r\n </div>\r\n\r\n <lib-audit-v2-shimmer *ngIf=\"approvalsLoading\" [rows]=\"2\"></lib-audit-v2-shimmer>\r\n\r\n <div *ngIf=\"!approvalsLoading && col.cards.length\" class=\"approval-cards\">\r\n <div *ngFor=\"let card of col.cards\" class=\"approval-card\" [class.approval-card--off]=\"!card.link\"\r\n [attr.role]=\"card.link ? 'link' : null\" [attr.tabindex]=\"card.link ? 0 : null\" [attr.title]=\"card.hint || null\"\r\n (click)=\"openCard(card)\" (keydown.enter)=\"openCard(card)\">\r\n <div class=\"approval-card-badges\">\r\n <span class=\"av2-badge av2-badge--purple av2-badge--count\">{{ card.typeLabel }}</span>\r\n <span *ngIf=\"card.redo\" class=\"av2-badge av2-badge--warning av2-badge--count\">Redo</span>\r\n </div>\r\n <div class=\"approval-card-name\">{{ card.name }}</div>\r\n <div class=\"approval-card-meta\">\r\n <span>{{ card.store }}</span>\r\n <span *ngIf=\"card.submittedLabel\">{{ card.submittedLabel }}</span>\r\n <span>{{ card.by }}</span>\r\n </div>\r\n <div class=\"approval-card-foot\">\r\n <span class=\"approval-card-date\">{{ card.when }}</span>\r\n <span *ngIf=\"card.approvedLabel\" class=\"av2-badge av2-badge--success av2-badge--count\">{{ card.approvedLabel }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!approvalsLoading && !col.cards.length\" class=\"av2-empty\">\r\n <img class=\"av2-empty-img\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"av2-empty-text\">\r\n <div class=\"av2-empty-title\">No data found</div>\r\n <div class=\"av2-empty-sub\">{{ col.empty }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <!-- Activity Log -->\r\n <section class=\"av2-card av2-card--log\">\r\n <div class=\"av2-card-head av2-card-head--center\">\r\n <div class=\"av2-card-title av2-card-title--grow\">Activity Log</div>\r\n\r\n <label class=\"av2-search av2-search--lg\">\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\r\n stroke-linecap=\"round\">\r\n <circle cx=\"11\" cy=\"11\" r=\"7\"></circle>\r\n <line x1=\"16.5\" y1=\"16.5\" x2=\"21\" y2=\"21\"></line>\r\n </svg>\r\n <input [(ngModel)]=\"search\" (ngModelChange)=\"onSearch()\" type=\"text\" [placeholder]=\"searchHint\" autocomplete=\"off\" />\r\n </label>\r\n\r\n <div class=\"log-date-picker\">\r\n <lib-date-range-picker [range]=\"activityRange\" (dateChange)=\"onActivityDateChange($event)\"></lib-date-range-picker>\r\n </div>\r\n\r\n <!-- One filter per tab (lib-filters reads its options once); each keeps its own selection. -->\r\n <lib-filters *ngIf=\"tab === 'Audit'\" [dataObject]=\"activityFilterData.Audit\" (appliedFilters)=\"onActivityFilters($event)\"></lib-filters>\r\n <lib-filters *ngIf=\"tab === 'Task'\" [dataObject]=\"activityFilterData.Task\" (appliedFilters)=\"onActivityFilters($event)\"></lib-filters>\r\n </div>\r\n\r\n <!-- Audit / Task -->\r\n <div class=\"av2-tabs\">\r\n <button *ngFor=\"let t of tabs\" type=\"button\" class=\"av2-tab\" [class.is-active]=\"tab === t\"\r\n (click)=\"setTab(t)\">{{ t }}</button>\r\n </div>\r\n\r\n <lib-audit-v2-shimmer *ngIf=\"logLoading\"></lib-audit-v2-shimmer>\r\n\r\n <div class=\"av2-table-wrap\" *ngIf=\"!logLoading\">\r\n <table class=\"av2-table log-table\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <span class=\"av2-th-sort\">Date & Time\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <line x1=\"12\" y1=\"4\" x2=\"12\" y2=\"20\"></line>\r\n <polyline points=\"6 14 12 20 18 14\"></polyline>\r\n </svg>\r\n </span>\r\n </th>\r\n <th>{{ nameLabel }}</th>\r\n <th>Action Performed</th>\r\n <th>Performed by</th>\r\n <th>Name</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of pageRows; trackBy: trackByRow\">\r\n <td>\r\n <div class=\"av2-cell-stack\">\r\n <span>{{ row.day }}</span>\r\n <span class=\"av2-muted\">{{ row.time }}</span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"av2-cell-stack log-name\">\r\n <span class=\"av2-ellipsis\" [title]=\"row.name\">{{ row.name }}</span>\r\n <span *ngIf=\"row.detail\" class=\"av2-muted av2-ellipsis\" [title]=\"row.detail\">{{ row.detail }}</span>\r\n </div>\r\n </td>\r\n <td><span class=\"av2-badge activity-action\" [ngClass]=\"row.tone === 'primary' ? '' : 'av2-badge--' + row.tone\"\r\n [title]=\"row.action\">{{ row.action }}</span></td>\r\n <td>\r\n <div class=\"av2-cell-icon av2-dim\">\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <circle cx=\"12\" cy=\"8\" r=\"3.4\"></circle>\r\n <path d=\"M5 20c0-3.6 3.1-5.6 7-5.6s7 2 7 5.6\"></path>\r\n </svg>\r\n <span>{{ row.by }}</span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"av2-cell-icon store-cell\">\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M3 9l1.6-4.5h14.8L21 9\"></path>\r\n <path d=\"M4 9v11h16V9\"></path>\r\n <path d=\"M9 20v-6h6v6\"></path>\r\n </svg>\r\n <span>{{ row.store }}</span>\r\n </div>\r\n </td>\r\n <td>\r\n <a *ngIf=\"row.viewable\" class=\"av2-link\" routerLink=\"/manage/trax/audit-v2/gallery\"\r\n [queryParams]=\"galleryParams(row)\" title=\"Open this submission in the Gallery\">View</a>\r\n <span *ngIf=\"!row.viewable\" class=\"av2-faint\">-</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div *ngIf=\"!logLoading && !filteredRows.length\" class=\"av2-empty\">\r\n <img class=\"av2-empty-img\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"av2-empty-text\">\r\n <div class=\"av2-empty-title\">No data found</div>\r\n <div class=\"av2-empty-sub\">There is no result for {{ tab }}</div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!logLoading && filteredRows.length\" class=\"log-pagination\">\r\n <lib-pagination [itemsPerPage]=\"itemsPerPage\" [pageSize]=\"itemsPerPage\" [paginationSizes]=\"pageSizes\" [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </section>\r\n\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.av2-page{display:flex;flex-direction:column;gap:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:#101828;-webkit-font-smoothing:antialiased}.av2-page *,.av2-page *:before,.av2-page *:after{box-sizing:border-box}.av2-card{background:#fff;border-radius:12px;box-shadow:inset 0 0 0 1px #eaecf0,0 1px 2px #1018280d;padding:20px 24px;display:flex;flex-direction:column;gap:20px}.av2-card--log{padding:20px 24px 24px;gap:18px}.av2-card--table{padding:20px 24px 24px;gap:16px}.av2-card-head{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap}.av2-card-head--center{align-items:center;gap:12px}.av2-title-block{display:flex;flex-direction:column;gap:4px;flex:1;min-width:220px}.av2-card-title{font-size:18px;line-height:26px;font-weight:700;color:#101828;display:flex;align-items:center;gap:10px}.av2-card-title--grow{flex:1;min-width:180px}.av2-card-sub{font-size:13px;line-height:20px;color:#667085}.av2-grow{flex:1}.av2-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.av2-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}.av2-grid-4{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.av2-stat{border-radius:10px;background:linear-gradient(90deg,#f0f7ff,#f8fbff 60%,#fff);box-shadow:inset 0 0 0 1px #d1e9ff;padding:20px 24px;display:flex;align-items:center;gap:16px}.av2-stat-value{font-size:30px;line-height:38px;font-weight:700;color:#101828}.av2-stat-label{font-size:15px;line-height:22px;color:#344054}.av2-kpi{background:#fff;border-radius:10px;box-shadow:inset 0 0 0 1px #eaecf0,0 1px 2px #1018280d;display:flex;flex-direction:column;overflow:hidden}.av2-kpi.is-primary{box-shadow:inset 0 0 0 1px #b2ddff,0 1px 2px #1018280d}.av2-kpi.is-primary .av2-kpi-head{background:#eff8ff}.av2-kpi-head{padding:14px 18px;background:#f9fafb;font-size:15px;line-height:22px;font-weight:600;color:#101828}.av2-kpi-body{padding:16px 18px 18px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.av2-kpi-value{font-size:24px;line-height:32px;font-weight:700;color:#101828}.av2-kpi-delta{display:flex;align-items:center;gap:4px;font-size:12px;color:#039855}.av2-kpi-delta.is-down{color:#d92d20}.av2-kpi-note{font-size:12px;color:#667085}.av2-search{position:relative;display:flex;align-items:center;gap:8px;height:40px;padding:0 12px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;color:#98a2b3;font-size:14px;flex-shrink:0}.av2-search svg{flex-shrink:0}.av2-search input{flex:1;min-width:0;height:100%;border:0;outline:0;padding:0;background:transparent;font:inherit;font-size:14px;color:#101828}.av2-search input::placeholder{color:#98a2b3}.av2-search:focus-within{box-shadow:inset 0 0 0 1px #84caff,0 0 0 4px #eff8ff}.av2-search--sm{width:300px}.av2-search--md{width:320px}.av2-search--lg{width:340px}.av2-select{height:40px;padding:0 36px 0 12px;border:0;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;font:inherit;font-size:14px;color:#344054;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23344054' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>\");background-repeat:no-repeat;background-position:right 12px center;flex-shrink:0}.av2-select:focus{outline:0;box-shadow:inset 0 0 0 1px #84caff,0 0 0 4px #eff8ff}.av2-select--sm{width:180px}.av2-chip{display:flex;align-items:center;gap:8px;height:40px;padding:0 12px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;font-size:13px;color:#344054;white-space:nowrap;flex-shrink:0}.av2-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border:0;border-radius:8px;font-family:inherit;font-size:14px;line-height:20px;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background-color .15s cubic-bezier(.4,0,.2,1)}.av2-btn svg{flex-shrink:0}.av2-btn:disabled{opacity:.55;cursor:not-allowed}.av2-btn--ghost{background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;color:#344054}.av2-btn--ghost:hover:not(:disabled){background:#f9fafb}.av2-btn--primary{background:#1570ef;color:#fff}.av2-btn--primary:hover:not(:disabled){background:#175cd3}.av2-btn--sm{height:36px;padding:0 14px;font-size:13px}.av2-btn--wide{padding:0 18px}.av2-tabs{display:flex;align-items:center;gap:6px}.av2-tab{height:40px;padding:0 26px;border:0;border-radius:8px;background:transparent;display:inline-flex;align-items:center;justify-content:center;font-family:inherit;font-size:14px;font-weight:500;color:#475467;cursor:pointer}.av2-tab.is-active{background:#eff8ff;color:#175cd3;font-weight:600}.av2-badge{display:inline-flex;align-items:center;height:28px;padding:0 12px;border-radius:6px;background:#eff8ff;color:#175cd3;font-size:12px;font-weight:600;white-space:nowrap}.av2-badge--count{height:22px;padding:0 8px}.av2-badge--success{background:#ecfdf3;color:#027a48}.av2-badge--error{background:#fef3f2;color:#b42318}.av2-badge--warning{background:#fffaeb;color:#b54708}.av2-badge--gray{background:#f2f4f7;color:#344054}.av2-badge--purple{background:#f9f5ff;color:#5925dc}.av2-link{color:#1570ef;font-size:13px;font-weight:500;text-decoration:underline;cursor:pointer}.av2-link:hover{color:#175cd3;text-decoration:underline}.av2-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.av2-muted{color:#667085}.av2-dim{color:#475467}.av2-faint{color:#98a2b3}table tbody td.av2-dim{color:#475467}table tbody td.av2-faint{color:#98a2b3}.av2-table-wrap{overflow-x:auto}.av2-table{width:100%;border-collapse:separate;border-spacing:0;margin:0}.av2-table thead th{background:#f9fafb;padding:12px 8px;font-size:12px;line-height:18px;font-weight:600;color:#475467;text-align:left;text-transform:none;letter-spacing:0;border:0;white-space:nowrap}.av2-table thead th:first-child{border-radius:8px 0 0}.av2-table thead th:last-child{border-radius:0 8px 0 0}.av2-table tbody td{padding:14px 8px;border:0;border-bottom:1px solid #F2F4F7;font-size:13px;line-height:20px;color:#1d2939;vertical-align:middle}.av2-table .av2-th-sort{display:inline-flex;align-items:center;gap:4px}.av2-table .av2-cell-icon{display:flex;align-items:center;gap:8px;min-width:0}.av2-table .av2-cell-icon svg{flex-shrink:0}.av2-table .av2-cell-icon span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.av2-table .av2-cell-stack{display:flex;flex-direction:column;gap:2px}.av2-table .av2-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.av2-table--lined thead th{background:transparent;border-bottom:1px solid #EAECF0;border-radius:0!important}.av2-empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 16px 32px;text-align:center}.av2-empty-img{display:block;width:160px;height:120px}.av2-empty-text{display:flex;flex-direction:column;gap:4px;align-items:center}.av2-empty-title{font-size:16px;line-height:24px;font-weight:600;color:#101828}.av2-empty-sub{max-width:480px;font-size:14px;line-height:20px;color:#667085;text-wrap:pretty}.av2-col-head{border-radius:8px;background:#f9fafb;padding:14px 16px;font-size:14px;line-height:20px;font-weight:500;color:#344054;display:flex;align-items:center;gap:8px}.av2-avatar{width:32px;height:32px;flex-shrink:0;border-radius:9999px;background:#eff8ff;color:#175cd3;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}.av2-bar{flex:1;height:5px;border-radius:9999px;background:#f2f4f7;overflow:hidden;display:block;min-width:60px}.av2-bar span{display:block;height:5px;border-radius:9999px;background:#1570ef}@keyframes av2-shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.av2-sk{display:block;width:100%;max-width:100%;height:12px;border-radius:4px;flex-shrink:0;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%;animation:av2-shimmer 3s linear infinite}.av2-sk--value{width:72px;height:28px;border-radius:6px}.av2-sk--title{width:220px;height:18px}.av2-sk--note{width:60%}.av2-sk--block{border-radius:8px}@media (prefers-reduced-motion: reduce){.av2-sk{animation:none}}:host ::ng-deep lib-pagination{display:block}:host ::ng-deep lib-pagination .container{max-width:none;padding:0;display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;font-size:13px;color:#475467}:host ::ng-deep lib-pagination .mt-4{margin-top:0!important}:host ::ng-deep lib-pagination .container>.text-center{display:flex;align-items:center}:host ::ng-deep lib-pagination .container>.text-center>ul:not(.ngx-pagination){display:none}:host ::ng-deep lib-pagination pagination-controls{display:flex;align-items:center}:host ::ng-deep lib-pagination .sub-title{color:#475467!important;font-size:13px!important;font-weight:400!important;line-height:20px}:host ::ng-deep lib-pagination .border-val{height:34px;padding:0 28px 0 12px!important;border:0!important;border-radius:8px!important;box-shadow:inset 0 0 0 1px #d0d5dd;font-size:13px;font-weight:600;color:#1d2939;background-position-x:calc(100% - 10px)}:host ::ng-deep lib-pagination .ngx-pagination{margin:0;padding:0;display:flex;align-items:center;gap:6px;color:#475467!important;font-size:13px!important;font-weight:500}:host ::ng-deep lib-pagination .ngx-pagination li{display:inline-flex;margin:0}:host ::ng-deep lib-pagination .ngx-pagination li.small-screen{display:none!important}:host ::ng-deep lib-pagination .ngx-pagination a,:host ::ng-deep lib-pagination .ngx-pagination button,:host ::ng-deep lib-pagination .ngx-pagination .current,:host ::ng-deep lib-pagination .ngx-pagination .disabled{min-width:34px!important;height:34px;padding:0 8px!important;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;line-height:20px;color:#475467}:host ::ng-deep lib-pagination .ngx-pagination a:hover,:host ::ng-deep lib-pagination .ngx-pagination button:hover{background:#f2f4f7;padding:0 8px!important}:host ::ng-deep lib-pagination .ngx-pagination .current{background:#eff8ff!important;color:#175cd3!important;font-weight:700;font-size:13px!important}:host ::ng-deep lib-pagination .ngx-pagination .disabled{color:#98a2b3}:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous a:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous a:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous.disabled:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous.disabled:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next a:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next a:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next.disabled:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next.disabled:after{margin:0}:host ::ng-deep lib-pagination .ngx-pagination .ellipsis:after{color:#98a2b3;padding:0}.ac-sk-value{width:56px;height:32px;margin:3px 0}.approval-col{display:flex;flex-direction:column;gap:28px}.approval-cards{display:flex;flex-direction:column;gap:12px;max-height:420px;overflow-y:auto;padding-right:4px}.approval-card{display:flex;flex-direction:column;gap:6px;padding:14px 16px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #eaecf0,0 1px 2px #1018280d;cursor:pointer}.approval-card:hover{background:#fcfcfd}.approval-card:focus-visible{outline:2px solid #84CAFF;outline-offset:1px}.approval-card--off{cursor:default}.approval-card--off:hover{background:#fff}.approval-card-name{font-size:14px;line-height:20px;font-weight:600;color:#101828}.approval-card-meta{display:flex;flex-direction:column;gap:2px;font-size:12px;line-height:18px;color:#667085}.log-table{table-layout:fixed}.log-table th:nth-child(1){width:11%}.log-table th:nth-child(2){width:20%}.log-table th:nth-child(3){width:23%}.log-table th:nth-child(4){width:24%}.log-table th:nth-child(5){width:14%}.log-table th:nth-child(6){width:8%}.log-name{min-width:0}.log-name .av2-muted{font-size:12px;line-height:18px}.store-cell{color:#344054}.log-pagination{padding-top:20px}.approval-card-badges{display:flex;flex-wrap:wrap;gap:6px}.approval-card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:2px}.approval-card-date{font-size:12px;line-height:18px;color:#667085}.approval-scope-select{min-width:160px}.log-date-picker{display:flex;align-items:center}:host ::ng-deep .log-date-picker .my-1{margin-top:0!important;margin-bottom:0!important}.activity-action{display:inline-block;max-width:100%;box-sizing:border-box;line-height:28px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i5.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i5.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "component", type: i5.CustomSelectComponent, selector: "lib-select", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.DateRangePickerComponent, selector: "lib-date-range-picker", inputs: ["value", "range"], outputs: ["dateChange"] }, { kind: "component", type: i8.AuditV2ShimmerComponent, selector: "lib-audit-v2-shimmer", inputs: ["rows"] }] });
|
|
477
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: AuditV2ActionCentreComponent, selector: "lib-audit-v2-action-centre", ngImport: i0, template: "<div class=\"av2-page\">\r\n\r\n <!-- Waiting for approval -->\r\n <div class=\"av2-grid-2\">\r\n <div class=\"av2-stat-card\">\r\n <div class=\"av2-stat\">\r\n <span class=\"av2-sk av2-sk--value ac-sk-value\" *ngIf=\"cardsLoading\"></span>\r\n <span class=\"av2-stat-value\" *ngIf=\"!cardsLoading\">{{ auditWaiting }}</span>\r\n <span class=\"av2-stat-label\">Audit waiting for approval</span>\r\n </div>\r\n </div>\r\n <div class=\"av2-stat-card\">\r\n <div class=\"av2-stat\">\r\n <span class=\"av2-sk av2-sk--value ac-sk-value\" *ngIf=\"cardsLoading\"></span>\r\n <span class=\"av2-stat-value\" *ngIf=\"!cardsLoading\">{{ taskWaiting }}</span>\r\n <span class=\"av2-stat-label\">Task waiting for approval</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Approval -->\r\n <section class=\"av2-card\">\r\n <div class=\"av2-card-head\">\r\n <div class=\"av2-title-block\">\r\n <div class=\"av2-card-title\">Approval</div>\r\n <div class=\"av2-card-sub\">A summary of all the audits awaiting approval</div>\r\n </div>\r\n\r\n <label class=\"av2-search av2-search--md\">\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\r\n stroke-linecap=\"round\">\r\n <circle cx=\"11\" cy=\"11\" r=\"7\"></circle>\r\n <line x1=\"16.5\" y1=\"16.5\" x2=\"21\" y2=\"21\"></line>\r\n </svg>\r\n <input [(ngModel)]=\"approvalSearch\" (ngModelChange)=\"onApprovalSearch()\" type=\"text\" placeholder=\"Search\" autocomplete=\"off\" />\r\n </label>\r\n\r\n <div class=\"approval-scope-select\">\r\n <lib-select [items]=\"approvalScopeItems\" [multi]=\"false\" [searchField]=\"'label'\" [idField]=\"'id'\"\r\n [selectedValues]=\"[approvalScopeSelected]\" (selected)=\"onApprovalScopeSelect($event)\"></lib-select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"av2-grid-3\">\r\n <div class=\"approval-col\" *ngFor=\"let col of columns; trackBy: trackByColumn\">\r\n <div class=\"av2-col-head\">\r\n {{ col.title }}\r\n <span *ngIf=\"!approvalsLoading && col.cards.length\" class=\"av2-badge av2-badge--count\">{{ col.cards.length }}</span>\r\n </div>\r\n\r\n <lib-audit-v2-shimmer *ngIf=\"approvalsLoading\" [rows]=\"2\"></lib-audit-v2-shimmer>\r\n\r\n <div *ngIf=\"!approvalsLoading && col.cards.length\" class=\"approval-cards\">\r\n <div *ngFor=\"let card of col.cards\" class=\"approval-card\" [class.approval-card--off]=\"!card.link\"\r\n [attr.role]=\"card.link ? 'link' : null\" [attr.tabindex]=\"card.link ? 0 : null\" [attr.title]=\"card.hint || null\"\r\n (click)=\"openCard(card)\" (keydown.enter)=\"openCard(card)\">\r\n <div class=\"approval-card-badges\">\r\n <span class=\"av2-badge av2-badge--purple av2-badge--count\">{{ card.typeLabel }}</span>\r\n <span *ngIf=\"card.redo\" class=\"av2-badge av2-badge--warning av2-badge--count\">Redo</span>\r\n </div>\r\n <div class=\"approval-card-name\">{{ card.name }}</div>\r\n <div class=\"approval-card-meta\">\r\n <span>{{ card.store }}</span>\r\n <span *ngIf=\"card.submittedLabel\">{{ card.submittedLabel }}</span>\r\n <span>{{ card.by }}</span>\r\n </div>\r\n <div class=\"approval-card-foot\">\r\n <span class=\"approval-card-date\">{{ card.when }}</span>\r\n <span *ngIf=\"card.approvedLabel\" class=\"av2-badge av2-badge--success av2-badge--count\">{{ card.approvedLabel }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!approvalsLoading && !col.cards.length\" class=\"av2-empty\">\r\n <img class=\"av2-empty-img\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"av2-empty-text\">\r\n <div class=\"av2-empty-title\">No data found</div>\r\n <div class=\"av2-empty-sub\">{{ col.empty }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <!-- Activity Log -->\r\n <section class=\"av2-card av2-card--log\">\r\n <div class=\"av2-card-head av2-card-head--center\">\r\n <div class=\"av2-card-title av2-card-title--grow\">Activity Log</div>\r\n\r\n <label class=\"av2-search av2-search--lg\">\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\r\n stroke-linecap=\"round\">\r\n <circle cx=\"11\" cy=\"11\" r=\"7\"></circle>\r\n <line x1=\"16.5\" y1=\"16.5\" x2=\"21\" y2=\"21\"></line>\r\n </svg>\r\n <input [(ngModel)]=\"search\" (ngModelChange)=\"onSearch()\" type=\"text\" [placeholder]=\"searchHint\" autocomplete=\"off\" />\r\n </label>\r\n\r\n <div class=\"log-date-picker\">\r\n <lib-date-range-picker [range]=\"activityRange\" (dateChange)=\"onActivityDateChange($event)\"></lib-date-range-picker>\r\n </div>\r\n\r\n <!-- One filter per tab (lib-filters reads its options once); each keeps its own selection. -->\r\n <lib-filters *ngIf=\"tab === 'Audit'\" [dataObject]=\"activityFilterData.Audit\" (appliedFilters)=\"onActivityFilters($event)\"></lib-filters>\r\n <lib-filters *ngIf=\"tab === 'Task'\" [dataObject]=\"activityFilterData.Task\" (appliedFilters)=\"onActivityFilters($event)\"></lib-filters>\r\n </div>\r\n\r\n <!-- Audit / Task -->\r\n <div class=\"av2-tabs\">\r\n <button *ngFor=\"let t of tabs\" type=\"button\" class=\"av2-tab\" [class.is-active]=\"tab === t\"\r\n (click)=\"setTab(t)\">{{ t }}</button>\r\n </div>\r\n\r\n <lib-audit-v2-shimmer *ngIf=\"logLoading\"></lib-audit-v2-shimmer>\r\n\r\n <div class=\"av2-table-wrap\" *ngIf=\"!logLoading\">\r\n <table class=\"av2-table log-table\">\r\n <thead>\r\n <tr>\r\n <th class=\"av2-sortable\" (click)=\"sortLog('date')\">Date & Time <lib-audit-v2-sort-icon [active]=\"logSortKey === 'date'\" [dir]=\"logSortBy === 1 ? 'asc' : 'desc'\"></lib-audit-v2-sort-icon></th>\r\n <th class=\"av2-sortable\" (click)=\"sortLog('name')\">{{ nameLabel }} <lib-audit-v2-sort-icon [active]=\"logSortKey === 'name'\" [dir]=\"logSortBy === 1 ? 'asc' : 'desc'\"></lib-audit-v2-sort-icon></th>\r\n <th class=\"av2-sortable\" (click)=\"sortLog('action')\">Action Performed <lib-audit-v2-sort-icon [active]=\"logSortKey === 'action'\" [dir]=\"logSortBy === 1 ? 'asc' : 'desc'\"></lib-audit-v2-sort-icon></th>\r\n <th class=\"av2-sortable\" (click)=\"sortLog('by')\">Performed by <lib-audit-v2-sort-icon [active]=\"logSortKey === 'by'\" [dir]=\"logSortBy === 1 ? 'asc' : 'desc'\"></lib-audit-v2-sort-icon></th>\r\n <th class=\"av2-sortable\" (click)=\"sortLog('store')\">Name <lib-audit-v2-sort-icon [active]=\"logSortKey === 'store'\" [dir]=\"logSortBy === 1 ? 'asc' : 'desc'\"></lib-audit-v2-sort-icon></th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of pageRows; trackBy: trackByRow\">\r\n <td>\r\n <div class=\"av2-cell-stack\">\r\n <span>{{ row.day }}</span>\r\n <span class=\"av2-muted\">{{ row.time }}</span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"av2-cell-stack log-name\">\r\n <span class=\"av2-ellipsis\" [av2Tip]=\"row.name\">{{ row.name }}</span>\r\n <span *ngIf=\"row.detail\" class=\"av2-muted av2-ellipsis\" [av2Tip]=\"row.detail\">{{ row.detail }}</span>\r\n </div>\r\n </td>\r\n <td><span class=\"av2-badge activity-action\" [ngClass]=\"row.tone === 'primary' ? '' : 'av2-badge--' + row.tone\"\r\n [title]=\"row.action\">{{ row.action }}</span></td>\r\n <td>\r\n <div class=\"av2-cell-icon av2-dim\">\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <circle cx=\"12\" cy=\"8\" r=\"3.4\"></circle>\r\n <path d=\"M5 20c0-3.6 3.1-5.6 7-5.6s7 2 7 5.6\"></path>\r\n </svg>\r\n <span>{{ row.by }}</span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"av2-cell-icon store-cell\">\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M3 9l1.6-4.5h14.8L21 9\"></path>\r\n <path d=\"M4 9v11h16V9\"></path>\r\n <path d=\"M9 20v-6h6v6\"></path>\r\n </svg>\r\n <span>{{ row.store }}</span>\r\n </div>\r\n </td>\r\n <td>\r\n <a *ngIf=\"row.viewable\" class=\"av2-link\" routerLink=\"/manage/trax/audit-v2/gallery\"\r\n [queryParams]=\"galleryParams(row)\" title=\"Open this submission in the Gallery\">View</a>\r\n <span *ngIf=\"!row.viewable\" class=\"av2-faint\">-</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div *ngIf=\"!logLoading && !filteredRows.length\" class=\"av2-empty\">\r\n <img class=\"av2-empty-img\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"av2-empty-text\">\r\n <div class=\"av2-empty-title\">No data found</div>\r\n <div class=\"av2-empty-sub\">There is no result for {{ tab }}</div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!logLoading && filteredRows.length\" class=\"log-pagination\">\r\n <lib-pagination [itemsPerPage]=\"itemsPerPage\" [pageSize]=\"itemsPerPage\" [paginationSizes]=\"pageSizes\" [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </section>\r\n\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.av2-page{display:flex;flex-direction:column;gap:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:#101828;-webkit-font-smoothing:antialiased}.av2-page *,.av2-page *:before,.av2-page *:after{box-sizing:border-box}.av2-card{background:#fff;border-radius:8px;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;padding:20px 24px;display:flex;flex-direction:column;gap:20px}.av2-card--log{padding:20px 24px 24px;gap:18px}.av2-card--table{padding:20px 24px 24px;gap:16px}.av2-card-head{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap}.av2-card-head--center{align-items:center;gap:12px}.av2-title-block{display:flex;flex-direction:column;gap:4px;flex:1;min-width:220px}.av2-card-title{font-size:20px;line-height:30px;font-weight:600;color:#101828;display:flex;align-items:center;gap:10px}.av2-card-title--grow{flex:1;min-width:180px}.av2-card-sub{font-size:14px;line-height:20px;color:#667085}.av2-grow{flex:1}.av2-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.av2-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}.av2-grid-4{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.av2-stat-card{background:#fff;border-radius:8px;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;padding:10px}.av2-stat{padding:8px 16px;border-radius:6px;border-bottom:2px solid #EAECF0;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;display:flex;align-items:center;gap:20px}.av2-stat-value{font-size:30px;line-height:38px;font-weight:600;color:#101828}.av2-stat-label{font-size:14px;line-height:20px;font-weight:500;color:#344054}.av2-kpi{background:#fff;border-radius:10px;box-shadow:inset 0 0 0 1px #eaecf0,0 1px 2px #1018280d;display:flex;flex-direction:column;overflow:hidden}.av2-kpi.is-primary{box-shadow:inset 0 0 0 1px #99dbff,0 1px 2px #1018280d}.av2-kpi.is-primary .av2-kpi-head{background:#eaf8ff}.av2-kpi-head{padding:14px 18px;background:#f9fafb;font-size:16px;line-height:24px;font-weight:500;color:#101828}.av2-kpi-body{padding:16px 18px 18px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.av2-kpi-value{font-size:20px;line-height:30px;font-weight:700;color:#101828}.av2-kpi-delta{display:flex;align-items:center;gap:4px;font-size:12px;color:#039855}.av2-kpi-delta.is-down{color:#d92d20}.av2-kpi-note{font-size:12px;color:#667085}.av2-ocard{padding:8px;border-radius:12px;border:1px solid #D0D5DD;background:#fff;display:flex;flex-direction:column;min-width:0;height:100%}.av2-ocard-head{min-height:70px;padding:10px 14px;border-radius:6px;border-bottom:2px solid #EAECF0;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:2px;min-width:0}.av2-ocard-head--row{flex-direction:row;align-items:center;justify-content:flex-start;gap:12px}.av2-ocard-count{font-size:30px;line-height:38px;font-weight:600;color:#101828;white-space:nowrap}.av2-ocard-text{font-size:14px;line-height:20px;font-weight:500;color:#344054}.av2-ocard-body{flex:1;padding:12px 14px;display:flex;gap:16px;min-width:0}.av2-ocard-cell{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.av2-ocard-cell--center{align-items:center;text-align:center}.av2-ocard-sub{margin:4px 0;font-size:20px;line-height:30px;font-weight:700;color:#101828}.av2-ocard-note{font-size:14px;line-height:20px;font-weight:400;color:#667085}.av2-ocard-delta{margin-top:6px;display:inline-flex;align-items:center;gap:6px;font-size:12px;line-height:18px;font-weight:400;color:#1d2939}.av2-ocard-delta b{font-weight:600;color:#667085}.av2-ocard-delta svg{flex-shrink:0;color:#039855}.av2-ocard-delta.is-down svg{color:#d92d20}.av2-search{position:relative;display:flex;align-items:center;gap:8px;height:44px;padding:0 12px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;color:#98a2b3;font-size:14px;flex-shrink:0}.av2-search svg{flex-shrink:0}.av2-search input{flex:1;min-width:0;height:100%;border:0;outline:0;padding:0;background:transparent;font:inherit;font-size:14px;font-weight:500;color:#101828}.av2-search input::placeholder{color:#98a2b3}.av2-search:focus-within{box-shadow:inset 0 0 0 1px #66c8ff,0 0 0 4px #eaf8ff}.av2-search--sm{width:300px}.av2-search--md{width:320px}.av2-search--lg{width:340px}.av2-select{height:44px;padding:0 36px 0 12px;border:0;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;font:inherit;font-size:14px;font-weight:500;color:#344054;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23344054' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>\");background-repeat:no-repeat;background-position:right 12px center;flex-shrink:0}.av2-select:focus{outline:0;box-shadow:inset 0 0 0 1px #66c8ff,0 0 0 4px #eaf8ff}.av2-select--sm{width:180px}.av2-chip{display:flex;align-items:center;gap:8px;height:44px;padding:0 12px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;font-size:14px;color:#344054;white-space:nowrap;flex-shrink:0}.av2-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 16px;border:0;border-radius:8px;font-family:inherit;font-size:14px;line-height:20px;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background-color .15s cubic-bezier(.4,0,.2,1)}.av2-btn svg{flex-shrink:0}.av2-btn:disabled{opacity:.55;cursor:not-allowed}.av2-btn--ghost{background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;color:#344054;font-weight:500}.av2-btn--ghost:hover:not(:disabled){background:#f9fafb}.av2-btn--primary{background:#00a3ff;color:#fff;font-size:16px;line-height:24px}.av2-btn--primary:hover:not(:disabled){background:#009bf3}.av2-btn--sm{height:36px;padding:0 14px;font-size:13px}.av2-btn--wide{padding:0 18px}.av2-tabs{display:flex;align-items:center;gap:6px}.av2-tab{height:44px;padding:0 26px;border:0;border-radius:6px;background:transparent;display:inline-flex;align-items:center;justify-content:center;font-family:inherit;font-size:16px;font-weight:500;color:#475467;cursor:pointer}.av2-tab.is-active{background:#eaf8ff;color:#009bf3;font-weight:500}.av2-badge{display:inline-flex;align-items:center;height:22px;padding:2px 8px;border-radius:16px;background:#eaf8ff;color:#009bf3;font-size:12px;font-weight:500;line-height:18px;white-space:nowrap}.av2-badge--count{height:22px;padding:0 8px}.av2-badge--success{background:#ecfdf3;color:#027a48}.av2-badge--error{background:#fef3f2;color:#b42318}.av2-badge--warning{background:#fffaeb;color:#b54708}.av2-badge--gray{background:#f2f4f7;color:#344054}.av2-badge--purple{background:#f9f5ff;color:#5925dc}.av2-link{color:#00a3ff;font-size:14px;font-weight:500;text-decoration:underline;cursor:pointer}.av2-link:hover{color:#009bf3;text-decoration:underline}.av2-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.av2-muted{color:#667085}.av2-dim{color:#475467}.av2-faint{color:#98a2b3}table tbody td.av2-dim{color:#475467}table tbody td.av2-faint{color:#98a2b3}.av2-table-wrap{overflow-x:auto}.av2-table{width:100%;border-collapse:separate;border-spacing:0;margin:0}.av2-table thead th{background:#f9fafb;padding:12px;font-size:12px;line-height:18px;font-weight:500;color:#667085;text-align:left;text-transform:none;letter-spacing:0;border:0;white-space:nowrap}.av2-table thead th:first-child{border-radius:8px 0 0}.av2-table thead th:last-child{border-radius:0 8px 0 0}.av2-table tbody td{padding:16px 12px;border:0;border-bottom:1px solid #F2F4F7;font-size:14px;line-height:20px;font-weight:500;color:#101828;vertical-align:middle}.av2-table .av2-th-sort{display:inline-flex;align-items:center;gap:4px}.av2-table .av2-cell-icon{display:flex;align-items:center;gap:8px;min-width:0}.av2-table .av2-cell-icon svg{flex-shrink:0}.av2-table .av2-cell-icon span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.av2-table .av2-cell-stack{display:flex;flex-direction:column;gap:2px}.av2-table .av2-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.av2-sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.av2-table--lined thead th{background:transparent;border-bottom:1px solid #EAECF0;border-radius:0!important}.av2-empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 16px 32px;text-align:center}.av2-empty-img{display:block;width:160px;height:120px}.av2-empty-text{display:flex;flex-direction:column;gap:4px;align-items:center}.av2-empty-title{font-size:16px;line-height:24px;font-weight:600;color:#101828}.av2-empty-sub{max-width:480px;font-size:14px;line-height:20px;color:#667085;text-wrap:pretty}.av2-col-head{border-radius:8px;background:#f9fafb;padding:14px 16px;font-size:12px;line-height:20px;font-weight:500;color:#344054;display:flex;align-items:center;gap:8px}.av2-avatar{width:32px;height:32px;flex-shrink:0;border-radius:9999px;background:#eaf8ff;color:#009bf3;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}.av2-bar{flex:1;height:5px;border-radius:9999px;background:#f2f4f7;overflow:hidden;display:block;min-width:60px}.av2-bar span{display:block;height:5px;border-radius:9999px;background:#00a3ff}@keyframes av2-shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.av2-sk{display:block;width:100%;max-width:100%;height:12px;border-radius:4px;flex-shrink:0;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%;animation:av2-shimmer 3s linear infinite}.av2-sk--value{width:72px;height:28px;border-radius:6px}.av2-sk--title{width:220px;height:18px}.av2-sk--note{width:60%}.av2-sk--block{border-radius:8px}@media (prefers-reduced-motion: reduce){.av2-sk{animation:none}}::ng-deep .tooltip.av2-tip{--bs-tooltip-bg: #fff;--bs-tooltip-color: #344054;--bs-tooltip-max-width: 320px;--bs-tooltip-opacity: 1}::ng-deep .tooltip.av2-tip .tooltip-inner{background-color:#fff!important;color:#344054!important;padding:8px 12px;border-radius:8px;font-size:13px;line-height:18px;font-weight:500;text-align:left;box-shadow:0 12px 16px -4px #10182814,0 4px 6px -2px #10182808,0 0 0 1px #eaecf0}::ng-deep .tooltip.av2-tip .tooltip-arrow:before{border-top-color:#fff;border-bottom-color:#fff}:host ::ng-deep lib-pagination{display:block}:host ::ng-deep lib-pagination .container{max-width:none;padding:0;display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;font-size:14px;color:#475467}:host ::ng-deep lib-pagination .mt-4{margin-top:0!important}:host ::ng-deep lib-pagination .container>.text-center{display:flex;align-items:center}:host ::ng-deep lib-pagination .container>.text-center>ul:not(.ngx-pagination){display:none}:host ::ng-deep lib-pagination pagination-controls{display:flex;align-items:center}:host ::ng-deep lib-pagination .sub-title{color:#475467!important;font-size:14px!important;font-weight:400!important;line-height:20px}:host ::ng-deep lib-pagination .border-val{height:40px;min-width:64px;padding:0 30px 0 12px!important;border:1px solid #D0D5DD!important;border-radius:8px!important;box-shadow:0 1px 2px #1018280d;background-color:#fff;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23667085' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E\")!important;background-repeat:no-repeat!important;background-position:right 10px center!important;background-size:14px 14px!important;appearance:none;-webkit-appearance:none;font-size:14px;font-weight:500;color:#1d2939;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}:host ::ng-deep lib-pagination .border-val:hover{border-color:#98a2b3!important}:host ::ng-deep lib-pagination .border-val:focus{outline:none;border-color:#66c8ff!important;box-shadow:0 0 0 3px #eaf8ff}:host ::ng-deep lib-pagination .ngx-pagination{margin:0;padding:0;display:flex;align-items:center;gap:6px;color:#475467!important;font-size:14px!important;font-weight:500}:host ::ng-deep lib-pagination .ngx-pagination li{display:inline-flex;margin:0}:host ::ng-deep lib-pagination .ngx-pagination li.small-screen{display:none!important}:host ::ng-deep lib-pagination .ngx-pagination a,:host ::ng-deep lib-pagination .ngx-pagination button,:host ::ng-deep lib-pagination .ngx-pagination .current,:host ::ng-deep lib-pagination .ngx-pagination .disabled{min-width:40px!important;height:40px;padding:0 8px!important;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;line-height:20px;color:#475467}:host ::ng-deep lib-pagination .ngx-pagination a:hover,:host ::ng-deep lib-pagination .ngx-pagination button:hover{background:#f2f4f7;padding:0 8px!important}:host ::ng-deep lib-pagination .ngx-pagination .current{background:#eaf8ff!important;color:#00a3ff!important;font-weight:600;font-size:14px!important}:host ::ng-deep lib-pagination .ngx-pagination .disabled{color:#98a2b3}:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous a:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous a:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous.disabled:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous.disabled:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next a:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next a:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next.disabled:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next.disabled:after{margin:0}:host ::ng-deep lib-pagination .ngx-pagination .ellipsis:after{color:#98a2b3;padding:0}.ac-sk-value{width:56px;height:32px;margin:3px 0}.approval-col{display:flex;flex-direction:column;gap:28px}.approval-cards{display:flex;flex-direction:column;gap:12px;max-height:420px;overflow-y:auto;padding-right:4px}.approval-card{display:flex;flex-direction:column;gap:6px;padding:14px 16px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;cursor:pointer}.approval-card:hover{background:#fcfcfd}.approval-card:focus-visible{outline:2px solid #66C8FF;outline-offset:1px}.approval-card--off{cursor:default}.approval-card--off:hover{background:#fff}.approval-card-name{font-size:14px;line-height:20px;font-weight:600;color:#101828}.approval-card-meta{display:flex;flex-direction:column;gap:2px;font-size:12px;line-height:18px;color:#667085}.log-table{table-layout:fixed}.log-table th:nth-child(1){width:11%}.log-table th:nth-child(2){width:20%}.log-table th:nth-child(3){width:23%}.log-table th:nth-child(4){width:24%}.log-table th:nth-child(5){width:14%}.log-table th:nth-child(6){width:8%}.log-name{min-width:0}.log-name .av2-muted{font-size:12px;line-height:18px}.store-cell{color:#344054}.log-pagination{padding-top:20px}.approval-card-badges{display:flex;flex-wrap:wrap;gap:6px}.approval-card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:2px}.approval-card-date{font-size:12px;line-height:18px;color:#667085}.approval-scope-select{min-width:160px}.log-date-picker{display:flex;align-items:center}:host ::ng-deep .log-date-picker .my-1{margin-top:0!important;margin-bottom:0!important}.activity-action{display:inline-block;max-width:100%;box-sizing:border-box;height:22px;padding:2px 10px;line-height:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}\n"], dependencies: [{ kind: "directive", type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: i5.PaginationComponent, selector: "lib-pagination", inputs: ["collection", "itemsPerPage", "currentPage", "totalItems", "directionLinks", "pageSize", "paginationSizes"], outputs: ["pageChange", "pageSizeChange"] }, { kind: "component", type: i5.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "component", type: i5.CustomSelectComponent, selector: "lib-select", inputs: ["items", "searchField", "multi", "idField", "selectedValues", "disabled", "label"], outputs: ["selected"] }, { kind: "directive", type: i6.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i7.DateRangePickerComponent, selector: "lib-date-range-picker", inputs: ["value", "range"], outputs: ["dateChange"] }, { kind: "directive", type: i8.AuditV2TipDirective, selector: "[av2Tip]", inputs: ["av2Tip"] }, { kind: "component", type: i9.AuditV2ShimmerComponent, selector: "lib-audit-v2-shimmer", inputs: ["rows"] }, { kind: "component", type: i10.AuditV2SortIconComponent, selector: "lib-audit-v2-sort-icon", inputs: ["active", "dir"] }] });
|
|
457
478
|
}
|
|
458
479
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: AuditV2ActionCentreComponent, decorators: [{
|
|
459
480
|
type: Component,
|
|
460
|
-
args: [{ selector: 'lib-audit-v2-action-centre', template: "<div class=\"av2-page\">\r\n\r\n <!-- Waiting for approval -->\r\n <div class=\"av2-grid-2\">\r\n <div class=\"av2-stat\">\r\n <span class=\"av2-sk av2-sk--value ac-sk-value\" *ngIf=\"cardsLoading\"></span>\r\n <span class=\"av2-stat-value\" *ngIf=\"!cardsLoading\">{{ auditWaiting }}</span>\r\n <span class=\"av2-stat-label\">Audit waiting for approval</span>\r\n </div>\r\n <div class=\"av2-stat\">\r\n <span class=\"av2-sk av2-sk--value ac-sk-value\" *ngIf=\"cardsLoading\"></span>\r\n <span class=\"av2-stat-value\" *ngIf=\"!cardsLoading\">{{ taskWaiting }}</span>\r\n <span class=\"av2-stat-label\">Task waiting for approval</span>\r\n </div>\r\n </div>\r\n\r\n <!-- Approval -->\r\n <section class=\"av2-card\">\r\n <div class=\"av2-card-head\">\r\n <div class=\"av2-title-block\">\r\n <div class=\"av2-card-title\">Approval</div>\r\n <div class=\"av2-card-sub\">A summary of all the audits awaiting approval</div>\r\n </div>\r\n\r\n <label class=\"av2-search av2-search--md\">\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\r\n stroke-linecap=\"round\">\r\n <circle cx=\"11\" cy=\"11\" r=\"7\"></circle>\r\n <line x1=\"16.5\" y1=\"16.5\" x2=\"21\" y2=\"21\"></line>\r\n </svg>\r\n <input [(ngModel)]=\"approvalSearch\" (ngModelChange)=\"onApprovalSearch()\" type=\"text\" placeholder=\"Search\" autocomplete=\"off\" />\r\n </label>\r\n\r\n <div class=\"approval-scope-select\">\r\n <lib-select [items]=\"approvalScopeItems\" [multi]=\"false\" [searchField]=\"'label'\" [idField]=\"'id'\"\r\n [selectedValues]=\"[approvalScopeSelected]\" (selected)=\"onApprovalScopeSelect($event)\"></lib-select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"av2-grid-3\">\r\n <div class=\"approval-col\" *ngFor=\"let col of columns; trackBy: trackByColumn\">\r\n <div class=\"av2-col-head\">\r\n {{ col.title }}\r\n <span *ngIf=\"!approvalsLoading && col.cards.length\" class=\"av2-badge av2-badge--count\">{{ col.cards.length }}</span>\r\n </div>\r\n\r\n <lib-audit-v2-shimmer *ngIf=\"approvalsLoading\" [rows]=\"2\"></lib-audit-v2-shimmer>\r\n\r\n <div *ngIf=\"!approvalsLoading && col.cards.length\" class=\"approval-cards\">\r\n <div *ngFor=\"let card of col.cards\" class=\"approval-card\" [class.approval-card--off]=\"!card.link\"\r\n [attr.role]=\"card.link ? 'link' : null\" [attr.tabindex]=\"card.link ? 0 : null\" [attr.title]=\"card.hint || null\"\r\n (click)=\"openCard(card)\" (keydown.enter)=\"openCard(card)\">\r\n <div class=\"approval-card-badges\">\r\n <span class=\"av2-badge av2-badge--purple av2-badge--count\">{{ card.typeLabel }}</span>\r\n <span *ngIf=\"card.redo\" class=\"av2-badge av2-badge--warning av2-badge--count\">Redo</span>\r\n </div>\r\n <div class=\"approval-card-name\">{{ card.name }}</div>\r\n <div class=\"approval-card-meta\">\r\n <span>{{ card.store }}</span>\r\n <span *ngIf=\"card.submittedLabel\">{{ card.submittedLabel }}</span>\r\n <span>{{ card.by }}</span>\r\n </div>\r\n <div class=\"approval-card-foot\">\r\n <span class=\"approval-card-date\">{{ card.when }}</span>\r\n <span *ngIf=\"card.approvedLabel\" class=\"av2-badge av2-badge--success av2-badge--count\">{{ card.approvedLabel }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!approvalsLoading && !col.cards.length\" class=\"av2-empty\">\r\n <img class=\"av2-empty-img\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"av2-empty-text\">\r\n <div class=\"av2-empty-title\">No data found</div>\r\n <div class=\"av2-empty-sub\">{{ col.empty }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <!-- Activity Log -->\r\n <section class=\"av2-card av2-card--log\">\r\n <div class=\"av2-card-head av2-card-head--center\">\r\n <div class=\"av2-card-title av2-card-title--grow\">Activity Log</div>\r\n\r\n <label class=\"av2-search av2-search--lg\">\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\r\n stroke-linecap=\"round\">\r\n <circle cx=\"11\" cy=\"11\" r=\"7\"></circle>\r\n <line x1=\"16.5\" y1=\"16.5\" x2=\"21\" y2=\"21\"></line>\r\n </svg>\r\n <input [(ngModel)]=\"search\" (ngModelChange)=\"onSearch()\" type=\"text\" [placeholder]=\"searchHint\" autocomplete=\"off\" />\r\n </label>\r\n\r\n <div class=\"log-date-picker\">\r\n <lib-date-range-picker [range]=\"activityRange\" (dateChange)=\"onActivityDateChange($event)\"></lib-date-range-picker>\r\n </div>\r\n\r\n <!-- One filter per tab (lib-filters reads its options once); each keeps its own selection. -->\r\n <lib-filters *ngIf=\"tab === 'Audit'\" [dataObject]=\"activityFilterData.Audit\" (appliedFilters)=\"onActivityFilters($event)\"></lib-filters>\r\n <lib-filters *ngIf=\"tab === 'Task'\" [dataObject]=\"activityFilterData.Task\" (appliedFilters)=\"onActivityFilters($event)\"></lib-filters>\r\n </div>\r\n\r\n <!-- Audit / Task -->\r\n <div class=\"av2-tabs\">\r\n <button *ngFor=\"let t of tabs\" type=\"button\" class=\"av2-tab\" [class.is-active]=\"tab === t\"\r\n (click)=\"setTab(t)\">{{ t }}</button>\r\n </div>\r\n\r\n <lib-audit-v2-shimmer *ngIf=\"logLoading\"></lib-audit-v2-shimmer>\r\n\r\n <div class=\"av2-table-wrap\" *ngIf=\"!logLoading\">\r\n <table class=\"av2-table log-table\">\r\n <thead>\r\n <tr>\r\n <th>\r\n <span class=\"av2-th-sort\">Date & Time\r\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <line x1=\"12\" y1=\"4\" x2=\"12\" y2=\"20\"></line>\r\n <polyline points=\"6 14 12 20 18 14\"></polyline>\r\n </svg>\r\n </span>\r\n </th>\r\n <th>{{ nameLabel }}</th>\r\n <th>Action Performed</th>\r\n <th>Performed by</th>\r\n <th>Name</th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of pageRows; trackBy: trackByRow\">\r\n <td>\r\n <div class=\"av2-cell-stack\">\r\n <span>{{ row.day }}</span>\r\n <span class=\"av2-muted\">{{ row.time }}</span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"av2-cell-stack log-name\">\r\n <span class=\"av2-ellipsis\" [title]=\"row.name\">{{ row.name }}</span>\r\n <span *ngIf=\"row.detail\" class=\"av2-muted av2-ellipsis\" [title]=\"row.detail\">{{ row.detail }}</span>\r\n </div>\r\n </td>\r\n <td><span class=\"av2-badge activity-action\" [ngClass]=\"row.tone === 'primary' ? '' : 'av2-badge--' + row.tone\"\r\n [title]=\"row.action\">{{ row.action }}</span></td>\r\n <td>\r\n <div class=\"av2-cell-icon av2-dim\">\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <circle cx=\"12\" cy=\"8\" r=\"3.4\"></circle>\r\n <path d=\"M5 20c0-3.6 3.1-5.6 7-5.6s7 2 7 5.6\"></path>\r\n </svg>\r\n <span>{{ row.by }}</span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"av2-cell-icon store-cell\">\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M3 9l1.6-4.5h14.8L21 9\"></path>\r\n <path d=\"M4 9v11h16V9\"></path>\r\n <path d=\"M9 20v-6h6v6\"></path>\r\n </svg>\r\n <span>{{ row.store }}</span>\r\n </div>\r\n </td>\r\n <td>\r\n <a *ngIf=\"row.viewable\" class=\"av2-link\" routerLink=\"/manage/trax/audit-v2/gallery\"\r\n [queryParams]=\"galleryParams(row)\" title=\"Open this submission in the Gallery\">View</a>\r\n <span *ngIf=\"!row.viewable\" class=\"av2-faint\">-</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div *ngIf=\"!logLoading && !filteredRows.length\" class=\"av2-empty\">\r\n <img class=\"av2-empty-img\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"av2-empty-text\">\r\n <div class=\"av2-empty-title\">No data found</div>\r\n <div class=\"av2-empty-sub\">There is no result for {{ tab }}</div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!logLoading && filteredRows.length\" class=\"log-pagination\">\r\n <lib-pagination [itemsPerPage]=\"itemsPerPage\" [pageSize]=\"itemsPerPage\" [paginationSizes]=\"pageSizes\" [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </section>\r\n\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.av2-page{display:flex;flex-direction:column;gap:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:#101828;-webkit-font-smoothing:antialiased}.av2-page *,.av2-page *:before,.av2-page *:after{box-sizing:border-box}.av2-card{background:#fff;border-radius:12px;box-shadow:inset 0 0 0 1px #eaecf0,0 1px 2px #1018280d;padding:20px 24px;display:flex;flex-direction:column;gap:20px}.av2-card--log{padding:20px 24px 24px;gap:18px}.av2-card--table{padding:20px 24px 24px;gap:16px}.av2-card-head{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap}.av2-card-head--center{align-items:center;gap:12px}.av2-title-block{display:flex;flex-direction:column;gap:4px;flex:1;min-width:220px}.av2-card-title{font-size:18px;line-height:26px;font-weight:700;color:#101828;display:flex;align-items:center;gap:10px}.av2-card-title--grow{flex:1;min-width:180px}.av2-card-sub{font-size:13px;line-height:20px;color:#667085}.av2-grow{flex:1}.av2-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.av2-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}.av2-grid-4{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.av2-stat{border-radius:10px;background:linear-gradient(90deg,#f0f7ff,#f8fbff 60%,#fff);box-shadow:inset 0 0 0 1px #d1e9ff;padding:20px 24px;display:flex;align-items:center;gap:16px}.av2-stat-value{font-size:30px;line-height:38px;font-weight:700;color:#101828}.av2-stat-label{font-size:15px;line-height:22px;color:#344054}.av2-kpi{background:#fff;border-radius:10px;box-shadow:inset 0 0 0 1px #eaecf0,0 1px 2px #1018280d;display:flex;flex-direction:column;overflow:hidden}.av2-kpi.is-primary{box-shadow:inset 0 0 0 1px #b2ddff,0 1px 2px #1018280d}.av2-kpi.is-primary .av2-kpi-head{background:#eff8ff}.av2-kpi-head{padding:14px 18px;background:#f9fafb;font-size:15px;line-height:22px;font-weight:600;color:#101828}.av2-kpi-body{padding:16px 18px 18px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.av2-kpi-value{font-size:24px;line-height:32px;font-weight:700;color:#101828}.av2-kpi-delta{display:flex;align-items:center;gap:4px;font-size:12px;color:#039855}.av2-kpi-delta.is-down{color:#d92d20}.av2-kpi-note{font-size:12px;color:#667085}.av2-search{position:relative;display:flex;align-items:center;gap:8px;height:40px;padding:0 12px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;color:#98a2b3;font-size:14px;flex-shrink:0}.av2-search svg{flex-shrink:0}.av2-search input{flex:1;min-width:0;height:100%;border:0;outline:0;padding:0;background:transparent;font:inherit;font-size:14px;color:#101828}.av2-search input::placeholder{color:#98a2b3}.av2-search:focus-within{box-shadow:inset 0 0 0 1px #84caff,0 0 0 4px #eff8ff}.av2-search--sm{width:300px}.av2-search--md{width:320px}.av2-search--lg{width:340px}.av2-select{height:40px;padding:0 36px 0 12px;border:0;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;font:inherit;font-size:14px;color:#344054;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23344054' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>\");background-repeat:no-repeat;background-position:right 12px center;flex-shrink:0}.av2-select:focus{outline:0;box-shadow:inset 0 0 0 1px #84caff,0 0 0 4px #eff8ff}.av2-select--sm{width:180px}.av2-chip{display:flex;align-items:center;gap:8px;height:40px;padding:0 12px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;font-size:13px;color:#344054;white-space:nowrap;flex-shrink:0}.av2-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border:0;border-radius:8px;font-family:inherit;font-size:14px;line-height:20px;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background-color .15s cubic-bezier(.4,0,.2,1)}.av2-btn svg{flex-shrink:0}.av2-btn:disabled{opacity:.55;cursor:not-allowed}.av2-btn--ghost{background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;color:#344054}.av2-btn--ghost:hover:not(:disabled){background:#f9fafb}.av2-btn--primary{background:#1570ef;color:#fff}.av2-btn--primary:hover:not(:disabled){background:#175cd3}.av2-btn--sm{height:36px;padding:0 14px;font-size:13px}.av2-btn--wide{padding:0 18px}.av2-tabs{display:flex;align-items:center;gap:6px}.av2-tab{height:40px;padding:0 26px;border:0;border-radius:8px;background:transparent;display:inline-flex;align-items:center;justify-content:center;font-family:inherit;font-size:14px;font-weight:500;color:#475467;cursor:pointer}.av2-tab.is-active{background:#eff8ff;color:#175cd3;font-weight:600}.av2-badge{display:inline-flex;align-items:center;height:28px;padding:0 12px;border-radius:6px;background:#eff8ff;color:#175cd3;font-size:12px;font-weight:600;white-space:nowrap}.av2-badge--count{height:22px;padding:0 8px}.av2-badge--success{background:#ecfdf3;color:#027a48}.av2-badge--error{background:#fef3f2;color:#b42318}.av2-badge--warning{background:#fffaeb;color:#b54708}.av2-badge--gray{background:#f2f4f7;color:#344054}.av2-badge--purple{background:#f9f5ff;color:#5925dc}.av2-link{color:#1570ef;font-size:13px;font-weight:500;text-decoration:underline;cursor:pointer}.av2-link:hover{color:#175cd3;text-decoration:underline}.av2-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.av2-muted{color:#667085}.av2-dim{color:#475467}.av2-faint{color:#98a2b3}table tbody td.av2-dim{color:#475467}table tbody td.av2-faint{color:#98a2b3}.av2-table-wrap{overflow-x:auto}.av2-table{width:100%;border-collapse:separate;border-spacing:0;margin:0}.av2-table thead th{background:#f9fafb;padding:12px 8px;font-size:12px;line-height:18px;font-weight:600;color:#475467;text-align:left;text-transform:none;letter-spacing:0;border:0;white-space:nowrap}.av2-table thead th:first-child{border-radius:8px 0 0}.av2-table thead th:last-child{border-radius:0 8px 0 0}.av2-table tbody td{padding:14px 8px;border:0;border-bottom:1px solid #F2F4F7;font-size:13px;line-height:20px;color:#1d2939;vertical-align:middle}.av2-table .av2-th-sort{display:inline-flex;align-items:center;gap:4px}.av2-table .av2-cell-icon{display:flex;align-items:center;gap:8px;min-width:0}.av2-table .av2-cell-icon svg{flex-shrink:0}.av2-table .av2-cell-icon span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.av2-table .av2-cell-stack{display:flex;flex-direction:column;gap:2px}.av2-table .av2-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.av2-table--lined thead th{background:transparent;border-bottom:1px solid #EAECF0;border-radius:0!important}.av2-empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 16px 32px;text-align:center}.av2-empty-img{display:block;width:160px;height:120px}.av2-empty-text{display:flex;flex-direction:column;gap:4px;align-items:center}.av2-empty-title{font-size:16px;line-height:24px;font-weight:600;color:#101828}.av2-empty-sub{max-width:480px;font-size:14px;line-height:20px;color:#667085;text-wrap:pretty}.av2-col-head{border-radius:8px;background:#f9fafb;padding:14px 16px;font-size:14px;line-height:20px;font-weight:500;color:#344054;display:flex;align-items:center;gap:8px}.av2-avatar{width:32px;height:32px;flex-shrink:0;border-radius:9999px;background:#eff8ff;color:#175cd3;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}.av2-bar{flex:1;height:5px;border-radius:9999px;background:#f2f4f7;overflow:hidden;display:block;min-width:60px}.av2-bar span{display:block;height:5px;border-radius:9999px;background:#1570ef}@keyframes av2-shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.av2-sk{display:block;width:100%;max-width:100%;height:12px;border-radius:4px;flex-shrink:0;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%;animation:av2-shimmer 3s linear infinite}.av2-sk--value{width:72px;height:28px;border-radius:6px}.av2-sk--title{width:220px;height:18px}.av2-sk--note{width:60%}.av2-sk--block{border-radius:8px}@media (prefers-reduced-motion: reduce){.av2-sk{animation:none}}:host ::ng-deep lib-pagination{display:block}:host ::ng-deep lib-pagination .container{max-width:none;padding:0;display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;font-size:13px;color:#475467}:host ::ng-deep lib-pagination .mt-4{margin-top:0!important}:host ::ng-deep lib-pagination .container>.text-center{display:flex;align-items:center}:host ::ng-deep lib-pagination .container>.text-center>ul:not(.ngx-pagination){display:none}:host ::ng-deep lib-pagination pagination-controls{display:flex;align-items:center}:host ::ng-deep lib-pagination .sub-title{color:#475467!important;font-size:13px!important;font-weight:400!important;line-height:20px}:host ::ng-deep lib-pagination .border-val{height:34px;padding:0 28px 0 12px!important;border:0!important;border-radius:8px!important;box-shadow:inset 0 0 0 1px #d0d5dd;font-size:13px;font-weight:600;color:#1d2939;background-position-x:calc(100% - 10px)}:host ::ng-deep lib-pagination .ngx-pagination{margin:0;padding:0;display:flex;align-items:center;gap:6px;color:#475467!important;font-size:13px!important;font-weight:500}:host ::ng-deep lib-pagination .ngx-pagination li{display:inline-flex;margin:0}:host ::ng-deep lib-pagination .ngx-pagination li.small-screen{display:none!important}:host ::ng-deep lib-pagination .ngx-pagination a,:host ::ng-deep lib-pagination .ngx-pagination button,:host ::ng-deep lib-pagination .ngx-pagination .current,:host ::ng-deep lib-pagination .ngx-pagination .disabled{min-width:34px!important;height:34px;padding:0 8px!important;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;line-height:20px;color:#475467}:host ::ng-deep lib-pagination .ngx-pagination a:hover,:host ::ng-deep lib-pagination .ngx-pagination button:hover{background:#f2f4f7;padding:0 8px!important}:host ::ng-deep lib-pagination .ngx-pagination .current{background:#eff8ff!important;color:#175cd3!important;font-weight:700;font-size:13px!important}:host ::ng-deep lib-pagination .ngx-pagination .disabled{color:#98a2b3}:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous a:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous a:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous.disabled:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous.disabled:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next a:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next a:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next.disabled:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next.disabled:after{margin:0}:host ::ng-deep lib-pagination .ngx-pagination .ellipsis:after{color:#98a2b3;padding:0}.ac-sk-value{width:56px;height:32px;margin:3px 0}.approval-col{display:flex;flex-direction:column;gap:28px}.approval-cards{display:flex;flex-direction:column;gap:12px;max-height:420px;overflow-y:auto;padding-right:4px}.approval-card{display:flex;flex-direction:column;gap:6px;padding:14px 16px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #eaecf0,0 1px 2px #1018280d;cursor:pointer}.approval-card:hover{background:#fcfcfd}.approval-card:focus-visible{outline:2px solid #84CAFF;outline-offset:1px}.approval-card--off{cursor:default}.approval-card--off:hover{background:#fff}.approval-card-name{font-size:14px;line-height:20px;font-weight:600;color:#101828}.approval-card-meta{display:flex;flex-direction:column;gap:2px;font-size:12px;line-height:18px;color:#667085}.log-table{table-layout:fixed}.log-table th:nth-child(1){width:11%}.log-table th:nth-child(2){width:20%}.log-table th:nth-child(3){width:23%}.log-table th:nth-child(4){width:24%}.log-table th:nth-child(5){width:14%}.log-table th:nth-child(6){width:8%}.log-name{min-width:0}.log-name .av2-muted{font-size:12px;line-height:18px}.store-cell{color:#344054}.log-pagination{padding-top:20px}.approval-card-badges{display:flex;flex-wrap:wrap;gap:6px}.approval-card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:2px}.approval-card-date{font-size:12px;line-height:18px;color:#667085}.approval-scope-select{min-width:160px}.log-date-picker{display:flex;align-items:center}:host ::ng-deep .log-date-picker .my-1{margin-top:0!important;margin-bottom:0!important}.activity-action{display:inline-block;max-width:100%;box-sizing:border-box;line-height:28px;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}\n"] }]
|
|
481
|
+
args: [{ selector: 'lib-audit-v2-action-centre', template: "<div class=\"av2-page\">\r\n\r\n <!-- Waiting for approval -->\r\n <div class=\"av2-grid-2\">\r\n <div class=\"av2-stat-card\">\r\n <div class=\"av2-stat\">\r\n <span class=\"av2-sk av2-sk--value ac-sk-value\" *ngIf=\"cardsLoading\"></span>\r\n <span class=\"av2-stat-value\" *ngIf=\"!cardsLoading\">{{ auditWaiting }}</span>\r\n <span class=\"av2-stat-label\">Audit waiting for approval</span>\r\n </div>\r\n </div>\r\n <div class=\"av2-stat-card\">\r\n <div class=\"av2-stat\">\r\n <span class=\"av2-sk av2-sk--value ac-sk-value\" *ngIf=\"cardsLoading\"></span>\r\n <span class=\"av2-stat-value\" *ngIf=\"!cardsLoading\">{{ taskWaiting }}</span>\r\n <span class=\"av2-stat-label\">Task waiting for approval</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- Approval -->\r\n <section class=\"av2-card\">\r\n <div class=\"av2-card-head\">\r\n <div class=\"av2-title-block\">\r\n <div class=\"av2-card-title\">Approval</div>\r\n <div class=\"av2-card-sub\">A summary of all the audits awaiting approval</div>\r\n </div>\r\n\r\n <label class=\"av2-search av2-search--md\">\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\r\n stroke-linecap=\"round\">\r\n <circle cx=\"11\" cy=\"11\" r=\"7\"></circle>\r\n <line x1=\"16.5\" y1=\"16.5\" x2=\"21\" y2=\"21\"></line>\r\n </svg>\r\n <input [(ngModel)]=\"approvalSearch\" (ngModelChange)=\"onApprovalSearch()\" type=\"text\" placeholder=\"Search\" autocomplete=\"off\" />\r\n </label>\r\n\r\n <div class=\"approval-scope-select\">\r\n <lib-select [items]=\"approvalScopeItems\" [multi]=\"false\" [searchField]=\"'label'\" [idField]=\"'id'\"\r\n [selectedValues]=\"[approvalScopeSelected]\" (selected)=\"onApprovalScopeSelect($event)\"></lib-select>\r\n </div>\r\n </div>\r\n\r\n <div class=\"av2-grid-3\">\r\n <div class=\"approval-col\" *ngFor=\"let col of columns; trackBy: trackByColumn\">\r\n <div class=\"av2-col-head\">\r\n {{ col.title }}\r\n <span *ngIf=\"!approvalsLoading && col.cards.length\" class=\"av2-badge av2-badge--count\">{{ col.cards.length }}</span>\r\n </div>\r\n\r\n <lib-audit-v2-shimmer *ngIf=\"approvalsLoading\" [rows]=\"2\"></lib-audit-v2-shimmer>\r\n\r\n <div *ngIf=\"!approvalsLoading && col.cards.length\" class=\"approval-cards\">\r\n <div *ngFor=\"let card of col.cards\" class=\"approval-card\" [class.approval-card--off]=\"!card.link\"\r\n [attr.role]=\"card.link ? 'link' : null\" [attr.tabindex]=\"card.link ? 0 : null\" [attr.title]=\"card.hint || null\"\r\n (click)=\"openCard(card)\" (keydown.enter)=\"openCard(card)\">\r\n <div class=\"approval-card-badges\">\r\n <span class=\"av2-badge av2-badge--purple av2-badge--count\">{{ card.typeLabel }}</span>\r\n <span *ngIf=\"card.redo\" class=\"av2-badge av2-badge--warning av2-badge--count\">Redo</span>\r\n </div>\r\n <div class=\"approval-card-name\">{{ card.name }}</div>\r\n <div class=\"approval-card-meta\">\r\n <span>{{ card.store }}</span>\r\n <span *ngIf=\"card.submittedLabel\">{{ card.submittedLabel }}</span>\r\n <span>{{ card.by }}</span>\r\n </div>\r\n <div class=\"approval-card-foot\">\r\n <span class=\"approval-card-date\">{{ card.when }}</span>\r\n <span *ngIf=\"card.approvedLabel\" class=\"av2-badge av2-badge--success av2-badge--count\">{{ card.approvedLabel }}</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!approvalsLoading && !col.cards.length\" class=\"av2-empty\">\r\n <img class=\"av2-empty-img\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"av2-empty-text\">\r\n <div class=\"av2-empty-title\">No data found</div>\r\n <div class=\"av2-empty-sub\">{{ col.empty }}</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <!-- Activity Log -->\r\n <section class=\"av2-card av2-card--log\">\r\n <div class=\"av2-card-head av2-card-head--center\">\r\n <div class=\"av2-card-title av2-card-title--grow\">Activity Log</div>\r\n\r\n <label class=\"av2-search av2-search--lg\">\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"\r\n stroke-linecap=\"round\">\r\n <circle cx=\"11\" cy=\"11\" r=\"7\"></circle>\r\n <line x1=\"16.5\" y1=\"16.5\" x2=\"21\" y2=\"21\"></line>\r\n </svg>\r\n <input [(ngModel)]=\"search\" (ngModelChange)=\"onSearch()\" type=\"text\" [placeholder]=\"searchHint\" autocomplete=\"off\" />\r\n </label>\r\n\r\n <div class=\"log-date-picker\">\r\n <lib-date-range-picker [range]=\"activityRange\" (dateChange)=\"onActivityDateChange($event)\"></lib-date-range-picker>\r\n </div>\r\n\r\n <!-- One filter per tab (lib-filters reads its options once); each keeps its own selection. -->\r\n <lib-filters *ngIf=\"tab === 'Audit'\" [dataObject]=\"activityFilterData.Audit\" (appliedFilters)=\"onActivityFilters($event)\"></lib-filters>\r\n <lib-filters *ngIf=\"tab === 'Task'\" [dataObject]=\"activityFilterData.Task\" (appliedFilters)=\"onActivityFilters($event)\"></lib-filters>\r\n </div>\r\n\r\n <!-- Audit / Task -->\r\n <div class=\"av2-tabs\">\r\n <button *ngFor=\"let t of tabs\" type=\"button\" class=\"av2-tab\" [class.is-active]=\"tab === t\"\r\n (click)=\"setTab(t)\">{{ t }}</button>\r\n </div>\r\n\r\n <lib-audit-v2-shimmer *ngIf=\"logLoading\"></lib-audit-v2-shimmer>\r\n\r\n <div class=\"av2-table-wrap\" *ngIf=\"!logLoading\">\r\n <table class=\"av2-table log-table\">\r\n <thead>\r\n <tr>\r\n <th class=\"av2-sortable\" (click)=\"sortLog('date')\">Date & Time <lib-audit-v2-sort-icon [active]=\"logSortKey === 'date'\" [dir]=\"logSortBy === 1 ? 'asc' : 'desc'\"></lib-audit-v2-sort-icon></th>\r\n <th class=\"av2-sortable\" (click)=\"sortLog('name')\">{{ nameLabel }} <lib-audit-v2-sort-icon [active]=\"logSortKey === 'name'\" [dir]=\"logSortBy === 1 ? 'asc' : 'desc'\"></lib-audit-v2-sort-icon></th>\r\n <th class=\"av2-sortable\" (click)=\"sortLog('action')\">Action Performed <lib-audit-v2-sort-icon [active]=\"logSortKey === 'action'\" [dir]=\"logSortBy === 1 ? 'asc' : 'desc'\"></lib-audit-v2-sort-icon></th>\r\n <th class=\"av2-sortable\" (click)=\"sortLog('by')\">Performed by <lib-audit-v2-sort-icon [active]=\"logSortKey === 'by'\" [dir]=\"logSortBy === 1 ? 'asc' : 'desc'\"></lib-audit-v2-sort-icon></th>\r\n <th class=\"av2-sortable\" (click)=\"sortLog('store')\">Name <lib-audit-v2-sort-icon [active]=\"logSortKey === 'store'\" [dir]=\"logSortBy === 1 ? 'asc' : 'desc'\"></lib-audit-v2-sort-icon></th>\r\n <th>Actions</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n <tr *ngFor=\"let row of pageRows; trackBy: trackByRow\">\r\n <td>\r\n <div class=\"av2-cell-stack\">\r\n <span>{{ row.day }}</span>\r\n <span class=\"av2-muted\">{{ row.time }}</span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"av2-cell-stack log-name\">\r\n <span class=\"av2-ellipsis\" [av2Tip]=\"row.name\">{{ row.name }}</span>\r\n <span *ngIf=\"row.detail\" class=\"av2-muted av2-ellipsis\" [av2Tip]=\"row.detail\">{{ row.detail }}</span>\r\n </div>\r\n </td>\r\n <td><span class=\"av2-badge activity-action\" [ngClass]=\"row.tone === 'primary' ? '' : 'av2-badge--' + row.tone\"\r\n [title]=\"row.action\">{{ row.action }}</span></td>\r\n <td>\r\n <div class=\"av2-cell-icon av2-dim\">\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <circle cx=\"12\" cy=\"8\" r=\"3.4\"></circle>\r\n <path d=\"M5 20c0-3.6 3.1-5.6 7-5.6s7 2 7 5.6\"></path>\r\n </svg>\r\n <span>{{ row.by }}</span>\r\n </div>\r\n </td>\r\n <td>\r\n <div class=\"av2-cell-icon store-cell\">\r\n <svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\r\n stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M3 9l1.6-4.5h14.8L21 9\"></path>\r\n <path d=\"M4 9v11h16V9\"></path>\r\n <path d=\"M9 20v-6h6v6\"></path>\r\n </svg>\r\n <span>{{ row.store }}</span>\r\n </div>\r\n </td>\r\n <td>\r\n <a *ngIf=\"row.viewable\" class=\"av2-link\" routerLink=\"/manage/trax/audit-v2/gallery\"\r\n [queryParams]=\"galleryParams(row)\" title=\"Open this submission in the Gallery\">View</a>\r\n <span *ngIf=\"!row.viewable\" class=\"av2-faint\">-</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n\r\n <div *ngIf=\"!logLoading && !filteredRows.length\" class=\"av2-empty\">\r\n <img class=\"av2-empty-img\" src=\"./assets/tango/Icons/Nodata1.svg\" alt=\"\">\r\n <div class=\"av2-empty-text\">\r\n <div class=\"av2-empty-title\">No data found</div>\r\n <div class=\"av2-empty-sub\">There is no result for {{ tab }}</div>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"!logLoading && filteredRows.length\" class=\"log-pagination\">\r\n <lib-pagination [itemsPerPage]=\"itemsPerPage\" [pageSize]=\"itemsPerPage\" [paginationSizes]=\"pageSizes\" [currentPage]=\"currentPage\" [totalItems]=\"totalItems\"\r\n (pageChange)=\"onPageChange($event)\" (pageSizeChange)=\"onPageSizeChange($event)\"></lib-pagination>\r\n </div>\r\n </section>\r\n\r\n</div>\r\n", styles: ["@charset \"UTF-8\";.av2-page{display:flex;flex-direction:column;gap:16px;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:#101828;-webkit-font-smoothing:antialiased}.av2-page *,.av2-page *:before,.av2-page *:after{box-sizing:border-box}.av2-card{background:#fff;border-radius:8px;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;padding:20px 24px;display:flex;flex-direction:column;gap:20px}.av2-card--log{padding:20px 24px 24px;gap:18px}.av2-card--table{padding:20px 24px 24px;gap:16px}.av2-card-head{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap}.av2-card-head--center{align-items:center;gap:12px}.av2-title-block{display:flex;flex-direction:column;gap:4px;flex:1;min-width:220px}.av2-card-title{font-size:20px;line-height:30px;font-weight:600;color:#101828;display:flex;align-items:center;gap:10px}.av2-card-title--grow{flex:1;min-width:180px}.av2-card-sub{font-size:14px;line-height:20px;color:#667085}.av2-grow{flex:1}.av2-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.av2-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}.av2-grid-4{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px}.av2-stat-card{background:#fff;border-radius:8px;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;padding:10px}.av2-stat{padding:8px 16px;border-radius:6px;border-bottom:2px solid #EAECF0;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;display:flex;align-items:center;gap:20px}.av2-stat-value{font-size:30px;line-height:38px;font-weight:600;color:#101828}.av2-stat-label{font-size:14px;line-height:20px;font-weight:500;color:#344054}.av2-kpi{background:#fff;border-radius:10px;box-shadow:inset 0 0 0 1px #eaecf0,0 1px 2px #1018280d;display:flex;flex-direction:column;overflow:hidden}.av2-kpi.is-primary{box-shadow:inset 0 0 0 1px #99dbff,0 1px 2px #1018280d}.av2-kpi.is-primary .av2-kpi-head{background:#eaf8ff}.av2-kpi-head{padding:14px 18px;background:#f9fafb;font-size:16px;line-height:24px;font-weight:500;color:#101828}.av2-kpi-body{padding:16px 18px 18px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.av2-kpi-value{font-size:20px;line-height:30px;font-weight:700;color:#101828}.av2-kpi-delta{display:flex;align-items:center;gap:4px;font-size:12px;color:#039855}.av2-kpi-delta.is-down{color:#d92d20}.av2-kpi-note{font-size:12px;color:#667085}.av2-ocard{padding:8px;border-radius:12px;border:1px solid #D0D5DD;background:#fff;display:flex;flex-direction:column;min-width:0;height:100%}.av2-ocard-head{min-height:70px;padding:10px 14px;border-radius:6px;border-bottom:2px solid #EAECF0;background:radial-gradient(206.89% 107.47% at 16.16% 32.77%,#fff6,#45bbfe33),#f2f4f7;box-shadow:0 4px 10px #0000000d;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:2px;min-width:0}.av2-ocard-head--row{flex-direction:row;align-items:center;justify-content:flex-start;gap:12px}.av2-ocard-count{font-size:30px;line-height:38px;font-weight:600;color:#101828;white-space:nowrap}.av2-ocard-text{font-size:14px;line-height:20px;font-weight:500;color:#344054}.av2-ocard-body{flex:1;padding:12px 14px;display:flex;gap:16px;min-width:0}.av2-ocard-cell{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.av2-ocard-cell--center{align-items:center;text-align:center}.av2-ocard-sub{margin:4px 0;font-size:20px;line-height:30px;font-weight:700;color:#101828}.av2-ocard-note{font-size:14px;line-height:20px;font-weight:400;color:#667085}.av2-ocard-delta{margin-top:6px;display:inline-flex;align-items:center;gap:6px;font-size:12px;line-height:18px;font-weight:400;color:#1d2939}.av2-ocard-delta b{font-weight:600;color:#667085}.av2-ocard-delta svg{flex-shrink:0;color:#039855}.av2-ocard-delta.is-down svg{color:#d92d20}.av2-search{position:relative;display:flex;align-items:center;gap:8px;height:44px;padding:0 12px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;color:#98a2b3;font-size:14px;flex-shrink:0}.av2-search svg{flex-shrink:0}.av2-search input{flex:1;min-width:0;height:100%;border:0;outline:0;padding:0;background:transparent;font:inherit;font-size:14px;font-weight:500;color:#101828}.av2-search input::placeholder{color:#98a2b3}.av2-search:focus-within{box-shadow:inset 0 0 0 1px #66c8ff,0 0 0 4px #eaf8ff}.av2-search--sm{width:300px}.av2-search--md{width:320px}.av2-search--lg{width:340px}.av2-select{height:44px;padding:0 36px 0 12px;border:0;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;font:inherit;font-size:14px;font-weight:500;color:#344054;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:url(\"data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23344054' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>\");background-repeat:no-repeat;background-position:right 12px center;flex-shrink:0}.av2-select:focus{outline:0;box-shadow:inset 0 0 0 1px #66c8ff,0 0 0 4px #eaf8ff}.av2-select--sm{width:180px}.av2-chip{display:flex;align-items:center;gap:8px;height:44px;padding:0 12px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;font-size:14px;color:#344054;white-space:nowrap;flex-shrink:0}.av2-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 16px;border:0;border-radius:8px;font-family:inherit;font-size:14px;line-height:20px;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background-color .15s cubic-bezier(.4,0,.2,1)}.av2-btn svg{flex-shrink:0}.av2-btn:disabled{opacity:.55;cursor:not-allowed}.av2-btn--ghost{background:#fff;box-shadow:inset 0 0 0 1px #d0d5dd;color:#344054;font-weight:500}.av2-btn--ghost:hover:not(:disabled){background:#f9fafb}.av2-btn--primary{background:#00a3ff;color:#fff;font-size:16px;line-height:24px}.av2-btn--primary:hover:not(:disabled){background:#009bf3}.av2-btn--sm{height:36px;padding:0 14px;font-size:13px}.av2-btn--wide{padding:0 18px}.av2-tabs{display:flex;align-items:center;gap:6px}.av2-tab{height:44px;padding:0 26px;border:0;border-radius:6px;background:transparent;display:inline-flex;align-items:center;justify-content:center;font-family:inherit;font-size:16px;font-weight:500;color:#475467;cursor:pointer}.av2-tab.is-active{background:#eaf8ff;color:#009bf3;font-weight:500}.av2-badge{display:inline-flex;align-items:center;height:22px;padding:2px 8px;border-radius:16px;background:#eaf8ff;color:#009bf3;font-size:12px;font-weight:500;line-height:18px;white-space:nowrap}.av2-badge--count{height:22px;padding:0 8px}.av2-badge--success{background:#ecfdf3;color:#027a48}.av2-badge--error{background:#fef3f2;color:#b42318}.av2-badge--warning{background:#fffaeb;color:#b54708}.av2-badge--gray{background:#f2f4f7;color:#344054}.av2-badge--purple{background:#f9f5ff;color:#5925dc}.av2-link{color:#00a3ff;font-size:14px;font-weight:500;text-decoration:underline;cursor:pointer}.av2-link:hover{color:#009bf3;text-decoration:underline}.av2-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.av2-muted{color:#667085}.av2-dim{color:#475467}.av2-faint{color:#98a2b3}table tbody td.av2-dim{color:#475467}table tbody td.av2-faint{color:#98a2b3}.av2-table-wrap{overflow-x:auto}.av2-table{width:100%;border-collapse:separate;border-spacing:0;margin:0}.av2-table thead th{background:#f9fafb;padding:12px;font-size:12px;line-height:18px;font-weight:500;color:#667085;text-align:left;text-transform:none;letter-spacing:0;border:0;white-space:nowrap}.av2-table thead th:first-child{border-radius:8px 0 0}.av2-table thead th:last-child{border-radius:0 8px 0 0}.av2-table tbody td{padding:16px 12px;border:0;border-bottom:1px solid #F2F4F7;font-size:14px;line-height:20px;font-weight:500;color:#101828;vertical-align:middle}.av2-table .av2-th-sort{display:inline-flex;align-items:center;gap:4px}.av2-table .av2-cell-icon{display:flex;align-items:center;gap:8px;min-width:0}.av2-table .av2-cell-icon svg{flex-shrink:0}.av2-table .av2-cell-icon span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.av2-table .av2-cell-stack{display:flex;flex-direction:column;gap:2px}.av2-table .av2-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.av2-sortable{cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.av2-table--lined thead th{background:transparent;border-bottom:1px solid #EAECF0;border-radius:0!important}.av2-empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px 16px 32px;text-align:center}.av2-empty-img{display:block;width:160px;height:120px}.av2-empty-text{display:flex;flex-direction:column;gap:4px;align-items:center}.av2-empty-title{font-size:16px;line-height:24px;font-weight:600;color:#101828}.av2-empty-sub{max-width:480px;font-size:14px;line-height:20px;color:#667085;text-wrap:pretty}.av2-col-head{border-radius:8px;background:#f9fafb;padding:14px 16px;font-size:12px;line-height:20px;font-weight:500;color:#344054;display:flex;align-items:center;gap:8px}.av2-avatar{width:32px;height:32px;flex-shrink:0;border-radius:9999px;background:#eaf8ff;color:#009bf3;display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:700}.av2-bar{flex:1;height:5px;border-radius:9999px;background:#f2f4f7;overflow:hidden;display:block;min-width:60px}.av2-bar span{display:block;height:5px;border-radius:9999px;background:#00a3ff}@keyframes av2-shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.av2-sk{display:block;width:100%;max-width:100%;height:12px;border-radius:4px;flex-shrink:0;background:linear-gradient(to right,#e6e6e6 5%,#ccc 25%,#e6e6e6 35%);background-size:1000px 100%;animation:av2-shimmer 3s linear infinite}.av2-sk--value{width:72px;height:28px;border-radius:6px}.av2-sk--title{width:220px;height:18px}.av2-sk--note{width:60%}.av2-sk--block{border-radius:8px}@media (prefers-reduced-motion: reduce){.av2-sk{animation:none}}::ng-deep .tooltip.av2-tip{--bs-tooltip-bg: #fff;--bs-tooltip-color: #344054;--bs-tooltip-max-width: 320px;--bs-tooltip-opacity: 1}::ng-deep .tooltip.av2-tip .tooltip-inner{background-color:#fff!important;color:#344054!important;padding:8px 12px;border-radius:8px;font-size:13px;line-height:18px;font-weight:500;text-align:left;box-shadow:0 12px 16px -4px #10182814,0 4px 6px -2px #10182808,0 0 0 1px #eaecf0}::ng-deep .tooltip.av2-tip .tooltip-arrow:before{border-top-color:#fff;border-bottom-color:#fff}:host ::ng-deep lib-pagination{display:block}:host ::ng-deep lib-pagination .container{max-width:none;padding:0;display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;font-size:14px;color:#475467}:host ::ng-deep lib-pagination .mt-4{margin-top:0!important}:host ::ng-deep lib-pagination .container>.text-center{display:flex;align-items:center}:host ::ng-deep lib-pagination .container>.text-center>ul:not(.ngx-pagination){display:none}:host ::ng-deep lib-pagination pagination-controls{display:flex;align-items:center}:host ::ng-deep lib-pagination .sub-title{color:#475467!important;font-size:14px!important;font-weight:400!important;line-height:20px}:host ::ng-deep lib-pagination .border-val{height:40px;min-width:64px;padding:0 30px 0 12px!important;border:1px solid #D0D5DD!important;border-radius:8px!important;box-shadow:0 1px 2px #1018280d;background-color:#fff;background-image:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23667085' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E\")!important;background-repeat:no-repeat!important;background-position:right 10px center!important;background-size:14px 14px!important;appearance:none;-webkit-appearance:none;font-size:14px;font-weight:500;color:#1d2939;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}:host ::ng-deep lib-pagination .border-val:hover{border-color:#98a2b3!important}:host ::ng-deep lib-pagination .border-val:focus{outline:none;border-color:#66c8ff!important;box-shadow:0 0 0 3px #eaf8ff}:host ::ng-deep lib-pagination .ngx-pagination{margin:0;padding:0;display:flex;align-items:center;gap:6px;color:#475467!important;font-size:14px!important;font-weight:500}:host ::ng-deep lib-pagination .ngx-pagination li{display:inline-flex;margin:0}:host ::ng-deep lib-pagination .ngx-pagination li.small-screen{display:none!important}:host ::ng-deep lib-pagination .ngx-pagination a,:host ::ng-deep lib-pagination .ngx-pagination button,:host ::ng-deep lib-pagination .ngx-pagination .current,:host ::ng-deep lib-pagination .ngx-pagination .disabled{min-width:40px!important;height:40px;padding:0 8px!important;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;line-height:20px;color:#475467}:host ::ng-deep lib-pagination .ngx-pagination a:hover,:host ::ng-deep lib-pagination .ngx-pagination button:hover{background:#f2f4f7;padding:0 8px!important}:host ::ng-deep lib-pagination .ngx-pagination .current{background:#eaf8ff!important;color:#00a3ff!important;font-weight:600;font-size:14px!important}:host ::ng-deep lib-pagination .ngx-pagination .disabled{color:#98a2b3}:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous a:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous a:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous.disabled:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-previous.disabled:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next a:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next a:after,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next.disabled:before,:host ::ng-deep lib-pagination .ngx-pagination .pagination-next.disabled:after{margin:0}:host ::ng-deep lib-pagination .ngx-pagination .ellipsis:after{color:#98a2b3;padding:0}.ac-sk-value{width:56px;height:32px;margin:3px 0}.approval-col{display:flex;flex-direction:column;gap:28px}.approval-cards{display:flex;flex-direction:column;gap:12px;max-height:420px;overflow-y:auto;padding-right:4px}.approval-card{display:flex;flex-direction:column;gap:6px;padding:14px 16px;border-radius:8px;background:#fff;box-shadow:inset 0 0 0 1px #f1f1f4,0 3px 4px #00000008;cursor:pointer}.approval-card:hover{background:#fcfcfd}.approval-card:focus-visible{outline:2px solid #66C8FF;outline-offset:1px}.approval-card--off{cursor:default}.approval-card--off:hover{background:#fff}.approval-card-name{font-size:14px;line-height:20px;font-weight:600;color:#101828}.approval-card-meta{display:flex;flex-direction:column;gap:2px;font-size:12px;line-height:18px;color:#667085}.log-table{table-layout:fixed}.log-table th:nth-child(1){width:11%}.log-table th:nth-child(2){width:20%}.log-table th:nth-child(3){width:23%}.log-table th:nth-child(4){width:24%}.log-table th:nth-child(5){width:14%}.log-table th:nth-child(6){width:8%}.log-name{min-width:0}.log-name .av2-muted{font-size:12px;line-height:18px}.store-cell{color:#344054}.log-pagination{padding-top:20px}.approval-card-badges{display:flex;flex-wrap:wrap;gap:6px}.approval-card-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:2px}.approval-card-date{font-size:12px;line-height:18px;color:#667085}.approval-scope-select{min-width:160px}.log-date-picker{display:flex;align-items:center}:host ::ng-deep .log-date-picker .my-1{margin-top:0!important;margin-bottom:0!important}.activity-action{display:inline-block;max-width:100%;box-sizing:border-box;height:22px;padding:2px 10px;line-height:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}\n"] }]
|
|
461
482
|
}], ctorParameters: () => [{ type: i1.TraxService }, { type: i2.GlobalStateService }, { type: i0.ChangeDetectorRef }, { type: i3.Router }] });
|
|
462
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtdjItYWN0aW9uLWNlbnRyZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2F1ZGl0LXYyL2FjdGlvbi1jZW50cmUvYXVkaXQtdjItYWN0aW9uLWNlbnRyZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2F1ZGl0LXYyL2FjdGlvbi1jZW50cmUvYXVkaXQtdjItYWN0aW9uLWNlbnRyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlFLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7OztBQUduQyxLQUFLLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBb0RsQjs7Ozs7R0FLRztBQUNILE1BQU0sWUFBWSxHQUF3RDtJQUN4RSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDL0MsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQ2xELE9BQU8sRUFBRSxFQUFFLEtBQUssRUFBRSxrQkFBa0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO0lBQ3BELE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUMvQyxVQUFVLEVBQUUsRUFB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SSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ2xGLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7Z0JBQzlGLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDMUIsQ0FBQztZQUNELEtBQUssRUFBRSxHQUFHLEVBQUU7Z0JBQ1YsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ25DLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDMUIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxNQUFNLENBQUMsQ0FBTSxFQUFFLE1BQTZCO1FBQ2xELE1BQU0s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QyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsbUZBQW1GO0lBQ25GLGdCQUFnQixDQUFDLElBQVM7UUFDeEIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWEsRUFBRSxHQUFnQjtRQUN4QyxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssSUFBSSxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDN0YsQ0FBQztJQUVELGFBQWEsQ0FBQyxDQUFTLEVBQUUsR0FBbUI7UUFDMUMsT0FBTyxHQUFHLENBQUMsR0FBRyxDQUFDO0lBQ2pCLENBQUM7d0dBeGFVLDRCQUE0Qjs0RkFBNUIsNEJBQTRCLGtFQ3ZHekMsdW1UQWlNQTs7NEZEMUZhLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDRSw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFN1YmplY3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgR2xvYmFsU3RhdGVTZXJ2aWNlIH0gZnJvbSAndGFuZ28tYXBwLXVpLWdsb2JhbCc7XG5pbXBvcnQgZGF5anMgZnJvbSAnZGF5anMnO1xuaW1wb3J0IHV0YyBmcm9tICdkYXlqcy9wbHVnaW4vdXRjJztcbmltcG9ydCB7IFRyYXhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJheC5zZXJ2aWNlJztcblxuZGF5anMuZXh0ZW5kKHV0Yyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aXZpdHlSb3cge1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBTZWNvbmQgbGluZSB1bmRlciB0aGUgbmFtZTogdGhlIHNjaGVkdWxlIChcIlNjaGVkdWxlOiBYXCIpIGFuZCAvIG9yIHRoZSBjb3B5IGEgZHVwbGljYXRlIG1hZGUgKFwiQ29weTogWFwiKS4gKi9cbiAgZGV0YWlsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBTaG9ydCBhY3Rpb24gbGFiZWw6IFwiU3RhcnRlZCBieVwiIC8gXCJTdWJtaXR0ZWQgYnlcIiBmb3IgYSB2aXNpdCwgb3IgYSBsb2dnZWQgYXVkaXQgLyBzY2hlZHVsZSBhY3Rpb24gc3VjaCBhc1xuICAgKiBcIkF1ZGl0IGNyZWF0ZWQgYnlcIiwgXCJEdXBsaWNhdGVkIGJ5XCIsIFwiU2NoZWR1bGUgcHVibGlzaGVkIGJ5XCIuIE5hbWVzIHN0YXkgb3V0IG9mIHRoZSBiYWRnZSAoc2VlIGRldGFpbCkuXG4gICAqL1xuICBhY3Rpb246IHN0cmluZztcbiAgLyoqIEJhZGdlIGNvbG91ciBmb3IgdGhlIGFjdGlvbiwgZm9sbG93aW5nIHRoZSBvbGQgQWN0aXZpdHkgTG9nIChzZWUgQUNUSU9OX0JBREdFKS4gKi9cbiAgdG9uZTogQWN0aW9uVG9uZTtcbiAgYnk6IHN0cmluZztcbiAgc3RvcmU6IHN0cmluZztcbiAgZGF5OiBzdHJpbmc7XG4gIHRpbWU6IHN0cmluZztcbiAgLyoqIFN1Ym1pdHRlZCBlbnRyaWVzIGNhbiBiZSBvcGVuZWQ7IHN0YXJ0ZWQgb25lcyBjYW5ub3QuICovXG4gIHZpZXdhYmxlOiBib29sZWFuO1xuICByYXc/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwcm92YWxDYXJkIHtcbiAgbmFtZTogc3RyaW5nO1xuICBzdG9yZTogc3RyaW5nO1xuICBieTogc3RyaW5nO1xuICB3aGVuOiBzdHJpbmc7XG4gIC8qKiBcIkF1ZGl0XCIgb3IgXCJUYXNrXCIsIGZyb20gdGhlIEFQSSdzIG1vZHVsZSBmaWVsZC4gKi9cbiAgdHlwZUxhYmVsOiBzdHJpbmc7XG4gIC8qKiBcIlN1Ym1pdHRlZCB4IC8geVwiIChzdWJtaXR0ZWQgaW5zdGFuY2VzIC8gYXNzaWduZWQgc3RvcmVzKSwgb3IgJycgd2hlbiB1bmtub3duLiAqL1xuICBzdWJtaXR0ZWRMYWJlbDogc3RyaW5nO1xuICAvKiogXCJBcHByb3ZlZCB4IC8geVwiIChhcHByb3ZlZCAvIHN1Ym1pdHRlZCksIG9yICcnIHdoZW4gbm90aGluZyBpcyBzdWJtaXR0ZWQgeWV0LiAqL1xuICBhcHByb3ZlZExhYmVsOiBzdHJpbmc7XG4gIHJlZG86IGJvb2xlYW47XG4gIC8qKiBHYWxsZXJ5IGRlZXAgbGluayAoYXVkaXQgLyBzdG9yZSAvIGRheSAvIGFwcHJvdmFsIHN0YXR1cyksIG9yIG51bGwgd2hlbiB0aGVyZSBpcyBub3RoaW5nIHRvIHJldmlldyB0aGVyZS4gKi9cbiAgbGluazogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IG51bGw7XG4gIC8qKiBUb29sdGlwOiB3aGF0IGEgY2xpY2sgb3BlbnMsIG9yIHdoeSB0aGUgY2FyZCBjYW5ub3QgYmUgb3BlbmVkLiAqL1xuICBoaW50OiBzdHJpbmc7XG4gIHJhdz86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHByb3ZhbENvbHVtbiB7XG4gIGtleTogJ29wZW4nIHwgJ2lucHJvZ3Jlc3MnIHwgJ2FwcHJvdmVkJztcbiAgdGl0bGU6IHN0cmluZztcbiAgZW1wdHk6IHN0cmluZztcbiAgY2FyZHM6IEFwcHJvdmFsQ2FyZFtdO1xufVxuXG50eXBlIEFjdGlvblRhYiA9ICdBdWRpdCcgfCAnVGFzayc7XG5cbnR5cGUgQWN0aW9uVG9uZSA9ICdwcmltYXJ5JyB8ICdncmF5JyB8ICd3YXJuaW5nJyB8ICdlcnJvcic7XG5cbi8qKlxuICogQWN0aXZpdHkgTG9nIGJhZGdlIHBlciBhY3Rpb246IGEgc2hvcnQgbGFiZWwgbGlrZSB0aGUgb2xkIENoZWNrbGlzdCBBY3Rpdml0eSBMb2cncyAoZ2V0QWN0aW9uTGFiZWwpLCB3aXRoXG4gKiB0aGUgc2NoZWR1bGUgLyBjb3B5IG5hbWVzIG1vdmVkIHRvIHRoZSBuYW1lIGNvbHVtbiwgYW5kIGl0cyBjb2xvdXIgKGdldEFjdGlvbkJhZGdlQ2xhc3MpOiBzdGFydCAvIHN1Ym1pdCAvXG4gKiBwdWJsaXNoIC8gY29uZmlnIGNoYW5nZXMgYmx1ZSwgY3JlYXRlZCAvIGR1cGxpY2F0ZWQgZ3JleSwgZWRpdGVkIGFtYmVyLCBkZWxldGVkIHJlZC5cbiAqIEtleXMgYXJlIHN0YXJ0IC8gc3VibWl0IGZvciB2aXNpdCBldmVudHMgYW5kIHRoZSBzdG9yZWQgYWN0aXZpdHlUeXBlIGZvciBsb2dnZWQgYXVkaXQgLyBzY2hlZHVsZSBhY3Rpb25zLlxuICovXG5jb25zdCBBQ1RJT05fQkFER0U6IFJlY29yZDxzdHJpbmcsIHsgbGFiZWw6IHN0cmluZzsgdG9uZTogQWN0aW9uVG9uZSB9PiA9IHtcbiAgc3RhcnQ6IHsgbGFiZWw6ICdTdGFydGVkIGJ5JywgdG9uZTogJ3ByaW1hcnknIH0sXG4gIHN1Ym1pdDogeyBsYWJlbDogJ1N1Ym1pdHRlZCBieScsIHRvbmU6ICdwcmltYXJ5JyB9LFxuICBjcmVhdGVkOiB7IGxhYmVsOiAnQXVkaXQgY3JlYXRlZCBieScsIHRvbmU6ICdncmF5JyB9LFxuICBlZGl0ZWQ6IHsgbGFiZWw6ICdFZGl0ZWQgYnknLCB0b25lOiAnd2FybmluZycgfSxcbiAgY29uZmlndXJlZDogeyBsYWJlbDogJ0NvbmZpZ3VyZWQgYnknLCB0b25lOiAncHJpbWFyeScgfSxcbiAgcHVibGlzaGVkOiB7IGxhYmVsOiAnUHVibGlzaGVkIGJ5JywgdG9uZTogJ3ByaW1hcnknIH0sXG4gIHVucHVibGlzaGVkOiB7IGxhYmVsOiAnVW5wdWJsaXNoZWQgYnknLCB0b25lOiAncHJpbWFyeScgfSxcbiAgZHVwbGljYXRlZDogeyBsYWJlbDogJ0R1cGxpY2F0ZWQgYnknLCB0b25lOiAnZ3JheScgfSxcbiAgZGVsZXRlZDogeyBsYWJlbDogJ0RlbGV0ZWQgYnknLCB0b25lOiAnZXJyb3InIH0sXG4gIHNjaGVkdWxlZDogeyBsYWJlbDogJ1NjaGVkdWxlIGNyZWF0ZWQgYnknLCB0b25lOiAnZ3JheScgfSxcbiAgc2NoZWR1bGVFZGl0ZWQ6IHsgbGFiZWw6ICdTY2hlZHVsZSBlZGl0ZWQgYnknLCB0b25lOiAnd2FybmluZycgfSxcbiAgc2NoZWR1bGVQdWJsaXNoZWQ6IHsgbGFiZWw6ICdTY2hlZHVsZSBwdWJsaXNoZWQgYnknLCB0b25lOiAncHJpbWFyeScgfSxcbiAgc2NoZWR1bGVVbnB1Ymxpc2hlZDogeyBsYWJlbDogJ1NjaGVkdWxlIHVucHVibGlzaGVkIGJ5JywgdG9uZTogJ3ByaW1hcnknIH0sXG4gIHNjaGVkdWxlRHVwbGljYXRlZDogeyBsYWJlbDogJ1NjaGVkdWxlIGR1cGxpY2F0ZWQgYnknLCB0b25lOiAnZ3JheScgfSxcbiAgc2NoZWR1bGVEZWxldGVkOiB7IGxhYmVsOiAnU2NoZWR1bGUgZGVsZXRlZCBieScsIHRvbmU6ICdlcnJvcicgfSxcbn07XG5cbi8qKiBBY3Rpdml0eSBMb2cgXCJBY3Rpb25zXCIgZmlsdGVyOyBpZHMgbWF0Y2ggdGhlIEFQSSdzIGFjdGlvbiBmaWx0ZXIuICovXG5jb25zdCBWSVNJVF9BQ1RJT05TID0gW1xuICB7IHRleHQ6ICdTdGFydGVkIGJ5JywgaWQ6ICdzdGFydCcgfSxcbiAgeyB0ZXh0OiAnU3VibWl0dGVkIGJ5JywgaWQ6ICdzdWJtaXQnIH0sXG5dO1xuXG4vKipcbiAqIEF1ZGl0IEFjdGlvbiBDZW50ZXIsIHNlcnZlZCBieSAvdHJheC9hdWRpdC9hY3Rpb25DZW50ZXIvKiAocmV0YWlsLXRyYXgtYXBpLXYyKTpcbiAqICAgY2FyZHMgICAgICAgLT4gYXVkaXRzIC8gdGFza3Mgd2FpdGluZyBmb3IgYXBwcm92YWxcbiAqICAgYXBwcm92YWxzICAgLT4gb3BlbiAvIGlucHJvZ3Jlc3MgLyBkb25lLCBvbmUgcm93IHBlciBhdWRpdCBwZXIgZGF5XG4gKiAgIGFjdGl2aXR5TG9nIC0+IHN0YXJ0ICsgc3VibWl0IGV2ZW50cyBmcm9tIHRoZSBpbnN0YW5jZXMsIHBsdXMgKEF1ZGl0IHRhYikgdGhlIGxvZ2dlZCBhdWRpdCAvIHNjaGVkdWxlXG4gKiAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IGNyZWF0ZWQsIGVkaXRlZCwgY29uZmlndXJlZCwgcHVibGlzaGVkLCB1bnB1Ymxpc2hlZCwgZHVwbGljYXRlZCwgZGVsZXRlZDsgc2VydmVyLXBhZ2VkXG4gKiBFdmVyeSBjYWxsIGlzIHNjb3BlZCBieSB0aGUgZ2xvYmFsIGhlYWRlciBmaWx0ZXIgKGNsaWVudCwgY2hlY2tlZCBzdG9yZXMsIGRhdGVzKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWF1ZGl0LXYyLWFjdGlvbi1jZW50cmUnLFxuICB0ZW1wbGF0ZVVybDogJy4vYXVkaXQtdjItYWN0aW9uLWNlbnRyZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9hdWRpdC12Mi1hY3Rpb24tY2VudHJlLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBBdWRpdFYyQWN0aW9uQ2VudHJlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKiogVGFiIGluc2lkZSB0aGUgYWN0aXZpdHkgbG9nLiAqL1xuICB0YWI6IEFjdGlvblRhYiA9ICdBdWRpdCc7XG4gIHJlYWRvbmx5IHRhYnM6IEFjdGlvblRhYltdID0gWydBdWRpdCcsICdUYXNrJ107XG5cbiAgLyoqIEFwcHJvdmFsIHBhbmVsIGNvbnRyb2xzLiAqL1xuICBhcHByb3ZhbFNlYXJjaCA9ICcnO1xuICBhcHByb3ZhbFNjb3BlID0gJ0FsbCc7XG4gIHJlYWRvbmx5IGFwcHJvdmFsU2NvcGVzID0gWydBbGwnLCAnQXVkaXQnLCAnVGFzayddO1xuICByZWFkb25seSBhcHByb3ZhbFNjb3BlSXRlbXMgPSB0aGlzLmFwcHJvdmFsU2NvcGVzLm1hcCgocykgPT4gKHsgaWQ6IHMsIGxhYmVsOiBzIH0pKTtcbiAgYXBwcm92YWxTY29wZVNlbGVjdGVkOiB7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfSA9IHRoaXMuYXBwcm92YWxTY29wZUl0ZW1zWzBdO1xuXG4gIC8qKiBBY3Rpdml0eSBMb2cncyBvd24gZGF0ZSByYW5nZSAoZGVmYXVsdHMgdG8gdGhlIGhlYWRlciByYW5nZSwgY2hhbmdlZCBieSBpdHMgcGlja2VyKS4gKi9cbiAgYWN0aXZpdHlSYW5nZTogeyBzdGFydERhdGU6IHN0cmluZzsgZW5kRGF0ZTogc3RyaW5nIH0gfCBudWxsID0gbnVsbDtcbiAgLyoqIEFjdGl2aXR5IExvZyBhY3Rpb24gZmlsdGVyIGFwcGxpZWQgb24gZWFjaCB0YWI7IGlkcyBtYXRjaCB0aGUgQVBJJ3MgYWN0aW9uIGZpbHRlci4gRW1wdHkgPSBhbGwuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgYWN0aW9uc0J5VGFiOiBSZWNvcmQ8QWN0aW9uVGFiLCBzdHJpbmdbXT4gPSB7IEF1ZGl0OiBbXSwgVGFzazogW10gfTtcbiAgLyoqXG4gICAqIEZpbHRlciBvcHRpb25zIHBlciB0YWIuIExvZ2dlZCBhdWRpdCAvIHNjaGVkdWxlIGFjdGlvbnMgb25seSBleGlzdCBvbiB0aGUgQXVkaXQgdGFiICgnc2NoZWR1bGUnID0gZXZlcnlcbiAgICogc2NoZWR1bGUgYWN0aW9uKTsgdGhlIFRhc2sgdGFiIGhhcyBzdGFydCAvIHN1Ym1pdCBldmVudHMgb25seS4gbGliLWZpbHRlcnMgcmVhZHMgaXRzIG9wdGlvbnMgb25jZSwgc28gdGhlXG4gICAqIHRlbXBsYXRlIGtlZXBzIG9uZSBpbnN0YW5jZSBwZXIgdGFiLlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aXZpdHlGaWx0ZXJEYXRhOiBSZWNvcmQ8QWN0aW9uVGFiLCBhbnlbXT4gPSB7XG4gICAgQXVkaXQ6IFt7XG4gICAgICBEZXNjcmlwdGlvbjogJ0FjdGlvbnMnLFxuICAgICAgSXNzdWVzOiBbXG4gICAgICAgIC4uLlZJU0lUX0FDVElPTlMubWFwKChhKSA9PiAoeyAuLi5hIH0pKSxcbiAgICAgICAgeyB0ZXh0OiAnQXVkaXQgY3JlYXRlZCBieScsIGlkOiAnY3JlYXRlZCcgfSxcbiAgICAgICAgeyB0ZXh0OiAnRWRpdGVkIGJ5JywgaWQ6ICdlZGl0ZWQnIH0sXG4gICAgICAgIHsgdGV4dDogJ0NvbmZpZ3VyZWQgYnknLCBpZDogJ2NvbmZpZ3VyZWQnIH0sXG4gICAgICAgIHsgdGV4dDogJ1B1Ymxpc2hlZCBieScsIGlkOiAncHVibGlzaGVkJyB9LFxuICAgICAgICB7IHRleHQ6ICdVbnB1Ymxpc2hlZCBieScsIGlkOiAndW5wdWJsaXNoZWQnIH0sXG4gICAgICAgIHsgdGV4dDogJ0R1cGxpY2F0ZWQgYnknLCBpZDogJ2R1cGxpY2F0ZWQnIH0sXG4gICAgICAgIHsgdGV4dDogJ0RlbGV0ZWQgYnknLCBpZDogJ2RlbGV0ZWQnIH0sXG4gICAgICAgIHsgdGV4dDogJ1NjaGVkdWxlIGNoYW5nZXMnLCBpZDogJ3NjaGVkdWxlJyB9LFxuICAgICAgXSxcbiAgICB9XSxcbiAgICBUYXNrOiBbeyBEZXNjcmlwdGlvbjogJ0FjdGlvbnMnLCBJc3N1ZXM6IFZJU0lUX0FDVElPTlMubWFwKChhKSA9PiAoeyAuLi5hIH0pKSB9XSxcbiAgfTtcblxuICAvKiogQWN0aXZpdHkgbG9nIGNvbnRyb2xzLiAqL1xuICBzZWFyY2ggPSAnJztcbiAgZGF0ZVJhbmdlID0gJyc7XG4gIGl0ZW1zUGVyUGFnZSA9IDEwO1xuICBjdXJyZW50UGFnZSA9IDE7XG4gIHJlYWRvbmx5IHBhZ2VTaXplcyA9IFsxMCwgMjAsIDMwXTtcbiAgLyoqIFRvdGFsIGFjdGl2aXR5IHJvd3MgcmVwb3J0ZWQgYnkgdGhlIEFQSSAoc2VydmVyLXNpZGUgcGFnaW5hdGlvbikuICovXG4gIHRvdGFsSXRlbXMgPSAwO1xuXG4gIGF1ZGl0V2FpdGluZyA9IDA7XG4gIHRhc2tXYWl0aW5nID0gMDtcblxuICByb3dzOiBBY3Rpdml0eVJvd1tdID0gW107XG4gIGNvbHVtbnM6IEFwcHJvdmFsQ29sdW1uW10gPSB0aGlzLmJ1aWxkQ29sdW1ucygpO1xuXG4gIGNhcmRzTG9hZGluZyA9IHRydWU7XG4gIGFwcHJvdmFsc0xvYWRpbmcgPSB0cnVlO1xuICBsb2dMb2FkaW5nID0gdHJ1ZTtcblxuICBwcml2YXRlIGhlYWRlckRhdGE6IGFueTtcbiAgcHJpdmF0ZSByZWFkb25seSB1c2VyRW1haWxlczogc3RyaW5nW10gPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd1c2Vyc0VtYWlsLWluZm8nKSB8fCAnW10nKTtcbiAgcHJpdmF0ZSByZWFkb25seSBhcHByb3ZhbFNlYXJjaCQgPSBuZXcgU3ViamVjdDxzdHJpbmc+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VhcmNoJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSB0cmF4U2VydmljZTogVHJheFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgKSB7IH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmdzLmRhdGFSYW5nZVZhbHVlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlYm91bmNlVGltZSgzMDApKVxuICAgICAgLnN1YnNjcmliZSgoZGF0YTogYW55KSA9PiB7XG4gICAgICAgIGlmICghZGF0YT8uY2xpZW50KSB7IHJldHVybjsgfVxuICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xuICAgICAgICB0aGlzLmRhdGVSYW5nZSA9IHRoaXMuZm10KGRhdGEuZGF0ZT8uc3RhcnREYXRlLCAnREQtTU0tWVlZWScpICsgJyAtICcgKyB0aGlzLmZtdChkYXRhLmRhdGU/LmVuZERhdGUsICdERC1NTS1ZWVlZJyk7XG4gICAgICAgIHRoaXMuYWN0aXZpdHlSYW5nZSA9IHRoaXMuZGVmYXVsdEFjdGl2aXR5UmFuZ2UoZGF0YS5kYXRlKTtcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgICAgIHRoaXMubG9hZENhcmRzKCk7XG4gICAgICAgIHRoaXMubG9hZEFwcHJvdmFscygpO1xuICAgICAgICB0aGlzLmxvYWRBY3Rpdml0eSgpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLmFwcHJvdmFsU2VhcmNoJFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoNDAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5sb2FkQXBwcm92YWxzKCkpO1xuXG4gICAgdGhpcy5zZWFyY2gkXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlYm91bmNlVGltZSg0MDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgICAgICB0aGlzLmxvYWRBY3Rpdml0eSgpO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogQWN0aXZpdHkgTG9nJ3Mgc3RhcnRpbmcgcmFuZ2U6IHRoZSBoZWFkZXIgcmFuZ2UsIGV4Y2VwdCB0aGF0IG9uZSBlbmRpbmcgeWVzdGVyZGF5IHJ1bnMgb24gdG8gdG9kYXkuXG4gICAqIFRoZSBoZWFkZXIncyBwcmVzZXRzIChhbmQgaXRzIGRlZmF1bHQpIHN0b3AgYXQgeWVzdGVyZGF5IGJlY2F1c2UgYW5hbHl0aWNzIGxhbmQgYSBkYXkgbGF0ZSwgYnV0IHRoZVxuICAgKiBsb2cgaXMgbGl2ZTogd2l0aG91dCB0aGlzLCB3aGF0IHdhcyBzdGFydGVkIG9yIHN1Ym1pdHRlZCB0b2RheSBuZXZlciBzaG93cyB1bnRpbCB0aGUgcmFuZ2UgaXMgY2hhbmdlZC5cbiAgICovXG4gIHByaXZhdGUgZGVmYXVsdEFjdGl2aXR5UmFuZ2UoZGF0ZTogYW55KTogeyBzdGFydERhdGU6IHN0cmluZzsgZW5kRGF0ZTogc3RyaW5nIH0gfCBudWxsIHtcbiAgICBpZiAoIWRhdGU/LnN0YXJ0RGF0ZSB8fCAhZGF0ZT8uZW5kRGF0ZSkgeyByZXR1cm4gbnVsbDsgfVxuICAgIGNvbnN0IHllc3RlcmRheSA9IGRheWpzKCkuc3VidHJhY3QoMSwgJ2RheScpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICAgIGNvbnN0IGVuZERhdGUgPSBkYXRlLmVuZERhdGUgPT09IHllc3RlcmRheSA/IGRheWpzKCkuZm9ybWF0KCdZWVlZLU1NLUREJykgOiBkYXRlLmVuZERhdGU7XG4gICAgcmV0dXJuIHsgc3RhcnREYXRlOiBkYXRlLnN0YXJ0RGF0ZSwgZW5kRGF0ZSB9O1xuICB9XG5cbiAgLyoqIENvbW1vbiBoZWFkZXItZmlsdGVyIHNjb3BlIGV2ZXJ5IGFjdGlvbi1jZW50ZXIgY2FsbCBjYXJyaWVzLiAqL1xuICBwcml2YXRlIGJhc2VQYXlsb2FkKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB7XG4gICAgICBjbGllbnRJZDogdGhpcy5oZWFkZXJEYXRhPy5jbGllbnQsXG4gICAgICBmcm9tRGF0ZTogdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUsXG4gICAgICB0b0RhdGU6IHRoaXMuaGVhZGVyRGF0YT8uZGF0ZT8uZW5kRGF0ZSxcbiAgICAgIHN0b3JlSWQ6ICh0aGlzLmhlYWRlckRhdGE/LnN0b3JlcyB8fCBbXSkuZmlsdGVyKChzOiBhbnkpID0+IHMuY2hlY2tlZCkubWFwKChzOiBhbnkpID0+IHMuc3RvcmVJZCksXG4gICAgICB1c2VyRW1haWxlczogdGhpcy51c2VyRW1haWxlc1xuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGxvYWRDYXJkcygpOiB2b2lkIHtcbiAgICB0aGlzLmNhcmRzTG9hZGluZyA9IHRydWU7XG4gICAgdGhpcy50cmF4U2VydmljZS5hdWRpdEFjdGlvbkNlbnRlckNhcmRzKHRoaXMuYmFzZVBheWxvYWQoKSlcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBjYXJkID0gcmVzPy5jb2RlID09PSAyMDAgPyAocmVzLmRhdGE/LmNhcmREYXRhIHx8IHt9KSA6IHt9O1xuICAgICAgICAgIHRoaXMuYXVkaXRXYWl0aW5nID0gTnVtYmVyKGNhcmQuYXVkaXRBcHByb3ZhbCkgfHwgMDtcbiAgICAgICAgICB0aGlzLnRhc2tXYWl0aW5nID0gTnVtYmVyKGNhcmQudGFza0FwcHJvdmFsKSB8fCAwO1xuICAgICAgICAgIHRoaXMuY2FyZHNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5hdWRpdFdhaXRpbmcgPSAwO1xuICAgICAgICAgIHRoaXMudGFza1dhaXRpbmcgPSAwO1xuICAgICAgICAgIHRoaXMuY2FyZHNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkQXBwcm92YWxzKCk6IHZvaWQge1xuICAgIHRoaXMuYXBwcm92YWxzTG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuYXBwcm92YWxTY29wZSA9PT0gJ0FsbCcgPyAnYWxsJyA6IHRoaXMuYXBwcm92YWxTY29wZSA9PT0gJ1Rhc2snID8gJ3Rhc2snIDogJ2F1ZGl0JztcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmF1ZGl0QWN0aW9uQ2VudGVyQXBwcm92YWxzKHtcbiAgICAgIC4uLnRoaXMuYmFzZVBheWxvYWQoKSxcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLmFwcHJvdmFsU2VhcmNoLnRyaW0oKSxcbiAgICAgIHR5cGVcbiAgICB9KS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCBkYXRhID0gcmVzPy5jb2RlID09PSAyMDAgPyAocmVzLmRhdGEgfHwge30pIDoge307XG4gICAgICAgIHRoaXMuY29sdW1ucyA9IHRoaXMuYnVpbGRDb2x1bW5zKCk7XG4gICAgICAgIHRoaXMuY29sdW1uc1swXS5jYXJkcyA9IChkYXRhLm9wZW4gfHwgW10pLm1hcCgoeDogYW55KSA9PiB0aGlzLnRvQ2FyZCh4LCAnb3BlbicpKTtcbiAgICAgICAgdGhpcy5jb2x1bW5zWzFdLmNhcmRzID0gKGRhdGEuaW5wcm9ncmVzcyB8fCBbXSkubWFwKCh4OiBhbnkpID0+IHRoaXMudG9DYXJkKHgsICdpbnByb2dyZXNzJykpO1xuICAgICAgICB0aGlzLmNvbHVtbnNbMl0uY2FyZHMgPSAoZGF0YS5kb25lIHx8IFtdKS5tYXAoKHg6IGFueSkgPT4gdGhpcy50b0NhcmQoeCwgJ2FwcHJvdmVkJykpO1xuICAgICAgICB0aGlzLmFwcHJvdmFsc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgdGhpcy5jb2x1bW5zID0gdGhpcy5idWlsZENvbHVtbnMoKTtcbiAgICAgICAgdGhpcy5hcHByb3ZhbHNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB0b0NhcmQoeDogYW55LCBjb2x1bW46IEFwcHJvdmFsQ29sdW1uWydrZXknXSk6IEFwcHJvdmFsQ2FyZCB7XG4gICAgY29uc3Qgc3RvcmVzID0gTnVtYmVyKHg/LnN0b3JlQ291bnQpIHx8IDA7XG4gICAgY29uc3Qgc3RvcmUgPSB4Py5jb3ZlcmFnZSA9PT0gJ3VzZXInXG4gICAgICA/ICh4Py51c2VyTmFtZSB8fCAn4oCUJylcbiAgICAgIDogKHN0b3JlcyA+IDEgPyBzdG9yZXMgKyAnIHN0b3JlcycgOiAoeD8uc3RvcmVOYW1lIHx8IChzdG9yZXMgPT09IDEgPyAnMSBzdG9yZScgOiAn4oCUJykpKTtcbiAgICBjb25zdCBwZW5kaW5nID0gTnVtYmVyKHg/LnBlbmRpbmcpIHx8IDA7XG4gICAgY29uc3Qgc3VibWl0dGVkID0gTnVtYmVyKHg/LnN1Ym1pdENvdW50KSB8fCAwO1xuICAgIGNvbnN0IGFwcHJvdmVkID0gTnVtYmVyKHg/LmFwcHJvdmVDb3VudCkgfHwgMDtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogeD8uY2hlY2tMaXN0TmFtZSB8fCAn4oCUJyxcbiAgICAgIHN0b3JlLFxuICAgICAgYnk6IHBlbmRpbmcgPyBwZW5kaW5nICsgJyBhd2FpdGluZyBhcHByb3ZhbCcgOiAoeD8udXNlck5hbWUgfHwgeD8uY3JlYXRlZEJ5TmFtZSB8fCAn4oCUJyksXG4gICAgICB3aGVuOiB4Py5wdWJsaXNoRGF0ZSA/IHRoaXMuZm10KHgucHVibGlzaERhdGUsICdERCBNTU0gWVlZWScpIDogJ+KAlCcsXG4gICAgICB0eXBlTGFiZWw6IHg/Lm1vZHVsZSA9PT0gJ3Rhc2snID8gJ1Rhc2snIDogJ0F1ZGl0JyxcbiAgICAgIHN1Ym1pdHRlZExhYmVsOiBzdG9yZXMgPyBgU3VibWl0dGVkICR7c3VibWl0dGVkfSAvICR7c3RvcmVzfWAgOiAnJyxcbiAgICAgIGFwcHJvdmVkTGFiZWw6IHN1Ym1pdHRlZCA/IGBBcHByb3ZlZCAke2FwcHJvdmVkfSAvICR7c3VibWl0dGVkfWAgOiAnJyxcbiAgICAgIHJlZG86ICEheD8ucmVkbyxcbiAgICAgIC4uLnRoaXMuY2FyZExpbmsoeCwgY29sdW1uLCBzdWJtaXR0ZWQpLFxuICAgICAgcmF3OiB4XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGVyZSBhIGNhcmQgbGFuZHM6IHRoZSBHYWxsZXJ5IG9uIHRoYXQgYXVkaXQgYW5kIGRheSAoYW5kIHN0b3JlLCB3aGVuIHRoZSBjYXJkIGlzIG9uZSBzdG9yZSksXG4gICAqIG5hcnJvd2VkIHRvIHdoYXQgdGhlIGNvbHVtbiBtZWFucy4gT3BlbiA9IGF3YWl0aW5nIGFwcHJvdmFsLCBBcHByb3ZlZCA9IGFwcHJvdmVkOyBJbnByb2dyZXNzXG4gICAqIHNob3dzIGV2ZXJ5IHN1Ym1pc3Npb24uIFRoZSBHYWxsZXJ5IGxpc3RzIHN1Ym1pdHRlZCAob3Igc2VudC1iYWNrKSB2aXNpdHMgb25seSwgc28gYSBjYXJkIHdpdGhcbiAgICogbm9uZSBzdGF5cyBjbG9zZWQuIFRhc2sgY2FyZHMgb3BlbiB0aGUgR2FsbGVyeSB3aXRoIFR5cGUgVGFzayAodHlwZT10YXNrOyBhdWRpdD0gaXMgdGhlIHRhc2sgaWQpLlxuICAgKi9cbiAgcHJpdmF0ZSBjYXJkTGluayh4OiBhbnksIGNvbHVtbjogQXBwcm92YWxDb2x1bW5bJ2tleSddLCBzdWJtaXR0ZWQ6IG51bWJlcik6IFBpY2s8QXBwcm92YWxDYXJkLCAnbGluaycgfCAnaGludCc+IHtcbiAgICBjb25zdCB0YXNrID0geD8ubW9kdWxlID09PSAndGFzayc7XG4gICAgY29uc3QgYXVkaXQgPSBTdHJpbmcoeD8uc291cmNlQ2hlY2tsaXN0SWQgfHwgJycpO1xuICAgIGNvbnN0IGRhdGUgPSB0aGlzLmlzb0RheSh4Py5wdWJsaXNoRGF0ZSk7XG4gICAgaWYgKCFhdWRpdCB8fCAhZGF0ZSkge1xuICAgICAgcmV0dXJuIHsgbGluazogbnVsbCwgaGludDogJycgfTtcbiAgICB9XG4gICAgaWYgKCFzdWJtaXR0ZWQgJiYgIXg/LnJlZG8pIHtcbiAgICAgIHJldHVybiB7IGxpbms6IG51bGwsIGhpbnQ6ICdOb3RoaW5nIHN1Ym1pdHRlZCB5ZXQsIHNvIHRoZXJlIGlzIG5vdGhpbmcgdG8gcmV2aWV3IGluIHRoZSBHYWxsZXJ5JyB9O1xuICAgIH1cbiAgICBjb25zdCBzdGF0dXMgPSBjb2x1bW4gPT09ICdvcGVuJyA/ICdOb3QtQXBwcm92ZWQnIDogY29sdW1uID09PSAnYXBwcm92ZWQnID8gJ0FwcHJvdmVkJyA6ICcnO1xuICAgIGNvbnN0IHNpbmdsZSA9IE51bWJlcih4Py5zdG9yZUNvdW50KSA9PT0gMSAmJiB4Py5zdG9yZUlkO1xuICAgIHJldHVybiB7XG4gICAgICBsaW5rOiB7XG4gICAgICAgIGF1ZGl0LCBkYXRlLFxuICAgICAgICAuLi4oc2luZ2xlID8geyBzdG9yZTogU3RyaW5nKHguc3RvcmVJZCkgfSA6IHt9KSxcbiAgICAgICAgLi4uKHN0YXR1cyA/IHsgc3RhdHVzIH0gOiB7fSksXG4gICAgICAgIC4uLih0YXNrID8geyB0eXBlOiAndGFzaycgfSA6IHt9KVxuICAgICAgfSxcbiAgICAgIGhpbnQ6IGNvbHVtbiA9PT0gJ29wZW4nID8gJ1JldmlldyB0aGUgc3VibWlzc2lvbnMgYXdhaXRpbmcgYXBwcm92YWwgaW4gdGhlIEdhbGxlcnknXG4gICAgICAgIDogY29sdW1uID09PSAnYXBwcm92ZWQnID8gJ1ZpZXcgdGhlIGFwcHJvdmVkIHN1Ym1pc3Npb25zIGluIHRoZSBHYWxsZXJ5J1xuICAgICAgICAgIDogJ1ZpZXcgdGhlIHN1Ym1pc3Npb25zIGluIHRoZSBHYWxsZXJ5J1xuICAgIH07XG4gIH1cblxuICAvKiogZGF0ZV9pc28gaXMgdGhlIHZpc2l0IGRheSBhdCBVVEMgbWlkbmlnaHQ7IHJlYWQgaXRzIGRhdGUgcGFydCBzbyBubyB0aW1lIHpvbmUgc2hpZnRzIHRoZSBkYXkuICovXG4gIHByaXZhdGUgaXNvRGF5KHZhbHVlOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmICghdmFsdWUpIHsgcmV0dXJuICcnOyB9XG4gICAgY29uc3QgbSA9IC9eKFxcZHs0fS1cXGR7Mn0tXFxkezJ9KS8uZXhlYyhTdHJpbmcodmFsdWUpKTtcbiAgICByZXR1cm4gbSA/IG1bMV0gOiBkYXlqcyh2YWx1ZSkuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gIH1cblxuICBvcGVuQ2FyZChjYXJkOiBBcHByb3ZhbENhcmQpOiB2b2lkIHtcbiAgICBpZiAoIWNhcmQubGluaykgeyByZXR1cm47IH1cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJy9tYW5hZ2UvdHJheC9hdWRpdC12Mi9nYWxsZXJ5J10sIHsgcXVlcnlQYXJhbXM6IGNhcmQubGluayB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEFjdGl2aXR5KCk6IHZvaWQge1xuICAgIHRoaXMubG9nTG9hZGluZyA9IHRydWU7XG4gICAgY29uc3QgYWN0aW9ucyA9IHRoaXMuYWN0aW9uc0J5VGFiW3RoaXMudGFiXTtcbiAgICB0aGlzLnRyYXhTZXJ2aWNlLmF1ZGl0QWN0aW9uQ2VudGVyQWN0aXZpdHkoe1xuICAgICAgLi4udGhpcy5iYXNlUGF5bG9hZCgpLFxuICAgICAgLi4uKHRoaXMuYWN0aXZpdHlSYW5nZSA/IHsgZnJvbURhdGU6IHRoaXMuYWN0aXZpdHlSYW5nZS5zdGFydERhdGUsIHRvRGF0ZTogdGhpcy5hY3Rpdml0eVJhbmdlLmVuZERhdGUgfSA6IHt9KSxcbiAgICAgIHR5cGU6IHRoaXMudGFiID09PSAnVGFzaycgPyAndGFzaycgOiAnYXVkaXQnLFxuICAgICAgbGltaXQ6IHRoaXMuaXRlbXNQZXJQYWdlLFxuICAgICAgb2Zmc2V0OiB0aGlzLmN1cnJlbnRQYWdlLFxuICAgICAgc2VhcmNoVmFsdWU6IHRoaXMuc2VhcmNoLnRyaW0oKSxcbiAgICAgIC8vIExvZ2dlZCBhdWRpdCAvIHNjaGVkdWxlIGFjdGlvbnMgY29tZSBiYWNrIG9uIHRoaXMgYnJvd3NlcidzIGNsb2NrLCBzdGFtcGVkIGFzIFVUQyBsaWtlIHRoZSB2aXNpdCB0aW1lcy5cbiAgICAgIHR6T2Zmc2V0OiBuZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCksXG4gICAgICAvLyBPbmx5IHNlbnQgd2hlbiBuYXJyb3dlZCwgc28gYW4gQVBJIHdpdGhvdXQgdGhlIGZpbHRlciBzdGlsbCBzZXJ2ZXMgdGhlIHVuZmlsdGVyZWQgbG9nLlxuICAgICAgLi4uKGFjdGlvbnMubGVuZ3RoID8geyBhY3Rpb246IGFjdGlvbnMgfSA6IHt9KVxuICAgIH0pLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSByZXM/LmNvZGUgPT09IDIwMCA/IChyZXMuZGF0YSB8fCB7fSkgOiB7fTtcbiAgICAgICAgdGhpcy5yb3dzID0gKGRhdGEuYWN0aXZpdHlMb2dEYXRhIHx8IFtdKS5tYXAoKGxvZzogYW55KSA9PiB0aGlzLnRvUm93KGxvZykpO1xuICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSBOdW1iZXIoZGF0YS5jb3VudCkgfHwgMDtcbiAgICAgICAgdGhpcy5sb2dMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMucm93cyA9IFtdO1xuICAgICAgICB0aGlzLnRvdGFsSXRlbXMgPSAwO1xuICAgICAgICB0aGlzLmxvZ0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogc3RhcnRUaW1lIC8gc3VibWl0VGltZSBhcmUgdGhlIHN0b3JlJ3Mgd2FsbCBjbG9jayBzdGFtcGVkIGFzIFVUQyAodGhlIG1vYmlsZSBzdWJtaXQpLCBzbyB0aGV5IGFyZSByZWFkXG4gICAqIGFzIFVUQzogYSBsb2NhbCByZWFkIHdvdWxkIGFkZCB0aGUgYnJvd3NlcidzIG9mZnNldCAoKzU6MzAgaW4gSVNUKSBhbmQgcHVzaCBldmVuaW5nIGV2ZW50cyBpbnRvIHRoZSBuZXh0IGRheS5cbiAgICogTG9nZ2VkIGF1ZGl0IC8gc2NoZWR1bGUgYWN0aW9ucyAoa2luZCAnbG9nJykgYXJyaXZlIGFscmVhZHkgbW92ZWQgdG8gdGhpcyBicm93c2VyJ3MgY2xvY2sgKHR6T2Zmc2V0KSwgc28gdGhlXG4gICAqIHNhbWUgVVRDIHJlYWQgc2hvd3MgdGhlbSBpbiBsb2NhbCB0aW1lLlxuICAgKi9cbiAgcHJpdmF0ZSBldmVudFRpbWUobG9nOiBhbnkpOiBkYXlqcy5EYXlqcyB8IG51bGwge1xuICAgIHJldHVybiBsb2c/LmF0ID8gZGF5anMudXRjKGxvZy5hdCkgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSB0b1Jvdyhsb2c6IGFueSk6IEFjdGl2aXR5Um93IHtcbiAgICBjb25zdCBhdCA9IHRoaXMuZXZlbnRUaW1lKGxvZyk7XG4gICAgY29uc3QgYmFkZ2UgPSBBQ1RJT05fQkFER0VbdGhpcy5hY3Rpb25LZXkobG9nKV07XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IGxvZz8uY2hlY2tMaXN0TmFtZSB8fCAn4oCUJyxcbiAgICAgIGRldGFpbDogdGhpcy5hY3Rpb25EZXRhaWwobG9nKSxcbiAgICAgIC8vIFVua25vd24gbG9nZ2VkIGFjdGlvbnMga2VlcCB0aGUgQVBJJ3Mgb3duIHRleHQuXG4gICAgICBhY3Rpb246IGJhZGdlPy5sYWJlbCB8fCBTdHJpbmcobG9nPy5hY3Rpb24gfHwgJ+KAlCcpLFxuICAgICAgdG9uZTogYmFkZ2U/LnRvbmUgfHwgJ2dyYXknLFxuICAgICAgYnk6IGxvZz8udXNlckVtYWlsIHx8IGxvZz8udXNlck5hbWUgfHwgJ+KAlCcsXG4gICAgICBzdG9yZTogbG9nPy5zdG9yZU5hbWUgfHwgJ+KAlCcsXG4gICAgICBkYXk6IGF0ID8gKGF0LmZvcm1hdCgnWVlZWS1NTS1ERCcpID09PSBkYXlqcygpLmZvcm1hdCgnWVlZWS1NTS1ERCcpID8gJ1RvZGF5JyA6IGF0LmZvcm1hdCgnREQgTU1NIFlZWVknKSkgOiAn4oCUJyxcbiAgICAgIHRpbWU6IGF0ID8gYXQuZm9ybWF0KCdoaCA6IG1tIEEnKSA6ICfigJQnLFxuICAgICAgLy8gVmlldyBvcGVucyBhIHN1Ym1pdHRlZCBhdWRpdCAoQXVkaXQgdGFiKSBvciB0YXNrIChUYXNrIHRhYiwgR2FsbGVyeSBUeXBlIFRhc2spIGluIHRoZSBHYWxsZXJ5OyBhIGxvZ2dlZFxuICAgICAgLy8gYXVkaXQgLyBzY2hlZHVsZSBhY3Rpb24gaGFzIG5vIHN1Ym1pc3Npb24gKHRoZSBBUEkgc2VuZHMgdmlld2FibGUgZmFsc2UgZm9yIHRob3NlKS5cbiAgICAgIHZpZXdhYmxlOiAhIWxvZz8udmlld2FibGUgJiYgbG9nPy5raW5kICE9PSAnbG9nJyxcbiAgICAgIHJhdzogbG9nXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBMb2dnZWQgcm93cyBjYXJyeSB0aGVpciBzdG9yZWQga2V5IGluIGFjdGl2aXR5VHlwZTsgdmlzaXQgcm93cyBvbmx5IGhhdmUgdGhlIGxhYmVsLiAqL1xuICBwcml2YXRlIGFjdGlvbktleShsb2c6IGFueSk6IHN0cmluZyB7XG4gICAgaWYgKGxvZz8ua2luZCA9PT0gJ2xvZycpIHsgcmV0dXJuIFN0cmluZyhsb2c/LmFjdGl2aXR5VHlwZSB8fCAnJyk7IH1cbiAgICByZXR1cm4gbG9nPy5hY3Rpb24gPT09ICdTdWJtaXR0ZWQgYnknID8gJ3N1Ym1pdCcgOiAnc3RhcnQnO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoYXQgdGhlIEFQSSB1c2VkIHRvIGZvbGQgaW50byB0aGUgbGFiZWw6IHRoZSBzY2hlZHVsZSBhIHNjaGVkdWxlIGFjdGlvbiB3YXMgb24sIGFuZCB0aGUgY29weSBhIGR1cGxpY2F0ZVxuICAgKiBtYWRlIChhdWRpdCBhbmQgc2NoZWR1bGUgZHVwbGljYXRlcyBib3RoIHN0b3JlIGRldGFpbHMuY29weU5hbWUpLlxuICAgKi9cbiAgcHJpdmF0ZSBhY3Rpb25EZXRhaWwobG9nOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChsb2c/LmtpbmQgIT09ICdsb2cnKSB7IHJldHVybiAnJzsgfVxuICAgIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGlmIChTdHJpbmcobG9nPy5hY3Rpdml0eVR5cGUgfHwgJycpLnN0YXJ0c1dpdGgoJ3NjaGVkdWxlJykgJiYgbG9nPy5zY2hlZHVsZU5hbWUpIHtcbiAgICAgIHBhcnRzLnB1c2goJ1NjaGVkdWxlOiAnICsgbG9nLnNjaGVkdWxlTmFtZSk7XG4gICAgfVxuICAgIGlmIChsb2c/LmRldGFpbHM/LmNvcHlOYW1lKSB7XG4gICAgICBwYXJ0cy5wdXNoKCdDb3B5OiAnICsgbG9nLmRldGFpbHMuY29weU5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gcGFydHMuam9pbignIMK3ICcpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlZXAgbGluayBmb3IgXCJWaWV3XCI6IHRoZSBHYWxsZXJ5IHByZS1zZWxlY3RzIHRoaXMgYXVkaXQsIHN0b3JlIGFuZCB2aXNpdCBkYXkuIFRoZSBHYWxsZXJ5IGxpc3RzIHZpc2l0cyBieVxuICAgKiB0aGVpciBvd24gZGF0ZSwgd2hpY2ggY2FuIGJlIGVhcmxpZXIgdGhhbiB0aGUgc3VibWl0IGRheSwgc28gdGhlIHZpc2l0J3MgZGF0ZV9zdHJpbmcgd2lucyB3aGVuIHRoZSBBUEkgc2VuZHMgaXQuXG4gICAqL1xuICBnYWxsZXJ5UGFyYW1zKHJvdzogQWN0aXZpdHlSb3cpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICBjb25zdCBsb2cgPSByb3cucmF3IHx8IHt9O1xuICAgIGNvbnN0IGF0ID0gdGhpcy5ldmVudFRpbWUobG9nKTtcbiAgICByZXR1cm4ge1xuICAgICAgYXVkaXQ6IFN0cmluZyhsb2cuc291cmNlQ2hlY2tMaXN0X2lkIHx8ICcnKSxcbiAgICAgIHN0b3JlOiBTdHJpbmcobG9nLnN0b3JlSWQgfHwgJycpLFxuICAgICAgZGF0ZTogbG9nLmRhdGVfc3RyaW5nID8gU3RyaW5nKGxvZy5kYXRlX3N0cmluZykgOiAoYXQgPyBhdC5mb3JtYXQoJ1lZWVktTU0tREQnKSA6ICcnKSxcbiAgICAgIC8vIFRhc2sgdGFiIHJvd3MgYXJlIHRhc2sgc3VibWlzc2lvbnM6IHRoZSBHYWxsZXJ5IG9wZW5zIHdpdGggVHlwZSBUYXNrLlxuICAgICAgLi4uKHRoaXMudGFiID09PSAnVGFzaycgPyB7IHR5cGU6ICd0YXNrJyB9IDoge30pXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgZm10KHZhbHVlOiBhbnksIHBhdHRlcm46IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlID8gZGF5anModmFsdWUpLmZvcm1hdChwYXR0ZXJuKSA6ICfigJQnO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENvbHVtbnMoKTogQXBwcm92YWxDb2x1bW5bXSB7XG4gICAgY29uc3Qgbm91biA9IHRoaXMuYXBwcm92YWxTY29wZSA9PT0gJ1Rhc2snID8gJ1Rhc2snIDogJ0F1ZGl0JztcbiAgICByZXR1cm4gW1xuICAgICAgeyBrZXk6ICdvcGVuJywgdGl0bGU6ICdPcGVuJywgZW1wdHk6ICdUaGVyZSBpcyBubyByZXN1bHQgZm9yIE9wZW4gJyArIG5vdW4sIGNhcmRzOiBbXSB9LFxuICAgICAgeyBrZXk6ICdpbnByb2dyZXNzJywgdGl0bGU6ICdJbnByb2dyZXNzJywgZW1wdHk6ICdUaGVyZSBpcyBubyByZXN1bHQgZm9yIElucHJvZ3Jlc3MgJyArIG5vdW4sIGNhcmRzOiBbXSB9LFxuICAgICAgeyBrZXk6ICdhcHByb3ZlZCcsIHRpdGxlOiAnQXBwcm92ZWQnLCBlbXB0eTogJ1RoZXJlIGlzIG5vIHJlc3VsdCBmb3IgQXBwcm92ZWQgJyArIG5vdW4sIGNhcmRzOiBbXSB9XG4gICAgXTtcbiAgfVxuXG4gIHNldFRhYih0YWI6IEFjdGlvblRhYik6IHZvaWQge1xuICAgIGlmICh0aGlzLnRhYiA9PT0gdGFiKSB7IHJldHVybjsgfVxuICAgIHRoaXMudGFiID0gdGFiO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMubG9hZEFjdGl2aXR5KCk7XG4gIH1cblxuICBvbkFwcHJvdmFsU2NvcGUoKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkQXBwcm92YWxzKCk7XG4gIH1cblxuICBvbkFwcHJvdmFsU2NvcGVTZWxlY3QoaXRlbTogeyBpZDogc3RyaW5nIH0gfCB1bmRlZmluZWQpOiB2b2lkIHtcbiAgICBjb25zdCBuZXh0ID0gaXRlbT8uaWQ7XG4gICAgaWYgKCFuZXh0IHx8IG5leHQgPT09IHRoaXMuYXBwcm92YWxTY29wZSkgeyByZXR1cm47IH1cbiAgICB0aGlzLmFwcHJvdmFsU2NvcGUgPSBuZXh0O1xuICAgIHRoaXMuYXBwcm92YWxTY29wZVNlbGVjdGVkID0gdGhpcy5hcHByb3ZhbFNjb3BlSXRlbXMuZmluZCgoaSkgPT4gaS5pZCA9PT0gbmV4dCkgfHwgdGhpcy5hcHByb3ZhbFNjb3BlSXRlbXNbMF07XG4gICAgdGhpcy5sb2FkQXBwcm92YWxzKCk7XG4gIH1cblxuICBvbkFjdGl2aXR5RGF0ZUNoYW5nZShldmVudDogeyBzdGFydERhdGU/OiBzdHJpbmc7IGVuZERhdGU/OiBzdHJpbmcgfSk6IHZvaWQge1xuICAgIGlmICghZXZlbnQ/LnN0YXJ0RGF0ZSB8fCAhZXZlbnQ/LmVuZERhdGUpIHsgcmV0dXJuOyB9XG4gICAgdGhpcy5hY3Rpdml0eVJhbmdlID0geyBzdGFydERhdGU6IGV2ZW50LnN0YXJ0RGF0ZSwgZW5kRGF0ZTogZXZlbnQuZW5kRGF0ZSB9O1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMubG9hZEFjdGl2aXR5KCk7XG4gIH1cblxuICBvbkFjdGl2aXR5RmlsdGVycyhldmVudDogYW55W10pOiB2b2lkIHtcbiAgICBjb25zdCBhY3Rpb25zID0gKGV2ZW50IHx8IFtdKS5maW5kKChmOiBhbnkpID0+IGY/LkRlc2NyaXB0aW9uID09PSAnQWN0aW9ucycpO1xuICAgIHRoaXMuYWN0aW9uc0J5VGFiW3RoaXMudGFiXSA9IChhY3Rpb25zPy5Jc3N1ZXMgfHwgW10pLm1hcCgoaTogYW55KSA9PiBpLmlkKTtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLmxvYWRBY3Rpdml0eSgpO1xuICB9XG5cbiAgb25BcHByb3ZhbFNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLmFwcHJvdmFsU2VhcmNoJC5uZXh0KHRoaXMuYXBwcm92YWxTZWFyY2gpO1xuICB9XG5cbiAgb25TZWFyY2goKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2gkLm5leHQodGhpcy5zZWFyY2gpO1xuICB9XG5cbiAgZ2V0IG5hbWVMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRhYiA9PT0gJ1Rhc2snID8gJ1Rhc2sgTmFtZScgOiAnQXVkaXQgTmFtZSc7XG4gIH1cblxuICBnZXQgc2VhcmNoSGludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRhYiA9PT0gJ1Rhc2snID8gJ1NlYXJjaCB3aXRoIFN0b3JlLCBFbWFpbCwgVGFzaycgOiAnU2VhcmNoIHdpdGggU3RvcmUsIEVtYWlsLCBBdWRpdCc7XG4gIH1cblxuICAvKiogU2VhcmNoIGFuZCBwYWdpbmcgYXJlIHNlcnZlci1zaWRlOyB0aGUgcGFnZSB3ZSBob2xkIGlzIHRoZSBwYWdlIHdlIHNob3cuICovXG4gIGdldCBmaWx0ZXJlZFJvd3MoKTogQWN0aXZpdHlSb3dbXSB7XG4gICAgcmV0dXJuIHRoaXMucm93cztcbiAgfVxuXG4gIGdldCBwYWdlUm93cygpOiBBY3Rpdml0eVJvd1tdIHtcbiAgICByZXR1cm4gdGhpcy5yb3dzO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlKHBhZ2U6IG51bWJlcik6IHZvaWQge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xuICAgIHRoaXMubG9hZEFjdGl2aXR5KCk7XG4gIH1cblxuICAvKiogUm93cyBwZXIgcGFnZSAoMTAgLyAyMCAvIDMwKSBmcm9tIHRoZSBwYWdlcidzIHNpemUgZHJvcGRvd247IGJhY2sgdG8gcGFnZSAxLiAqL1xuICBvblBhZ2VTaXplQ2hhbmdlKHNpemU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gTnVtYmVyKHNpemUpIHx8IDEwO1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIHRoaXMubG9hZEFjdGl2aXR5KCk7XG4gIH1cblxuICB0cmFja0J5Um93KGluZGV4OiBudW1iZXIsIHJvdzogQWN0aXZpdHlSb3cpOiBzdHJpbmcge1xuICAgIHJldHVybiAocm93LnJhdz8ucHJvY2Vzc2VkQ2hlY2tsaXN0SWQgfHwgcm93LnJhdz8ubG9nSWQgfHwgcm93LnN0b3JlKSArIHJvdy5hY3Rpb24gKyBpbmRleDtcbiAgfVxuXG4gIHRyYWNrQnlDb2x1bW4oXzogbnVtYmVyLCBjb2w6IEFwcHJvdmFsQ29sdW1uKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY29sLmtleTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF2Mi1wYWdlXCI+XHJcblxyXG4gIDwhLS0gV2FpdGluZyBmb3IgYXBwcm92YWwgLS0+XHJcbiAgPGRpdiBjbGFzcz1cImF2Mi1ncmlkLTJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJhdjItc3RhdFwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImF2Mi1zayBhdjItc2stLXZhbHVlIGFjLXNrLXZhbHVlXCIgKm5nSWY9XCJjYXJkc0xvYWRpbmdcIj48L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiYXYyLXN0YXQtdmFsdWVcIiAqbmdJZj1cIiFjYXJkc0xvYWRpbmdcIj57eyBhdWRpdFdhaXRpbmcgfX08L3NwYW4+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiYXYyLXN0YXQtbGFiZWxcIj5BdWRpdCB3YWl0aW5nIGZvciBhcHByb3ZhbDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImF2Mi1zdGF0XCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiYXYyLXNrIGF2Mi1zay0tdmFsdWUgYWMtc2stdmFsdWVcIiAqbmdJZj1cImNhcmRzTG9hZGluZ1wiPjwvc3Bhbj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJhdjItc3RhdC12YWx1ZVwiICpuZ0lmPVwiIWNhcmRzTG9hZGluZ1wiPnt7IHRhc2tXYWl0aW5nIH19PC9zcGFuPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImF2Mi1zdGF0LWxhYmVsXCI+VGFzayB3YWl0aW5nIGZvciBhcHByb3ZhbDwvc3Bhbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIEFwcHJvdmFsIC0tPlxyXG4gIDxzZWN0aW9uIGNsYXNzPVwiYXYyLWNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJhdjItY2FyZC1oZWFkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhdjItdGl0bGUtYmxvY2tcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLWNhcmQtdGl0bGVcIj5BcHByb3ZhbDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdjItY2FyZC1zdWJcIj5BIHN1bW1hcnkgb2YgYWxsIHRoZSBhdWRpdHMgYXdhaXRpbmcgYXBwcm92YWw8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJhdjItc2VhcmNoIGF2Mi1zZWFyY2gtLW1kXCI+XHJcbiAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj5cclxuICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMVwiIGN5PVwiMTFcIiByPVwiN1wiPjwvY2lyY2xlPlxyXG4gICAgICAgICAgPGxpbmUgeDE9XCIxNi41XCIgeTE9XCIxNi41XCIgeDI9XCIyMVwiIHkyPVwiMjFcIj48L2xpbmU+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwiYXBwcm92YWxTZWFyY2hcIiAobmdNb2RlbENoYW5nZSk9XCJvbkFwcHJvdmFsU2VhcmNoKClcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cclxuICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC1zY29wZS1zZWxlY3RcIj5cclxuICAgICAgICA8bGliLXNlbGVjdCBbaXRlbXNdPVwiYXBwcm92YWxTY29wZUl0ZW1zXCIgW211bHRpXT1cImZhbHNlXCIgW3NlYXJjaEZpZWxkXT1cIidsYWJlbCdcIiBbaWRGaWVsZF09XCInaWQnXCJcclxuICAgICAgICAgIFtzZWxlY3RlZFZhbHVlc109XCJbYXBwcm92YWxTY29wZVNlbGVjdGVkXVwiIChzZWxlY3RlZCk9XCJvbkFwcHJvdmFsU2NvcGVTZWxlY3QoJGV2ZW50KVwiPjwvbGliLXNlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYXYyLWdyaWQtM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwcm92YWwtY29sXCIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5Q29sdW1uXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1jb2wtaGVhZFwiPlxyXG4gICAgICAgICAge3sgY29sLnRpdGxlIH19XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFhcHByb3ZhbHNMb2FkaW5nICYmIGNvbC5jYXJkcy5sZW5ndGhcIiBjbGFzcz1cImF2Mi1iYWRnZSBhdjItYmFkZ2UtLWNvdW50XCI+e3sgY29sLmNhcmRzLmxlbmd0aCB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGxpYi1hdWRpdC12Mi1zaGltbWVyICpuZ0lmPVwiYXBwcm92YWxzTG9hZGluZ1wiIFtyb3dzXT1cIjJcIj48L2xpYi1hdWRpdC12Mi1zaGltbWVyPlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWFwcHJvdmFsc0xvYWRpbmcgJiYgY29sLmNhcmRzLmxlbmd0aFwiIGNsYXNzPVwiYXBwcm92YWwtY2FyZHNcIj5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNhcmQgb2YgY29sLmNhcmRzXCIgY2xhc3M9XCJhcHByb3ZhbC1jYXJkXCIgW2NsYXNzLmFwcHJvdmFsLWNhcmQtLW9mZl09XCIhY2FyZC5saW5rXCJcclxuICAgICAgICAgICAgW2F0dHIucm9sZV09XCJjYXJkLmxpbmsgPyAnbGluaycgOiBudWxsXCIgW2F0dHIudGFiaW5kZXhdPVwiY2FyZC5saW5rID8gMCA6IG51bGxcIiBbYXR0ci50aXRsZV09XCJjYXJkLmhpbnQgfHwgbnVsbFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuQ2FyZChjYXJkKVwiIChrZXlkb3duLmVudGVyKT1cIm9wZW5DYXJkKGNhcmQpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC1jYXJkLWJhZGdlc1wiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXYyLWJhZGdlIGF2Mi1iYWRnZS0tcHVycGxlIGF2Mi1iYWRnZS0tY291bnRcIj57eyBjYXJkLnR5cGVMYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNhcmQucmVkb1wiIGNsYXNzPVwiYXYyLWJhZGdlIGF2Mi1iYWRnZS0td2FybmluZyBhdjItYmFkZ2UtLWNvdW50XCI+UmVkbzwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC1jYXJkLW5hbWVcIj57eyBjYXJkLm5hbWUgfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcHJvdmFsLWNhcmQtbWV0YVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7IGNhcmQuc3RvcmUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjYXJkLnN1Ym1pdHRlZExhYmVsXCI+e3sgY2FyZC5zdWJtaXR0ZWRMYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3Bhbj57eyBjYXJkLmJ5IH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcHJvdmFsLWNhcmQtZm9vdFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXBwcm92YWwtY2FyZC1kYXRlXCI+e3sgY2FyZC53aGVuIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY2FyZC5hcHByb3ZlZExhYmVsXCIgY2xhc3M9XCJhdjItYmFkZ2UgYXYyLWJhZGdlLS1zdWNjZXNzIGF2Mi1iYWRnZS0tY291bnRcIj57eyBjYXJkLmFwcHJvdmVkTGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhYXBwcm92YWxzTG9hZGluZyAmJiAhY29sLmNhcmRzLmxlbmd0aFwiIGNsYXNzPVwiYXYyLWVtcHR5XCI+XHJcbiAgICAgICAgICA8aW1nIGNsYXNzPVwiYXYyLWVtcHR5LWltZ1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLWVtcHR5LXRleHRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1lbXB0eS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1lbXB0eS1zdWJcIj57eyBjb2wuZW1wdHkgfX08L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvc2VjdGlvbj5cclxuXHJcbiAgPCEtLSBBY3Rpdml0eSBMb2cgLS0+XHJcbiAgPHNlY3Rpb24gY2xhc3M9XCJhdjItY2FyZCBhdjItY2FyZC0tbG9nXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXYyLWNhcmQtaGVhZCBhdjItY2FyZC1oZWFkLS1jZW50ZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImF2Mi1jYXJkLXRpdGxlIGF2Mi1jYXJkLXRpdGxlLS1ncm93XCI+QWN0aXZpdHkgTG9nPC9kaXY+XHJcblxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJhdjItc2VhcmNoIGF2Mi1zZWFyY2gtLWxnXCI+XHJcbiAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj5cclxuICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMVwiIGN5PVwiMTFcIiByPVwiN1wiPjwvY2lyY2xlPlxyXG4gICAgICAgICAgPGxpbmUgeDE9XCIxNi41XCIgeTE9XCIxNi41XCIgeDI9XCIyMVwiIHkyPVwiMjFcIj48L2xpbmU+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwic2VhcmNoXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2goKVwiIHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cInNlYXJjaEhpbnRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxyXG4gICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImxvZy1kYXRlLXBpY2tlclwiPlxyXG4gICAgICAgIDxsaWItZGF0ZS1yYW5nZS1waWNrZXIgW3JhbmdlXT1cImFjdGl2aXR5UmFuZ2VcIiAoZGF0ZUNoYW5nZSk9XCJvbkFjdGl2aXR5RGF0ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItZGF0ZS1yYW5nZS1waWNrZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBPbmUgZmlsdGVyIHBlciB0YWIgKGxpYi1maWx0ZXJzIHJlYWRzIGl0cyBvcHRpb25zIG9uY2UpOyBlYWNoIGtlZXBzIGl0cyBvd24gc2VsZWN0aW9uLiAtLT5cclxuICAgICAgPGxpYi1maWx0ZXJzICpuZ0lmPVwidGFiID09PSAnQXVkaXQnXCIgW2RhdGFPYmplY3RdPVwiYWN0aXZpdHlGaWx0ZXJEYXRhLkF1ZGl0XCIgKGFwcGxpZWRGaWx0ZXJzKT1cIm9uQWN0aXZpdHlGaWx0ZXJzKCRldmVudClcIj48L2xpYi1maWx0ZXJzPlxyXG4gICAgICA8bGliLWZpbHRlcnMgKm5nSWY9XCJ0YWIgPT09ICdUYXNrJ1wiIFtkYXRhT2JqZWN0XT1cImFjdGl2aXR5RmlsdGVyRGF0YS5UYXNrXCIgKGFwcGxpZWRGaWx0ZXJzKT1cIm9uQWN0aXZpdHlGaWx0ZXJzKCRldmVudClcIj48L2xpYi1maWx0ZXJzPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBBdWRpdCAvIFRhc2sgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXYyLXRhYnNcIj5cclxuICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgdCBvZiB0YWJzXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYXYyLXRhYlwiIFtjbGFzcy5pcy1hY3RpdmVdPVwidGFiID09PSB0XCJcclxuICAgICAgICAoY2xpY2spPVwic2V0VGFiKHQpXCI+e3sgdCB9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGxpYi1hdWRpdC12Mi1zaGltbWVyICpuZ0lmPVwibG9nTG9hZGluZ1wiPjwvbGliLWF1ZGl0LXYyLXNoaW1tZXI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImF2Mi10YWJsZS13cmFwXCIgKm5nSWY9XCIhbG9nTG9hZGluZ1wiPlxyXG4gICAgICA8dGFibGUgY2xhc3M9XCJhdjItdGFibGUgbG9nLXRhYmxlXCI+XHJcbiAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdjItdGgtc29ydFwiPkRhdGUgJmFtcDsgVGltZVxyXG4gICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyLjJcIlxyXG4gICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj5cclxuICAgICAgICAgICAgICAgICAgPGxpbmUgeDE9XCIxMlwiIHkxPVwiNFwiIHgyPVwiMTJcIiB5Mj1cIjIwXCI+PC9saW5lPlxyXG4gICAgICAgICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPVwiNiAxNCAxMiAyMCAxOCAxNFwiPjwvcG9seWxpbmU+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgIDx0aD57eyBuYW1lTGFiZWwgfX08L3RoPlxyXG4gICAgICAgICAgICA8dGg+QWN0aW9uIFBlcmZvcm1lZDwvdGg+XHJcbiAgICAgICAgICAgIDx0aD5QZXJmb3JtZWQgYnk8L3RoPlxyXG4gICAgICAgICAgICA8dGg+TmFtZTwvdGg+XHJcbiAgICAgICAgICAgIDx0aD5BY3Rpb25zPC90aD5cclxuICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC90aGVhZD5cclxuICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IHJvdyBvZiBwYWdlUm93czsgdHJhY2tCeTogdHJhY2tCeVJvd1wiPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1jZWxsLXN0YWNrXCI+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyByb3cuZGF5IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdjItbXV0ZWRcIj57eyByb3cudGltZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdjItY2VsbC1zdGFjayBsb2ctbmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhdjItZWxsaXBzaXNcIiBbdGl0bGVdPVwicm93Lm5hbWVcIj57eyByb3cubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93LmRldGFpbFwiIGNsYXNzPVwiYXYyLW11dGVkIGF2Mi1lbGxpcHNpc1wiIFt0aXRsZV09XCJyb3cuZGV0YWlsXCI+e3sgcm93LmRldGFpbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkPjxzcGFuIGNsYXNzPVwiYXYyLWJhZGdlIGFjdGl2aXR5LWFjdGlvblwiIFtuZ0NsYXNzXT1cInJvdy50b25lID09PSAncHJpbWFyeScgPyAnJyA6ICdhdjItYmFkZ2UtLScgKyByb3cudG9uZVwiXHJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwicm93LmFjdGlvblwiPnt7IHJvdy5hY3Rpb24gfX08L3NwYW4+PC90ZD5cclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdjItY2VsbC1pY29uIGF2Mi1kaW1cIj5cclxuICAgICAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNVwiIGhlaWdodD1cIjE1XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS44XCJcclxuICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiOFwiIHI9XCIzLjRcIj48L2NpcmNsZT5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk01IDIwYzAtMy42IDMuMS01LjYgNy01LjZzNyAyIDcgNS42XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyByb3cuYnkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLWNlbGwtaWNvbiBzdG9yZS1jZWxsXCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTVcIiBoZWlnaHQ9XCIxNVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuOFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTMgOWwxLjYtNC41aDE0LjhMMjEgOVwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk00IDl2MTFoMTZWOVwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDIwdi02aDZ2NlwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgcm93LnN0b3JlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgPGEgKm5nSWY9XCJyb3cudmlld2FibGVcIiBjbGFzcz1cImF2Mi1saW5rXCIgcm91dGVyTGluaz1cIi9tYW5hZ2UvdHJheC9hdWRpdC12Mi9nYWxsZXJ5XCJcclxuICAgICAgICAgICAgICAgIFtxdWVyeVBhcmFtc109XCJnYWxsZXJ5UGFyYW1zKHJvdylcIiB0aXRsZT1cIk9wZW4gdGhpcyBzdWJtaXNzaW9uIGluIHRoZSBHYWxsZXJ5XCI+VmlldzwvYT5cclxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFyb3cudmlld2FibGVcIiBjbGFzcz1cImF2Mi1mYWludFwiPi08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvdGJvZHk+XHJcbiAgICAgIDwvdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWxvZ0xvYWRpbmcgJiYgIWZpbHRlcmVkUm93cy5sZW5ndGhcIiBjbGFzcz1cImF2Mi1lbXB0eVwiPlxyXG4gICAgICA8aW1nIGNsYXNzPVwiYXYyLWVtcHR5LWltZ1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhdjItZW1wdHktdGV4dFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdjItZW1wdHktdGl0bGVcIj5ObyBkYXRhIGZvdW5kPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1lbXB0eS1zdWJcIj5UaGVyZSBpcyBubyByZXN1bHQgZm9yIHt7IHRhYiB9fTwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgKm5nSWY9XCIhbG9nTG9hZGluZyAmJiBmaWx0ZXJlZFJvd3MubGVuZ3RoXCIgY2xhc3M9XCJsb2ctcGFnaW5hdGlvblwiPlxyXG4gICAgICA8bGliLXBhZ2luYXRpb24gW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2VcIiBbcGFnZVNpemVdPVwiaXRlbXNQZXJQYWdlXCIgW3BhZ2luYXRpb25TaXplc109XCJwYWdlU2l6ZXNcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIiBbdG90YWxJdGVtc109XCJ0b3RhbEl0ZW1zXCJcclxuICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9zZWN0aW9uPlxyXG5cclxuPC9kaXY+XHJcbiJdfQ==
|
|
483
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXQtdjItYWN0aW9uLWNlbnRyZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2F1ZGl0LXYyL2FjdGlvbi1jZW50cmUvYXVkaXQtdjItYWN0aW9uLWNlbnRyZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90YW5nby1hbmFseXNlLXRyYXgvc3JjL2xpYi9jb21wb25lbnRzL2F1ZGl0LXYyL2FjdGlvbi1jZW50cmUvYXVkaXQtdjItYWN0aW9uLWNlbnRyZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXFCLFNBQVMsRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFFaEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTlFLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FBR25DLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFvRGxCOzs7OztHQUtHO0FBQ0gsTUFBTSxZQUFZLEdBQXdEO0lBQ3hFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtJQUMvQyxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUU7SUFDbEQsT0FBTyxFQUFFLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxNQUFNLEVBQUU7SUFDcEQsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFO0lBQy9DLFVBQVUsRUFBRSxF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WUFBWSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdkMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBYSxFQUFFLEdBQWdCO1FBQ3hDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLG9CQUFvQixJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUM3RixDQUFDO0lBRUQsYUFBYSxDQUFDLENBQVMsRUFBRSxHQUFtQjtRQUMxQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUM7SUFDakIsQ0FBQzt3R0E5YlUsNEJBQTRCOzRGQUE1Qiw0QkFBNEIsa0VDdkd6QyxxcFVBNkxBOzs0RkR0RmEsNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNFLDRCQUE0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFN1YmplY3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcclxuaW1wb3J0IHV0YyBmcm9tICdkYXlqcy9wbHVnaW4vdXRjJztcclxuaW1wb3J0IHsgVHJheFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90cmF4LnNlcnZpY2UnO1xyXG5cclxuZGF5anMuZXh0ZW5kKHV0Yyk7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFjdGl2aXR5Um93IHtcclxuICBuYW1lOiBzdHJpbmc7XHJcbiAgLyoqIFNlY29uZCBsaW5lIHVuZGVyIHRoZSBuYW1lOiB0aGUgc2NoZWR1bGUgKFwiU2NoZWR1bGU6IFhcIikgYW5kIC8gb3IgdGhlIGNvcHkgYSBkdXBsaWNhdGUgbWFkZSAoXCJDb3B5OiBYXCIpLiAqL1xyXG4gIGRldGFpbDogc3RyaW5nO1xyXG4gIC8qKlxyXG4gICAqIFNob3J0IGFjdGlvbiBsYWJlbDogXCJTdGFydGVkIGJ5XCIgLyBcIlN1Ym1pdHRlZCBieVwiIGZvciBhIHZpc2l0LCBvciBhIGxvZ2dlZCBhdWRpdCAvIHNjaGVkdWxlIGFjdGlvbiBzdWNoIGFzXHJcbiAgICogXCJBdWRpdCBjcmVhdGVkIGJ5XCIsIFwiRHVwbGljYXRlZCBieVwiLCBcIlNjaGVkdWxlIHB1Ymxpc2hlZCBieVwiLiBOYW1lcyBzdGF5IG91dCBvZiB0aGUgYmFkZ2UgKHNlZSBkZXRhaWwpLlxyXG4gICAqL1xyXG4gIGFjdGlvbjogc3RyaW5nO1xyXG4gIC8qKiBCYWRnZSBjb2xvdXIgZm9yIHRoZSBhY3Rpb24sIGZvbGxvd2luZyB0aGUgb2xkIEFjdGl2aXR5IExvZyAoc2VlIEFDVElPTl9CQURHRSkuICovXHJcbiAgdG9uZTogQWN0aW9uVG9uZTtcclxuICBieTogc3RyaW5nO1xyXG4gIHN0b3JlOiBzdHJpbmc7XHJcbiAgZGF5OiBzdHJpbmc7XHJcbiAgdGltZTogc3RyaW5nO1xyXG4gIC8qKiBTdWJtaXR0ZWQgZW50cmllcyBjYW4gYmUgb3BlbmVkOyBzdGFydGVkIG9uZXMgY2Fubm90LiAqL1xyXG4gIHZpZXdhYmxlOiBib29sZWFuO1xyXG4gIHJhdz86IGFueTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBBcHByb3ZhbENhcmQge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBzdG9yZTogc3RyaW5nO1xyXG4gIGJ5OiBzdHJpbmc7XHJcbiAgd2hlbjogc3RyaW5nO1xyXG4gIC8qKiBcIkF1ZGl0XCIgb3IgXCJUYXNrXCIsIGZyb20gdGhlIEFQSSdzIG1vZHVsZSBmaWVsZC4gKi9cclxuICB0eXBlTGFiZWw6IHN0cmluZztcclxuICAvKiogXCJTdWJtaXR0ZWQgeCAvIHlcIiAoc3VibWl0dGVkIGluc3RhbmNlcyAvIGFzc2lnbmVkIHN0b3JlcyksIG9yICcnIHdoZW4gdW5rbm93bi4gKi9cclxuICBzdWJtaXR0ZWRMYWJlbDogc3RyaW5nO1xyXG4gIC8qKiBcIkFwcHJvdmVkIHggLyB5XCIgKGFwcHJvdmVkIC8gc3VibWl0dGVkKSwgb3IgJycgd2hlbiBub3RoaW5nIGlzIHN1Ym1pdHRlZCB5ZXQuICovXHJcbiAgYXBwcm92ZWRMYWJlbDogc3RyaW5nO1xyXG4gIHJlZG86IGJvb2xlYW47XHJcbiAgLyoqIEdhbGxlcnkgZGVlcCBsaW5rIChhdWRpdCAvIHN0b3JlIC8gZGF5IC8gYXBwcm92YWwgc3RhdHVzKSwgb3IgbnVsbCB3aGVuIHRoZXJlIGlzIG5vdGhpbmcgdG8gcmV2aWV3IHRoZXJlLiAqL1xyXG4gIGxpbms6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gfCBudWxsO1xyXG4gIC8qKiBUb29sdGlwOiB3aGF0IGEgY2xpY2sgb3BlbnMsIG9yIHdoeSB0aGUgY2FyZCBjYW5ub3QgYmUgb3BlbmVkLiAqL1xyXG4gIGhpbnQ6IHN0cmluZztcclxuICByYXc/OiBhbnk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgQXBwcm92YWxDb2x1bW4ge1xyXG4gIGtleTogJ29wZW4nIHwgJ2lucHJvZ3Jlc3MnIHwgJ2FwcHJvdmVkJztcclxuICB0aXRsZTogc3RyaW5nO1xyXG4gIGVtcHR5OiBzdHJpbmc7XHJcbiAgY2FyZHM6IEFwcHJvdmFsQ2FyZFtdO1xyXG59XHJcblxyXG50eXBlIEFjdGlvblRhYiA9ICdBdWRpdCcgfCAnVGFzayc7XHJcblxyXG50eXBlIEFjdGlvblRvbmUgPSAncHJpbWFyeScgfCAnZ3JheScgfCAnd2FybmluZycgfCAnZXJyb3InO1xyXG5cclxuLyoqXHJcbiAqIEFjdGl2aXR5IExvZyBiYWRnZSBwZXIgYWN0aW9uOiBhIHNob3J0IGxhYmVsIGxpa2UgdGhlIG9sZCBDaGVja2xpc3QgQWN0aXZpdHkgTG9nJ3MgKGdldEFjdGlvbkxhYmVsKSwgd2l0aFxyXG4gKiB0aGUgc2NoZWR1bGUgLyBjb3B5IG5hbWVzIG1vdmVkIHRvIHRoZSBuYW1lIGNvbHVtbiwgYW5kIGl0cyBjb2xvdXIgKGdldEFjdGlvbkJhZGdlQ2xhc3MpOiBzdGFydCAvIHN1Ym1pdCAvXHJcbiAqIHB1Ymxpc2ggLyBjb25maWcgY2hhbmdlcyBibHVlLCBjcmVhdGVkIC8gZHVwbGljYXRlZCBncmV5LCBlZGl0ZWQgYW1iZXIsIGRlbGV0ZWQgcmVkLlxyXG4gKiBLZXlzIGFyZSBzdGFydCAvIHN1Ym1pdCBmb3IgdmlzaXQgZXZlbnRzIGFuZCB0aGUgc3RvcmVkIGFjdGl2aXR5VHlwZSBmb3IgbG9nZ2VkIGF1ZGl0IC8gc2NoZWR1bGUgYWN0aW9ucy5cclxuICovXHJcbmNvbnN0IEFDVElPTl9CQURHRTogUmVjb3JkPHN0cmluZywgeyBsYWJlbDogc3RyaW5nOyB0b25lOiBBY3Rpb25Ub25lIH0+ID0ge1xyXG4gIHN0YXJ0OiB7IGxhYmVsOiAnU3RhcnRlZCBieScsIHRvbmU6ICdwcmltYXJ5JyB9LFxyXG4gIHN1Ym1pdDogeyBsYWJlbDogJ1N1Ym1pdHRlZCBieScsIHRvbmU6ICdwcmltYXJ5JyB9LFxyXG4gIGNyZWF0ZWQ6IHsgbGFiZWw6ICdBdWRpdCBjcmVhdGVkIGJ5JywgdG9uZTogJ2dyYXknIH0sXHJcbiAgZWRpdGVkOiB7IGxhYmVsOiAnRWRpdGVkIGJ5JywgdG9uZTogJ3dhcm5pbmcnIH0sXHJcbiAgY29uZmlndXJlZDogeyBsYWJlbDogJ0NvbmZpZ3VyZWQgYnknLCB0b25lOiAncHJpbWFyeScgfSxcclxuICBwdWJsaXNoZWQ6IHsgbGFiZWw6ICdQdWJsaXNoZWQgYnknLCB0b25lOiAncHJpbWFyeScgfSxcclxuICB1bnB1Ymxpc2hlZDogeyBsYWJlbDogJ1VucHVibGlzaGVkIGJ5JywgdG9uZTogJ3ByaW1hcnknIH0sXHJcbiAgZHVwbGljYXRlZDogeyBsYWJlbDogJ0R1cGxpY2F0ZWQgYnknLCB0b25lOiAnZ3JheScgfSxcclxuICBkZWxldGVkOiB7IGxhYmVsOiAnRGVsZXRlZCBieScsIHRvbmU6ICdlcnJvcicgfSxcclxuICBzY2hlZHVsZWQ6IHsgbGFiZWw6ICdTY2hlZHVsZSBjcmVhdGVkIGJ5JywgdG9uZTogJ2dyYXknIH0sXHJcbiAgc2NoZWR1bGVFZGl0ZWQ6IHsgbGFiZWw6ICdTY2hlZHVsZSBlZGl0ZWQgYnknLCB0b25lOiAnd2FybmluZycgfSxcclxuICBzY2hlZHVsZVB1Ymxpc2hlZDogeyBsYWJlbDogJ1NjaGVkdWxlIHB1Ymxpc2hlZCBieScsIHRvbmU6ICdwcmltYXJ5JyB9LFxyXG4gIHNjaGVkdWxlVW5wdWJsaXNoZWQ6IHsgbGFiZWw6ICdTY2hlZHVsZSB1bnB1Ymxpc2hlZCBieScsIHRvbmU6ICdwcmltYXJ5JyB9LFxyXG4gIHNjaGVkdWxlRHVwbGljYXRlZDogeyBsYWJlbDogJ1NjaGVkdWxlIGR1cGxpY2F0ZWQgYnknLCB0b25lOiAnZ3JheScgfSxcclxuICBzY2hlZHVsZURlbGV0ZWQ6IHsgbGFiZWw6ICdTY2hlZHVsZSBkZWxldGVkIGJ5JywgdG9uZTogJ2Vycm9yJyB9LFxyXG59O1xyXG5cclxuLyoqIEFjdGl2aXR5IExvZyBcIkFjdGlvbnNcIiBmaWx0ZXI7IGlkcyBtYXRjaCB0aGUgQVBJJ3MgYWN0aW9uIGZpbHRlci4gKi9cclxuY29uc3QgVklTSVRfQUNUSU9OUyA9IFtcclxuICB7IHRleHQ6ICdTdGFydGVkIGJ5JywgaWQ6ICdzdGFydCcgfSxcclxuICB7IHRleHQ6ICdTdWJtaXR0ZWQgYnknLCBpZDogJ3N1Ym1pdCcgfSxcclxuXTtcclxuXHJcbi8qKlxyXG4gKiBBdWRpdCBBY3Rpb24gQ2VudGVyLCBzZXJ2ZWQgYnkgL3RyYXgvYXVkaXQvYWN0aW9uQ2VudGVyLyogKHJldGFpbC10cmF4LWFwaS12Mik6XHJcbiAqICAgY2FyZHMgICAgICAgLT4gYXVkaXRzIC8gdGFza3Mgd2FpdGluZyBmb3IgYXBwcm92YWxcclxuICogICBhcHByb3ZhbHMgICAtPiBvcGVuIC8gaW5wcm9ncmVzcyAvIGRvbmUsIG9uZSByb3cgcGVyIGF1ZGl0IHBlciBkYXlcclxuICogICBhY3Rpdml0eUxvZyAtPiBzdGFydCArIHN1Ym1pdCBldmVudHMgZnJvbSB0aGUgaW5zdGFuY2VzLCBwbHVzIChBdWRpdCB0YWIpIHRoZSBsb2dnZWQgYXVkaXQgLyBzY2hlZHVsZVxyXG4gKiAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IGNyZWF0ZWQsIGVkaXRlZCwgY29uZmlndXJlZCwgcHVibGlzaGVkLCB1bnB1Ymxpc2hlZCwgZHVwbGljYXRlZCwgZGVsZXRlZDsgc2VydmVyLXBhZ2VkXHJcbiAqIEV2ZXJ5IGNhbGwgaXMgc2NvcGVkIGJ5IHRoZSBnbG9iYWwgaGVhZGVyIGZpbHRlciAoY2xpZW50LCBjaGVja2VkIHN0b3JlcywgZGF0ZXMpLlxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYXVkaXQtdjItYWN0aW9uLWNlbnRyZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2F1ZGl0LXYyLWFjdGlvbi1jZW50cmUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9hdWRpdC12Mi1hY3Rpb24tY2VudHJlLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQXVkaXRWMkFjdGlvbkNlbnRyZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAvKiogVGFiIGluc2lkZSB0aGUgYWN0aXZpdHkgbG9nLiAqL1xyXG4gIHRhYjogQWN0aW9uVGFiID0gJ0F1ZGl0JztcclxuICByZWFkb25seSB0YWJzOiBBY3Rpb25UYWJbXSA9IFsnQXVkaXQnLCAnVGFzayddO1xyXG5cclxuICAvKiogQXBwcm92YWwgcGFuZWwgY29udHJvbHMuICovXHJcbiAgYXBwcm92YWxTZWFyY2ggPSAnJztcclxuICBhcHByb3ZhbFNjb3BlID0gJ0FsbCc7XHJcbiAgcmVhZG9ubHkgYXBwcm92YWxTY29wZXMgPSBbJ0FsbCcsICdBdWRpdCcsICdUYXNrJ107XHJcbiAgcmVhZG9ubHkgYXBwcm92YWxTY29wZUl0ZW1zID0gdGhpcy5hcHByb3ZhbFNjb3Blcy5tYXAoKHMpID0+ICh7IGlkOiBzLCBsYWJlbDogcyB9KSk7XHJcbiAgYXBwcm92YWxTY29wZVNlbGVjdGVkOiB7IGlkOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfSA9IHRoaXMuYXBwcm92YWxTY29wZUl0ZW1zWzBdO1xyXG5cclxuICAvKiogQWN0aXZpdHkgTG9nJ3Mgb3duIGRhdGUgcmFuZ2UgKGRlZmF1bHRzIHRvIHRoZSBoZWFkZXIgcmFuZ2UsIGNoYW5nZWQgYnkgaXRzIHBpY2tlcikuICovXHJcbiAgYWN0aXZpdHlSYW5nZTogeyBzdGFydERhdGU6IHN0cmluZzsgZW5kRGF0ZTogc3RyaW5nIH0gfCBudWxsID0gbnVsbDtcclxuICAvKiogQWN0aXZpdHkgTG9nIGFjdGlvbiBmaWx0ZXIgYXBwbGllZCBvbiBlYWNoIHRhYjsgaWRzIG1hdGNoIHRoZSBBUEkncyBhY3Rpb24gZmlsdGVyLiBFbXB0eSA9IGFsbC4gKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbnNCeVRhYjogUmVjb3JkPEFjdGlvblRhYiwgc3RyaW5nW10+ID0geyBBdWRpdDogW10sIFRhc2s6IFtdIH07XHJcbiAgLyoqXHJcbiAgICogRmlsdGVyIG9wdGlvbnMgcGVyIHRhYi4gTG9nZ2VkIGF1ZGl0IC8gc2NoZWR1bGUgYWN0aW9ucyBvbmx5IGV4aXN0IG9uIHRoZSBBdWRpdCB0YWIgKCdzY2hlZHVsZScgPSBldmVyeVxyXG4gICAqIHNjaGVkdWxlIGFjdGlvbik7IHRoZSBUYXNrIHRhYiBoYXMgc3RhcnQgLyBzdWJtaXQgZXZlbnRzIG9ubHkuIGxpYi1maWx0ZXJzIHJlYWRzIGl0cyBvcHRpb25zIG9uY2UsIHNvIHRoZVxyXG4gICAqIHRlbXBsYXRlIGtlZXBzIG9uZSBpbnN0YW5jZSBwZXIgdGFiLlxyXG4gICAqL1xyXG4gIHJlYWRvbmx5IGFjdGl2aXR5RmlsdGVyRGF0YTogUmVjb3JkPEFjdGlvblRhYiwgYW55W10+ID0ge1xyXG4gICAgQXVkaXQ6IFt7XHJcbiAgICAgIERlc2NyaXB0aW9uOiAnQWN0aW9ucycsXHJcbiAgICAgIElzc3VlczogW1xyXG4gICAgICAgIC4uLlZJU0lUX0FDVElPTlMubWFwKChhKSA9PiAoeyAuLi5hIH0pKSxcclxuICAgICAgICB7IHRleHQ6ICdBdWRpdCBjcmVhdGVkIGJ5JywgaWQ6ICdjcmVhdGVkJyB9LFxyXG4gICAgICAgIHsgdGV4dDogJ0VkaXRlZCBieScsIGlkOiAnZWRpdGVkJyB9LFxyXG4gICAgICAgIHsgdGV4dDogJ0NvbmZpZ3VyZWQgYnknLCBpZDogJ2NvbmZpZ3VyZWQnIH0sXHJcbiAgICAgICAgeyB0ZXh0OiAnUHVibGlzaGVkIGJ5JywgaWQ6ICdwdWJsaXNoZWQnIH0sXHJcbiAgICAgICAgeyB0ZXh0OiAnVW5wdWJsaXNoZWQgYnknLCBpZDogJ3VucHVibGlzaGVkJyB9LFxyXG4gICAgICAgIHsgdGV4dDogJ0R1cGxpY2F0ZWQgYnknLCBpZDogJ2R1cGxpY2F0ZWQnIH0sXHJcbiAgICAgICAgeyB0ZXh0OiAnRGVsZXRlZCBieScsIGlkOiAnZGVsZXRlZCcgfSxcclxuICAgICAgICB7IHRleHQ6ICdTY2hlZHVsZSBjaGFuZ2VzJywgaWQ6ICdzY2hlZHVsZScgfSxcclxuICAgICAgXSxcclxuICAgIH1dLFxyXG4gICAgVGFzazogW3sgRGVzY3JpcHRpb246ICdBY3Rpb25zJywgSXNzdWVzOiBWSVNJVF9BQ1RJT05TLm1hcCgoYSkgPT4gKHsgLi4uYSB9KSkgfV0sXHJcbiAgfTtcclxuXHJcbiAgLyoqIEFjdGl2aXR5IGxvZyBjb250cm9scy4gKi9cclxuICBzZWFyY2ggPSAnJztcclxuICBkYXRlUmFuZ2UgPSAnJztcclxuICBpdGVtc1BlclBhZ2UgPSAxMDtcclxuICBjdXJyZW50UGFnZSA9IDE7XHJcbiAgcmVhZG9ubHkgcGFnZVNpemVzID0gWzEwLCAyMCwgMzBdO1xyXG4gIC8qKiBUb3RhbCBhY3Rpdml0eSByb3dzIHJlcG9ydGVkIGJ5IHRoZSBBUEkgKHNlcnZlci1zaWRlIHBhZ2luYXRpb24pLiAqL1xyXG4gIHRvdGFsSXRlbXMgPSAwO1xyXG5cclxuICBhdWRpdFdhaXRpbmcgPSAwO1xyXG4gIHRhc2tXYWl0aW5nID0gMDtcclxuXHJcbiAgcm93czogQWN0aXZpdHlSb3dbXSA9IFtdO1xyXG4gIGNvbHVtbnM6IEFwcHJvdmFsQ29sdW1uW10gPSB0aGlzLmJ1aWxkQ29sdW1ucygpO1xyXG5cclxuICBjYXJkc0xvYWRpbmcgPSB0cnVlO1xyXG4gIGFwcHJvdmFsc0xvYWRpbmcgPSB0cnVlO1xyXG4gIGxvZ0xvYWRpbmcgPSB0cnVlO1xyXG5cclxuICBwcml2YXRlIGhlYWRlckRhdGE6IGFueTtcclxuICBwcml2YXRlIHJlYWRvbmx5IHVzZXJFbWFpbGVzOiBzdHJpbmdbXSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXJzRW1haWwtaW5mbycpIHx8ICdbXScpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwcm92YWxTZWFyY2gkID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VhcmNoJCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcclxuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHRyYXhTZXJ2aWNlOiBUcmF4U2VydmljZSxcclxuICAgIHByaXZhdGUgZ3M6IEdsb2JhbFN0YXRlU2VydmljZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6IFJvdXRlclxyXG4gICkgeyB9XHJcblxyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5ncy5kYXRhUmFuZ2VWYWx1ZVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlYm91bmNlVGltZSgzMDApKVxyXG4gICAgICAuc3Vic2NyaWJlKChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoIWRhdGE/LmNsaWVudCkgeyByZXR1cm47IH1cclxuICAgICAgICB0aGlzLmhlYWRlckRhdGEgPSBkYXRhO1xyXG4gICAgICAgIHRoaXMuZGF0ZVJhbmdlID0gdGhpcy5mbXQoZGF0YS5kYXRlPy5zdGFydERhdGUsICdERC1NTS1ZWVlZJykgKyAnIC0gJyArIHRoaXMuZm10KGRhdGEuZGF0ZT8uZW5kRGF0ZSwgJ0RELU1NLVlZWVknKTtcclxuICAgICAgICB0aGlzLmFjdGl2aXR5UmFuZ2UgPSB0aGlzLmRlZmF1bHRBY3Rpdml0eVJhbmdlKGRhdGEuZGF0ZSk7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgdGhpcy5sb2FkQ2FyZHMoKTtcclxuICAgICAgICB0aGlzLmxvYWRBcHByb3ZhbHMoKTtcclxuICAgICAgICB0aGlzLmxvYWRBY3Rpdml0eSgpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFwcHJvdmFsU2VhcmNoJFxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCksIGRlYm91bmNlVGltZSg0MDApLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMubG9hZEFwcHJvdmFscygpKTtcclxuXHJcbiAgICB0aGlzLnNlYXJjaCRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLCBkZWJvdW5jZVRpbWUoNDAwKSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICAgICAgdGhpcy5sb2FkQWN0aXZpdHkoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWN0aXZpdHkgTG9nJ3Mgc3RhcnRpbmcgcmFuZ2U6IHRoZSBoZWFkZXIgcmFuZ2UsIGV4Y2VwdCB0aGF0IG9uZSBlbmRpbmcgeWVzdGVyZGF5IHJ1bnMgb24gdG8gdG9kYXkuXHJcbiAgICogVGhlIGhlYWRlcidzIHByZXNldHMgKGFuZCBpdHMgZGVmYXVsdCkgc3RvcCBhdCB5ZXN0ZXJkYXkgYmVjYXVzZSBhbmFseXRpY3MgbGFuZCBhIGRheSBsYXRlLCBidXQgdGhlXHJcbiAgICogbG9nIGlzIGxpdmU6IHdpdGhvdXQgdGhpcywgd2hhdCB3YXMgc3RhcnRlZCBvciBzdWJtaXR0ZWQgdG9kYXkgbmV2ZXIgc2hvd3MgdW50aWwgdGhlIHJhbmdlIGlzIGNoYW5nZWQuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBkZWZhdWx0QWN0aXZpdHlSYW5nZShkYXRlOiBhbnkpOiB7IHN0YXJ0RGF0ZTogc3RyaW5nOyBlbmREYXRlOiBzdHJpbmcgfSB8IG51bGwge1xyXG4gICAgaWYgKCFkYXRlPy5zdGFydERhdGUgfHwgIWRhdGU/LmVuZERhdGUpIHsgcmV0dXJuIG51bGw7IH1cclxuICAgIGNvbnN0IHllc3RlcmRheSA9IGRheWpzKCkuc3VidHJhY3QoMSwgJ2RheScpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xyXG4gICAgY29uc3QgZW5kRGF0ZSA9IGRhdGUuZW5kRGF0ZSA9PT0geWVzdGVyZGF5ID8gZGF5anMoKS5mb3JtYXQoJ1lZWVktTU0tREQnKSA6IGRhdGUuZW5kRGF0ZTtcclxuICAgIHJldHVybiB7IHN0YXJ0RGF0ZTogZGF0ZS5zdGFydERhdGUsIGVuZERhdGUgfTtcclxuICB9XHJcblxyXG4gIC8qKiBDb21tb24gaGVhZGVyLWZpbHRlciBzY29wZSBldmVyeSBhY3Rpb24tY2VudGVyIGNhbGwgY2Fycmllcy4gKi9cclxuICBwcml2YXRlIGJhc2VQYXlsb2FkKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY2xpZW50SWQ6IHRoaXMuaGVhZGVyRGF0YT8uY2xpZW50LFxyXG4gICAgICBmcm9tRGF0ZTogdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5zdGFydERhdGUsXHJcbiAgICAgIHRvRGF0ZTogdGhpcy5oZWFkZXJEYXRhPy5kYXRlPy5lbmREYXRlLFxyXG4gICAgICBzdG9yZUlkOiAodGhpcy5oZWFkZXJEYXRhPy5zdG9yZXMgfHwgW10pLmZpbHRlcigoczogYW55KSA9PiBzLmNoZWNrZWQpLm1hcCgoczogYW55KSA9PiBzLnN0b3JlSWQpLFxyXG4gICAgICB1c2VyRW1haWxlczogdGhpcy51c2VyRW1haWxlc1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZENhcmRzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jYXJkc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgdGhpcy50cmF4U2VydmljZS5hdWRpdEFjdGlvbkNlbnRlckNhcmRzKHRoaXMuYmFzZVBheWxvYWQoKSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGNhcmQgPSByZXM/LmNvZGUgPT09IDIwMCA/IChyZXMuZGF0YT8uY2FyZERhdGEgfHwge30pIDoge307XHJcbiAgICAgICAgICB0aGlzLmF1ZGl0V2FpdGluZyA9IE51bWJlcihjYXJkLmF1ZGl0QXBwcm92YWwpIHx8IDA7XHJcbiAgICAgICAgICB0aGlzLnRhc2tXYWl0aW5nID0gTnVtYmVyKGNhcmQudGFza0FwcHJvdmFsKSB8fCAwO1xyXG4gICAgICAgICAgdGhpcy5jYXJkc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuYXVkaXRXYWl0aW5nID0gMDtcclxuICAgICAgICAgIHRoaXMudGFza1dhaXRpbmcgPSAwO1xyXG4gICAgICAgICAgdGhpcy5jYXJkc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGxvYWRBcHByb3ZhbHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFwcHJvdmFsc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgY29uc3QgdHlwZSA9IHRoaXMuYXBwcm92YWxTY29wZSA9PT0gJ0FsbCcgPyAnYWxsJyA6IHRoaXMuYXBwcm92YWxTY29wZSA9PT0gJ1Rhc2snID8gJ3Rhc2snIDogJ2F1ZGl0JztcclxuICAgIHRoaXMudHJheFNlcnZpY2UuYXVkaXRBY3Rpb25DZW50ZXJBcHByb3ZhbHMoe1xyXG4gICAgICAuLi50aGlzLmJhc2VQYXlsb2FkKCksXHJcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLmFwcHJvdmFsU2VhcmNoLnRyaW0oKSxcclxuICAgICAgdHlwZVxyXG4gICAgfSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGRhdGEgPSByZXM/LmNvZGUgPT09IDIwMCA/IChyZXMuZGF0YSB8fCB7fSkgOiB7fTtcclxuICAgICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmJ1aWxkQ29sdW1ucygpO1xyXG4gICAgICAgIHRoaXMuY29sdW1uc1swXS5jYXJkcyA9IChkYXRhLm9wZW4gfHwgW10pLm1hcCgoeDogYW55KSA9PiB0aGlzLnRvQ2FyZCh4LCAnb3BlbicpKTtcclxuICAgICAgICB0aGlzLmNvbHVtbnNbMV0uY2FyZHMgPSAoZGF0YS5pbnByb2dyZXNzIHx8IFtdKS5tYXAoKHg6IGFueSkgPT4gdGhpcy50b0NhcmQoeCwgJ2lucHJvZ3Jlc3MnKSk7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zWzJdLmNhcmRzID0gKGRhdGEuZG9uZSB8fCBbXSkubWFwKCh4OiBhbnkpID0+IHRoaXMudG9DYXJkKHgsICdhcHByb3ZlZCcpKTtcclxuICAgICAgICB0aGlzLmFwcHJvdmFsc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmNkLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6ICgpID0+IHtcclxuICAgICAgICB0aGlzLmNvbHVtbnMgPSB0aGlzLmJ1aWxkQ29sdW1ucygpO1xyXG4gICAgICAgIHRoaXMuYXBwcm92YWxzTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdG9DYXJkKHg6IGFueSwgY29sdW1uOiBBcHByb3ZhbENvbHVtblsna2V5J10pOiBBcHByb3ZhbENhcmQge1xyXG4gICAgY29uc3Qgc3RvcmVzID0gTnVtYmVyKHg/LnN0b3JlQ291bnQpIHx8IDA7XHJcbiAgICBjb25zdCBzdG9yZSA9IHg/LmNvdmVyYWdlID09PSAndXNlcidcclxuICAgICAgPyAoeD8udXNlck5hbWUgfHwgJ+KAlCcpXHJcbiAgICAgIDogKHN0b3JlcyA+IDEgPyBzdG9yZXMgKyAnIHN0b3JlcycgOiAoeD8uc3RvcmVOYW1lIHx8IChzdG9yZXMgPT09IDEgPyAnMSBzdG9yZScgOiAn4oCUJykpKTtcclxuICAgIGNvbnN0IHBlbmRpbmcgPSBOdW1iZXIoeD8ucGVuZGluZykgfHwgMDtcclxuICAgIGNvbnN0IHN1Ym1pdHRlZCA9IE51bWJlcih4Py5zdWJtaXRDb3VudCkgfHwgMDtcclxuICAgIGNvbnN0IGFwcHJvdmVkID0gTnVtYmVyKHg/LmFwcHJvdmVDb3VudCkgfHwgMDtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5hbWU6IHg/LmNoZWNrTGlzdE5hbWUgfHwgJ+KAlCcsXHJcbiAgICAgIHN0b3JlLFxyXG4gICAgICBieTogcGVuZGluZyA/IHBlbmRpbmcgKyAnIGF3YWl0aW5nIGFwcHJvdmFsJyA6ICh4Py51c2VyTmFtZSB8fCB4Py5jcmVhdGVkQnlOYW1lIHx8ICfigJQnKSxcclxuICAgICAgd2hlbjogeD8ucHVibGlzaERhdGUgPyB0aGlzLmZtdCh4LnB1Ymxpc2hEYXRlLCAnREQgTU1NIFlZWVknKSA6ICfigJQnLFxyXG4gICAgICB0eXBlTGFiZWw6IHg/Lm1vZHVsZSA9PT0gJ3Rhc2snID8gJ1Rhc2snIDogJ0F1ZGl0JyxcclxuICAgICAgc3VibWl0dGVkTGFiZWw6IHN0b3JlcyA/IGBTdWJtaXR0ZWQgJHtzdWJtaXR0ZWR9IC8gJHtzdG9yZXN9YCA6ICcnLFxyXG4gICAgICBhcHByb3ZlZExhYmVsOiBzdWJtaXR0ZWQgPyBgQXBwcm92ZWQgJHthcHByb3ZlZH0gLyAke3N1Ym1pdHRlZH1gIDogJycsXHJcbiAgICAgIHJlZG86ICEheD8ucmVkbyxcclxuICAgICAgLi4udGhpcy5jYXJkTGluayh4LCBjb2x1bW4sIHN1Ym1pdHRlZCksXHJcbiAgICAgIHJhdzogeFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXJlIGEgY2FyZCBsYW5kczogdGhlIEdhbGxlcnkgb24gdGhhdCBhdWRpdCBhbmQgZGF5IChhbmQgc3RvcmUsIHdoZW4gdGhlIGNhcmQgaXMgb25lIHN0b3JlKSxcclxuICAgKiBuYXJyb3dlZCB0byB3aGF0IHRoZSBjb2x1bW4gbWVhbnMuIE9wZW4gPSBhd2FpdGluZyBhcHByb3ZhbCwgQXBwcm92ZWQgPSBhcHByb3ZlZDsgSW5wcm9ncmVzc1xyXG4gICAqIHNob3dzIGV2ZXJ5IHN1Ym1pc3Npb24uIFRoZSBHYWxsZXJ5IGxpc3RzIHN1Ym1pdHRlZCAob3Igc2VudC1iYWNrKSB2aXNpdHMgb25seSwgc28gYSBjYXJkIHdpdGhcclxuICAgKiBub25lIHN0YXlzIGNsb3NlZC4gVGFzayBjYXJkcyBvcGVuIHRoZSBHYWxsZXJ5IHdpdGggVHlwZSBUYXNrICh0eXBlPXRhc2s7IGF1ZGl0PSBpcyB0aGUgdGFzayBpZCkuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBjYXJkTGluayh4OiBhbnksIGNvbHVtbjogQXBwcm92YWxDb2x1bW5bJ2tleSddLCBzdWJtaXR0ZWQ6IG51bWJlcik6IFBpY2s8QXBwcm92YWxDYXJkLCAnbGluaycgfCAnaGludCc+IHtcclxuICAgIGNvbnN0IHRhc2sgPSB4Py5tb2R1bGUgPT09ICd0YXNrJztcclxuICAgIGNvbnN0IGF1ZGl0ID0gU3RyaW5nKHg/LnNvdXJjZUNoZWNrbGlzdElkIHx8ICcnKTtcclxuICAgIGNvbnN0IGRhdGUgPSB0aGlzLmlzb0RheSh4Py5wdWJsaXNoRGF0ZSk7XHJcbiAgICBpZiAoIWF1ZGl0IHx8ICFkYXRlKSB7XHJcbiAgICAgIHJldHVybiB7IGxpbms6IG51bGwsIGhpbnQ6ICcnIH07XHJcbiAgICB9XHJcbiAgICBpZiAoIXN1Ym1pdHRlZCAmJiAheD8ucmVkbykge1xyXG4gICAgICByZXR1cm4geyBsaW5rOiBudWxsLCBoaW50OiAnTm90aGluZyBzdWJtaXR0ZWQgeWV0LCBzbyB0aGVyZSBpcyBub3RoaW5nIHRvIHJldmlldyBpbiB0aGUgR2FsbGVyeScgfTtcclxuICAgIH1cclxuICAgIGNvbnN0IHN0YXR1cyA9IGNvbHVtbiA9PT0gJ29wZW4nID8gJ05vdC1BcHByb3ZlZCcgOiBjb2x1bW4gPT09ICdhcHByb3ZlZCcgPyAnQXBwcm92ZWQnIDogJyc7XHJcbiAgICBjb25zdCBzaW5nbGUgPSBOdW1iZXIoeD8uc3RvcmVDb3VudCkgPT09IDEgJiYgeD8uc3RvcmVJZDtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGxpbms6IHtcclxuICAgICAgICBhdWRpdCwgZGF0ZSxcclxuICAgICAgICAuLi4oc2luZ2xlID8geyBzdG9yZTogU3RyaW5nKHguc3RvcmVJZCkgfSA6IHt9KSxcclxuICAgICAgICAuLi4oc3RhdHVzID8geyBzdGF0dXMgfSA6IHt9KSxcclxuICAgICAgICAuLi4odGFzayA/IHsgdHlwZTogJ3Rhc2snIH0gOiB7fSlcclxuICAgICAgfSxcclxuICAgICAgaGludDogY29sdW1uID09PSAnb3BlbicgPyAnUmV2aWV3IHRoZSBzdWJtaXNzaW9ucyBhd2FpdGluZyBhcHByb3ZhbCBpbiB0aGUgR2FsbGVyeSdcclxuICAgICAgICA6IGNvbHVtbiA9PT0gJ2FwcHJvdmVkJyA/ICdWaWV3IHRoZSBhcHByb3ZlZCBzdWJtaXNzaW9ucyBpbiB0aGUgR2FsbGVyeSdcclxuICAgICAgICAgIDogJ1ZpZXcgdGhlIHN1Ym1pc3Npb25zIGluIHRoZSBHYWxsZXJ5J1xyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIC8qKiBkYXRlX2lzbyBpcyB0aGUgdmlzaXQgZGF5IGF0IFVUQyBtaWRuaWdodDsgcmVhZCBpdHMgZGF0ZSBwYXJ0IHNvIG5vIHRpbWUgem9uZSBzaGlmdHMgdGhlIGRheS4gKi9cclxuICBwcml2YXRlIGlzb0RheSh2YWx1ZTogYW55KTogc3RyaW5nIHtcclxuICAgIGlmICghdmFsdWUpIHsgcmV0dXJuICcnOyB9XHJcbiAgICBjb25zdCBtID0gL14oXFxkezR9LVxcZHsyfS1cXGR7Mn0pLy5leGVjKFN0cmluZyh2YWx1ZSkpO1xyXG4gICAgcmV0dXJuIG0gPyBtWzFdIDogZGF5anModmFsdWUpLmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xyXG4gIH1cclxuXHJcbiAgb3BlbkNhcmQoY2FyZDogQXBwcm92YWxDYXJkKTogdm9pZCB7XHJcbiAgICBpZiAoIWNhcmQubGluaykgeyByZXR1cm47IH1cclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnL21hbmFnZS90cmF4L2F1ZGl0LXYyL2dhbGxlcnknXSwgeyBxdWVyeVBhcmFtczogY2FyZC5saW5rIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWN0aXZpdHkgbG9nIGNvbHVtbiBzb3J0LCBkb25lIGJ5IHRoZSBBUEkgKHRoZSBsb2cgaXMgcGFnZWQgdGhlcmUpLiAnJyA9IG5ld2VzdCBmaXJzdCwgd2hpY2ggdGhlXHJcbiAgICogRGF0ZSAmIFRpbWUgYXJyb3cgc2hvd3MgYXMgaXRzIGRlc2NlbmRpbmcgc3RhdGUuXHJcbiAgICovXHJcbiAgbG9nU29ydENvbHVtbiA9ICcnO1xyXG4gIGxvZ1NvcnRCeTogMSB8IC0xID0gLTE7XHJcblxyXG4gIGdldCBsb2dTb3J0S2V5KCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5sb2dTb3J0Q29sdW1uIHx8ICdkYXRlJztcclxuICB9XHJcblxyXG4gIHNvcnRMb2coY29sdW1uOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGN1cnJlbnQgPSB0aGlzLmxvZ1NvcnRLZXk7XHJcbiAgICAvLyBEYXRlIHN0YXJ0cyBuZXdlc3QgZmlyc3QgKHRoZSBkZWZhdWx0KTsgdGhlIG90aGVyIGNvbHVtbnMgc3RhcnQgQS1aIC8gbG93ZXN0IGZpcnN0LlxyXG4gICAgdGhpcy5sb2dTb3J0QnkgPSBjdXJyZW50ID09PSBjb2x1bW4gPyAodGhpcy5sb2dTb3J0QnkgPT09IDEgPyAtMSA6IDEpIDogKGNvbHVtbiA9PT0gJ2RhdGUnID8gLTEgOiAxKTtcclxuICAgIHRoaXMubG9nU29ydENvbHVtbiA9IGNvbHVtbiA9PT0gJ2RhdGUnICYmIHRoaXMubG9nU29ydEJ5ID09PSAtMSA/ICcnIDogY29sdW1uO1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XHJcbiAgICB0aGlzLmxvYWRBY3Rpdml0eSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkQWN0aXZpdHkoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvZ0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgY29uc3QgYWN0aW9ucyA9IHRoaXMuYWN0aW9uc0J5VGFiW3RoaXMudGFiXTtcclxuICAgIHRoaXMudHJheFNlcnZpY2UuYXVkaXRBY3Rpb25DZW50ZXJBY3Rpdml0eSh7XHJcbiAgICAgIC4uLnRoaXMuYmFzZVBheWxvYWQoKSxcclxuICAgICAgLi4uKHRoaXMuYWN0aXZpdHlSYW5nZSA/IHsgZnJvbURhdGU6IHRoaXMuYWN0aXZpdHlSYW5nZS5zdGFydERhdGUsIHRvRGF0ZTogdGhpcy5hY3Rpdml0eVJhbmdlLmVuZERhdGUgfSA6IHt9KSxcclxuICAgICAgdHlwZTogdGhpcy50YWIgPT09ICdUYXNrJyA/ICd0YXNrJyA6ICdhdWRpdCcsXHJcbiAgICAgIGxpbWl0OiB0aGlzLml0ZW1zUGVyUGFnZSxcclxuICAgICAgb2Zmc2V0OiB0aGlzLmN1cnJlbnRQYWdlLFxyXG4gICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2gudHJpbSgpLFxyXG4gICAgICAvLyBMb2dnZWQgYXVkaXQgLyBzY2hlZHVsZSBhY3Rpb25zIGNvbWUgYmFjayBvbiB0aGlzIGJyb3dzZXIncyBjbG9jaywgc3RhbXBlZCBhcyBVVEMgbGlrZSB0aGUgdmlzaXQgdGltZXMuXHJcbiAgICAgIHR6T2Zmc2V0OiBuZXcgRGF0ZSgpLmdldFRpbWV6b25lT2Zmc2V0KCksXHJcbiAgICAgIC8vIE9ubHkgc2VudCB3aGVuIG5hcnJvd2VkLCBzbyBhbiBBUEkgd2l0aG91dCB0aGUgZmlsdGVyIHN0aWxsIHNlcnZlcyB0aGUgdW5maWx0ZXJlZCBsb2cuXHJcbiAgICAgIC4uLihhY3Rpb25zLmxlbmd0aCA/IHsgYWN0aW9uOiBhY3Rpb25zIH0gOiB7fSksXHJcbiAgICAgIC8vIExpa2V3aXNlIHRoZSBjb2x1bW4gc29ydDogb25seSBvbmNlIGEgaGVhZGVyIG90aGVyIHRoYW4gdGhlIGRlZmF1bHQgbmV3ZXN0LWZpcnN0IGlzIHBpY2tlZC5cclxuICAgICAgLi4uKHRoaXMubG9nU29ydENvbHVtbiA/IHsgc29ydENvbHVtbjogdGhpcy5sb2dTb3J0Q29sdW1uLCBzb3J0Qnk6IHRoaXMubG9nU29ydEJ5IH0gOiB7fSlcclxuICAgIH0pLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBkYXRhID0gcmVzPy5jb2RlID09PSAyMDAgPyAocmVzLmRhdGEgfHwge30pIDoge307XHJcbiAgICAgICAgdGhpcy5yb3dzID0gKGRhdGEuYWN0aXZpdHlMb2dEYXRhIHx8IFtdKS5tYXAoKGxvZzogYW55KSA9PiB0aGlzLnRvUm93KGxvZykpO1xyXG4gICAgICAgIHRoaXMudG90YWxJdGVtcyA9IE51bWJlcihkYXRhLmNvdW50KSB8fCAwO1xyXG4gICAgICAgIHRoaXMubG9nTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICB9LFxyXG4gICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucm93cyA9IFtdO1xyXG4gICAgICAgIHRoaXMudG90YWxJdGVtcyA9IDA7XHJcbiAgICAgICAgdGhpcy5sb2dMb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogc3RhcnRUaW1lIC8gc3VibWl0VGltZSBhcmUgdGhlIHN0b3JlJ3Mgd2FsbCBjbG9jayBzdGFtcGVkIGFzIFVUQyAodGhlIG1vYmlsZSBzdWJtaXQpLCBzbyB0aGV5IGFyZSByZWFkXHJcbiAgICogYXMgVVRDOiBhIGxvY2FsIHJlYWQgd291bGQgYWRkIHRoZSBicm93c2VyJ3Mgb2Zmc2V0ICgrNTozMCBpbiBJU1QpIGFuZCBwdXNoIGV2ZW5pbmcgZXZlbnRzIGludG8gdGhlIG5leHQgZGF5LlxyXG4gICAqIExvZ2dlZCBhdWRpdCAvIHNjaGVkdWxlIGFjdGlvbnMgKGtpbmQgJ2xvZycpIGFycml2ZSBhbHJlYWR5IG1vdmVkIHRvIHRoaXMgYnJvd3NlcidzIGNsb2NrICh0ek9mZnNldCksIHNvIHRoZVxyXG4gICAqIHNhbWUgVVRDIHJlYWQgc2hvd3MgdGhlbSBpbiBsb2NhbCB0aW1lLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgZXZlbnRUaW1lKGxvZzogYW55KTogZGF5anMuRGF5anMgfCBudWxsIHtcclxuICAgIHJldHVybiBsb2c/LmF0ID8gZGF5anMudXRjKGxvZy5hdCkgOiBudWxsO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0b1Jvdyhsb2c6IGFueSk6IEFjdGl2aXR5Um93IHtcclxuICAgIGNvbnN0IGF0ID0gdGhpcy5ldmVudFRpbWUobG9nKTtcclxuICAgIGNvbnN0IGJhZGdlID0gQUNUSU9OX0JBREdFW3RoaXMuYWN0aW9uS2V5KGxvZyldO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmFtZTogbG9nPy5jaGVja0xpc3ROYW1lIHx8ICfigJQnLFxyXG4gICAgICBkZXRhaWw6IHRoaXMuYWN0aW9uRGV0YWlsKGxvZyksXHJcbiAgICAgIC8vIFVua25vd24gbG9nZ2VkIGFjdGlvbnMga2VlcCB0aGUgQVBJJ3Mgb3duIHRleHQuXHJcbiAgICAgIGFjdGlvbjogYmFkZ2U/LmxhYmVsIHx8IFN0cmluZyhsb2c/LmFjdGlvbiB8fCAn4oCUJyksXHJcbiAgICAgIHRvbmU6IGJhZGdlPy50b25lIHx8ICdncmF5JyxcclxuICAgICAgYnk6IGxvZz8udXNlckVtYWlsIHx8IGxvZz8udXNlck5hbWUgfHwgJ+KAlCcsXHJcbiAgICAgIHN0b3JlOiBsb2c/LnN0b3JlTmFtZSB8fCAn4oCUJyxcclxuICAgICAgZGF5OiBhdCA/IChhdC5mb3JtYXQoJ1lZWVktTU0tREQnKSA9PT0gZGF5anMoKS5mb3JtYXQoJ1lZWVktTU0tREQnKSA/ICdUb2RheScgOiBhdC5mb3JtYXQoJ0REIE1NTSBZWVlZJykpIDogJ+KAlCcsXHJcbiAgICAgIHRpbWU6IGF0ID8gYXQuZm9ybWF0KCdoaCA6IG1tIEEnKSA6ICfigJQnLFxyXG4gICAgICAvLyBWaWV3IG9wZW5zIGEgc3VibWl0dGVkIGF1ZGl0IChBdWRpdCB0YWIpIG9yIHRhc2sgKFRhc2sgdGFiLCBHYWxsZXJ5IFR5cGUgVGFzaykgaW4gdGhlIEdhbGxlcnk7IGEgbG9nZ2VkXHJcbiAgICAgIC8vIGF1ZGl0IC8gc2NoZWR1bGUgYWN0aW9uIGhhcyBubyBzdWJtaXNzaW9uICh0aGUgQVBJIHNlbmRzIHZpZXdhYmxlIGZhbHNlIGZvciB0aG9zZSkuXHJcbiAgICAgIHZpZXdhYmxlOiAhIWxvZz8udmlld2FibGUgJiYgbG9nPy5raW5kICE9PSAnbG9nJyxcclxuICAgICAgcmF3OiBsb2dcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICAvKiogTG9nZ2VkIHJvd3MgY2FycnkgdGhlaXIgc3RvcmVkIGtleSBpbiBhY3Rpdml0eVR5cGU7IHZpc2l0IHJvd3Mgb25seSBoYXZlIHRoZSBsYWJlbC4gKi9cclxuICBwcml2YXRlIGFjdGlvbktleShsb2c6IGFueSk6IHN0cmluZyB7XHJcbiAgICBpZiAobG9nPy5raW5kID09PSAnbG9nJykgeyByZXR1cm4gU3RyaW5nKGxvZz8uYWN0aXZpdHlUeXBlIHx8ICcnKTsgfVxyXG4gICAgcmV0dXJuIGxvZz8uYWN0aW9uID09PSAnU3VibWl0dGVkIGJ5JyA/ICdzdWJtaXQnIDogJ3N0YXJ0JztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoYXQgdGhlIEFQSSB1c2VkIHRvIGZvbGQgaW50byB0aGUgbGFiZWw6IHRoZSBzY2hlZHVsZSBhIHNjaGVkdWxlIGFjdGlvbiB3YXMgb24sIGFuZCB0aGUgY29weSBhIGR1cGxpY2F0ZVxyXG4gICAqIG1hZGUgKGF1ZGl0IGFuZCBzY2hlZHVsZSBkdXBsaWNhdGVzIGJvdGggc3RvcmUgZGV0YWlscy5jb3B5TmFtZSkuXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhY3Rpb25EZXRhaWwobG9nOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgaWYgKGxvZz8ua2luZCAhPT0gJ2xvZycpIHsgcmV0dXJuICcnOyB9XHJcbiAgICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcclxuICAgIGlmIChTdHJpbmcobG9nPy5hY3Rpdml0eVR5cGUgfHwgJycpLnN0YXJ0c1dpdGgoJ3NjaGVkdWxlJykgJiYgbG9nPy5zY2hlZHVsZU5hbWUpIHtcclxuICAgICAgcGFydHMucHVzaCgnU2NoZWR1bGU6ICcgKyBsb2cuc2NoZWR1bGVOYW1lKTtcclxuICAgIH1cclxuICAgIGlmIChsb2c/LmRldGFpbHM/LmNvcHlOYW1lKSB7XHJcbiAgICAgIHBhcnRzLnB1c2goJ0NvcHk6ICcgKyBsb2cuZGV0YWlscy5jb3B5TmFtZSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcGFydHMuam9pbignIMK3ICcpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRGVlcCBsaW5rIGZvciBcIlZpZXdcIjogdGhlIEdhbGxlcnkgcHJlLXNlbGVjdHMgdGhpcyBhdWRpdCwgc3RvcmUgYW5kIHZpc2l0IGRheS4gVGhlIEdhbGxlcnkgbGlzdHMgdmlzaXRzIGJ5XHJcbiAgICogdGhlaXIgb3duIGRhdGUsIHdoaWNoIGNhbiBiZSBlYXJsaWVyIHRoYW4gdGhlIHN1Ym1pdCBkYXksIHNvIHRoZSB2aXNpdCdzIGRhdGVfc3RyaW5nIHdpbnMgd2hlbiB0aGUgQVBJIHNlbmRzIGl0LlxyXG4gICAqL1xyXG4gIGdhbGxlcnlQYXJhbXMocm93OiBBY3Rpdml0eVJvdyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgY29uc3QgbG9nID0gcm93LnJhdyB8fCB7fTtcclxuICAgIGNvbnN0IGF0ID0gdGhpcy5ldmVudFRpbWUobG9nKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGF1ZGl0OiBTdHJpbmcobG9nLnNvdXJjZUNoZWNrTGlzdF9pZCB8fCAnJyksXHJcbiAgICAgIHN0b3JlOiBTdHJpbmcobG9nLnN0b3JlSWQgfHwgJycpLFxyXG4gICAgICBkYXRlOiBsb2cuZGF0ZV9zdHJpbmcgPyBTdHJpbmcobG9nLmRhdGVfc3RyaW5nKSA6IChhdCA/IGF0LmZvcm1hdCgnWVlZWS1NTS1ERCcpIDogJycpLFxyXG4gICAgICAvLyBUYXNrIHRhYiByb3dzIGFyZSB0YXNrIHN1Ym1pc3Npb25zOiB0aGUgR2FsbGVyeSBvcGVucyB3aXRoIFR5cGUgVGFzay5cclxuICAgICAgLi4uKHRoaXMudGFiID09PSAnVGFzaycgPyB7IHR5cGU6ICd0YXNrJyB9IDoge30pXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmbXQodmFsdWU6IGFueSwgcGF0dGVybjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB2YWx1ZSA/IGRheWpzKHZhbHVlKS5mb3JtYXQocGF0dGVybikgOiAn4oCUJztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYnVpbGRDb2x1bW5zKCk6IEFwcHJvdmFsQ29sdW1uW10ge1xyXG4gICAgY29uc3Qgbm91biA9IHRoaXMuYXBwcm92YWxTY29wZSA9PT0gJ1Rhc2snID8gJ1Rhc2snIDogJ0F1ZGl0JztcclxuICAgIHJldHVybiBbXHJcbiAgICAgIHsga2V5OiAnb3BlbicsIHRpdGxlOiAnT3BlbicsIGVtcHR5OiAnVGhlcmUgaXMgbm8gcmVzdWx0IGZvciBPcGVuICcgKyBub3VuLCBjYXJkczogW10gfSxcclxuICAgICAgeyBrZXk6ICdpbnByb2dyZXNzJywgdGl0bGU6ICdJbnByb2dyZXNzJywgZW1wdHk6ICdUaGVyZSBpcyBubyByZXN1bHQgZm9yIElucHJvZ3Jlc3MgJyArIG5vdW4sIGNhcmRzOiBbXSB9LFxyXG4gICAgICB7IGtleTogJ2FwcHJvdmVkJywgdGl0bGU6ICdBcHByb3ZlZCcsIGVtcHR5OiAnVGhlcmUgaXMgbm8gcmVzdWx0IGZvciBBcHByb3ZlZCAnICsgbm91biwgY2FyZHM6IFtdIH1cclxuICAgIF07XHJcbiAgfVxyXG5cclxuICBzZXRUYWIodGFiOiBBY3Rpb25UYWIpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRhYiA9PT0gdGFiKSB7IHJldHVybjsgfVxyXG4gICAgdGhpcy50YWIgPSB0YWI7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMubG9hZEFjdGl2aXR5KCk7XHJcbiAgfVxyXG5cclxuICBvbkFwcHJvdmFsU2NvcGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLmxvYWRBcHByb3ZhbHMoKTtcclxuICB9XHJcblxyXG4gIG9uQXBwcm92YWxTY29wZVNlbGVjdChpdGVtOiB7IGlkOiBzdHJpbmcgfSB8IHVuZGVmaW5lZCk6IHZvaWQge1xyXG4gICAgY29uc3QgbmV4dCA9IGl0ZW0/LmlkO1xyXG4gICAgaWYgKCFuZXh0IHx8IG5leHQgPT09IHRoaXMuYXBwcm92YWxTY29wZSkgeyByZXR1cm47IH1cclxuICAgIHRoaXMuYXBwcm92YWxTY29wZSA9IG5leHQ7XHJcbiAgICB0aGlzLmFwcHJvdmFsU2NvcGVTZWxlY3RlZCA9IHRoaXMuYXBwcm92YWxTY29wZUl0ZW1zLmZpbmQoKGkpID0+IGkuaWQgPT09IG5leHQpIHx8IHRoaXMuYXBwcm92YWxTY29wZUl0ZW1zWzBdO1xyXG4gICAgdGhpcy5sb2FkQXBwcm92YWxzKCk7XHJcbiAgfVxyXG5cclxuICBvbkFjdGl2aXR5RGF0ZUNoYW5nZShldmVudDogeyBzdGFydERhdGU/OiBzdHJpbmc7IGVuZERhdGU/OiBzdHJpbmcgfSk6IHZvaWQge1xyXG4gICAgaWYgKCFldmVudD8uc3RhcnREYXRlIHx8ICFldmVudD8uZW5kRGF0ZSkgeyByZXR1cm47IH1cclxuICAgIHRoaXMuYWN0aXZpdHlSYW5nZSA9IHsgc3RhcnREYXRlOiBldmVudC5zdGFydERhdGUsIGVuZERhdGU6IGV2ZW50LmVuZERhdGUgfTtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5sb2FkQWN0aXZpdHkoKTtcclxuICB9XHJcblxyXG4gIG9uQWN0aXZpdHlGaWx0ZXJzKGV2ZW50OiBhbnlbXSk6IHZvaWQge1xyXG4gICAgY29uc3QgYWN0aW9ucyA9IChldmVudCB8fCBbXSkuZmluZCgoZjogYW55KSA9PiBmPy5EZXNjcmlwdGlvbiA9PT0gJ0FjdGlvbnMnKTtcclxuICAgIHRoaXMuYWN0aW9uc0J5VGFiW3RoaXMudGFiXSA9IChhY3Rpb25zPy5Jc3N1ZXMgfHwgW10pLm1hcCgoaTogYW55KSA9PiBpLmlkKTtcclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xyXG4gICAgdGhpcy5sb2FkQWN0aXZpdHkoKTtcclxuICB9XHJcblxyXG4gIG9uQXBwcm92YWxTZWFyY2goKTogdm9pZCB7XHJcbiAgICB0aGlzLmFwcHJvdmFsU2VhcmNoJC5uZXh0KHRoaXMuYXBwcm92YWxTZWFyY2gpO1xyXG4gIH1cclxuXHJcbiAgb25TZWFyY2goKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaCQubmV4dCh0aGlzLnNlYXJjaCk7XHJcbiAgfVxyXG5cclxuICBnZXQgbmFtZUxhYmVsKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50YWIgPT09ICdUYXNrJyA/ICdUYXNrIE5hbWUnIDogJ0F1ZGl0IE5hbWUnO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHNlYXJjaEhpbnQoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnRhYiA9PT0gJ1Rhc2snID8gJ1NlYXJjaCB3aXRoIFN0b3JlLCBFbWFpbCwgVGFzaycgOiAnU2VhcmNoIHdpdGggU3RvcmUsIEVtYWlsLCBBdWRpdCc7XHJcbiAgfVxyXG5cclxuICAvKiogU2VhcmNoIGFuZCBwYWdpbmcgYXJlIHNlcnZlci1zaWRlOyB0aGUgcGFnZSB3ZSBob2xkIGlzIHRoZSBwYWdlIHdlIHNob3cuICovXHJcbiAgZ2V0IGZpbHRlcmVkUm93cygpOiBBY3Rpdml0eVJvd1tdIHtcclxuICAgIHJldHVybiB0aGlzLnJvd3M7XHJcbiAgfVxyXG5cclxuICBnZXQgcGFnZVJvd3MoKTogQWN0aXZpdHlSb3dbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5yb3dzO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlQ2hhbmdlKHBhZ2U6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IHBhZ2U7XHJcbiAgICB0aGlzLmxvYWRBY3Rpdml0eSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqIFJvd3MgcGVyIHBhZ2UgKDEwIC8gMjAgLyAzMCkgZnJvbSB0aGUgcGFnZXIncyBzaXplIGRyb3Bkb3duOyBiYWNrIHRvIHBhZ2UgMS4gKi9cclxuICBvblBhZ2VTaXplQ2hhbmdlKHNpemU6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBOdW1iZXIoc2l6ZSkgfHwgMTA7XHJcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcclxuICAgIHRoaXMubG9hZEFjdGl2aXR5KCk7XHJcbiAgfVxyXG5cclxuICB0cmFja0J5Um93KGluZGV4OiBudW1iZXIsIHJvdzogQWN0aXZpdHlSb3cpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIChyb3cucmF3Py5wcm9jZXNzZWRDaGVja2xpc3RJZCB8fCByb3cucmF3Py5sb2dJZCB8fCByb3cuc3RvcmUpICsgcm93LmFjdGlvbiArIGluZGV4O1xyXG4gIH1cclxuXHJcbiAgdHJhY2tCeUNvbHVtbihfOiBudW1iZXIsIGNvbDogQXBwcm92YWxDb2x1bW4pOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGNvbC5rZXk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJhdjItcGFnZVwiPlxyXG5cclxuICA8IS0tIFdhaXRpbmcgZm9yIGFwcHJvdmFsIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJhdjItZ3JpZC0yXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXYyLXN0YXQtY2FyZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXYyLXN0YXRcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImF2Mi1zayBhdjItc2stLXZhbHVlIGFjLXNrLXZhbHVlXCIgKm5nSWY9XCJjYXJkc0xvYWRpbmdcIj48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhdjItc3RhdC12YWx1ZVwiICpuZ0lmPVwiIWNhcmRzTG9hZGluZ1wiPnt7IGF1ZGl0V2FpdGluZyB9fTwvc3Bhbj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImF2Mi1zdGF0LWxhYmVsXCI+QXVkaXQgd2FpdGluZyBmb3IgYXBwcm92YWw8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXYyLXN0YXQtY2FyZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXYyLXN0YXRcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cImF2Mi1zayBhdjItc2stLXZhbHVlIGFjLXNrLXZhbHVlXCIgKm5nSWY9XCJjYXJkc0xvYWRpbmdcIj48L3NwYW4+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJhdjItc3RhdC12YWx1ZVwiICpuZ0lmPVwiIWNhcmRzTG9hZGluZ1wiPnt7IHRhc2tXYWl0aW5nIH19PC9zcGFuPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiYXYyLXN0YXQtbGFiZWxcIj5UYXNrIHdhaXRpbmcgZm9yIGFwcHJvdmFsPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tIEFwcHJvdmFsIC0tPlxyXG4gIDxzZWN0aW9uIGNsYXNzPVwiYXYyLWNhcmRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJhdjItY2FyZC1oZWFkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhdjItdGl0bGUtYmxvY2tcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLWNhcmQtdGl0bGVcIj5BcHByb3ZhbDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdjItY2FyZC1zdWJcIj5BIHN1bW1hcnkgb2YgYWxsIHRoZSBhdWRpdHMgYXdhaXRpbmcgYXBwcm92YWw8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJhdjItc2VhcmNoIGF2Mi1zZWFyY2gtLW1kXCI+XHJcbiAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj5cclxuICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMVwiIGN5PVwiMTFcIiByPVwiN1wiPjwvY2lyY2xlPlxyXG4gICAgICAgICAgPGxpbmUgeDE9XCIxNi41XCIgeTE9XCIxNi41XCIgeDI9XCIyMVwiIHkyPVwiMjFcIj48L2xpbmU+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwiYXBwcm92YWxTZWFyY2hcIiAobmdNb2RlbENoYW5nZSk9XCJvbkFwcHJvdmFsU2VhcmNoKClcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cclxuICAgICAgPC9sYWJlbD5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC1zY29wZS1zZWxlY3RcIj5cclxuICAgICAgICA8bGliLXNlbGVjdCBbaXRlbXNdPVwiYXBwcm92YWxTY29wZUl0ZW1zXCIgW211bHRpXT1cImZhbHNlXCIgW3NlYXJjaEZpZWxkXT1cIidsYWJlbCdcIiBbaWRGaWVsZF09XCInaWQnXCJcclxuICAgICAgICAgIFtzZWxlY3RlZFZhbHVlc109XCJbYXBwcm92YWxTY29wZVNlbGVjdGVkXVwiIChzZWxlY3RlZCk9XCJvbkFwcHJvdmFsU2NvcGVTZWxlY3QoJGV2ZW50KVwiPjwvbGliLXNlbGVjdD5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiYXYyLWdyaWQtM1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXBwcm92YWwtY29sXCIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zOyB0cmFja0J5OiB0cmFja0J5Q29sdW1uXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1jb2wtaGVhZFwiPlxyXG4gICAgICAgICAge3sgY29sLnRpdGxlIH19XHJcbiAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFhcHByb3ZhbHNMb2FkaW5nICYmIGNvbC5jYXJkcy5sZW5ndGhcIiBjbGFzcz1cImF2Mi1iYWRnZSBhdjItYmFkZ2UtLWNvdW50XCI+e3sgY29sLmNhcmRzLmxlbmd0aCB9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGxpYi1hdWRpdC12Mi1zaGltbWVyICpuZ0lmPVwiYXBwcm92YWxzTG9hZGluZ1wiIFtyb3dzXT1cIjJcIj48L2xpYi1hdWRpdC12Mi1zaGltbWVyPlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiIWFwcHJvdmFsc0xvYWRpbmcgJiYgY29sLmNhcmRzLmxlbmd0aFwiIGNsYXNzPVwiYXBwcm92YWwtY2FyZHNcIj5cclxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNhcmQgb2YgY29sLmNhcmRzXCIgY2xhc3M9XCJhcHByb3ZhbC1jYXJkXCIgW2NsYXNzLmFwcHJvdmFsLWNhcmQtLW9mZl09XCIhY2FyZC5saW5rXCJcclxuICAgICAgICAgICAgW2F0dHIucm9sZV09XCJjYXJkLmxpbmsgPyAnbGluaycgOiBudWxsXCIgW2F0dHIudGFiaW5kZXhdPVwiY2FyZC5saW5rID8gMCA6IG51bGxcIiBbYXR0ci50aXRsZV09XCJjYXJkLmhpbnQgfHwgbnVsbFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuQ2FyZChjYXJkKVwiIChrZXlkb3duLmVudGVyKT1cIm9wZW5DYXJkKGNhcmQpXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC1jYXJkLWJhZGdlc1wiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXYyLWJhZGdlIGF2Mi1iYWRnZS0tcHVycGxlIGF2Mi1iYWRnZS0tY291bnRcIj57eyBjYXJkLnR5cGVMYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNhcmQucmVkb1wiIGNsYXNzPVwiYXYyLWJhZGdlIGF2Mi1iYWRnZS0td2FybmluZyBhdjItYmFkZ2UtLWNvdW50XCI+UmVkbzwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHByb3ZhbC1jYXJkLW5hbWVcIj57eyBjYXJkLm5hbWUgfX08L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcHJvdmFsLWNhcmQtbWV0YVwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuPnt7IGNhcmQuc3RvcmUgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjYXJkLnN1Ym1pdHRlZExhYmVsXCI+e3sgY2FyZC5zdWJtaXR0ZWRMYWJlbCB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3Bhbj57eyBjYXJkLmJ5IH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcHJvdmFsLWNhcmQtZm9vdFwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXBwcm92YWwtY2FyZC1kYXRlXCI+e3sgY2FyZC53aGVuIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY2FyZC5hcHByb3ZlZExhYmVsXCIgY2xhc3M9XCJhdjItYmFkZ2UgYXYyLWJhZGdlLS1zdWNjZXNzIGF2Mi1iYWRnZS0tY291bnRcIj57eyBjYXJkLmFwcHJvdmVkTGFiZWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCIhYXBwcm92YWxzTG9hZGluZyAmJiAhY29sLmNhcmRzLmxlbmd0aFwiIGNsYXNzPVwiYXYyLWVtcHR5XCI+XHJcbiAgICAgICAgICA8aW1nIGNsYXNzPVwiYXYyLWVtcHR5LWltZ1wiIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YTEuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLWVtcHR5LXRleHRcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1lbXB0eS10aXRsZVwiPk5vIGRhdGEgZm91bmQ8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1lbXB0eS1zdWJcIj57eyBjb2wuZW1wdHkgfX08L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvc2VjdGlvbj5cclxuXHJcbiAgPCEtLSBBY3Rpdml0eSBMb2cgLS0+XHJcbiAgPHNlY3Rpb24gY2xhc3M9XCJhdjItY2FyZCBhdjItY2FyZC0tbG9nXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXYyLWNhcmQtaGVhZCBhdjItY2FyZC1oZWFkLS1jZW50ZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImF2Mi1jYXJkLXRpdGxlIGF2Mi1jYXJkLXRpdGxlLS1ncm93XCI+QWN0aXZpdHkgTG9nPC9kaXY+XHJcblxyXG4gICAgICA8bGFiZWwgY2xhc3M9XCJhdjItc2VhcmNoIGF2Mi1zZWFyY2gtLWxnXCI+XHJcbiAgICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCJcclxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIj5cclxuICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMVwiIGN5PVwiMTFcIiByPVwiN1wiPjwvY2lyY2xlPlxyXG4gICAgICAgICAgPGxpbmUgeDE9XCIxNi41XCIgeTE9XCIxNi41XCIgeDI9XCIyMVwiIHkyPVwiMjFcIj48L2xpbmU+XHJcbiAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwic2VhcmNoXCIgKG5nTW9kZWxDaGFuZ2UpPVwib25TZWFyY2goKVwiIHR5cGU9XCJ0ZXh0XCIgW3BsYWNlaG9sZGVyXT1cInNlYXJjaEhpbnRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxyXG4gICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImxvZy1kYXRlLXBpY2tlclwiPlxyXG4gICAgICAgIDxsaWItZGF0ZS1yYW5nZS1waWNrZXIgW3JhbmdlXT1cImFjdGl2aXR5UmFuZ2VcIiAoZGF0ZUNoYW5nZSk9XCJvbkFjdGl2aXR5RGF0ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItZGF0ZS1yYW5nZS1waWNrZXI+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBPbmUgZmlsdGVyIHBlciB0YWIgKGxpYi1maWx0ZXJzIHJlYWRzIGl0cyBvcHRpb25zIG9uY2UpOyBlYWNoIGtlZXBzIGl0cyBvd24gc2VsZWN0aW9uLiAtLT5cclxuICAgICAgPGxpYi1maWx0ZXJzICpuZ0lmPVwidGFiID09PSAnQXVkaXQnXCIgW2RhdGFPYmplY3RdPVwiYWN0aXZpdHlGaWx0ZXJEYXRhLkF1ZGl0XCIgKGFwcGxpZWRGaWx0ZXJzKT1cIm9uQWN0aXZpdHlGaWx0ZXJzKCRldmVudClcIj48L2xpYi1maWx0ZXJzPlxyXG4gICAgICA8bGliLWZpbHRlcnMgKm5nSWY9XCJ0YWIgPT09ICdUYXNrJ1wiIFtkYXRhT2JqZWN0XT1cImFjdGl2aXR5RmlsdGVyRGF0YS5UYXNrXCIgKGFwcGxpZWRGaWx0ZXJzKT1cIm9uQWN0aXZpdHlGaWx0ZXJzKCRldmVudClcIj48L2xpYi1maWx0ZXJzPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSBBdWRpdCAvIFRhc2sgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXYyLXRhYnNcIj5cclxuICAgICAgPGJ1dHRvbiAqbmdGb3I9XCJsZXQgdCBvZiB0YWJzXCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYXYyLXRhYlwiIFtjbGFzcy5pcy1hY3RpdmVdPVwidGFiID09PSB0XCJcclxuICAgICAgICAoY2xpY2spPVwic2V0VGFiKHQpXCI+e3sgdCB9fTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGxpYi1hdWRpdC12Mi1zaGltbWVyICpuZ0lmPVwibG9nTG9hZGluZ1wiPjwvbGliLWF1ZGl0LXYyLXNoaW1tZXI+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cImF2Mi10YWJsZS13cmFwXCIgKm5nSWY9XCIhbG9nTG9hZGluZ1wiPlxyXG4gICAgICA8dGFibGUgY2xhc3M9XCJhdjItdGFibGUgbG9nLXRhYmxlXCI+XHJcbiAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJhdjItc29ydGFibGVcIiAoY2xpY2spPVwic29ydExvZygnZGF0ZScpXCI+RGF0ZSAmYW1wOyBUaW1lIDxsaWItYXVkaXQtdjItc29ydC1pY29uIFthY3RpdmVdPVwibG9nU29ydEtleSA9PT0gJ2RhdGUnXCIgW2Rpcl09XCJsb2dTb3J0QnkgPT09IDEgPyAnYXNjJyA6ICdkZXNjJ1wiPjwvbGliLWF1ZGl0LXYyLXNvcnQtaWNvbj48L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJhdjItc29ydGFibGVcIiAoY2xpY2spPVwic29ydExvZygnbmFtZScpXCI+e3sgbmFtZUxhYmVsIH19IDxsaWItYXVkaXQtdjItc29ydC1pY29uIFthY3RpdmVdPVwibG9nU29ydEtleSA9PT0gJ25hbWUnXCIgW2Rpcl09XCJsb2dTb3J0QnkgPT09IDEgPyAnYXNjJyA6ICdkZXNjJ1wiPjwvbGliLWF1ZGl0LXYyLXNvcnQtaWNvbj48L3RoPlxyXG4gICAgICAgICAgICA8dGggY2xhc3M9XCJhdjItc29ydGFibGVcIiAoY2xpY2spPVwic29ydExvZygnYWN0aW9uJylcIj5BY3Rpb24gUGVyZm9ybWVkIDxsaWItYXVkaXQtdjItc29ydC1pY29uIFthY3RpdmVdPVwibG9nU29ydEtleSA9PT0gJ2FjdGlvbidcIiBbZGlyXT1cImxvZ1NvcnRCeSA9PT0gMSA/ICdhc2MnIDogJ2Rlc2MnXCI+PC9saWItYXVkaXQtdjItc29ydC1pY29uPjwvdGg+XHJcbiAgICAgICAgICAgIDx0aCBjbGFzcz1cImF2Mi1zb3J0YWJsZVwiIChjbGljayk9XCJzb3J0TG9nKCdieScpXCI+UGVyZm9ybWVkIGJ5IDxsaWItYXVkaXQtdjItc29ydC1pY29uIFthY3RpdmVdPVwibG9nU29ydEtleSA9PT0gJ2J5J1wiIFtkaXJdPVwibG9nU29ydEJ5ID09PSAxID8gJ2FzYycgOiAnZGVzYydcIj48L2xpYi1hdWRpdC12Mi1zb3J0LWljb24+PC90aD5cclxuICAgICAgICAgICAgPHRoIGNsYXNzPVwiYXYyLXNvcnRhYmxlXCIgKGNsaWNrKT1cInNvcnRMb2coJ3N0b3JlJylcIj5OYW1lIDxsaWItYXVkaXQtdjItc29ydC1pY29uIFthY3RpdmVdPVwibG9nU29ydEtleSA9PT0gJ3N0b3JlJ1wiIFtkaXJdPVwibG9nU29ydEJ5ID09PSAxID8gJ2FzYycgOiAnZGVzYydcIj48L2xpYi1hdWRpdC12Mi1zb3J0LWljb24+PC90aD5cclxuICAgICAgICAgICAgPHRoPkFjdGlvbnM8L3RoPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcm93IG9mIHBhZ2VSb3dzOyB0cmFja0J5OiB0cmFja0J5Um93XCI+XHJcbiAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLWNlbGwtc3RhY2tcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHJvdy5kYXkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF2Mi1tdXRlZFwiPnt7IHJvdy50aW1lIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1jZWxsLXN0YWNrIGxvZy1uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF2Mi1lbGxpcHNpc1wiIFthdjJUaXBdPVwicm93Lm5hbWVcIj57eyByb3cubmFtZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicm93LmRldGFpbFwiIGNsYXNzPVwiYXYyLW11dGVkIGF2Mi1lbGxpcHNpc1wiIFthdjJUaXBdPVwicm93LmRldGFpbFwiPnt7IHJvdy5kZXRhaWwgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD48c3BhbiBjbGFzcz1cImF2Mi1iYWRnZSBhY3Rpdml0eS1hY3Rpb25cIiBbbmdDbGFzc109XCJyb3cudG9uZSA9PT0gJ3ByaW1hcnknID8gJycgOiAnYXYyLWJhZGdlLS0nICsgcm93LnRvbmVcIlxyXG4gICAgICAgICAgICAgICAgW3RpdGxlXT1cInJvdy5hY3Rpb25cIj57eyByb3cuYWN0aW9uIH19PC9zcGFuPjwvdGQ+XHJcbiAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLWNlbGwtaWNvbiBhdjItZGltXCI+XHJcbiAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTVcIiBoZWlnaHQ9XCIxNVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuOFwiXHJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTJcIiBjeT1cIjhcIiByPVwiMy40XCI+PC9jaXJjbGU+XHJcbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNSAyMGMwLTMuNiAzLjEtNS42IDctNS42czcgMiA3IDUuNlwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgcm93LmJ5IH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF2Mi1jZWxsLWljb24gc3RvcmUtY2VsbFwiPlxyXG4gICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjE1XCIgaGVpZ2h0PVwiMTVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjhcIlxyXG4gICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIj5cclxuICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0zIDlsMS42LTQuNWgxNC44TDIxIDlcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNCA5djExaDE2VjlcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAyMHYtNmg2djZcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHJvdy5zdG9yZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgIDxhICpuZ0lmPVwicm93LnZpZXdhYmxlXCIgY2xhc3M9XCJhdjItbGlua1wiIHJvdXRlckxpbms9XCIvbWFuYWdlL3RyYXgvYXVkaXQtdjIvZ2FsbGVyeVwiXHJcbiAgICAgICAgICAgICAgICBbcXVlcnlQYXJhbXNdPVwiZ2FsbGVyeVBhcmFtcyhyb3cpXCIgdGl0bGU9XCJPcGVuIHRoaXMgc3VibWlzc2lvbiBpbiB0aGUgR2FsbGVyeVwiPlZpZXc8L2E+XHJcbiAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhcm93LnZpZXdhYmxlXCIgY2xhc3M9XCJhdjItZmFpbnRcIj4tPC9zcGFuPlxyXG4gICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgPC90cj5cclxuICAgICAgICA8L3Rib2R5PlxyXG4gICAgICA8L3RhYmxlPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIiFsb2dMb2FkaW5nICYmICFmaWx0ZXJlZFJvd3MubGVuZ3RoXCIgY2xhc3M9XCJhdjItZW1wdHlcIj5cclxuICAgICAgPGltZyBjbGFzcz1cImF2Mi1lbXB0eS1pbWdcIiBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGExLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXYyLWVtcHR5LXRleHRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXYyLWVtcHR5LXRpdGxlXCI+Tm8gZGF0YSBmb3VuZDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdjItZW1wdHktc3ViXCI+VGhlcmUgaXMgbm8gcmVzdWx0IGZvciB7eyB0YWIgfX08L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWxvZ0xvYWRpbmcgJiYgZmlsdGVyZWRSb3dzLmxlbmd0aFwiIGNsYXNzPVwibG9nLXBhZ2luYXRpb25cIj5cclxuICAgICAgPGxpYi1wYWdpbmF0aW9uIFtpdGVtc1BlclBhZ2VdPVwiaXRlbXNQZXJQYWdlXCIgW3BhZ2VTaXplXT1cIml0ZW1zUGVyUGFnZVwiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnZVNpemVzXCIgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCIgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiXHJcbiAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIiAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvc2VjdGlvbj5cclxuXHJcbjwvZGl2PlxyXG4iXX0=
|