tango-app-ui-store-builder 1.0.12 → 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/fixture-template/fixture-template.component.mjs +9 -23
- package/esm2022/lib/components/fixture-template/template-basic-details/template-basic-details.component.mjs +47 -84
- package/esm2022/lib/components/fixture-template/template-products/template-products.component.mjs +1 -1
- package/esm2022/lib/components/fixture-template/template-vms/template-vms.component.mjs +5 -4
- package/esm2022/lib/components/manage-store-plano/manage-store-plano-feedback/manage-store-plano-feedback.component.mjs +3 -3
- package/esm2022/lib/components/manage-store-plano/manage-store-plano.component.mjs +46 -366
- package/esm2022/lib/components/manage-store-plano/plano-rollout/plano-rollout.component.mjs +10 -51
- package/esm2022/lib/components/manage-store-plano/template-basic-details/template-basic-details.component.mjs +9 -26
- package/esm2022/lib/components/manage-store-plano/template-products/template-products.component.mjs +2 -2
- package/esm2022/lib/components/manage-store-plano/template-vms/template-vms.component.mjs +73 -101
- package/esm2022/lib/components/reactive-select/reactive-select.component.mjs +3 -3
- package/esm2022/lib/interfaces/fixture-template.interface.mjs +1 -1
- package/esm2022/lib/services/store-builder.service.mjs +4 -4
- package/esm2022/lib/tango-store-builder.module.mjs +7 -11
- package/fesm2022/tango-app-ui-store-builder.mjs +1147 -2524
- package/fesm2022/tango-app-ui-store-builder.mjs.map +1 -1
- package/lib/components/fixture-template/fixture-template.component.d.ts +0 -1
- package/lib/components/fixture-template/template-basic-details/template-basic-details.component.d.ts +9 -9
- package/lib/components/manage-plano/rollout-table/rollout-table.component.d.ts +1 -1
- package/lib/components/manage-plano/verification-table/verification-table.component.d.ts +1 -1
- package/lib/components/manage-store-plano/manage-store-plano.component.d.ts +6 -23
- package/lib/components/manage-store-plano/plano-rollout/plano-rollout.component.d.ts +1 -1
- package/lib/components/manage-store-plano/template-basic-details/template-basic-details.component.d.ts +6 -7
- package/lib/components/manage-store-plano/template-vms/template-vms.component.d.ts +9 -9
- package/lib/interfaces/fixture-template.interface.d.ts +2 -2
- package/lib/services/store-builder.service.d.ts +1 -1
- package/lib/tango-store-builder.module.d.ts +33 -35
- package/package.json +1 -1
- package/esm2022/lib/components/manage-store-plano/verification-feedback/action-confirm-popup/action-confirm-popup.component.mjs +0 -80
- package/esm2022/lib/components/manage-store-plano/verification-feedback/fixture/fixture.component.mjs +0 -375
- package/esm2022/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.mjs +0 -486
- package/lib/components/manage-store-plano/verification-feedback/action-confirm-popup/action-confirm-popup.component.d.ts +0 -21
- package/lib/components/manage-store-plano/verification-feedback/fixture/fixture.component.d.ts +0 -48
- package/lib/components/manage-store-plano/verification-feedback/verification-feedback.component.d.ts +0 -76
|
@@ -721,11 +721,11 @@ export class ManageStorePlanoFeedbackComponent {
|
|
|
721
721
|
}
|
|
722
722
|
}
|
|
723
723
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ManageStorePlanoFeedbackComponent, deps: [{ token: i1.StoreBuilderService }, { token: i0.ChangeDetectorRef }, { token: i2.NgbModal }, { token: i3.GlobalStateService }], target: i0.ɵɵFactoryTarget.Component });
|
|
724
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ManageStorePlanoFeedbackComponent, selector: "app-manage-store-plano-feedback", inputs: { currentPlano: "currentPlano", storeFeedback: "storeFeedback", selectedIssue: "selectedIssue" }, outputs: { isApproved: "isApproved" }, viewQueries: [{ propertyName: "bodyBlockRef", first: true, predicate: ["bodyBlock"], descendants: true }, { propertyName: "accordion", first: true, predicate: ["accordion"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<section *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n\r\n<section *ngIf=\"!loading\">\r\n <div class=\"d-flex justify-content-between border-bottom\">\r\n <div>\r\n <div class=\"storeResponse\">Store response</div>\r\n <div class=\"normalText mb-5\">Click a fixture or view all</div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <button *ngIf=\"selectedFixture?.fixtureId\" (click)=\"reload()\"\r\n class=\"btn btn-light text-primary border-0 px-3 py-2\" style=\"background-color: #eaf6ff; border-radius: 1rem;\">\r\n Clear Filter\r\n </button>\r\n <lib-filters *ngIf=\"!selectedFixture?.fixtureId\" [dataObject]=\"dataObject\"\r\n (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"vmFeedback?.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"details\" [collapsed]=\"openvm\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Vm verification assigned</div>\r\n <div class=\"grayText\">{{vmFeedback[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"completedVm===vmFeedback.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Vm matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"completedVm!==vmFeedback.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Vm mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingVmissues>0\">\r\n {{pendingVmissues}}/{{totalVmissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedVmissues>0&&pendingVmissues===0\">\r\n {{approvedVmissues}}/{{totalVmissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName}} -\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{vmtaskIndex+1}}/{{vmFeedback.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmFeedback.length>vmtaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(vmFeedback.length)===(vmtaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of vmFeedback[vmtaskIndex]?.FixtureData?.vmConfig;let i=index\">\r\n <div [id]=\"'vm' + i\" class=\"vm-block\" [style]=\"handlevmPosition(vm,i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle wordWrap\">{{vm?.vmName}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngFor=\"let shelfData of vmFeedback[vmtaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of vmFeedback[vmtaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n\r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-start mt-5\">\r\n\r\n <div *ngIf=\"item.issueType==='VmMissing'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='extraVm'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n Total misplaced VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\"\r\n *ngFor=\"let vmData of item?.Details[fixtureIndex]?.vmConfig\">\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n current\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.vmName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">VM Name :</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmData?.vmName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.startYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.startYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.endYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.endYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.xZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.xZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.yZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Vertical zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.yZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.position\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.position}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n New\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newstartYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newstartYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newendYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newendYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newxZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newxZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newyZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Vertical zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newyZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newposition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newposition}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.vmConfig?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of item?.Details[fixtureIndex]?.vmConfignew;let m=index\">\r\n <div [id]=\"'vm' + m\" class=\"vm-block\" [style]=\"handlevmPosition(vm,m)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + m\"\r\n [class]=\"vm.newVm ? 'redBorder' : ''\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle\">{{vm?.vmName}}</span>\r\n <!-- <h3>{{ item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</h3> -->\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex].answers[0]?.image&&vmFeedback[vmtaskIndex].answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex].answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'vm',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'vm',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.image&&vmFeedback[vmtaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex]?.answers[0]?.image}}\" alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of vmFeedback[vmtaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"originalData.vmComment.length>0&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.vmComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"storeFixtureList?.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"detailsfixture\" [collapsed]=\"openfixture\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Fixture verification assigned</div>\r\n <div class=\"grayText\">{{storeFixtureList[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <!-- <div class=\"h-divider mt-3 ms-5\"></div> -->\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"completedFixture===storeFixtureList.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Fixture matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"completedFixture!==storeFixtureList.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Fixture mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingFixtureissues>0\">\r\n {{pendingFixtureissues}}/{{totalFixtureissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedFixtureissues>0&&pendingFixtureissues===0\">\r\n {{approvedFixtureissues}}/{{totalFixtureissues}} action done\r\n </div>\r\n </div> -->\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureName}} -\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureWidth.value}}\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureWidth.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixturetaskIndex+1}}/{{storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"storeFixtureList.length>fixturetaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(storeFixtureList.length)===(fixturetaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total Shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total Product Capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n <ng-container\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.border\">\r\n <div class=\"badge\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone\"\r\n [ngStyle]=\"{\r\n 'background-color':storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.textBg,\r\n color:storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.text}\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}\r\n </div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}}\r\n </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let shelfData of storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{'background-color':(shelfData?.zone || storeFixtureList[fixturetaskIndex]?.FixtureData?.productResolutionLevel === 'L1') ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':(shelfData?.zone || storeFixtureList[fixturetaskIndex]?.FixtureData?.productResolutionLevel === 'L1') ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.textBg : shlefColor[i].textBg,\r\n color:(shelfData?.zone || storeFixtureList[fixturetaskIndex]?.FixtureData?.productResolutionLevel === 'L1') ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.text : shlefColor[i].text}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of storeFixtureList[fixturetaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div> <span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-center mt-5\">\r\n\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixturetemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixturetemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.issueType==='sizeWrong'\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureWidth?.value}}\r\n {{item?.Details[fixtureIndex]?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='productcategoryWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n\r\n <div class=\"col-md-7\" *ngFor=\"let category of missing?.productCategory\">\r\n <div class=\"shelfText breakWord badge \">{{category}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='brandWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div *ngFor=\"let brand of missing?.brand\" class=\"shelfText breakWord badge m-1\"\r\n [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n {{brand}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType!=='brandWrong'&&item?.issueType!=='productcategoryWrong'\">\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel text-capitalize\">{{shlefdata?.shelfType}}\r\n {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\">Capacity: <span\r\n class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-2\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Planogram response by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\"\r\n [style]=\"['Fixture type is wrong','Fixture size is wrong'].includes(item?.question) ? 'border:1px solid red' : ''\">\r\n\r\n <div id=\"header-block\" class=\"header-block\"\r\n style=\"border: 0.771px solid var(--Gray-400, #98A2B3);background: #F2F3F7;\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container *ngIf=\"['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div\r\n [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ?'danger' : ''\">\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString() ?? storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}}\r\n </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\"\r\n [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ? 'danger' : ''\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] ||\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}}\r\n </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\"\r\n [ngbTooltip]=\"tooltip\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\" [ngStyle]=\"{\r\n 'border-top':(getStartPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-bottom':(getEndPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-left':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-right':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n background: 'var(--Gray-100, #f8f9fb)',}\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'fixture',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'fixture',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.issues?.length===0\">\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n </div>\r\n <img\r\n src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureImage ? storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureImage : storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\"\r\n alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCategory\">\r\n <div class=\"textHeading\">AI Output \u2728</div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"aiLayoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\"\r\n [style.color]=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory?.toLowerCase() !== storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCategory?.toLowerCase() ? '#b42318': ''\">\r\n {{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCategory ?? '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"aiLayoutLabel\">Fixture Header:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\"\r\n [style.color]=\"matchFixtureCategory(storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label,storeFixtureList[fixturetaskIndex]?.fixtureAIData)\">\r\n {{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.header?.label ?? '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"aiLayoutLabel\">Total Shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\"\r\n [style.color]=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length !== storeFixtureList[fixturetaskIndex]?.fixtureAIData?.shelfConfig?.length ? '#b42318': ''\">\r\n {{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.shelfConfig?.length ?? 0}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"aiLayoutLabel\">Total Product Capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\"\r\n [style.color]=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity !== storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCapacity ? '#b42318': ''\">\r\n {{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCapacity ?? 0}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"aiLayoutLabel\">VM Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\" [style.color]=\"compareType(storeFixtureList[fixturetaskIndex])\">\r\n {{getType(storeFixtureList[fixturetaskIndex])}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"aiLayoutLabel\">VM Name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\" [style.color]=\"compareName(storeFixtureList[fixturetaskIndex])\">\r\n {{getName(storeFixtureList[fixturetaskIndex])}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-12\">\r\n <div class=\"aiLayoutLabel\">Visual Merchandise Image:</div>\r\n </div><br />\r\n <div class=\"row\">\r\n <div class=\"col-md-6 mt-5\"\r\n *ngFor=\"let vm of storeFixtureList[fixturetaskIndex]?.fixtureAIData?.vmConfig\"> <img\r\n src=\"{{cdnUrl}}{{vm.vmImage}}\" (click)=\"openPopup(vm.vmImage)\"\r\n style=\"width:120px;height:120px\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"popup\" *ngIf=\"selectedImage\" (click)=\"closePopup()\">\r\n <!-- <span class=\"close\" (click)=\"closePopup($event)\">×</span> -->\r\n <img [src]=\"selectedImage\" class=\"popup-img\" (click)=\"$event.stopPropagation()\" />\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\"\r\n *ngFor=\"let comment of storeFixtureList[fixturetaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated\r\n \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.approvalStatus==='pending' && selectedFixture?.fixtureId && !storeFixtureList[fixturetaskIndex]?.answers[0]?.status && storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCategory\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',storeFixtureList[fixturetaskIndex]?._id,storeFixtureList[fixturetaskIndex]?.answers[0]?._id,'','','fixture','',storeFixtureList[fixturetaskIndex]?.fixtureAIData)\">\r\n Agree</div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',storeFixtureList[fixturetaskIndex]?._id,storeFixtureList[fixturetaskIndex]?.answers[0]?._id,'','','fixture','',storeFixtureList[fixturetaskIndex]?.fixtureAIData)\">Disagree</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"originalData.fixtureComment.length>0&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.fixtureComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"layoutFeedback.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'details-' + i }}\" [collapsed]=\"feedback.collapsed\" (headerClick)=\"togglePanel(i)\"\r\n class=\"mb-5\" *ngFor=\"let feedback of layoutFeedback;let i = index\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div *ngIf=\"feedback?.taskType==='initial'\">Layout verification assigned</div>\r\n <div *ngIf=\"feedback?.taskType==='redo'\">Layout verification re-assigned</div>\r\n <div class=\"grayText\">{{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"feedback?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"feedback?.status==='complete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"feedback?.status==='incomplete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&pendingLayoutissues>0\">\r\n {{pendingLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&approvedLayoutissues>0&&pendingLayoutissues===0\">\r\n {{approvedLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action done\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of feedback.answers;let j = index\">\r\n <ng-container *ngIf=\"issues?.issues?.length>0\">\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n\r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n <!-- <div>{{item?.Details[fixtureIndex]?.fixtureName}}</div> -->\r\n <div class=\"d-flex justify-content-between mt-5\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.fixtureName\">\r\n <div class=\"cursor-pointer\" (click)=\"previousFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixtureIndex+1}}/{{item?.Details.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nextFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"item?.Details.length>fixtureIndex+1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(item?.Details.length)===(fixtureIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureTemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureTemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel text-capitalize\">{{shlefdata?.shelfType}}\r\n {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\">Capacity: <span\r\n class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-3\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementType}}\r\n {{item?.Details[fixtureIndex]?.associatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementFixtureNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementType}}{{item?.Details[fixtureIndex]?.newassociatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div *ngIf=\"item.issueType==='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Store Fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType!=='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Planogram fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Below fixture is in the planogram but not in store.\r\n </div>\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n <!-- Header block -->\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{item?.Details[fixtureIndex]?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <!-- Body block -->\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container\r\n *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+ this.shlefColor[i].border\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.text\r\n }\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}}\r\n </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n <!-- @if(item.shelfType ==='shelf'){ -->\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{\r\n 'background-color':shelfData?.zone ? item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.bg : shlefColor[i].bg}\">\r\n\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.text\r\n }\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{item?.Details[fixtureIndex]?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.image&&item?.Details[fixtureIndex]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{item?.Details[fixtureIndex]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"item?.Details[fixtureIndex]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.Details[fixtureIndex]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId||item?.Details[fixtureIndex]?.status==='pending'&&item.issueType==='others'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'layout',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'layout',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"my-4 w-100\" *ngIf=\"feedback?.answers[0]?.video&&feedback?.answers[0]?.video!==''\">\r\n <div class=\"assignText\">Store Video</div>\r\n <video controls src=\"{{cdnUrl}}{{feedback?.answers[0]?.video}}\" class=\"mt-4 w-100\"></video>\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"originalData.layoutComment.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.layoutComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n\r\n <div class=\"mt-5\" *ngIf=\"layoutFeedback?.length===0&&storeFixtureList?.length===0&&vmFeedback?.length===0&&!loading\">\r\n <div class=\"text-center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\" stroke-width=\"13.3333\" />\r\n <path\r\n d=\"M35.9502 48.1997C35.6489 48.2315 35.3422 48.2505 35.0312 48.2505C34.8617 48.2505 34.6944 48.2436 34.5293 48.2339V58.6069C34.5293 60.0349 35.7123 61.226 37.2002 61.2261H56.8047C58.2927 61.2261 59.4756 60.035 59.4756 58.6069V48.2349C59.3137 48.2441 59.1498 48.2505 58.9854 48.2505C58.6714 48.2505 58.3608 48.2325 58.0547 48.1997V55.9878H35.9502V48.1997ZM57.9316 32.7739H36.0732C35.8959 32.7739 35.7406 32.8667 35.6631 32.9878L35.6611 32.9897L32.1514 38.4731L32.0566 38.6206C30.8311 40.7404 32.0957 43.4674 34.4473 43.7769C34.6482 43.8013 34.8379 43.8159 35.0254 43.8159C36.2555 43.8159 37.3434 43.2872 38.1006 42.4653L39.0225 41.4644L39.9414 42.4683C40.6903 43.2863 41.777 43.8159 43.0146 43.8159C44.2467 43.8158 45.3386 43.2856 46.0869 42.4683L47.0088 41.4614L47.9307 42.4683C48.679 43.2857 49.7707 43.8159 51.0029 43.8159C52.2351 43.8159 53.3268 43.2857 54.0752 42.4683L54.9971 41.4614L55.9189 42.4683C56.6673 43.2857 57.76 43.8159 58.9922 43.8159C59.1736 43.8159 59.3687 43.8021 59.5684 43.7778H59.5674C61.9611 43.4573 63.2293 40.6078 61.8613 38.4731L61.8604 38.4741L58.3438 32.9907L58.3428 32.9878C58.2653 32.8665 58.1092 32.7739 57.9316 32.7739Z\"\r\n stroke=\"#009BF3\" stroke-width=\"2.5\" />\r\n </svg>\r\n </div>\r\n <div class=\"mt-3 text-center\">\r\n <div class=\"fw-bold h3 mt-2\">No issue</div>\r\n <div class=\"mt-4\">The store did not flag it as an issue.</div>\r\n </div>\r\n </div>\r\n</section>", styles: [".header{background:#fff;padding:12px;border-radius:12px;display:flex;align-items:center;justify-content:space-between}.btn{padding:.775rem 1.5rem!important;font-size:1.1rem!important}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;padding:2px 8px;border-radius:16px}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.builder{height:75vh}.builder .cols{background:#fff;border-radius:12px;padding:24px 24px 12px;max-height:75vh;overflow-y:auto}.shelf-container{border-radius:8px;background:var(--Gray-50, #f9fafb);padding:8px 16px;margin-bottom:12px}.counter-container{display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:#fff;padding:10px;border:.49px solid #d0d5dd}.counter-container span{margin:0 18px;font-weight:500;font-size:14px;text-align:center;vertical-align:middle;width:18px}.disable-counter{color:var(--bs-gray-500)!important;background-color:var(--bs-gray-200)!important;border-color:var(--bs-gray-300)!important;pointer-events:none;opacity:1}.disabled-click{pointer-events:none;opacity:.85}.wall-viewport{display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:30px;width:345px;text-align:center}.wall-viewport .wrapper{width:100%;max-width:345px}.wall-viewport .header-info,.wall-viewport .footer-info,.wall-viewport .body-info{width:100%;border:2px solid #f2f4f7;border-bottom:4px solid #ffffff;background:#f2f4f7;max-width:230px;display:flex;align-items:center;justify-content:center;justify-content:start;padding:12px;gap:4px}.wall-viewport .header-info p,.wall-viewport .footer-info p,.wall-viewport .body-info p{margin:0}.wall-viewport .header-info{margin-top:40px}.wall-viewport .sub-footer{border:1px solid #98a2b3;height:100%}.wall-viewport .header-block,.wall-viewport .footer-block{border:1px solid #98a2b3;height:95px;padding:8px;background-color:#f2f4f7;width:100%;display:flex;justify-content:center;align-items:center}.wall-viewport .header-block p,.wall-viewport .footer-block p{color:var(--Gray-600, #475467);font-size:18px;font-weight:600;white-space:normal;word-wrap:break-word;margin:0;background-color:#f2f4f7}.wall-viewport .body-block{width:100%}.wall-viewport .body-block .block{border:1px solid #98a2b3;padding:10px;width:100%;max-width:345px;overflow-x:auto;min-height:52px}.wall-viewport .body-block .tray,.wall-viewport .body-block .shelf{display:flex;gap:4px}.wall-viewport .body-block .tray .product,.wall-viewport .body-block .shelf .product{border:1px solid rgba(152,162,179,.2901960784);min-width:50px}.wall-viewport .body-block .tray .product{min-height:20px}.wall-viewport .body-block .shelf .product{min-height:30px}.wall-viewport .body-block .hide-product{border-color:transparent!important}.wall-viewport .body-block .hide-scroll{overflow-x:hidden!important}.horizontal-dimension{display:flex;align-items:center;justify-content:center;height:30px;position:relative}.horizontal-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.horizontal-dimension .arrow.left{transform:rotate(180deg);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .arrow.right{transform:rotate(0);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;height:1px}.horizontal-dimension .line span{position:absolute;top:-12px;color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:0 4px}.vertical-dimension{display:flex;flex-direction:column;align-items:center;width:30px;position:relative}.vertical-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.vertical-dimension .arrow.up{transform:rotate(-90deg);margin-top:20px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .arrow.down{transform:rotate(90deg);margin-bottom:26px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;width:1px}.vertical-dimension .line span{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:2px 4px}.info-card{padding:12px;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a}.info-card h3{font-weight:600;font-size:18px;line-height:28px;vertical-align:middle}.info-card p{font-weight:500;font-size:14px;line-height:20px;color:#667085;margin:0}.checkbox input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #d0d5dd)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkbox input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00a3ff)!important;background-color:var(--primary-50, #eaf8ff)}.checkbox input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00a3ff;border-right:2px solid #00a3ff;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.nav-pills{display:inline-flex;gap:4px}.nav-pills .nav-item .nav-link{border-radius:0;color:#667085;font-size:14px;font-weight:500;padding:8px 16px;border:none}.nav-pills .nav-item .nav-link:hover{background-color:#00000005}.nav-pills .nav-item .nav-link.active{background-color:#eaf8ff;color:#009bf3;border-bottom:3px solid #009bf3}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 400px);height:100%;padding:16px 24px;display:flex;flex-direction:column}.loader .shimmer{height:150px}.filter-tab{border:1px solid rgb(234,236,240);background:#fff;box-shadow:0 1px 2px #1018280d;border-radius:8px;padding:18px;transition:all ease .2s}.filter-tab:hover{cursor:pointer}.filter-tab.selected{background:#f6fcff;border:1px solid rgb(107,202,255);box-shadow:0 1px 2px #1018280d}.filter-tab h3{color:#000;font-size:20px;font-weight:600;line-height:30px;margin:0}.filter-tab p{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;margin:0}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vm-preview{padding:12px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);margin-bottom:12px}.vm-preview h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600}.vm-preview p{color:var(--Gray-700, #344054);font-size:12px;font-weight:400}.vm-preview .preview{width:134px;height:134px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);background:var(--Gray-50, #f9fafb)}.vm-preview .preview img{border-radius:2px}.vm-placeholder{border:4px solid var(--Black, #101828);background:#f9fafb;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:8px}::ng-deep .redBorder{border:4px solid red!important}.vm-block{position:absolute;width:100px;height:100px;transition:all .3s ease}.vm-block h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;margin:0}.storeResponse{color:var(--Black, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.normalText{color:var(--Gray-600, #475467);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.border-bottom{border-bottom:1px solid #d0d5dd}.grayText{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.layoutLabel{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.assignText{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:12px;font-style:normal;font-weight:600;line-height:18px}.h-divider{width:2px;height:46px;border-radius:2px;background:var(--Gray-200, #eaecf0)}.shelfText{color:var(--Gray-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.badge.badge-secondary{color:var(--Gray-700, #344054);background:var(--Gray-100, #f2f4f7)}.breakWord{overflow-wrap:break-word}.smallBoldText{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:600;line-height:15.573px}.smallText{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.headerStyle{color:var(--Primary-600, #00A3FF);text-align:center;font-family:Inter;font-size:13.843px;font-style:normal;font-weight:600;line-height:20.764px;padding-top:15px}.two-tone-btn{color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:600;line-height:20px;border-radius:6px;border:1px solid var(--Primary-300, #6BCAFF);padding:8px 14px}.two-tone-btn:hover{border:1px solid var(--Primary-300, #6BCAFF);color:var(--Primary-700, #009BF3);cursor:pointer}.footer-block{position:relative;box-sizing:border-box;justify-content:space-between!important}.footer-block p{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#f2f4f7;z-index:1}.sub-footer{position:relative;width:48%}.array-wrapper{border-radius:4px;background:var(--Gray-50, #f9fafb);padding:16px}.array-container{border-radius:6px;padding:12px;background:#fff;margin-bottom:12px}.wall-viewport{position:relative}img{width:100%;height:100%;object-fit:cover;display:block}::ng-deep .wall-viewport .body-block .block{max-width:100%!important}.secStyle{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.block.shelf{height:50px!important}.danger{color:red}.wordWrap{max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.textHeading{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.aiLayoutLabel{color:var(--Gray-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.popup{position:fixed;inset:0;background-color:#000000d9;display:flex;justify-content:center;align-items:center;z-index:1000}.popup-img{display:block;max-width:none;max-height:none;width:auto;height:auto;object-fit:contain}\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: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i5.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "directive", type: i2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i2.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i2.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i2.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i2.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i2.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i2.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "pipe", type: i4.DatePipe, name: "date" }] });
|
|
724
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ManageStorePlanoFeedbackComponent, selector: "app-manage-store-plano-feedback", inputs: { currentPlano: "currentPlano", storeFeedback: "storeFeedback", selectedIssue: "selectedIssue" }, outputs: { isApproved: "isApproved" }, viewQueries: [{ propertyName: "bodyBlockRef", first: true, predicate: ["bodyBlock"], descendants: true }, { propertyName: "accordion", first: true, predicate: ["accordion"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<section *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n\r\n<section *ngIf=\"!loading\">\r\n <div class=\"d-flex justify-content-between border-bottom\">\r\n <div>\r\n <div class=\"storeResponse\">Store response</div>\r\n <div class=\"normalText mb-5\">Click a fixture or view all</div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <button *ngIf=\"selectedFixture?.fixtureId\" (click)=\"reload()\" class=\"btn btn-light text-primary border-0 px-3 py-2\"\r\n style=\"background-color: #eaf6ff; border-radius: 1rem;\">\r\n Clear Filter\r\n </button>\r\n <lib-filters *ngIf=\"!selectedFixture?.fixtureId\" [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"vmFeedback?.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"details\" [collapsed]=\"openvm\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Vm verification assigned</div>\r\n <div class=\"grayText\">{{vmFeedback[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"completedVm===vmFeedback.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Vm matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"completedVm!==vmFeedback.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Vm mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingVmissues>0\">\r\n {{pendingVmissues}}/{{totalVmissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedVmissues>0&&pendingVmissues===0\">\r\n {{approvedVmissues}}/{{totalVmissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName}} - {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}} {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{vmtaskIndex+1}}/{{vmFeedback.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmFeedback.length>vmtaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(vmFeedback.length)===(vmtaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of vmFeedback[vmtaskIndex]?.FixtureData?.vmConfig;let i=index\">\r\n <div [id]=\"'vm' + i\" class=\"vm-block\" [style]=\"handlevmPosition(vm,i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle wordWrap\">{{vm?.vmName}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngFor=\"let shelfData of vmFeedback[vmtaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of vmFeedback[vmtaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n\r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-start mt-5\">\r\n\r\n <div *ngIf=\"item.issueType==='VmMissing'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='extraVm'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n Total misplaced VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\"\r\n *ngFor=\"let vmData of item?.Details[fixtureIndex]?.vmConfig\">\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n current\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.vmName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">VM Name :</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmData?.vmName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.startYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.startYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.endYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.endYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.xZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.xZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.yZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Vertical zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.yZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.position\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.position}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n New\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newstartYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newstartYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newendYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newendYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newxZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newxZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newyZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Vertical zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newyZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newposition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newposition}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.vmConfig?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of item?.Details[fixtureIndex]?.vmConfignew;let m=index\">\r\n <div [id]=\"'vm' + m\" class=\"vm-block\" [style]=\"handlevmPosition(vm,m)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + m\"\r\n [class]=\"vm.newVm ? 'redBorder' : ''\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle\">{{vm?.vmName}}</span>\r\n <!-- <h3>{{ item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</h3> -->\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex].answers[0]?.image&&vmFeedback[vmtaskIndex].answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex].answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'vm',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'vm',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.image&&vmFeedback[vmtaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex]?.answers[0]?.image}}\" alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of vmFeedback[vmtaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"originalData.vmComment.length>0&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.vmComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"storeFixtureList?.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"detailsfixture\" [collapsed]=\"openfixture\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Fixture verification assigned</div>\r\n <div class=\"grayText\">{{storeFixtureList[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <!-- <div class=\"h-divider mt-3 ms-5\"></div> -->\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"completedFixture===storeFixtureList.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Fixture matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"completedFixture!==storeFixtureList.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Fixture mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingFixtureissues>0\">\r\n {{pendingFixtureissues}}/{{totalFixtureissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedFixtureissues>0&&pendingFixtureissues===0\">\r\n {{approvedFixtureissues}}/{{totalFixtureissues}} action done\r\n </div>\r\n </div> -->\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}} - {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}} {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixturetaskIndex+1}}/{{storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"storeFixtureList.length>fixturetaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(storeFixtureList.length)===(fixturetaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total Shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total Product Capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n <ng-container\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.border\">\r\n <div class=\"badge\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone\"\r\n [ngStyle]=\"{\r\n 'background-color':storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.textBg,\r\n color:storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.text}\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}\r\n </div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let shelfData of storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{'background-color':(shelfData?.zone || storeFixtureList[fixturetaskIndex]?.FixtureData?.productResolutionLevel === 'L1') ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':(shelfData?.zone || storeFixtureList[fixturetaskIndex]?.FixtureData?.productResolutionLevel === 'L1') ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.textBg : shlefColor[i].textBg,\r\n color:(shelfData?.zone || storeFixtureList[fixturetaskIndex]?.FixtureData?.productResolutionLevel === 'L1') ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.text : shlefColor[i].text}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of storeFixtureList[fixturetaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div> <span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-center mt-5\">\r\n\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixturetemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixturetemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.issueType==='sizeWrong'\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureWidth?.value}}\r\n {{item?.Details[fixtureIndex]?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='productcategoryWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n\r\n <div class=\"col-md-7\" *ngFor=\"let category of missing?.productCategory\">\r\n <div class=\"shelfText breakWord badge \">{{category}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='brandWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div *ngFor=\"let brand of missing?.brand\" class=\"shelfText breakWord badge m-1\"\r\n [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n {{brand}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType!=='brandWrong'&&item?.issueType!=='productcategoryWrong'\">\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel text-capitalize\">{{shlefdata?.shelfType}} {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\" >Capacity: <span class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-2\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Planogram response by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\"\r\n [style]=\"['Fixture type is wrong','Fixture size is wrong'].includes(item?.question) ? 'border:1px solid red' : ''\">\r\n\r\n <div id=\"header-block\" class=\"header-block\"\r\n style=\"border: 0.771px solid var(--Gray-400, #98A2B3);background: #F2F3F7;\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container *ngIf=\"['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ?'danger' : ''\">\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString() ?? storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span\r\n class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\" [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ? 'danger' : ''\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] ||\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span\r\n class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\" [ngStyle]=\"{\r\n 'border-top':(getStartPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-bottom':(getEndPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-left':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-right':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n background: 'var(--Gray-100, #f8f9fb)',}\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'fixture',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'fixture',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.issues?.length===0\">\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n </div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureImage ? storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureImage : storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCategory\">\r\n <div class=\"textHeading\">AI Output \u2728</div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\" >\r\n <div class=\"aiLayoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\" [style.color]=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory?.toLowerCase() !== storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCategory?.toLowerCase() ? '#b42318': ''\">{{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCategory ?? '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\" >\r\n <div class=\"aiLayoutLabel\">Fixture Header:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\" [style.color]=\"matchFixtureCategory(storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label,storeFixtureList[fixturetaskIndex]?.fixtureAIData)\">{{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.header?.label ?? '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\" >\r\n <div class=\"aiLayoutLabel\">Total Shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\" [style.color]=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length !== storeFixtureList[fixturetaskIndex]?.fixtureAIData?.shelfConfig?.length ? '#b42318': ''\">{{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.shelfConfig?.length ?? 0}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\" >\r\n <div class=\"aiLayoutLabel\">Total Product Capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\" >\r\n <div class=\"shelfText breakWord\" [style.color]=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity !== storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCapacity ? '#b42318': ''\">{{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCapacity ?? 0}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\" >\r\n <div class=\"aiLayoutLabel\">VM Type:</div>\r\n </div>\r\n <div class=\"col-md-7\" >\r\n <div class=\"shelfText breakWord\" [style.color]=\"compareType(storeFixtureList[fixturetaskIndex])\">{{getType(storeFixtureList[fixturetaskIndex])}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\" >\r\n <div class=\"aiLayoutLabel\">VM Name:</div>\r\n </div>\r\n <div class=\"col-md-7\" >\r\n <div class=\"shelfText breakWord\" [style.color]=\"compareName(storeFixtureList[fixturetaskIndex])\">{{getName(storeFixtureList[fixturetaskIndex])}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-12\" >\r\n <div class=\"aiLayoutLabel\">Visual Merchandise Image:</div>\r\n </div><br />\r\n <div class=\"row\">\r\n <div class=\"col-md-6 mt-5\" *ngFor=\"let vm of storeFixtureList[fixturetaskIndex]?.fixtureAIData?.vmConfig\" > <img src=\"{{cdnUrl}}{{vm.vmImage}}\" (click)=\"openPopup(vm.vmImage)\" style=\"width:120px;height:120px\"/>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"popup\" *ngIf=\"selectedImage\" (click)=\"closePopup()\">\r\n <!-- <span class=\"close\" (click)=\"closePopup($event)\">×</span> -->\r\n <img [src]=\"selectedImage\" class=\"popup-img\" (click)=\"$event.stopPropagation()\" />\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\"\r\n *ngFor=\"let comment of storeFixtureList[fixturetaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated \r\n \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.approvalStatus==='pending' && selectedFixture?.fixtureId && !storeFixtureList[fixturetaskIndex]?.answers[0]?.status && storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCategory\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\" (click)=\"confirmation('agree',storeFixtureList[fixturetaskIndex]?._id,storeFixtureList[fixturetaskIndex]?.answers[0]?._id,'','','fixture','',storeFixtureList[fixturetaskIndex]?.fixtureAIData)\">Agree</div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\" (click)=\"confirmation('disagree',storeFixtureList[fixturetaskIndex]?._id,storeFixtureList[fixturetaskIndex]?.answers[0]?._id,'','','fixture','',storeFixtureList[fixturetaskIndex]?.fixtureAIData)\">Disagree</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"originalData.fixtureComment.length>0&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.fixtureComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"layoutFeedback.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'details-' + i }}\" [collapsed]=\"feedback.collapsed\" (headerClick)=\"togglePanel(i)\"\r\n class=\"mb-5\" *ngFor=\"let feedback of layoutFeedback;let i = index\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div *ngIf=\"feedback?.taskType==='initial'\">Layout verification assigned</div>\r\n <div *ngIf=\"feedback?.taskType==='redo'\">Layout verification re-assigned</div>\r\n <div class=\"grayText\">{{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"feedback?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"feedback?.status==='complete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"feedback?.status==='incomplete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&pendingLayoutissues>0\">\r\n {{pendingLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&approvedLayoutissues>0&&pendingLayoutissues===0\">\r\n {{approvedLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action done\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of feedback.answers;let j = index\">\r\n <ng-container *ngIf=\"issues?.issues?.length>0\">\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n\r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n <!-- <div>{{item?.Details[fixtureIndex]?.fixtureName}}</div> -->\r\n <div class=\"d-flex justify-content-between mt-5\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.fixtureName\">\r\n <div class=\"cursor-pointer\" (click)=\"previousFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixtureIndex+1}}/{{item?.Details.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nextFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"item?.Details.length>fixtureIndex+1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(item?.Details.length)===(fixtureIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureTemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureTemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel text-capitalize\">{{shlefdata?.shelfType}} {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\" >Capacity: <span class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-3\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementType}}\r\n {{item?.Details[fixtureIndex]?.associatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementType}}{{item?.Details[fixtureIndex]?.newassociatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div *ngIf=\"item.issueType==='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Store Fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType!=='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Planogram fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Below fixture is in the planogram but not in store.\r\n </div>\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n <!-- Header block -->\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{item?.Details[fixtureIndex]?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <!-- Body block -->\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container\r\n *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+ this.shlefColor[i].border\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.text\r\n }\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n <!-- @if(item.shelfType ==='shelf'){ -->\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{\r\n 'background-color':shelfData?.zone ? item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.bg : shlefColor[i].bg}\">\r\n\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.text\r\n }\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{item?.Details[fixtureIndex]?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.image&&item?.Details[fixtureIndex]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{item?.Details[fixtureIndex]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"item?.Details[fixtureIndex]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.Details[fixtureIndex]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId||item?.Details[fixtureIndex]?.status==='pending'&&item.issueType==='others'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'layout',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'layout',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"my-4 w-100\" *ngIf=\"feedback?.answers[0]?.video&&feedback?.answers[0]?.video!==''\">\r\n <div class=\"assignText\">Store Video</div>\r\n <video controls src=\"{{cdnUrl}}{{feedback?.answers[0]?.video}}\" class=\"mt-4 w-100\"></video>\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"originalData.layoutComment.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.layoutComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n \r\n\r\n <div class=\"mt-5\" *ngIf=\"layoutFeedback?.length===0&&storeFixtureList?.length===0&&vmFeedback?.length===0&&!loading\">\r\n <div class=\"text-center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\" stroke-width=\"13.3333\" />\r\n <path\r\n d=\"M35.9502 48.1997C35.6489 48.2315 35.3422 48.2505 35.0312 48.2505C34.8617 48.2505 34.6944 48.2436 34.5293 48.2339V58.6069C34.5293 60.0349 35.7123 61.226 37.2002 61.2261H56.8047C58.2927 61.2261 59.4756 60.035 59.4756 58.6069V48.2349C59.3137 48.2441 59.1498 48.2505 58.9854 48.2505C58.6714 48.2505 58.3608 48.2325 58.0547 48.1997V55.9878H35.9502V48.1997ZM57.9316 32.7739H36.0732C35.8959 32.7739 35.7406 32.8667 35.6631 32.9878L35.6611 32.9897L32.1514 38.4731L32.0566 38.6206C30.8311 40.7404 32.0957 43.4674 34.4473 43.7769C34.6482 43.8013 34.8379 43.8159 35.0254 43.8159C36.2555 43.8159 37.3434 43.2872 38.1006 42.4653L39.0225 41.4644L39.9414 42.4683C40.6903 43.2863 41.777 43.8159 43.0146 43.8159C44.2467 43.8158 45.3386 43.2856 46.0869 42.4683L47.0088 41.4614L47.9307 42.4683C48.679 43.2857 49.7707 43.8159 51.0029 43.8159C52.2351 43.8159 53.3268 43.2857 54.0752 42.4683L54.9971 41.4614L55.9189 42.4683C56.6673 43.2857 57.76 43.8159 58.9922 43.8159C59.1736 43.8159 59.3687 43.8021 59.5684 43.7778H59.5674C61.9611 43.4573 63.2293 40.6078 61.8613 38.4731L61.8604 38.4741L58.3438 32.9907L58.3428 32.9878C58.2653 32.8665 58.1092 32.7739 57.9316 32.7739Z\"\r\n stroke=\"#009BF3\" stroke-width=\"2.5\" />\r\n </svg>\r\n </div>\r\n <div class=\"mt-3 text-center\">\r\n <div class=\"fw-bold h3 mt-2\">No issue</div>\r\n <div class=\"mt-4\">The store did not flag it as an issue.</div>\r\n </div>\r\n </div>\r\n</section>", styles: [".header{background:#fff;padding:12px;border-radius:12px;display:flex;align-items:center;justify-content:space-between}.btn{padding:.775rem 1.5rem!important;font-size:1.1rem!important}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;padding:2px 8px;border-radius:16px}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.builder{height:75vh}.builder .cols{background:#fff;border-radius:12px;padding:24px 24px 12px;max-height:75vh;overflow-y:auto}.shelf-container{border-radius:8px;background:var(--Gray-50, #f9fafb);padding:8px 16px;margin-bottom:12px}.counter-container{display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:#fff;padding:10px;border:.49px solid #d0d5dd}.counter-container span{margin:0 18px;font-weight:500;font-size:14px;text-align:center;vertical-align:middle;width:18px}.disable-counter{color:var(--bs-gray-500)!important;background-color:var(--bs-gray-200)!important;border-color:var(--bs-gray-300)!important;pointer-events:none;opacity:1}.disabled-click{pointer-events:none;opacity:.85}.wall-viewport{display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:30px;width:345px;text-align:center}.wall-viewport .wrapper{width:100%;max-width:345px}.wall-viewport .header-info,.wall-viewport .footer-info,.wall-viewport .body-info{width:100%;border:2px solid #f2f4f7;border-bottom:4px solid #ffffff;background:#f2f4f7;max-width:230px;display:flex;align-items:center;justify-content:center;justify-content:start;padding:12px;gap:4px}.wall-viewport .header-info p,.wall-viewport .footer-info p,.wall-viewport .body-info p{margin:0}.wall-viewport .header-info{margin-top:40px}.wall-viewport .sub-footer{border:1px solid #98a2b3;height:100%}.wall-viewport .header-block,.wall-viewport .footer-block{border:1px solid #98a2b3;height:95px;padding:8px;background-color:#f2f4f7;width:100%;display:flex;justify-content:center;align-items:center}.wall-viewport .header-block p,.wall-viewport .footer-block p{color:var(--Gray-600, #475467);font-size:18px;font-weight:600;white-space:normal;word-wrap:break-word;margin:0;background-color:#f2f4f7}.wall-viewport .body-block{width:100%}.wall-viewport .body-block .block{border:1px solid #98a2b3;padding:10px;width:100%;max-width:345px;overflow-x:auto;min-height:52px}.wall-viewport .body-block .tray,.wall-viewport .body-block .shelf{display:flex;gap:4px}.wall-viewport .body-block .tray .product,.wall-viewport .body-block .shelf .product{border:1px solid rgba(152,162,179,.2901960784);min-width:50px}.wall-viewport .body-block .tray .product{min-height:20px}.wall-viewport .body-block .shelf .product{min-height:30px}.wall-viewport .body-block .hide-product{border-color:transparent!important}.wall-viewport .body-block .hide-scroll{overflow-x:hidden!important}.horizontal-dimension{display:flex;align-items:center;justify-content:center;height:30px;position:relative}.horizontal-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.horizontal-dimension .arrow.left{transform:rotate(180deg);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .arrow.right{transform:rotate(0);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;height:1px}.horizontal-dimension .line span{position:absolute;top:-12px;color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:0 4px}.vertical-dimension{display:flex;flex-direction:column;align-items:center;width:30px;position:relative}.vertical-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.vertical-dimension .arrow.up{transform:rotate(-90deg);margin-top:20px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .arrow.down{transform:rotate(90deg);margin-bottom:26px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;width:1px}.vertical-dimension .line span{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:2px 4px}.info-card{padding:12px;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a}.info-card h3{font-weight:600;font-size:18px;line-height:28px;vertical-align:middle}.info-card p{font-weight:500;font-size:14px;line-height:20px;color:#667085;margin:0}.checkbox input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #d0d5dd)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkbox input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00a3ff)!important;background-color:var(--primary-50, #eaf8ff)}.checkbox input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00a3ff;border-right:2px solid #00a3ff;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.nav-pills{display:inline-flex;gap:4px}.nav-pills .nav-item .nav-link{border-radius:0;color:#667085;font-size:14px;font-weight:500;padding:8px 16px;border:none}.nav-pills .nav-item .nav-link:hover{background-color:#00000005}.nav-pills .nav-item .nav-link.active{background-color:#eaf8ff;color:#009bf3;border-bottom:3px solid #009bf3}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 400px);height:100%;padding:16px 24px;display:flex;flex-direction:column}.loader .shimmer{height:150px}.filter-tab{border:1px solid rgb(234,236,240);background:#fff;box-shadow:0 1px 2px #1018280d;border-radius:8px;padding:18px;transition:all ease .2s}.filter-tab:hover{cursor:pointer}.filter-tab.selected{background:#f6fcff;border:1px solid rgb(107,202,255);box-shadow:0 1px 2px #1018280d}.filter-tab h3{color:#000;font-size:20px;font-weight:600;line-height:30px;margin:0}.filter-tab p{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;margin:0}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vm-preview{padding:12px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);margin-bottom:12px}.vm-preview h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600}.vm-preview p{color:var(--Gray-700, #344054);font-size:12px;font-weight:400}.vm-preview .preview{width:134px;height:134px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);background:var(--Gray-50, #f9fafb)}.vm-preview .preview img{border-radius:2px}.vm-placeholder{border:4px solid var(--Black, #101828);background:#f9fafb;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:8px}::ng-deep .redBorder{border:4px solid red!important}.vm-block{position:absolute;width:100px;height:100px;transition:all .3s ease}.vm-block h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;margin:0}.storeResponse{color:var(--Black, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.normalText{color:var(--Gray-600, #475467);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.border-bottom{border-bottom:1px solid #d0d5dd}.grayText{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.layoutLabel{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.assignText{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:12px;font-style:normal;font-weight:600;line-height:18px}.h-divider{width:2px;height:46px;border-radius:2px;background:var(--Gray-200, #eaecf0)}.shelfText{color:var(--Gray-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.badge.badge-secondary{color:var(--Gray-700, #344054);background:var(--Gray-100, #f2f4f7)}.breakWord{overflow-wrap:break-word}.smallBoldText{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:600;line-height:15.573px}.smallText{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.headerStyle{color:var(--Primary-600, #00A3FF);text-align:center;font-family:Inter;font-size:13.843px;font-style:normal;font-weight:600;line-height:20.764px;padding-top:15px}.two-tone-btn{color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:600;line-height:20px;border-radius:6px;border:1px solid var(--Primary-300, #6BCAFF);padding:8px 14px}.two-tone-btn:hover{border:1px solid var(--Primary-300, #6BCAFF);color:var(--Primary-700, #009BF3);cursor:pointer}.footer-block{position:relative;box-sizing:border-box;justify-content:space-between!important}.footer-block p{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#f2f4f7;z-index:1}.sub-footer{position:relative;width:48%}.array-wrapper{border-radius:4px;background:var(--Gray-50, #f9fafb);padding:16px}.array-container{border-radius:6px;padding:12px;background:#fff;margin-bottom:12px}.wall-viewport{position:relative}img{width:100%;height:100%;object-fit:cover;display:block}::ng-deep .wall-viewport .body-block .block{max-width:100%!important}.secStyle{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.block.shelf{height:50px!important}.danger{color:red}.wordWrap{max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.textHeading{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.aiLayoutLabel{color:var(--Gray-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.popup{position:fixed;inset:0;background-color:#000000d9;display:flex;justify-content:center;align-items:center;z-index:1000}.popup-img{display:block;max-width:none;max-height:none;width:auto;height:auto;object-fit:contain}\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: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i5.FiltersComponent, selector: "lib-filters", inputs: ["dataObject"], outputs: ["appliedFilters"] }, { kind: "directive", type: i2.NgbTooltip, selector: "[ngbTooltip]", inputs: ["animation", "autoClose", "placement", "popperOptions", "triggers", "positionTarget", "container", "disableTooltip", "tooltipClass", "tooltipContext", "openDelay", "closeDelay", "ngbTooltip"], outputs: ["shown", "hidden"], exportAs: ["ngbTooltip"] }, { kind: "directive", type: i2.NgbAccordionButton, selector: "button[ngbAccordionButton]" }, { kind: "directive", type: i2.NgbAccordionDirective, selector: "[ngbAccordion]", inputs: ["animation", "closeOthers", "destroyOnHide"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordion"] }, { kind: "directive", type: i2.NgbAccordionItem, selector: "[ngbAccordionItem]", inputs: ["ngbAccordionItem", "destroyOnHide", "disabled", "collapsed"], outputs: ["show", "shown", "hide", "hidden"], exportAs: ["ngbAccordionItem"] }, { kind: "directive", type: i2.NgbAccordionHeader, selector: "[ngbAccordionHeader]" }, { kind: "directive", type: i2.NgbAccordionBody, selector: "[ngbAccordionBody]" }, { kind: "directive", type: i2.NgbAccordionCollapse, selector: "[ngbAccordionCollapse]", exportAs: ["ngbAccordionCollapse"] }, { kind: "pipe", type: i4.DatePipe, name: "date" }] });
|
|
725
725
|
}
|
|
726
726
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ManageStorePlanoFeedbackComponent, decorators: [{
|
|
727
727
|
type: Component,
|
|
728
|
-
args: [{ selector: "app-manage-store-plano-feedback", template: "<section *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n\r\n<section *ngIf=\"!loading\">\r\n <div class=\"d-flex justify-content-between border-bottom\">\r\n <div>\r\n <div class=\"storeResponse\">Store response</div>\r\n <div class=\"normalText mb-5\">Click a fixture or view all</div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <button *ngIf=\"selectedFixture?.fixtureId\" (click)=\"reload()\"\r\n class=\"btn btn-light text-primary border-0 px-3 py-2\" style=\"background-color: #eaf6ff; border-radius: 1rem;\">\r\n Clear Filter\r\n </button>\r\n <lib-filters *ngIf=\"!selectedFixture?.fixtureId\" [dataObject]=\"dataObject\"\r\n (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"vmFeedback?.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"details\" [collapsed]=\"openvm\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Vm verification assigned</div>\r\n <div class=\"grayText\">{{vmFeedback[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"completedVm===vmFeedback.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Vm matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"completedVm!==vmFeedback.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Vm mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingVmissues>0\">\r\n {{pendingVmissues}}/{{totalVmissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedVmissues>0&&pendingVmissues===0\">\r\n {{approvedVmissues}}/{{totalVmissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName}} -\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{vmtaskIndex+1}}/{{vmFeedback.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmFeedback.length>vmtaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(vmFeedback.length)===(vmtaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of vmFeedback[vmtaskIndex]?.FixtureData?.vmConfig;let i=index\">\r\n <div [id]=\"'vm' + i\" class=\"vm-block\" [style]=\"handlevmPosition(vm,i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle wordWrap\">{{vm?.vmName}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngFor=\"let shelfData of vmFeedback[vmtaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of vmFeedback[vmtaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n\r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-start mt-5\">\r\n\r\n <div *ngIf=\"item.issueType==='VmMissing'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='extraVm'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n Total misplaced VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\"\r\n *ngFor=\"let vmData of item?.Details[fixtureIndex]?.vmConfig\">\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n current\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.vmName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">VM Name :</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmData?.vmName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.startYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.startYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.endYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.endYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.xZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.xZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.yZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Vertical zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.yZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.position\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.position}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n New\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newstartYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newstartYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newendYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newendYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newxZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newxZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newyZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Vertical zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newyZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newposition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newposition}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.vmConfig?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of item?.Details[fixtureIndex]?.vmConfignew;let m=index\">\r\n <div [id]=\"'vm' + m\" class=\"vm-block\" [style]=\"handlevmPosition(vm,m)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + m\"\r\n [class]=\"vm.newVm ? 'redBorder' : ''\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle\">{{vm?.vmName}}</span>\r\n <!-- <h3>{{ item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</h3> -->\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex].answers[0]?.image&&vmFeedback[vmtaskIndex].answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex].answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'vm',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'vm',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.image&&vmFeedback[vmtaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex]?.answers[0]?.image}}\" alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of vmFeedback[vmtaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"originalData.vmComment.length>0&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.vmComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"storeFixtureList?.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"detailsfixture\" [collapsed]=\"openfixture\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Fixture verification assigned</div>\r\n <div class=\"grayText\">{{storeFixtureList[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <!-- <div class=\"h-divider mt-3 ms-5\"></div> -->\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"completedFixture===storeFixtureList.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Fixture matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"completedFixture!==storeFixtureList.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Fixture mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingFixtureissues>0\">\r\n {{pendingFixtureissues}}/{{totalFixtureissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedFixtureissues>0&&pendingFixtureissues===0\">\r\n {{approvedFixtureissues}}/{{totalFixtureissues}} action done\r\n </div>\r\n </div> -->\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureName}} -\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureWidth.value}}\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData.fixtureWidth.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixturetaskIndex+1}}/{{storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"storeFixtureList.length>fixturetaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(storeFixtureList.length)===(fixturetaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total Shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total Product Capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n <ng-container\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.border\">\r\n <div class=\"badge\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone\"\r\n [ngStyle]=\"{\r\n 'background-color':storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.textBg,\r\n color:storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.text}\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}\r\n </div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}}\r\n </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let shelfData of storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{'background-color':(shelfData?.zone || storeFixtureList[fixturetaskIndex]?.FixtureData?.productResolutionLevel === 'L1') ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':(shelfData?.zone || storeFixtureList[fixturetaskIndex]?.FixtureData?.productResolutionLevel === 'L1') ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.textBg : shlefColor[i].textBg,\r\n color:(shelfData?.zone || storeFixtureList[fixturetaskIndex]?.FixtureData?.productResolutionLevel === 'L1') ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.text : shlefColor[i].text}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of storeFixtureList[fixturetaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div> <span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-center mt-5\">\r\n\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixturetemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixturetemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.issueType==='sizeWrong'\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureWidth?.value}}\r\n {{item?.Details[fixtureIndex]?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='productcategoryWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n\r\n <div class=\"col-md-7\" *ngFor=\"let category of missing?.productCategory\">\r\n <div class=\"shelfText breakWord badge \">{{category}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='brandWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div *ngFor=\"let brand of missing?.brand\" class=\"shelfText breakWord badge m-1\"\r\n [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n {{brand}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType!=='brandWrong'&&item?.issueType!=='productcategoryWrong'\">\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel text-capitalize\">{{shlefdata?.shelfType}}\r\n {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\">Capacity: <span\r\n class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-2\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Planogram response by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\"\r\n [style]=\"['Fixture type is wrong','Fixture size is wrong'].includes(item?.question) ? 'border:1px solid red' : ''\">\r\n\r\n <div id=\"header-block\" class=\"header-block\"\r\n style=\"border: 0.771px solid var(--Gray-400, #98A2B3);background: #F2F3F7;\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container *ngIf=\"['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div\r\n [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ?'danger' : ''\">\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString() ?? storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}}\r\n </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\"\r\n [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ? 'danger' : ''\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] ||\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}}\r\n </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\"\r\n [ngbTooltip]=\"tooltip\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\" [ngStyle]=\"{\r\n 'border-top':(getStartPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-bottom':(getEndPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-left':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-right':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n background: 'var(--Gray-100, #f8f9fb)',}\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'fixture',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'fixture',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.issues?.length===0\">\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n </div>\r\n <img\r\n src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureImage ? storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureImage : storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\"\r\n alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCategory\">\r\n <div class=\"textHeading\">AI Output \u2728</div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"aiLayoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\"\r\n [style.color]=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory?.toLowerCase() !== storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCategory?.toLowerCase() ? '#b42318': ''\">\r\n {{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCategory ?? '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"aiLayoutLabel\">Fixture Header:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\"\r\n [style.color]=\"matchFixtureCategory(storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label,storeFixtureList[fixturetaskIndex]?.fixtureAIData)\">\r\n {{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.header?.label ?? '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"aiLayoutLabel\">Total Shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\"\r\n [style.color]=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length !== storeFixtureList[fixturetaskIndex]?.fixtureAIData?.shelfConfig?.length ? '#b42318': ''\">\r\n {{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.shelfConfig?.length ?? 0}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"aiLayoutLabel\">Total Product Capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\"\r\n [style.color]=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity !== storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCapacity ? '#b42318': ''\">\r\n {{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCapacity ?? 0}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"aiLayoutLabel\">VM Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\" [style.color]=\"compareType(storeFixtureList[fixturetaskIndex])\">\r\n {{getType(storeFixtureList[fixturetaskIndex])}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\">\r\n <div class=\"aiLayoutLabel\">VM Name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\" [style.color]=\"compareName(storeFixtureList[fixturetaskIndex])\">\r\n {{getName(storeFixtureList[fixturetaskIndex])}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-12\">\r\n <div class=\"aiLayoutLabel\">Visual Merchandise Image:</div>\r\n </div><br />\r\n <div class=\"row\">\r\n <div class=\"col-md-6 mt-5\"\r\n *ngFor=\"let vm of storeFixtureList[fixturetaskIndex]?.fixtureAIData?.vmConfig\"> <img\r\n src=\"{{cdnUrl}}{{vm.vmImage}}\" (click)=\"openPopup(vm.vmImage)\"\r\n style=\"width:120px;height:120px\" />\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"popup\" *ngIf=\"selectedImage\" (click)=\"closePopup()\">\r\n <!-- <span class=\"close\" (click)=\"closePopup($event)\">×</span> -->\r\n <img [src]=\"selectedImage\" class=\"popup-img\" (click)=\"$event.stopPropagation()\" />\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\"\r\n *ngFor=\"let comment of storeFixtureList[fixturetaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated\r\n \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.approvalStatus==='pending' && selectedFixture?.fixtureId && !storeFixtureList[fixturetaskIndex]?.answers[0]?.status && storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCategory\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',storeFixtureList[fixturetaskIndex]?._id,storeFixtureList[fixturetaskIndex]?.answers[0]?._id,'','','fixture','',storeFixtureList[fixturetaskIndex]?.fixtureAIData)\">\r\n Agree</div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',storeFixtureList[fixturetaskIndex]?._id,storeFixtureList[fixturetaskIndex]?.answers[0]?._id,'','','fixture','',storeFixtureList[fixturetaskIndex]?.fixtureAIData)\">Disagree</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"originalData.fixtureComment.length>0&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.fixtureComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"layoutFeedback.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'details-' + i }}\" [collapsed]=\"feedback.collapsed\" (headerClick)=\"togglePanel(i)\"\r\n class=\"mb-5\" *ngFor=\"let feedback of layoutFeedback;let i = index\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div *ngIf=\"feedback?.taskType==='initial'\">Layout verification assigned</div>\r\n <div *ngIf=\"feedback?.taskType==='redo'\">Layout verification re-assigned</div>\r\n <div class=\"grayText\">{{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"feedback?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"feedback?.status==='complete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"feedback?.status==='incomplete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&pendingLayoutissues>0\">\r\n {{pendingLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&approvedLayoutissues>0&&pendingLayoutissues===0\">\r\n {{approvedLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action done\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of feedback.answers;let j = index\">\r\n <ng-container *ngIf=\"issues?.issues?.length>0\">\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n\r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n <!-- <div>{{item?.Details[fixtureIndex]?.fixtureName}}</div> -->\r\n <div class=\"d-flex justify-content-between mt-5\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.fixtureName\">\r\n <div class=\"cursor-pointer\" (click)=\"previousFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixtureIndex+1}}/{{item?.Details.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nextFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"item?.Details.length>fixtureIndex+1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(item?.Details.length)===(fixtureIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureTemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureTemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel text-capitalize\">{{shlefdata?.shelfType}}\r\n {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\">Capacity: <span\r\n class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-3\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementType}}\r\n {{item?.Details[fixtureIndex]?.associatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementFixtureNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementType}}{{item?.Details[fixtureIndex]?.newassociatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div *ngIf=\"item.issueType==='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Store Fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType!=='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Planogram fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Below fixture is in the planogram but not in store.\r\n </div>\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n <!-- Header block -->\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{item?.Details[fixtureIndex]?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <!-- Body block -->\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container\r\n *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+ this.shlefColor[i].border\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.text\r\n }\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}}\r\n </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n <!-- @if(item.shelfType ==='shelf'){ -->\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{\r\n 'background-color':shelfData?.zone ? item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.bg : shlefColor[i].bg}\">\r\n\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.text\r\n }\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{item?.Details[fixtureIndex]?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.image&&item?.Details[fixtureIndex]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{item?.Details[fixtureIndex]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"item?.Details[fixtureIndex]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.Details[fixtureIndex]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId||item?.Details[fixtureIndex]?.status==='pending'&&item.issueType==='others'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'layout',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'layout',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"my-4 w-100\" *ngIf=\"feedback?.answers[0]?.video&&feedback?.answers[0]?.video!==''\">\r\n <div class=\"assignText\">Store Video</div>\r\n <video controls src=\"{{cdnUrl}}{{feedback?.answers[0]?.video}}\" class=\"mt-4 w-100\"></video>\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"originalData.layoutComment.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.layoutComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n\r\n\r\n <div class=\"mt-5\" *ngIf=\"layoutFeedback?.length===0&&storeFixtureList?.length===0&&vmFeedback?.length===0&&!loading\">\r\n <div class=\"text-center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\" stroke-width=\"13.3333\" />\r\n <path\r\n d=\"M35.9502 48.1997C35.6489 48.2315 35.3422 48.2505 35.0312 48.2505C34.8617 48.2505 34.6944 48.2436 34.5293 48.2339V58.6069C34.5293 60.0349 35.7123 61.226 37.2002 61.2261H56.8047C58.2927 61.2261 59.4756 60.035 59.4756 58.6069V48.2349C59.3137 48.2441 59.1498 48.2505 58.9854 48.2505C58.6714 48.2505 58.3608 48.2325 58.0547 48.1997V55.9878H35.9502V48.1997ZM57.9316 32.7739H36.0732C35.8959 32.7739 35.7406 32.8667 35.6631 32.9878L35.6611 32.9897L32.1514 38.4731L32.0566 38.6206C30.8311 40.7404 32.0957 43.4674 34.4473 43.7769C34.6482 43.8013 34.8379 43.8159 35.0254 43.8159C36.2555 43.8159 37.3434 43.2872 38.1006 42.4653L39.0225 41.4644L39.9414 42.4683C40.6903 43.2863 41.777 43.8159 43.0146 43.8159C44.2467 43.8158 45.3386 43.2856 46.0869 42.4683L47.0088 41.4614L47.9307 42.4683C48.679 43.2857 49.7707 43.8159 51.0029 43.8159C52.2351 43.8159 53.3268 43.2857 54.0752 42.4683L54.9971 41.4614L55.9189 42.4683C56.6673 43.2857 57.76 43.8159 58.9922 43.8159C59.1736 43.8159 59.3687 43.8021 59.5684 43.7778H59.5674C61.9611 43.4573 63.2293 40.6078 61.8613 38.4731L61.8604 38.4741L58.3438 32.9907L58.3428 32.9878C58.2653 32.8665 58.1092 32.7739 57.9316 32.7739Z\"\r\n stroke=\"#009BF3\" stroke-width=\"2.5\" />\r\n </svg>\r\n </div>\r\n <div class=\"mt-3 text-center\">\r\n <div class=\"fw-bold h3 mt-2\">No issue</div>\r\n <div class=\"mt-4\">The store did not flag it as an issue.</div>\r\n </div>\r\n </div>\r\n</section>", styles: [".header{background:#fff;padding:12px;border-radius:12px;display:flex;align-items:center;justify-content:space-between}.btn{padding:.775rem 1.5rem!important;font-size:1.1rem!important}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;padding:2px 8px;border-radius:16px}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.builder{height:75vh}.builder .cols{background:#fff;border-radius:12px;padding:24px 24px 12px;max-height:75vh;overflow-y:auto}.shelf-container{border-radius:8px;background:var(--Gray-50, #f9fafb);padding:8px 16px;margin-bottom:12px}.counter-container{display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:#fff;padding:10px;border:.49px solid #d0d5dd}.counter-container span{margin:0 18px;font-weight:500;font-size:14px;text-align:center;vertical-align:middle;width:18px}.disable-counter{color:var(--bs-gray-500)!important;background-color:var(--bs-gray-200)!important;border-color:var(--bs-gray-300)!important;pointer-events:none;opacity:1}.disabled-click{pointer-events:none;opacity:.85}.wall-viewport{display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:30px;width:345px;text-align:center}.wall-viewport .wrapper{width:100%;max-width:345px}.wall-viewport .header-info,.wall-viewport .footer-info,.wall-viewport .body-info{width:100%;border:2px solid #f2f4f7;border-bottom:4px solid #ffffff;background:#f2f4f7;max-width:230px;display:flex;align-items:center;justify-content:center;justify-content:start;padding:12px;gap:4px}.wall-viewport .header-info p,.wall-viewport .footer-info p,.wall-viewport .body-info p{margin:0}.wall-viewport .header-info{margin-top:40px}.wall-viewport .sub-footer{border:1px solid #98a2b3;height:100%}.wall-viewport .header-block,.wall-viewport .footer-block{border:1px solid #98a2b3;height:95px;padding:8px;background-color:#f2f4f7;width:100%;display:flex;justify-content:center;align-items:center}.wall-viewport .header-block p,.wall-viewport .footer-block p{color:var(--Gray-600, #475467);font-size:18px;font-weight:600;white-space:normal;word-wrap:break-word;margin:0;background-color:#f2f4f7}.wall-viewport .body-block{width:100%}.wall-viewport .body-block .block{border:1px solid #98a2b3;padding:10px;width:100%;max-width:345px;overflow-x:auto;min-height:52px}.wall-viewport .body-block .tray,.wall-viewport .body-block .shelf{display:flex;gap:4px}.wall-viewport .body-block .tray .product,.wall-viewport .body-block .shelf .product{border:1px solid rgba(152,162,179,.2901960784);min-width:50px}.wall-viewport .body-block .tray .product{min-height:20px}.wall-viewport .body-block .shelf .product{min-height:30px}.wall-viewport .body-block .hide-product{border-color:transparent!important}.wall-viewport .body-block .hide-scroll{overflow-x:hidden!important}.horizontal-dimension{display:flex;align-items:center;justify-content:center;height:30px;position:relative}.horizontal-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.horizontal-dimension .arrow.left{transform:rotate(180deg);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .arrow.right{transform:rotate(0);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;height:1px}.horizontal-dimension .line span{position:absolute;top:-12px;color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:0 4px}.vertical-dimension{display:flex;flex-direction:column;align-items:center;width:30px;position:relative}.vertical-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.vertical-dimension .arrow.up{transform:rotate(-90deg);margin-top:20px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .arrow.down{transform:rotate(90deg);margin-bottom:26px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;width:1px}.vertical-dimension .line span{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:2px 4px}.info-card{padding:12px;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a}.info-card h3{font-weight:600;font-size:18px;line-height:28px;vertical-align:middle}.info-card p{font-weight:500;font-size:14px;line-height:20px;color:#667085;margin:0}.checkbox input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #d0d5dd)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkbox input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00a3ff)!important;background-color:var(--primary-50, #eaf8ff)}.checkbox input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00a3ff;border-right:2px solid #00a3ff;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.nav-pills{display:inline-flex;gap:4px}.nav-pills .nav-item .nav-link{border-radius:0;color:#667085;font-size:14px;font-weight:500;padding:8px 16px;border:none}.nav-pills .nav-item .nav-link:hover{background-color:#00000005}.nav-pills .nav-item .nav-link.active{background-color:#eaf8ff;color:#009bf3;border-bottom:3px solid #009bf3}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 400px);height:100%;padding:16px 24px;display:flex;flex-direction:column}.loader .shimmer{height:150px}.filter-tab{border:1px solid rgb(234,236,240);background:#fff;box-shadow:0 1px 2px #1018280d;border-radius:8px;padding:18px;transition:all ease .2s}.filter-tab:hover{cursor:pointer}.filter-tab.selected{background:#f6fcff;border:1px solid rgb(107,202,255);box-shadow:0 1px 2px #1018280d}.filter-tab h3{color:#000;font-size:20px;font-weight:600;line-height:30px;margin:0}.filter-tab p{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;margin:0}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vm-preview{padding:12px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);margin-bottom:12px}.vm-preview h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600}.vm-preview p{color:var(--Gray-700, #344054);font-size:12px;font-weight:400}.vm-preview .preview{width:134px;height:134px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);background:var(--Gray-50, #f9fafb)}.vm-preview .preview img{border-radius:2px}.vm-placeholder{border:4px solid var(--Black, #101828);background:#f9fafb;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:8px}::ng-deep .redBorder{border:4px solid red!important}.vm-block{position:absolute;width:100px;height:100px;transition:all .3s ease}.vm-block h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;margin:0}.storeResponse{color:var(--Black, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.normalText{color:var(--Gray-600, #475467);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.border-bottom{border-bottom:1px solid #d0d5dd}.grayText{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.layoutLabel{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.assignText{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:12px;font-style:normal;font-weight:600;line-height:18px}.h-divider{width:2px;height:46px;border-radius:2px;background:var(--Gray-200, #eaecf0)}.shelfText{color:var(--Gray-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.badge.badge-secondary{color:var(--Gray-700, #344054);background:var(--Gray-100, #f2f4f7)}.breakWord{overflow-wrap:break-word}.smallBoldText{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:600;line-height:15.573px}.smallText{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.headerStyle{color:var(--Primary-600, #00A3FF);text-align:center;font-family:Inter;font-size:13.843px;font-style:normal;font-weight:600;line-height:20.764px;padding-top:15px}.two-tone-btn{color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:600;line-height:20px;border-radius:6px;border:1px solid var(--Primary-300, #6BCAFF);padding:8px 14px}.two-tone-btn:hover{border:1px solid var(--Primary-300, #6BCAFF);color:var(--Primary-700, #009BF3);cursor:pointer}.footer-block{position:relative;box-sizing:border-box;justify-content:space-between!important}.footer-block p{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#f2f4f7;z-index:1}.sub-footer{position:relative;width:48%}.array-wrapper{border-radius:4px;background:var(--Gray-50, #f9fafb);padding:16px}.array-container{border-radius:6px;padding:12px;background:#fff;margin-bottom:12px}.wall-viewport{position:relative}img{width:100%;height:100%;object-fit:cover;display:block}::ng-deep .wall-viewport .body-block .block{max-width:100%!important}.secStyle{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.block.shelf{height:50px!important}.danger{color:red}.wordWrap{max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.textHeading{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.aiLayoutLabel{color:var(--Gray-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.popup{position:fixed;inset:0;background-color:#000000d9;display:flex;justify-content:center;align-items:center;z-index:1000}.popup-img{display:block;max-width:none;max-height:none;width:auto;height:auto;object-fit:contain}\n"] }]
|
|
728
|
+
args: [{ selector: "app-manage-store-plano-feedback", template: "<section *ngIf=\"loading\">\r\n <div class=\"row loader d-flex justify-content-center align-items-center\">\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n <div class=\"shimmer\">\r\n <div class=\"wrapper\">\r\n <div class=\"stroke animate title\"></div>\r\n <div class=\"stroke animate link\"></div>\r\n <div class=\"stroke animate description\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n</section>\r\n\r\n<section *ngIf=\"!loading\">\r\n <div class=\"d-flex justify-content-between border-bottom\">\r\n <div>\r\n <div class=\"storeResponse\">Store response</div>\r\n <div class=\"normalText mb-5\">Click a fixture or view all</div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <button *ngIf=\"selectedFixture?.fixtureId\" (click)=\"reload()\" class=\"btn btn-light text-primary border-0 px-3 py-2\"\r\n style=\"background-color: #eaf6ff; border-radius: 1rem;\">\r\n Clear Filter\r\n </button>\r\n <lib-filters *ngIf=\"!selectedFixture?.fixtureId\" [dataObject]=\"dataObject\" (appliedFilters)=\"applyFilters($event)\"></lib-filters>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"vmFeedback?.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"details\" [collapsed]=\"openvm\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Vm verification assigned</div>\r\n <div class=\"grayText\">{{vmFeedback[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{vmFeedback[vmtaskIndex]?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"completedVm===vmFeedback.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Vm matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"completedVm!==vmFeedback.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Vm mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingVmissues>0\">\r\n {{pendingVmissues}}/{{totalVmissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedVmissues>0&&pendingVmissues===0\">\r\n {{approvedVmissues}}/{{totalVmissues}} action done\r\n </div>\r\n </div>\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\"\r\n fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!vmtaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName}} - {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}} {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{vmtaskIndex+1}}/{{vmFeedback.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskVm(vmtaskIndex,vmFeedback)\">\r\n <svg *ngIf=\"vmFeedback.length>vmtaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(vmFeedback.length)===(vmtaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total product capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of vmFeedback[vmtaskIndex]?.FixtureData?.vmConfig;let i=index\">\r\n <div [id]=\"'vm' + i\" class=\"vm-block\" [style]=\"handlevmPosition(vm,i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle wordWrap\">{{vm?.vmName}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div *ngFor=\"let shelfData of vmFeedback[vmtaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of vmFeedback[vmtaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n\r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-start mt-5\">\r\n\r\n <div *ngIf=\"item.issueType==='VmMissing'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='extraVm'\">\r\n Total additional VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n Total misplaced VMs: {{ item?.Details[fixtureIndex]?.vmConfig.length}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\"\r\n *ngFor=\"let vmData of item?.Details[fixtureIndex]?.vmConfig\">\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n current\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.vmName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">VM Name :</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{vmData?.vmName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.startYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.startYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.endYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.endYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.xZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.xZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.yZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Vertical zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.yZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.position\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.position}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType==='VmMismatch'\">\r\n New\r\n </div>\r\n\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newstartYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement start :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newstartYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newendYPosition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Placement End :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">Shelf {{vmData?.newendYPosition}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newxZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Horizontal zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newxZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newyZone\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">Vertical zone :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newyZone}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"vmData?.newposition\">\r\n <div class=\"col-md-6\">\r\n <div class=\"layoutLabel\">position :</div>\r\n </div>\r\n <div class=\"col-md-6\">\r\n <div class=\"shelfText breakWord\">{{vmData?.newposition}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.vmConfig?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{vmFeedback[vmtaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block w-100\">\r\n <ng-container *ngFor=\"let vm of item?.Details[fixtureIndex]?.vmConfignew;let m=index\">\r\n <div [id]=\"'vm' + m\" class=\"vm-block\" [style]=\"handlevmPosition(vm,m)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + m\"\r\n [class]=\"vm.newVm ? 'redBorder' : ''\">\r\n <img [src]=\"vm?.imgSrc\" *ngIf=\"vm?.imgSrc\" />\r\n <span class=\"secStyle\">{{vm?.vmName}}</span>\r\n <!-- <h3>{{ item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</h3> -->\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':'white',\r\n color:'white'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{vmFeedback[vmtaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex].answers[0]?.image&&vmFeedback[vmtaskIndex].answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex].answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'vm',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',vmFeedback[vmtaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'vm',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.issues?.length===0\">\r\n\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.image&&vmFeedback[vmtaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{vmFeedback[vmtaskIndex]?.answers[0]?.image}}\" alt=\"image\" class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"vmFeedback[vmtaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of vmFeedback[vmtaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"originalData.vmComment.length>0&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.vmComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"storeFixtureList?.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"detailsfixture\" [collapsed]=\"openfixture\" class=\"mb-5\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div>Fixture verification assigned</div>\r\n <div class=\"grayText\">{{storeFixtureList[0]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <!-- <div class=\"h-divider mt-3 ms-5\"></div> -->\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{storeFixtureList[fixturetaskIndex]?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"completedFixture===storeFixtureList.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Fixture matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"completedFixture!==storeFixtureList.length\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Fixture mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\" *ngIf=\"pendingFixtureissues>0\">\r\n {{pendingFixtureissues}}/{{totalFixtureissues}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\" *ngIf=\"approvedFixtureissues>0&&pendingFixtureissues===0\">\r\n {{approvedFixtureissues}}/{{totalFixtureissues}} action done\r\n </div>\r\n </div> -->\r\n <div class=\"d-flex justify-content-between mt-5\">\r\n <div class=\"cursor-pointer\" (click)=\"previoustaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixturetaskIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}} - {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}} {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixturetaskIndex+1}}/{{storeFixtureList.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nexttaskFixture(fixturetaskIndex,storeFixtureList)\">\r\n <svg *ngIf=\"storeFixtureList.length>fixturetaskIndex+1\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\"\r\n height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(storeFixtureList.length)===(fixturetaskIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Name:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value!==''\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size (Width):</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.value}}\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total Shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Total Product Capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"mt-4\">\r\n <div class=\"layoutLabel\">\r\n Planogram design\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture designed by the planogram team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n <ng-container\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.border\">\r\n <div class=\"badge\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone\"\r\n [ngStyle]=\"{\r\n 'background-color':storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.textBg,\r\n color:storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.color?.text}\">\r\n {{ storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}\r\n </div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div\r\n *ngFor=\"let shelfData of storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfDetails; let i = index\">\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{'background-color':(shelfData?.zone || storeFixtureList[fixturetaskIndex]?.FixtureData?.productResolutionLevel === 'L1') ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.bg : shlefColor[i].bg}\">\r\n <div class=\"badge\"\r\n [ngStyle]=\"{\r\n 'background-color':(shelfData?.zone || storeFixtureList[fixturetaskIndex]?.FixtureData?.productResolutionLevel === 'L1') ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.textBg : shlefColor[i].textBg,\r\n color:(shelfData?.zone || storeFixtureList[fixturetaskIndex]?.FixtureData?.productResolutionLevel === 'L1') ? storeFixtureList[fixturetaskIndex]?.FixtureData?.zoneColor[shelfData.zone]?.color?.text : shlefColor[i].text}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of storeFixtureList[fixturetaskIndex]?.answers;let j = index\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"item.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n <div> <span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n\r\n <div class=\"d-flex justify-content-center mt-5\">\r\n\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixturetemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixturetemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.issueType==='sizeWrong'\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Size:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureWidth?.value}}\r\n {{item?.Details[fixtureIndex]?.fixtureWidth?.unit}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='productcategoryWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n\r\n <div class=\"col-md-7\" *ngFor=\"let category of missing?.productCategory\">\r\n <div class=\"shelfText breakWord badge \">{{category}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType==='brandWrong'\">\r\n <div *ngFor=\"let missing of item?.Details[fixtureIndex]?.missingData\">\r\n <div class=\"row mb-4\" *ngIf=\"missing?.zone\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">{{missing?.zone}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div *ngFor=\"let brand of missing?.brand\" class=\"shelfText breakWord badge m-1\"\r\n [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n {{brand}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div *ngIf=\"item?.issueType!=='brandWrong'&&item?.issueType!=='productcategoryWrong'\">\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel text-capitalize\">{{shlefdata?.shelfType}} {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\" >Capacity: <span class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-2\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Planogram response by the store team\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\"\r\n [style]=\"['Fixture type is wrong','Fixture size is wrong'].includes(item?.question) ? 'border:1px solid red' : ''\">\r\n\r\n <div id=\"header-block\" class=\"header-block\"\r\n style=\"border: 0.771px solid var(--Gray-400, #98A2B3);background: #F2F3F7;\">\r\n <p>\r\n {{storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container *ngIf=\"['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div\r\n *ngFor=\"let section of storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ?'danger' : ''\">\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString() ?? storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span\r\n class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\" [ngClass]=\"item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.length ? 'danger' : ''\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0] ||\r\n storeFixtureList[fixturetaskIndex]?.FixtureData?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!['productcategoryWrong', 'brandWrong'].includes(item?.issueType)\">\r\n <div *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n style=\"border: 0.969px solid var(--Gray-300, #D0D5DD);\">\r\n <span class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</span>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span\r\n class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\" [ngStyle]=\"{\r\n 'border-top':(getStartPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? '0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-bottom':(getEndPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-left':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n 'border-right':(getMidPosition(i+1,shelfData.zone,item?.Details[fixtureIndex]?.sectionConfig) && !['Fixture type is wrong','Fixture size is wrong'].includes(item?.question)) ? ' 0.771px solid red' : '0.771px solid var(--Gray-400, #98A2B3)',\r\n background: 'var(--Gray-100, #f8f9fb)',}\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'border-radius': '13.843px',\r\n 'background': 'var(--Gray-100, #ebeef3)'}\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n <div class=\"footer-block\">\r\n <p> {{storeFixtureList[fixturetaskIndex]?.FixtureData?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"item?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'fixture',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',storeFixtureList[fixturetaskIndex]?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'fixture',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.issues?.length===0\">\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.image&&storeFixtureList[fixturetaskIndex]?.answers[0]?.image!==''\">\r\n <div class=\"assignText\">\r\n <div class=\"layoutLabel\">\r\n Store Response\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n </div>\r\n <img src=\"{{cdnUrl}}{{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureImage ? storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureImage : storeFixtureList[fixturetaskIndex]?.answers[0]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCategory\">\r\n <div class=\"textHeading\">AI Output \u2728</div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\" >\r\n <div class=\"aiLayoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\" [style.color]=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCategory?.toLowerCase() !== storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCategory?.toLowerCase() ? '#b42318': ''\">{{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCategory ?? '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\" >\r\n <div class=\"aiLayoutLabel\">Fixture Header:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\" [style.color]=\"matchFixtureCategory(storeFixtureList[fixturetaskIndex]?.FixtureData?.header?.label,storeFixtureList[fixturetaskIndex]?.fixtureAIData)\">{{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.header?.label ?? '--'}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\" >\r\n <div class=\"aiLayoutLabel\">Total Shelves:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\" [style.color]=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.shelfConfig?.length !== storeFixtureList[fixturetaskIndex]?.fixtureAIData?.shelfConfig?.length ? '#b42318': ''\">{{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.shelfConfig?.length ?? 0}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\" >\r\n <div class=\"aiLayoutLabel\">Total Product Capacity:</div>\r\n </div>\r\n <div class=\"col-md-7\" >\r\n <div class=\"shelfText breakWord\" [style.color]=\"storeFixtureList[fixturetaskIndex]?.FixtureData?.fixtureCapacity !== storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCapacity ? '#b42318': ''\">{{storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCapacity ?? 0}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\" >\r\n <div class=\"aiLayoutLabel\">VM Type:</div>\r\n </div>\r\n <div class=\"col-md-7\" >\r\n <div class=\"shelfText breakWord\" [style.color]=\"compareType(storeFixtureList[fixturetaskIndex])\">{{getType(storeFixtureList[fixturetaskIndex])}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-5\" >\r\n <div class=\"aiLayoutLabel\">VM Name:</div>\r\n </div>\r\n <div class=\"col-md-7\" >\r\n <div class=\"shelfText breakWord\" [style.color]=\"compareName(storeFixtureList[fixturetaskIndex])\">{{getName(storeFixtureList[fixturetaskIndex])}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\">\r\n <div class=\"col-md-12\" >\r\n <div class=\"aiLayoutLabel\">Visual Merchandise Image:</div>\r\n </div><br />\r\n <div class=\"row\">\r\n <div class=\"col-md-6 mt-5\" *ngFor=\"let vm of storeFixtureList[fixturetaskIndex]?.fixtureAIData?.vmConfig\" > <img src=\"{{cdnUrl}}{{vm.vmImage}}\" (click)=\"openPopup(vm.vmImage)\" style=\"width:120px;height:120px\"/>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"popup\" *ngIf=\"selectedImage\" (click)=\"closePopup()\">\r\n <!-- <span class=\"close\" (click)=\"closePopup($event)\">×</span> -->\r\n <img [src]=\"selectedImage\" class=\"popup-img\" (click)=\"$event.stopPropagation()\" />\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"storeFixtureList[fixturetaskIndex]?.answers[0]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\"\r\n *ngFor=\"let comment of storeFixtureList[fixturetaskIndex]?.answers[0]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"assignText breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed, updated \r\n \"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree, retained\r\n existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"storeFixtureList[fixturetaskIndex]?.approvalStatus==='pending' && selectedFixture?.fixtureId && !storeFixtureList[fixturetaskIndex]?.answers[0]?.status && storeFixtureList[fixturetaskIndex]?.fixtureAIData?.fixtureCategory\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\" (click)=\"confirmation('agree',storeFixtureList[fixturetaskIndex]?._id,storeFixtureList[fixturetaskIndex]?.answers[0]?._id,'','','fixture','',storeFixtureList[fixturetaskIndex]?.fixtureAIData)\">Agree</div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\" (click)=\"confirmation('disagree',storeFixtureList[fixturetaskIndex]?._id,storeFixtureList[fixturetaskIndex]?.answers[0]?._id,'','','fixture','',storeFixtureList[fixturetaskIndex]?.fixtureAIData)\">Disagree</button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"my-4\" *ngIf=\"originalData.fixtureComment.length>0&& !selectedFixture?.fixtureId\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.fixtureComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\" *ngIf=\"layoutFeedback.length>0\">\r\n <ng-container>\r\n <div ngbAccordionItem=\"{{ 'details-' + i }}\" [collapsed]=\"feedback.collapsed\" (headerClick)=\"togglePanel(i)\"\r\n class=\"mb-5\" *ngFor=\"let feedback of layoutFeedback;let i = index\">\r\n <div class=\"d-flex\" ngbAccordionHeader>\r\n <button type=\"button\" class=\"mainheading p-0\" ngbAccordionButton>\r\n <span class=\"me-2 layout-Lbel\">\r\n <div *ngIf=\"feedback?.taskType==='initial'\">Layout verification assigned</div>\r\n <div *ngIf=\"feedback?.taskType==='redo'\">Layout verification re-assigned</div>\r\n <div class=\"grayText\">{{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"ps-0 pe-0\">\r\n <ng-template>\r\n <div *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"d-flex\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.createdByName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.createdAt |date: 'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assigner\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" *ngIf=\"feedback?.taskData?.userName!==''\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n <div class=\"h-divider mt-3 ms-5\"></div>\r\n </div>\r\n <div class=\"ms-3\">\r\n <div class=\"layoutLabel\">\r\n {{feedback?.taskData?.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{feedback?.taskData?.submitTime_string}}\r\n </div>\r\n <div class=\"assignText\">\r\n Assignee\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"d-flex ms-3\" *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"badge badge-light-success p-3 me-4\" *ngIf=\"feedback?.status==='complete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path d=\"M10 3L4.5 8.5L2 6\" stroke=\"#12B76A\" stroke-width=\"1.5\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout matched</span>\r\n </div>\r\n <div class=\"badge badge-light-danger p-3 me-4\" *ngIf=\"feedback?.status==='incomplete'\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" viewBox=\"0 0 12 12\" fill=\"none\">\r\n <path\r\n d=\"M6 4V6M6 8H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z\"\r\n stroke=\"#F04438\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg><span class=\"ms-2\">Layout mismatch</span>\r\n </div>\r\n <div class=\"badge badge-light-warning p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&pendingLayoutissues>0\">\r\n {{pendingLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action pending\r\n </div>\r\n <div class=\"badge badge-light-success p-3\"\r\n *ngIf=\"feedback?.status==='incomplete'&&approvedLayoutissues>0&&pendingLayoutissues===0\">\r\n {{approvedLayoutissues}}/{{feedback?.answers[0]?.issues?.length}} action done\r\n </div>\r\n </div>\r\n <div ngbAccordion #accordion=\"ngbAccordion\" [closeOthers]=\"true\" class=\"mt-5\"\r\n *ngFor=\"let issues of feedback.answers;let j = index\">\r\n <ng-container *ngIf=\"issues?.issues?.length>0\">\r\n <div ngbAccordionItem=\"{{ 'newdetails-' + k }}\" [collapsed]=\"issues.collapsed\" class=\"mb-5\"\r\n *ngFor=\"let item of issues.issues;let k = index\">\r\n <div class=\"d-flex \" ngbAccordionHeader>\r\n <button type=\"button\" ngbAccordionButton class=\"mainheading p-3 backgroundImg\">\r\n <span class=\"me-2 layout-Lbel\">\r\n\r\n <div><span *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'\"\r\n class=\"d-inline-block bg-warning rounded-circle mx-2\"\r\n style=\"width: 10px; height: 10px;\"></span>{{item?.question}}</div>\r\n </span>\r\n <div class=\"divider\"></div>\r\n </button>\r\n </div>\r\n <div ngbAccordionCollapse>\r\n <div ngbAccordionBody class=\"p-0\">\r\n <ng-template>\r\n <!-- <div>{{item?.Details[fixtureIndex]?.fixtureName}}</div> -->\r\n <div class=\"d-flex justify-content-between mt-5\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.fixtureName\">\r\n <div class=\"cursor-pointer\" (click)=\"previousFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n <svg *ngIf=\"!fixtureIndex\" xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\"\r\n viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M15 6L9 12L15 18\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{ item?.Details[fixtureIndex]?.fixtureName}}\r\n </div>\r\n <div class=\"layoutLabel\">\r\n {{fixtureIndex+1}}/{{item?.Details.length}}\r\n </div>\r\n <div class=\"cursor-pointer\" (click)=\"nextFixture(fixtureIndex,item?.Details)\">\r\n <svg *ngIf=\"item?.Details.length>fixtureIndex+1\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#009BF3\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n\r\n <svg *ngIf=\"(item?.Details.length)===(fixtureIndex+1)\" xmlns=\"http://www.w3.org/2000/svg\"\r\n width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\">\r\n <path d=\"M9 18L15 12L9 6\" stroke=\"#D0D5DD\" stroke-width=\"2\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </div>\r\n </div>\r\n <div class=\"backgroundImg mt-4 ps-3 py-2\">\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureCategory\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Fixture Type:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureCategory}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.fixtureTemplateName\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Template:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">{{item?.Details[fixtureIndex]?.fixtureTemplateName}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div *ngFor=\"let fixtureList of item?.Details[fixtureIndex]?.shelfConfigFormated\">\r\n\r\n\r\n <div class=\"row mb-4\">\r\n <div class=\"col-md-3\">\r\n <div class=\"layoutLabel text-capitalize\">{{fixtureList?.zone}}</div>\r\n </div>\r\n <div class=\"col-md-9 mt-5\">\r\n <div class=\"divider\"></div>\r\n </div>\r\n </div>\r\n <div class=\"row\" *ngFor=\"let shlefdata of fixtureList?.items\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel text-capitalize\">{{shlefdata?.shelfType}} {{shlefdata?.shelfNumber}}:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText\">\r\n <div class=\"text-capitalize\" >Capacity: <span class=\"layoutLabel\">{{shlefdata?.productPerShelf}}</span></div>\r\n <div class=\"mt-3\" *ngFor=\"let brands of shlefdata?.productBrandName\">\r\n <span class=\"badge badge-secondary me-3 mb-2\">{{brands}}</span>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementType}}\r\n {{item?.Details[fixtureIndex]?.associatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\" *ngIf=\"item?.Details[fixtureIndex]?.associatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.associatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4 mt-2\" *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementType\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Location:</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementType}}{{item?.Details[fixtureIndex]?.newassociatedElementNumber}}\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row mb-4\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber\">\r\n <div class=\"col-md-5\">\r\n <div class=\"layoutLabel\">New Position:</div>\r\n <div class=\"layoutLabel\">(L to R)</div>\r\n </div>\r\n <div class=\"col-md-7\">\r\n <div class=\"shelfText breakWord\">\r\n {{item?.Details[fixtureIndex]?.newassociatedElementFixtureNumber}}</div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"mt-4\" *ngIf=\"item?.Details[fixtureIndex]?.sectionKeys?.length>0\">\r\n <div *ngIf=\"item.issueType==='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Store Fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Fixture feedback by the store team\r\n </div>\r\n </div>\r\n <div *ngIf=\"item.issueType!=='extraFixture'\">\r\n <div class=\"layoutLabel\">\r\n Planogram fixture\r\n </div>\r\n <div class=\"grayText\">\r\n Below fixture is in the planogram but not in store.\r\n </div>\r\n </div>\r\n <div class=\"wall-viewport w-100 mt-5\">\r\n <!-- Header block -->\r\n <div id=\"header-block\" class=\"header-block\">\r\n <p>\r\n {{item?.Details[fixtureIndex]?.header?.label ?? ''}}\r\n </p>\r\n </div>\r\n\r\n <!-- Body block -->\r\n <div #bodyBlock id=\"bodyBlock\" class=\"body-block\">\r\n\r\n\r\n <ng-container\r\n *ngFor=\"let section of item?.Details[fixtureIndex]?.sectionKeys;let i=index\">\r\n <div [id]=\"'section' + i\" class=\"vm-block\"\r\n [style]=\"updateStyle(item?.Details[fixtureIndex]?.sectionConfig[section],i)\">\r\n <div class=\"vm-placeholder\" [id]=\"'vm-placeholder' + i\"\r\n [style]=\"'border:1px solid '+ this.shlefColor[i].border\">\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.sectionConfig[section]?.color?.text\r\n }\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.zone}}</div>\r\n <ng-template #tooltip>\r\n <div>\r\n <span>{{item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.toString()}} </span>\r\n </div>\r\n </ng-template>\r\n <span class=\"secStyle wordWrap\" [ngbTooltip]=\"tooltip\">{{\r\n item?.Details[fixtureIndex]?.sectionConfig[section]?.productBrandName?.[0]}}</span>\r\n </div>\r\n </div>\r\n </ng-container>\r\n\r\n\r\n <div *ngFor=\"let shelfData of item?.Details[fixtureIndex]?.shelfDetails; let i = index\">\r\n <!-- @if(item.shelfType ==='shelf'){ -->\r\n\r\n <div [id]=\"'shelf' + i\" class=\"block shelf hide-scroll d-block text-end\"\r\n [ngStyle]=\"{\r\n 'background-color':shelfData?.zone ? item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.bg : shlefColor[i].bg}\">\r\n\r\n <div class=\"badge\" [ngStyle]=\"{\r\n 'background-color':item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.textBg,\r\n color:item?.Details[fixtureIndex]?.zoneColor[shelfData?.zone]?.color?.text\r\n }\">\r\n Shelf Capacity : {{shelfData?.productPerShelf}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- Footer block -->\r\n <div class=\"footer-block\">\r\n <p> {{item?.Details[fixtureIndex]?.footer?.label ?? ''}}</p>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"my-4 w-100\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.image&&item?.Details[fixtureIndex]?.image!==''\">\r\n <div class=\"assignText\">Store fixture</div>\r\n <img src=\"{{cdnUrl}}{{item?.Details[fixtureIndex]?.image}}\" alt=\"image\"\r\n class=\"mt-4 w-100\" />\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"item?.Details[fixtureIndex]?.comments.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of item?.Details[fixtureIndex]?.comments\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype==='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n <div class=\"ms-3\" *ngIf=\"comment?.responsetype!=='comment'\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.timeStamp|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\" breakWord mt-2\">\r\n Marked as <span *ngIf=\"comment?.responsetype==='agree'\" class=\"assignText\">\"Agreed,\r\n updated\"</span>\r\n <span *ngIf=\"comment?.responsetype==='disagree'\" class=\"assignText\">\"Disagree,\r\n retained existing\"</span>\r\n </div>\r\n <div class=\"breakWord mt-2\" *ngIf=\"comment?.comment!==''\">\r\n Note: {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n <div class=\"mt-5 row\"\r\n *ngIf=\"item?.Details[fixtureIndex]?.status==='pending'&&selectedFixture?.fixtureId||item?.Details[fixtureIndex]?.status==='pending'&&item.issueType==='others'\">\r\n <div class=\"d-flex justify-content-end\">\r\n <div class=\"two-tone-btn me-3\"\r\n (click)=\"confirmation('agree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]._id,'layout',item.issueType)\">\r\n Agree\r\n </div>\r\n <button type=\"button\" class=\"btn btn-default btn-outline\"\r\n (click)=\"confirmation('disagree',feedback?._id,issues._id,item._id,item?.Details[fixtureIndex]?._id,'layout',item.issueType)\">Disagree</button>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!selectedFixture?.fixtureId\">\r\n <div class=\"my-4 w-100\" *ngIf=\"feedback?.answers[0]?.video&&feedback?.answers[0]?.video!==''\">\r\n <div class=\"assignText\">Store Video</div>\r\n <video controls src=\"{{cdnUrl}}{{feedback?.answers[0]?.video}}\" class=\"mt-4 w-100\"></video>\r\n </div>\r\n <div class=\"my-4\" *ngIf=\"originalData.layoutComment.length>0\">\r\n <div class=\"assignText\">Comments</div>\r\n <div class=\"d-flex mt-4\" *ngFor=\"let comment of originalData.layoutComment\">\r\n <div class=\"symbol symbol-35px symbol-circle\">\r\n <span class=\"symbol-label bg-light-primary text-primary me-2\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\"\r\n fill=\"none\">\r\n <path\r\n d=\"M16.6654 17.5V15.8333C16.6654 14.9493 16.3142 14.1014 15.6891 13.4763C15.0639 12.8512 14.2161 12.5 13.332 12.5H6.66536C5.78131 12.5 4.93346 12.8512 4.30834 13.4763C3.68322 14.1014 3.33203 14.9493 3.33203 15.8333V17.5M13.332 5.83333C13.332 7.67428 11.8396 9.16667 9.9987 9.16667C8.15775 9.16667 6.66536 7.67428 6.66536 5.83333C6.66536 3.99238 8.15775 2.5 9.9987 2.5C11.8396 2.5 13.332 3.99238 13.332 5.83333Z\"\r\n stroke=\"#00A3FF\" stroke-width=\"1.66667\" stroke-linecap=\"round\" stroke-linejoin=\"round\" />\r\n </svg>\r\n </span>\r\n </div>\r\n\r\n <div class=\"ms-3\">\r\n <div class=\"\">\r\n <div class=\"layoutLabel\">\r\n {{comment.userName}}\r\n </div>\r\n <div class=\"grayText\">\r\n {{comment?.createdAt|date:'hh:mm:ss a - dd MMM yyyy'}}\r\n </div>\r\n </div>\r\n <div class=\"breakWord mt-2\">\r\n {{comment?.comment}}\r\n </div>\r\n </div>\r\n\r\n\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </ng-container>\r\n </div>\r\n \r\n\r\n <div class=\"mt-5\" *ngIf=\"layoutFeedback?.length===0&&storeFixtureList?.length===0&&vmFeedback?.length===0&&!loading\">\r\n <div class=\"text-center\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"94\" height=\"94\" viewBox=\"0 0 94 94\" fill=\"none\">\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" fill=\"#DAF1FF\" />\r\n <rect x=\"7\" y=\"7\" width=\"80\" height=\"80\" rx=\"40\" stroke=\"#EAF8FF\" stroke-width=\"13.3333\" />\r\n <path\r\n d=\"M35.9502 48.1997C35.6489 48.2315 35.3422 48.2505 35.0312 48.2505C34.8617 48.2505 34.6944 48.2436 34.5293 48.2339V58.6069C34.5293 60.0349 35.7123 61.226 37.2002 61.2261H56.8047C58.2927 61.2261 59.4756 60.035 59.4756 58.6069V48.2349C59.3137 48.2441 59.1498 48.2505 58.9854 48.2505C58.6714 48.2505 58.3608 48.2325 58.0547 48.1997V55.9878H35.9502V48.1997ZM57.9316 32.7739H36.0732C35.8959 32.7739 35.7406 32.8667 35.6631 32.9878L35.6611 32.9897L32.1514 38.4731L32.0566 38.6206C30.8311 40.7404 32.0957 43.4674 34.4473 43.7769C34.6482 43.8013 34.8379 43.8159 35.0254 43.8159C36.2555 43.8159 37.3434 43.2872 38.1006 42.4653L39.0225 41.4644L39.9414 42.4683C40.6903 43.2863 41.777 43.8159 43.0146 43.8159C44.2467 43.8158 45.3386 43.2856 46.0869 42.4683L47.0088 41.4614L47.9307 42.4683C48.679 43.2857 49.7707 43.8159 51.0029 43.8159C52.2351 43.8159 53.3268 43.2857 54.0752 42.4683L54.9971 41.4614L55.9189 42.4683C56.6673 43.2857 57.76 43.8159 58.9922 43.8159C59.1736 43.8159 59.3687 43.8021 59.5684 43.7778H59.5674C61.9611 43.4573 63.2293 40.6078 61.8613 38.4731L61.8604 38.4741L58.3438 32.9907L58.3428 32.9878C58.2653 32.8665 58.1092 32.7739 57.9316 32.7739Z\"\r\n stroke=\"#009BF3\" stroke-width=\"2.5\" />\r\n </svg>\r\n </div>\r\n <div class=\"mt-3 text-center\">\r\n <div class=\"fw-bold h3 mt-2\">No issue</div>\r\n <div class=\"mt-4\">The store did not flag it as an issue.</div>\r\n </div>\r\n </div>\r\n</section>", styles: [".header{background:#fff;padding:12px;border-radius:12px;display:flex;align-items:center;justify-content:space-between}.btn{padding:.775rem 1.5rem!important;font-size:1.1rem!important}.badge{font-weight:500;font-size:12px;line-height:18px;text-align:center;padding:2px 8px;border-radius:16px}.badge.active{color:#027a48;background:#ecfdf3}.badge.inactive{background:#f2f4f7;color:#344054}.badge.draft{color:#009bf3;background:#eaf8ff}.builder{height:75vh}.builder .cols{background:#fff;border-radius:12px;padding:24px 24px 12px;max-height:75vh;overflow-y:auto}.shelf-container{border-radius:8px;background:var(--Gray-50, #f9fafb);padding:8px 16px;margin-bottom:12px}.counter-container{display:flex;align-items:center;justify-content:center;border-radius:8px;background-color:#fff;padding:10px;border:.49px solid #d0d5dd}.counter-container span{margin:0 18px;font-weight:500;font-size:14px;text-align:center;vertical-align:middle;width:18px}.disable-counter{color:var(--bs-gray-500)!important;background-color:var(--bs-gray-200)!important;border-color:var(--bs-gray-300)!important;pointer-events:none;opacity:1}.disabled-click{pointer-events:none;opacity:.85}.wall-viewport{display:flex;align-items:center;justify-content:center;flex-direction:column;margin-bottom:30px;width:345px;text-align:center}.wall-viewport .wrapper{width:100%;max-width:345px}.wall-viewport .header-info,.wall-viewport .footer-info,.wall-viewport .body-info{width:100%;border:2px solid #f2f4f7;border-bottom:4px solid #ffffff;background:#f2f4f7;max-width:230px;display:flex;align-items:center;justify-content:center;justify-content:start;padding:12px;gap:4px}.wall-viewport .header-info p,.wall-viewport .footer-info p,.wall-viewport .body-info p{margin:0}.wall-viewport .header-info{margin-top:40px}.wall-viewport .sub-footer{border:1px solid #98a2b3;height:100%}.wall-viewport .header-block,.wall-viewport .footer-block{border:1px solid #98a2b3;height:95px;padding:8px;background-color:#f2f4f7;width:100%;display:flex;justify-content:center;align-items:center}.wall-viewport .header-block p,.wall-viewport .footer-block p{color:var(--Gray-600, #475467);font-size:18px;font-weight:600;white-space:normal;word-wrap:break-word;margin:0;background-color:#f2f4f7}.wall-viewport .body-block{width:100%}.wall-viewport .body-block .block{border:1px solid #98a2b3;padding:10px;width:100%;max-width:345px;overflow-x:auto;min-height:52px}.wall-viewport .body-block .tray,.wall-viewport .body-block .shelf{display:flex;gap:4px}.wall-viewport .body-block .tray .product,.wall-viewport .body-block .shelf .product{border:1px solid rgba(152,162,179,.2901960784);min-width:50px}.wall-viewport .body-block .tray .product{min-height:20px}.wall-viewport .body-block .shelf .product{min-height:30px}.wall-viewport .body-block .hide-product{border-color:transparent!important}.wall-viewport .body-block .hide-scroll{overflow-x:hidden!important}.horizontal-dimension{display:flex;align-items:center;justify-content:center;height:30px;position:relative}.horizontal-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.horizontal-dimension .arrow.left{transform:rotate(180deg);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .arrow.right{transform:rotate(0);background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.horizontal-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;height:1px}.horizontal-dimension .line span{position:absolute;top:-12px;color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:0 4px}.vertical-dimension{display:flex;flex-direction:column;align-items:center;width:30px;position:relative}.vertical-dimension .arrow{width:12px;height:12px;background-size:contain;background-repeat:no-repeat;background-position:center}.vertical-dimension .arrow.up{transform:rotate(-90deg);margin-top:20px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .arrow.down{transform:rotate(90deg);margin-bottom:26px;background-image:url(\"data:image/svg+xml,%3Csvg fill='%23EAECF0' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 330 330'%3E%3Cpath d='M250.606,154.389l-150-149.996c-5.857-5.858-15.355-5.858-21.213,0.001c-5.857,5.858-5.857,15.355,0.001,21.213l139.393,139.39L79.393,304.394c-5.857,5.858-5.857,15.355,0.001,21.213C82.322,328.536,86.161,330,90,330s7.678-1.464,10.607-4.394l149.999-150.004c2.814-2.813,4.394-6.628,4.394-10.606C255,161.018,253.42,157.202,250.606,154.389z'/%3E%3C/svg%3E\")}.vertical-dimension .line{flex:1;background-color:#eaecf0;position:relative;display:flex;align-items:center;justify-content:center;width:1px}.vertical-dimension .line span{writing-mode:vertical-rl;text-orientation:mixed;transform:rotate(180deg);color:#667085;font-weight:500;font-size:14px;background-color:#fff;padding:2px 4px}.info-card{padding:12px;background:#fff;border:1px solid #d0d5dd;border-radius:8px;box-shadow:0 1px 2px #1018280f,0 1px 3px #1018281a}.info-card h3{font-weight:600;font-size:18px;line-height:28px;vertical-align:middle}.info-card p{font-weight:500;font-size:14px;line-height:20px;color:#667085;margin:0}.checkbox input[type=checkbox]{width:16px!important;height:16px!important;margin:5px;border-radius:4px!important;-webkit-appearance:none;-moz-appearance:none;-o-appearance:none;appearance:none;outline:1px solid var(--gray-600, #d0d5dd)!important;box-shadow:none;font-size:.5em;text-align:center;line-height:1em;background:#fff}.checkbox input[type=checkbox]:checked{outline:1px solid var(--primary-600, #00a3ff)!important;background-color:var(--primary-50, #eaf8ff)}.checkbox input[type=checkbox]:checked:after{content:\"\";transform:rotate(45deg);border-bottom:2px solid #00a3ff;border-right:2px solid #00a3ff;display:inline-block;width:.5em;padding-left:3px;padding-top:10px;padding-right:0}.nav-pills{display:inline-flex;gap:4px}.nav-pills .nav-item .nav-link{border-radius:0;color:#667085;font-size:14px;font-weight:500;padding:8px 16px;border:none}.nav-pills .nav-item .nav-link:hover{background-color:#00000005}.nav-pills .nav-item .nav-link.active{background-color:#eaf8ff;color:#009bf3;border-bottom:3px solid #009bf3}.content-wrapper{background:#fff;border-radius:12px;min-height:calc(100vh - 400px);height:100%;padding:16px 24px;display:flex;flex-direction:column}.loader .shimmer{height:150px}.filter-tab{border:1px solid rgb(234,236,240);background:#fff;box-shadow:0 1px 2px #1018280d;border-radius:8px;padding:18px;transition:all ease .2s}.filter-tab:hover{cursor:pointer}.filter-tab.selected{background:#f6fcff;border:1px solid rgb(107,202,255);box-shadow:0 1px 2px #1018280d}.filter-tab h3{color:#000;font-size:20px;font-weight:600;line-height:30px;margin:0}.filter-tab p{color:var(--Gray-500, #667085);font-size:14px;font-weight:500;line-height:20px;margin:0}.ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.vm-preview{padding:12px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);margin-bottom:12px}.vm-preview h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600}.vm-preview p{color:var(--Gray-700, #344054);font-size:12px;font-weight:400}.vm-preview .preview{width:134px;height:134px;border-radius:4px;border:1px solid var(--Gray-200, #eaecf0);background:var(--Gray-50, #f9fafb)}.vm-preview .preview img{border-radius:2px}.vm-placeholder{border:4px solid var(--Black, #101828);background:#f9fafb;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:8px}::ng-deep .redBorder{border:4px solid red!important}.vm-block{position:absolute;width:100px;height:100px;transition:all .3s ease}.vm-block h3{color:var(--Gray-700, #344054);font-size:14px;font-weight:600;margin:0}.storeResponse{color:var(--Black, #101828);font-family:Inter;font-size:18px;font-style:normal;font-weight:600;line-height:28px}.normalText{color:var(--Gray-600, #475467);font-family:Inter;font-size:12px;font-style:normal;font-weight:500;line-height:18px}.border-bottom{border-bottom:1px solid #d0d5dd}.grayText{color:var(--Gray-500, #667085);font-family:Inter;font-size:12px;font-style:normal;font-weight:400;line-height:18px}.layoutLabel{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.assignText{color:var(--Gray-800, #1d2939);font-family:Inter;font-size:12px;font-style:normal;font-weight:600;line-height:18px}.h-divider{width:2px;height:46px;border-radius:2px;background:var(--Gray-200, #eaecf0)}.shelfText{color:var(--Gray-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.badge.badge-secondary{color:var(--Gray-700, #344054);background:var(--Gray-100, #f2f4f7)}.breakWord{overflow-wrap:break-word}.smallBoldText{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:600;line-height:15.573px}.smallText{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.headerStyle{color:var(--Primary-600, #00A3FF);text-align:center;font-family:Inter;font-size:13.843px;font-style:normal;font-weight:600;line-height:20.764px;padding-top:15px}.two-tone-btn{color:var(--Primary-700, #009BF3);font-size:14px;font-style:normal;font-weight:600;line-height:20px;border-radius:6px;border:1px solid var(--Primary-300, #6BCAFF);padding:8px 14px}.two-tone-btn:hover{border:1px solid var(--Primary-300, #6BCAFF);color:var(--Primary-700, #009BF3);cursor:pointer}.footer-block{position:relative;box-sizing:border-box;justify-content:space-between!important}.footer-block p{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#f2f4f7;z-index:1}.sub-footer{position:relative;width:48%}.array-wrapper{border-radius:4px;background:var(--Gray-50, #f9fafb);padding:16px}.array-container{border-radius:6px;padding:12px;background:#fff;margin-bottom:12px}.wall-viewport{position:relative}img{width:100%;height:100%;object-fit:cover;display:block}::ng-deep .wall-viewport .body-block .block{max-width:100%!important}.secStyle{color:var(--Gray-500, #667085);font-family:Inter;font-size:10.382px;font-style:normal;font-weight:400;line-height:15.573px}.block.shelf{height:50px!important}.danger{color:red}.wordWrap{max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.textHeading{color:var(--Gray-800, #1D2939);font-family:Inter;font-size:14px;font-style:normal;font-weight:600;line-height:20px}.aiLayoutLabel{color:var(--Gray-600, #475467);font-family:Inter;font-size:14px;font-style:normal;font-weight:500;line-height:20px}.popup{position:fixed;inset:0;background-color:#000000d9;display:flex;justify-content:center;align-items:center;z-index:1000}.popup-img{display:block;max-width:none;max-height:none;width:auto;height:auto;object-fit:contain}\n"] }]
|
|
729
729
|
}], ctorParameters: () => [{ type: i1.StoreBuilderService }, { type: i0.ChangeDetectorRef }, { type: i2.NgbModal }, { type: i3.GlobalStateService }], propDecorators: { bodyBlockRef: [{
|
|
730
730
|
type: ViewChild,
|
|
731
731
|
args: ["bodyBlock"]
|
|
@@ -741,4 +741,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
741
741
|
}], isApproved: [{
|
|
742
742
|
type: Output
|
|
743
743
|
}] } });
|
|
744
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby9tYW5hZ2Utc3RvcmUtcGxhbm8tZmVlZGJhY2svbWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby9tYW5hZ2Utc3RvcmUtcGxhbm8tZmVlZGJhY2svbWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlDLFNBQVMsRUFBRSxLQUFLLEVBQWlCLFlBQVksRUFBRSxNQUFNLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBRTlKLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQTtBQUMvRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8saUJBQWlCLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7QUFPckQsTUFBTSxPQUFPLGlDQUFpQztJQXVFbEM7SUFDQTtJQUNBO0lBQ0E7SUF2RWMsWUFBWSxDQUFjO0lBQ1AsU0FBUyxDQUFNO0lBQzFELGlCQUFpQixHQUFRLGlCQUFpQixDQUFDO0lBQzNDLGNBQWMsR0FBUSxFQUFFLENBQUM7SUFDekIsVUFBVSxHQUFRLEVBQUUsQ0FBQztJQUNy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QyxRQUFhLEVBQUMsSUFBUTtRQUN6QyxJQUFHLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ3JFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQyxDQUFDLFNBQVMsQ0FBQztTQUNyRjthQUNJO1lBQ0gsT0FBTyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQ3pEO0lBQ0gsQ0FBQzt3R0F0MEJVLGlDQUFpQzs0RkFBakMsaUNBQWlDLGliQ2Y5QywrMmpIQTZ3RFU7OzRGRDl2REcsaUNBQWlDO2tCQUw3QyxTQUFTOytCQUNFLGlDQUFpQztnTEFPbkIsWUFBWTtzQkFBbkMsU0FBUzt1QkFBQyxXQUFXO2dCQUNxQixTQUFTO3NCQUFuRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBNEJoQyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIENoYW5nZURldGVjdG9yUmVmLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIElucHV0LCBTaW1wbGVDaGFuZ2VzLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgU3RvcmVCdWlsZGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3N0b3JlLWJ1aWxkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFNIRUxGX0NPTE9SUyB9IGZyb20gJy4uLy4uLy4uL2RhdGEvZml4dHVyZS10ZW1wbGF0ZS5kYXRhJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uUG9wdXBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29uZmlybWF0aW9uLXBvcHVwL2NvbmZpcm1hdGlvbi1wb3B1cC5jb21wb25lbnRcIlxyXG5pbXBvcnQgeyB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgZml4dHVyZUhlYWRlckxpc3QgZnJvbSAnLi9maXh0dXJlSGVhZGVyLmpzb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLW1hbmFnZS1zdG9yZS1wbGFuby1mZWVkYmFja1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vbWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9tYW5hZ2Utc3RvcmUtcGxhbm8tZmVlZGJhY2suY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hbmFnZVN0b3JlUGxhbm9GZWVkYmFja0NvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdFxyXG57XHJcbiAgQFZpZXdDaGlsZChcImJvZHlCbG9ja1wiKSBib2R5QmxvY2tSZWYhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoXCJhY2NvcmRpb25cIiwgeyBzdGF0aWM6IGZhbHNlIH0pIGFjY29yZGlvbjogYW55O1xyXG4gIGZpeHR1cmVIZWFkZXJMaXN0OiBhbnkgPSBmaXh0dXJlSGVhZGVyTGlzdDtcclxuICBsYXlvdXRGZWVkYmFjazogYW55ID0gW107XHJcbiAgdm1GZWVkYmFjazogYW55ID0gW107XHJcbiAgb3BlbmZpeHR1cmU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIG9wZW52bTogYm9vbGVhbiA9IHRydWU7XHJcbiAgLy8gc2hlbGZEZXRhaWxzOiBhbnkgPSBbXVxyXG4gIGZpeHR1cmVJbmRleDogbnVtYmVyID0gMDtcclxuICBmaXh0dXJldGFza0luZGV4OiBudW1iZXIgPSAwO1xyXG4gIHZtdGFza0luZGV4OiBudW1iZXIgPSAwO1xyXG4gIGFwcHJvdmVkTGF5b3V0aXNzdWVzOiBudW1iZXIgPSAwO1xyXG4gIHBlbmRpbmdMYXlvdXRpc3N1ZXM6IG51bWJlciA9IDA7XHJcbiAgcGVuZGluZ0ZpeHR1cmVpc3N1ZXM6IG51bWJlciA9IDA7XHJcbiAgYXBwcm92ZWRGaXh0dXJlaXNzdWVzOiBudW1iZXIgPSAwO1xyXG4gIHRvdGFsRml4dHVyZWlzc3VlczogbnVtYmVyID0gMDtcclxuICBjb21wbGV0ZWRGaXh0dXJlOiBudW1iZXIgPSAwO1xyXG4gIHBlbmRpbmdWbWlzc3VlczogbnVtYmVyID0gMDtcclxuICBhcHByb3ZlZFZtaXNzdWVzOiBudW1iZXIgPSAwO1xyXG4gIHRvdGFsVm1pc3N1ZXM6IG51bWJlciA9IDA7XHJcbiAgY29tcGxldGVkVm06IG51bWJlciA9IDA7XHJcbiAgY29sb3JMaXN0OiBhbnkgPSB7fTtcclxuICB2bUNvbmZpZzogYW55ID0gW107XHJcbiAgLy8gc2VjdGlvbkNvbmZpZzogYW55ID0gW107XHJcbiAgLy8gc2VjdGlvbktleXM6IGFueSA9IFtdXHJcbiAgc2hsZWZDb2xvciA9IFNIRUxGX0NPTE9SUztcclxuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBzdG9yZUZpeHR1cmVMaXN0OiBhbnkgPSBbXTtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBASW5wdXQoKSBjdXJyZW50UGxhbm86IGFueTtcclxuICBASW5wdXQoKSBzdG9yZUZlZWRiYWNrOiBhbnk7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJc3N1ZTogYW55O1xyXG4gIEBPdXRwdXQoKSBpc0FwcHJvdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgc2VsZWN0ZWRGaXh0dXJlOiBhbnk7XHJcbiAgb3JpZ2luYWxEYXRhOiBhbnk7XHJcbiAgY2RuVXJsOiBhbnk7XHJcbiAgY3VycmVudFBsYW5vRGV0YWlsczogYW55O1xyXG4gIGRhdGFPYmplY3Q6IGFueSA9IFtcclxuICAgIC8vIHtcclxuICAgIC8vICAgRGVzY3JpcHRpb246IFwiVGFza1wiLFxyXG4gICAgLy8gICBJc3N1ZXM6IFtcclxuICAgIC8vICAgICB7IHRleHQ6IFwiTGF5b3V0IHZlcmlmaWNhdGlvblwiLCBpZDogXCJsYXlvdXRcIiB9LFxyXG4gICAgLy8gICAgIHsgdGV4dDogXCJGaXh0dXJlIHZlcmlmaWNhdGlvblwiLCBpZDogXCJmaXh0dXJlXCIgfSxcclxuICAgIC8vICAgICB7IHRleHQ6IFwiVmlzdWFsIE1lcmNoIHZlcmlmaWNhdGlvblwiLCBpZDogXCJ2bVwiIH0sXHJcbiAgICAvLyAgIF0sXHJcbiAgICAvLyB9LFxyXG4gICAge1xyXG4gICAgICBEZXNjcmlwdGlvbjogXCJTdGF0dXNcIixcclxuICAgICAgSXNzdWVzOiBbXHJcbiAgICAgICAgLy8geyB0ZXh0OiBcIk1hdGNoXCIsIGlkOiBcImNvbXBsZXRlXCIgfSxcclxuICAgICAgICAvLyB7IHRleHQ6IFwiTWlzbWF0Y2hcIiwgaWQ6IFwiaW5jb21wbGV0ZVwiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcIkFncmVlXCIsIGlkOiBcImFncmVlXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiRGlzYWdyZWUsIFJlZG9cIiwgaWQ6IFwiZGlzYWdyZWVcIiB9LFxyXG4gICAgICAgIHsgdGV4dDogXCJSZXZpZXcgcGVuZGluZ1wiLCBpZDogXCJwZW5kaW5nXCIgfSxcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICAvLyB7XHJcbiAgICAvLyAgIERlc2NyaXB0aW9uOiBcIkFwcHJvdmFsIFN0YXR1c1wiLFxyXG4gICAgLy8gICB0eXBlOiBcInNpbmdsZVwiLFxyXG4gICAgLy8gICBJc3N1ZXM6IFtcclxuICAgIC8vICAgICB7IHRleHQ6IFwiQWN0aW9uIFBlbmRpbmdcIiwgaWQ6IFwicGVuZGluZ1wiIH0sXHJcbiAgICAvLyAgICAgeyB0ZXh0OiBcIkFjdGlvbiBEb25lXCIsIGlkOiBcImFncmVlXCIgfSxcclxuICAgIC8vICAgXSxcclxuICAgIC8vIH0sXHJcbiAgXTtcclxuICAvLyBhaWNkblVybDogc3RyaW5nO1xyXG4gIHNlbGVjdGVkSW1hZ2U6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXBpU2VydmljZTogU3RvcmVCdWlsZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1tcImN1cnJlbnRQbGFub1wiXSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQbGFub0RldGFpbHMgPSBjaGFuZ2VzW1wiY3VycmVudFBsYW5vXCJdLmN1cnJlbnRWYWx1ZTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzW1wic3RvcmVGZWVkYmFja1wiXSkge1xyXG4gICAgICBpZiAoY2hhbmdlc1tcInN0b3JlRmVlZGJhY2tcIl0uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5yZXNldEluaXRpYWxWYWx1ZXMoKTtcclxuICAgICAgICB0aGlzLm9yaWdpbmFsRGF0YSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShjaGFuZ2VzW1wic3RvcmVGZWVkYmFja1wiXS5jdXJyZW50VmFsdWUpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBsZXQgZmVlZGJhY2tEYXRhID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGNoYW5nZXNbXCJzdG9yZUZlZWRiYWNrXCJdLmN1cnJlbnRWYWx1ZSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmdldHBsYW5vRmVlZGJhY2soZmVlZGJhY2tEYXRhPy5sYXlvdXREYXRhKTtcclxuICAgICAgICB0aGlzLmdldFN0b3JlRml4dHVyZXNmZWVkYmFjayhmZWVkYmFja0RhdGE/LmZpeHR1cmVEYXRhKTtcclxuICAgICAgICB0aGlzLmdldFN0b3JlVm1mZWVkYmFjayhmZWVkYmFja0RhdGE/LlZtRGF0YSk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZmVlZGJhY2tEYXRhPy5sYXlvdXREYXRhPy5sZW5ndGggPT09IDAgJiZcclxuICAgICAgICAgIGZlZWRiYWNrRGF0YT8uZml4dHVyZURhdGE/Lmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgICAgZmVlZGJhY2tEYXRhPy5WbURhdGE/Lmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1tcInNlbGVjdGVkSXNzdWVcIl0pIHtcclxuICAgICAgdGhpcy5yZXNldEluaXRpYWxWYWx1ZXMoKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpeHR1cmUgPSBjaGFuZ2VzW1wic2VsZWN0ZWRJc3N1ZVwiXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIGlmICh0aGlzLm9yaWdpbmFsRGF0YT8ubGF5b3V0RGF0YSkge1xyXG4gICAgICAgIGxldCBuZXdMYXlvdXREYXRhID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMub3JpZ2luYWxEYXRhPy5sYXlvdXREYXRhKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIG5ld0xheW91dERhdGEuZm9yRWFjaCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBkYXRhLmFuc3dlcnMuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZWxlLmlzc3Vlcy5mb3JFYWNoKChpc3N1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZC5pbmNsdWRlcyhcIm5ld1wiKSAmJlxyXG4gICAgICAgICAgICAgICAgaXNzdWUuaXNzdWVUeXBlICE9IFwiZXh0cmFGaXh0dXJlXCJcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGlzc3VlLkRldGFpbHMgPSBbXTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgaXNzdWUuaXNzdWVUeXBlICE9IFwiY29tbWVudHNcIiAmJlxyXG4gICAgICAgICAgICAgICAgaXNzdWUuaXNzdWVUeXBlICE9IFwiZXh0cmFGaXh0dXJlXCJcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGlzc3VlLkRldGFpbHMgPSBpc3N1ZS5EZXRhaWxzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgKHNoZWxmOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgc2hlbGYuZml4dHVyZUlkID09PSB0aGlzLnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkLmluY2x1ZGVzKFwibmV3XCIpICYmXHJcbiAgICAgICAgICAgICAgICBpc3N1ZS5pc3N1ZVR5cGUgPT09IFwiZXh0cmFGaXh0dXJlXCJcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGlzc3VlLkRldGFpbHMgPSBpc3N1ZS5EZXRhaWxzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgKGRhdGE6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICBkYXRhLl9pZCA9PT0gdGhpcy5zZWxlY3RlZEZpeHR1cmU/Lmlzc3VlRGF0YT8uX2lkXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgICAhdGhpcy5zZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZC5pbmNsdWRlcyhcIm5ld1wiKSAmJlxyXG4gICAgICAgICAgICAgICAgaXNzdWUuaXNzdWVUeXBlID09PSBcImV4dHJhRml4dHVyZVwiXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBpc3N1ZS5EZXRhaWxzID0gW107XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZWxlLmlzc3VlcyA9IGVsZS5pc3N1ZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChpc3N1ZTogYW55KSA9PiBpc3N1ZS5EZXRhaWxzLmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgbGV0IGZpeHR1cmVjb3VudCA9IGVsZS5pc3N1ZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlLmlzc3VlVHlwZSAhPSBcImV4dHJhRml4dHVyZVwiXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChmaXh0dXJlY291bnQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIGVsZS5pc3N1ZXMgPSBlbGUuaXNzdWVzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChpc3N1ZTogYW55KSA9PiBpc3N1ZS5pc3N1ZVR5cGUgIT0gXCJleHRyYUZpeHR1cmVcIlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG5ld0xheW91dERhdGEgPSBuZXdMYXlvdXREYXRhLmZpbHRlcigoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gIShkYXRhLmFuc3dlcnNbMF0uaXNzdWVzLmxlbmd0aCA9PT0gMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5nZXRwbGFub0ZlZWRiYWNrKG5ld0xheW91dERhdGEpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgZml4dHVyZUxpc3QgPSB0aGlzLm9yaWdpbmFsRGF0YT8uZml4dHVyZURhdGE/LmZpbHRlcihcclxuICAgICAgICAoZGF0YTogYW55KSA9PiBkYXRhLmZpeHR1cmVJZCA9PT0gdGhpcy5zZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoZml4dHVyZUxpc3QgJiYgZml4dHVyZUxpc3Q/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmZpeHR1cmV0YXNrSW5kZXggPSAwO1xyXG5cclxuICAgICAgICB0aGlzLmdldFN0b3JlRml4dHVyZXNmZWVkYmFjayhmaXh0dXJlTGlzdCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5nZXRTdG9yZUZpeHR1cmVzZmVlZGJhY2soW10pO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCB2bUxpc3QgPSB0aGlzLm9yaWdpbmFsRGF0YT8uVm1EYXRhPy5maWx0ZXIoXHJcbiAgICAgICAgKGRhdGE6IGFueSkgPT4gZGF0YS5maXh0dXJlSWQgPT09IHRoaXMuc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcclxuICAgICAgKTtcclxuICAgICAgaWYgKHZtTGlzdCAmJiB2bUxpc3Q/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnZtdGFza0luZGV4ID0gMDtcclxuICAgICAgICB0aGlzLmdldFN0b3JlVm1mZWVkYmFjayh2bUxpc3QpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ2V0U3RvcmVWbWZlZWRiYWNrKFtdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3MuZW52aXJvbm1lbnQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZW52KSA9PiB7XHJcbiAgICAgIGlmIChlbnYpIHtcclxuICAgICAgICB0aGlzLmNkblVybCA9IGVudi5wbGFub2dyYW1DRE47XHJcbiAgICAgICAgLy8gdGhpcy5haWNkblVybCA9IGVudi5wbGFub2dyYW1BSUNETjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZXNldEluaXRpYWxWYWx1ZXMoKSB7XHJcbiAgICB0aGlzLmFwcHJvdmVkTGF5b3V0aXNzdWVzID0gMDtcclxuICAgIHRoaXMucGVuZGluZ0xheW91dGlzc3VlcyA9IDA7XHJcbiAgICB0aGlzLnBlbmRpbmdGaXh0dXJlaXNzdWVzID0gMDtcclxuICAgIHRoaXMuYXBwcm92ZWRGaXh0dXJlaXNzdWVzID0gMDtcclxuICAgIHRoaXMudG90YWxGaXh0dXJlaXNzdWVzID0gMDtcclxuICAgIHRoaXMuY29tcGxldGVkRml4dHVyZSA9IDA7XHJcbiAgICB0aGlzLnBlbmRpbmdWbWlzc3VlcyA9IDA7XHJcbiAgICB0aGlzLmFwcHJvdmVkVm1pc3N1ZXMgPSAwO1xyXG4gICAgdGhpcy50b3RhbFZtaXNzdWVzID0gMDtcclxuICAgIHRoaXMuY29tcGxldGVkVm0gPSAwO1xyXG4gIH1cclxuICB0b2dnbGVQYW5lbChpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmxheW91dEZlZWRiYWNrLmZvckVhY2goKGl0ZW06IGFueSwgaTogYW55KSA9PiB7XHJcbiAgICAgIGl0ZW0uY29sbGFwc2VkID0gaSAhPT0gaW5kZXg7IC8vIG9ubHkgc2VsZWN0ZWQgcGFuZWwgc3RheXMgb3BlblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHVwZGF0ZVN0eWxlKGRhdGE6IGFueSwgaTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVTZWN0aW9uKGRhdGEsIGkpO1xyXG4gIH1cclxuICBnZXRTdG9yZUZpeHR1cmVzZmVlZGJhY2soZml4dHVyZURhdGE6IGFueSkge1xyXG4gICAgaWYgKGZpeHR1cmVEYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMubGF5b3V0RmVlZGJhY2suZm9yRWFjaCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgZGF0YS5jb2xsYXBzZWQgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMub3BlbmZpeHR1cmUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbXBsZXRlZEZpeHR1cmUgPSBmaXh0dXJlRGF0YT8uZmlsdGVyKFxyXG4gICAgICAoZGF0YTogYW55KSA9PiBkYXRhLnN0YXR1cyA9PT0gXCJjb21wbGV0ZVwiXHJcbiAgICApLmxlbmd0aDtcclxuICAgIGZpeHR1cmVEYXRhPy5mb3JFYWNoKChzaGVsZjogYW55LCBpOiBhbnkpID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHNoZWxmPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWcgJiZcclxuICAgICAgICBzaGVsZj8uRml4dHVyZURhdGE/LnNoZWxmQ29uZmlnPy5sZW5ndGggPiAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnRm9ybWF0ZWQgPSB0aGlzLmZvcm1hdERhdGEoXHJcbiAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zaGVsZkNvbmZpZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbkNvbmZpZyA9IHRoaXMuc3RvcmVEYXRhKFxyXG4gICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWcsXHJcbiAgICAgICAgICBzaGVsZj8uRml4dHVyZURhdGE/LnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChzaGVsZj8uRml4dHVyZURhdGE/LnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWwgPT0gXCJMMVwiKSB7XHJcbiAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zZWN0aW9uQ29uZmlnWzBdLnByb2R1Y3RCcmFuZE5hbWUgPVxyXG4gICAgICAgICAgICBzaGVsZj8uRml4dHVyZURhdGEucHJvZHVjdEJyYW5kTmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHpvbmVDb2xvcjogYW55ID0ge307XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbkNvbmZpZy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgem9uZUNvbG9yW2VsZS56b25lXSA9IHsgY29sb3I6IGVsZS5jb2xvciB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnpvbmVDb2xvciA9IHpvbmVDb2xvcjtcclxuICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zZWN0aW9uS2V5cyA9IE9iamVjdC5rZXlzKFxyXG4gICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbkNvbmZpZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZEZXRhaWxzID0gc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWc7XHJcbiAgICAgICAgc2hlbGY/LmFuc3dlcnM/LmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBlbGUuaXNzdWVzID0gZWxlPy5pc3N1ZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoaXNzdWU6IGFueSkgPT4gaXNzdWUuRGV0YWlscyAmJiBpc3N1ZS5EZXRhaWxzLmxlbmd0aCA+IDBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsRml4dHVyZWlzc3VlcyA9XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxGaXh0dXJlaXNzdWVzICsgZWxlPy5pc3N1ZXM/Lmxlbmd0aDtcclxuXHJcbiAgICAgICAgICBlbGU/Lmlzc3Vlcy5mb3JFYWNoKChpc3N1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBpc3N1ZT8uRGV0YWlscy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5zdGF0dXMgPT09IFwicGVuZGluZ1wiKVxyXG4gICAgICAgICAgICAgICAgLmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgaXNzdWUuY29sbGFwc2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nRml4dHVyZWlzc3VlcyA9IHRoaXMucGVuZGluZ0ZpeHR1cmVpc3N1ZXMgKyAxO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlzc3VlLmNvbGxhcHNlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuYXBwcm92ZWRGaXh0dXJlaXNzdWVzID0gdGhpcy5hcHByb3ZlZEZpeHR1cmVpc3N1ZXMgKyAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlzc3VlPy5EZXRhaWxzLmZvckVhY2goKG5ld3NoZWxmOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAobmV3c2hlbGY/LnNoZWxmQ29uZmlnICYmIG5ld3NoZWxmPy5zaGVsZkNvbmZpZz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgbmV3c2hlbGYuc2hlbGZDb25maWdGb3JtYXRlZCA9IHRoaXMuZm9ybWF0RGF0YShcclxuICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2hlbGZDb25maWdcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBuZXdzaGVsZi5zZWN0aW9uQ29uZmlnID0gdGhpcy5zdG9yZURhdGEoXHJcbiAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnLFxyXG4gICAgICAgICAgICAgICAgICBzaGVsZj8uRml4dHVyZURhdGE/LnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2hlbGY/LkZpeHR1cmVEYXRhPy5wcm9kdWN0UmVzb2x1dGlvbkxldmVsID09IFwiTDFcIikge1xyXG4gICAgICAgICAgICAgICAgICBuZXdzaGVsZi5zZWN0aW9uQ29uZmlnWzBdLnByb2R1Y3RCcmFuZE5hbWUgPVxyXG4gICAgICAgICAgICAgICAgICAgIHNoZWxmPy5GaXh0dXJlRGF0YS5wcm9kdWN0QnJhbmROYW1lO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbmV3c2hlbGYuc2VjdGlvbktleXMgPSBPYmplY3Qua2V5cyhuZXdzaGVsZi5zZWN0aW9uQ29uZmlnKTtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgW1wicHJvZHVjdGNhdGVnb3J5V3JvbmdcIiwgXCJicmFuZFdyb25nXCJdLmluY2x1ZGVzKFxyXG4gICAgICAgICAgICAgICAgICAgIGlzc3VlLmlzc3VlVHlwZVxyXG4gICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZEZXRhaWxzLmZvckVhY2goKHNoZWxmOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc2hlbGZEZXRhaWxzID0gbmV3c2hlbGYuc2hlbGZDb25maWcuZmluZChcclxuICAgICAgICAgICAgICAgICAgICAgIChuZXdTaGVsZjogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdTaGVsZi5zaGVsZk51bWJlciA9PSBzaGVsZi5zaGVsZk51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzaGVsZkRldGFpbHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHNoZWxmLm9sZFNoZWxmID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnLnB1c2goc2hlbGYpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnLnNvcnQoXHJcbiAgICAgICAgICAgICAgICAgICAgKGE6IGFueSwgYjogYW55KSA9PiBhLnNoZWxmTnVtYmVyIC0gYi5zaGVsZk51bWJlclxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbmV3c2hlbGYuc2hlbGZEZXRhaWxzID0gbmV3c2hlbGYuc2hlbGZDb25maWc7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc3RvcmVGaXh0dXJlTGlzdCA9IGZpeHR1cmVEYXRhO1xyXG4gIH1cclxuICBnZXRTdG9yZVZtZmVlZGJhY2soVm1EYXRhOiBhbnkpIHtcclxuICAgIGlmIChWbURhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5vcGVudm0gPSBmYWxzZTtcclxuICAgICAgdGhpcy5vcGVuZml4dHVyZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMub3BlbnZtKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWNjb3JkaW9uPy5leHBhbmQoXCJkZXRhaWxzXCIpOyAvLyAnZGV0YWlscycgaXMgdGhlIElEIG9mIHRoZSBpdGVtXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb21wbGV0ZWRWbSA9IFZtRGF0YT8uZmlsdGVyKFxyXG4gICAgICAoZGF0YTogYW55KSA9PiBkYXRhLnN0YXR1cyA9PT0gXCJjb21wbGV0ZVwiXHJcbiAgICApLmxlbmd0aDtcclxuICAgIFZtRGF0YT8uZm9yRWFjaCgoc2hlbGY6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgc2hlbGY/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZyAmJlxyXG4gICAgICAgIHNoZWxmPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWdGb3JtYXRlZCA9IHRoaXMuZm9ybWF0RGF0YShcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zZWN0aW9uQ29uZmlnID0gdGhpcy5zdG9yZURhdGEoXHJcbiAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zaGVsZkNvbmZpZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbktleXMgPSBPYmplY3Qua2V5cyhcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNlY3Rpb25Db25maWdcclxuICAgICAgICApO1xyXG4gICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmRGV0YWlscyA9IHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnO1xyXG4gICAgICAgIGxldCB2bUNvbmZpZyA9IHNoZWxmLkZpeHR1cmVEYXRhLnZtQ29uZmlnO1xyXG4gICAgICAgIHNoZWxmPy5hbnN3ZXJzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBlbGUuaXNzdWVzID0gZWxlPy5pc3N1ZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoaXNzdWU6IGFueSkgPT4gaXNzdWUuRGV0YWlscyAmJiBpc3N1ZS5EZXRhaWxzLmxlbmd0aCA+IDBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsVm1pc3N1ZXMgPSB0aGlzLnRvdGFsVm1pc3N1ZXMgKyBlbGU/Lmlzc3Vlcz8ubGVuZ3RoO1xyXG5cclxuICAgICAgICAgIGVsZT8uaXNzdWVzLmZvckVhY2goKGlzc3VlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIGlzc3VlPy5EZXRhaWxzLmZpbHRlcigoZGF0YTogYW55KSA9PiBkYXRhLnN0YXR1cyA9PT0gXCJwZW5kaW5nXCIpXHJcbiAgICAgICAgICAgICAgICAubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBpc3N1ZS5jb2xsYXBzZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdWbWlzc3VlcyA9IHRoaXMucGVuZGluZ1ZtaXNzdWVzICsgMTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpc3N1ZS5jb2xsYXBzZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuYXBwcm92ZWRWbWlzc3VlcyA9IHRoaXMuYXBwcm92ZWRWbWlzc3VlcyArIDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXNzdWU/LkRldGFpbHMuZm9yRWFjaCgobmV3c2hlbGY6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIG5ld3NoZWxmLnZtQ29uZmlnbmV3ID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG5ld3NoZWxmLnZtQ29uZmlnKVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgaWYgKG5ld3NoZWxmPy5zaGVsZkNvbmZpZyAmJiBuZXdzaGVsZj8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnRm9ybWF0ZWQgPSB0aGlzLmZvcm1hdERhdGEoXHJcbiAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgbmV3c2hlbGYuc2VjdGlvbkNvbmZpZyA9IHRoaXMuc3RvcmVEYXRhKG5ld3NoZWxmLnNoZWxmQ29uZmlnKTtcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNlY3Rpb25LZXlzID0gT2JqZWN0LmtleXMobmV3c2hlbGYuc2VjdGlvbkNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICBuZXdzaGVsZi5zaGVsZkRldGFpbHMgPSBuZXdzaGVsZi5zaGVsZkNvbmZpZztcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnZtQ29uZmlnbmV3LmZvckVhY2goKHZtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKGlzc3VlLmlzc3VlVHlwZSA9PSBcIlZtTWlzbWF0Y2hcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHZtLnN0YXJ0WVBvc2l0aW9uID0gdm0ubmV3c3RhcnRZUG9zaXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgdm0uZW5kWVBvc2l0aW9uID0gdm0ubmV3ZW5kWVBvc2l0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgIHZtLnhab25lID0gdm0ubmV3eFpvbmUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgICAgICB2bS55Wm9uZSA9IHZtLm5ld3lab25lLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdm0ubmV3Vm0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBuZXdzaGVsZi52bUNvbmZpZ25ldy5wdXNoKC4uLnZtQ29uZmlnKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy52bUZlZWRiYWNrID0gVm1EYXRhO1xyXG4gICAgdGltZXIoMzAwMCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5leHRGaXh0dXJlKGZpeHR1cmVJbmRleDogbnVtYmVyLCB0b3RhbERhdGE6IGFueSkge1xyXG4gICAgaWYgKHRvdGFsRGF0YS5sZW5ndGggPiBmaXh0dXJlSW5kZXggKyAxKSB7XHJcbiAgICAgIHRoaXMuZml4dHVyZUluZGV4ID0gZml4dHVyZUluZGV4ICsgMTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJldmlvdXNGaXh0dXJlKGZpeHR1cmVJbmRleDogbnVtYmVyLCB0b3RhbERhdGE6IGFueSkge1xyXG4gICAgaWYgKGZpeHR1cmVJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy5maXh0dXJlSW5kZXggPSBmaXh0dXJlSW5kZXggLSAxO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZXh0dGFza0ZpeHR1cmUoZml4dHVyZXRhc2tJbmRleDogbnVtYmVyLCB0b3RhbERhdGE6IGFueSkge1xyXG4gICAgaWYgKHRvdGFsRGF0YS5sZW5ndGggPiBmaXh0dXJldGFza0luZGV4ICsgMSkge1xyXG4gICAgICB0aGlzLmZpeHR1cmV0YXNrSW5kZXggPSBmaXh0dXJldGFza0luZGV4ICsgMTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJldmlvdXN0YXNrVm0odm10YXNrSW5kZXg6IG51bWJlciwgdG90YWxEYXRhOiBhbnkpIHtcclxuICAgIGlmICh2bXRhc2tJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy52bXRhc2tJbmRleCA9IHZtdGFza0luZGV4IC0gMTtcclxuICAgIH1cclxuICB9XHJcbiAgbmV4dHRhc2tWbSh2bXRhc2tJbmRleDogbnVtYmVyLCB0b3RhbERhdGE6IGFueSkge1xyXG4gICAgaWYgKHRvdGFsRGF0YS5sZW5ndGggPiB2bXRhc2tJbmRleCArIDEpIHtcclxuICAgICAgdGhpcy52bXRhc2tJbmRleCA9IHZtdGFza0luZGV4ICsgMTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJldmlvdXN0YXNrRml4dHVyZShmaXh0dXJldGFza0luZGV4OiBudW1iZXIsIHRvdGFsRGF0YTogYW55KSB7XHJcbiAgICBpZiAoZml4dHVyZXRhc2tJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy5maXh0dXJldGFza0luZGV4ID0gZml4dHVyZXRhc2tJbmRleCAtIDE7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldHBsYW5vRmVlZGJhY2sobGF5b3V0RGF0YTogYW55KSB7XHJcbiAgICBsYXlvdXREYXRhPy5mb3JFYWNoKChkYXRhOiBhbnksIGk6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaSA9PT0gMCkge1xyXG4gICAgICAgIGRhdGEuY29sbGFwc2VkID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZGF0YS5jb2xsYXBzZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGRhdGE/LmFuc3dlcnMuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICBlbGUuaXNzdWVzID0gZWxlPy5pc3N1ZXMuZmlsdGVyKFxyXG4gICAgICAgICAgKGlzc3VlOiBhbnkpID0+IGlzc3VlLkRldGFpbHMgJiYgaXNzdWUuRGV0YWlscy5sZW5ndGggPiAwXHJcbiAgICAgICAgKTtcclxuICAgICAgICAvLyB0aGlzLnBlbmRpbmdMYXlvdXRpc3N1ZXMgPSBlbGU/Lmlzc3Vlcy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5zdGF0dXMgPT09ICdwZW5kaW5nJykubGVuZ3RoXHJcbiAgICAgICAgLy8gdGhpcy5hcHByb3ZlZExheW91dGlzc3VlcyA9IGVsZT8uaXNzdWVzLmZpbHRlcigoZGF0YTogYW55KSA9PiBkYXRhLnN0YXR1cyAhPT0gJ3BlbmRpbmcnKS5sZW5ndGhcclxuXHJcbiAgICAgICAgZWxlPy5pc3N1ZXMuZm9yRWFjaCgoaXNzdWU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBpc3N1ZT8uRGV0YWlscy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5zdGF0dXMgPT09IFwicGVuZGluZ1wiKVxyXG4gICAgICAgICAgICAgIC5sZW5ndGggPiAwXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nTGF5b3V0aXNzdWVzID0gdGhpcy5wZW5kaW5nTGF5b3V0aXNzdWVzICsgMTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwcm92ZWRMYXlvdXRpc3N1ZXMgPSB0aGlzLmFwcHJvdmVkTGF5b3V0aXNzdWVzICsgMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlzc3VlPy5EZXRhaWxzLmZvckVhY2goKHNoZWxmOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHNoZWxmPy5zaGVsZkNvbmZpZyAmJiBzaGVsZj8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBzaGVsZi5zaGVsZkNvbmZpZ0Zvcm1hdGVkID0gdGhpcy5mb3JtYXREYXRhKHNoZWxmLnNoZWxmQ29uZmlnKTtcclxuICAgICAgICAgICAgICBzaGVsZi5zZWN0aW9uQ29uZmlnID0gdGhpcy5zdG9yZURhdGEoc2hlbGYuc2hlbGZDb25maWcpO1xyXG4gICAgICAgICAgICAgIHNoZWxmLnNlY3Rpb25LZXlzID0gT2JqZWN0LmtleXMoc2hlbGYuc2VjdGlvbkNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgbGV0IHpvbmVDb2xvcjogYW55ID0ge307XHJcbiAgICAgICAgICAgICAgc2hlbGYuc2VjdGlvbkNvbmZpZy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgem9uZUNvbG9yW2VsZS56b25lXSA9IHsgY29sb3I6IGVsZS5jb2xvciB9O1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHNoZWxmLnpvbmVDb2xvciA9IHpvbmVDb2xvcjtcclxuICAgICAgICAgICAgICBzaGVsZi5zaGVsZkRldGFpbHMgPSBzaGVsZi5zaGVsZkNvbmZpZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5sYXlvdXRGZWVkYmFjayA9IGxheW91dERhdGE7XHJcblxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIGZvcm1hdERhdGEoZGF0YTogYW55KSB7XHJcbiAgICBjb25zdCBncm91cGVkQXJyYXkgPSBPYmplY3QudmFsdWVzKFxyXG4gICAgICBkYXRhLnJlZHVjZSgoYWNjOiBhbnksIGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHpvbmUgPSBpdGVtLnpvbmUgfHwgXCJ1bmRlZmluZWRcIjtcclxuICAgICAgICBpZiAoIWFjY1t6b25lXSkge1xyXG4gICAgICAgICAgYWNjW3pvbmVdID0geyB6b25lLCBpdGVtczogW10gfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWNjW3pvbmVdLml0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgfSwge30pXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGdyb3VwZWRBcnJheTtcclxuICB9XHJcbiAgc3RvcmVEYXRhKHNoZWxmRGF0YTogYW55LCBsZXZlbD86IHN0cmluZykge1xyXG4gICAgc2hlbGZEYXRhLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiBhLnNoZWxmTnVtYmVyIC0gYi5zaGVsZk51bWJlcik7XHJcbiAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgbGV0IHNlY3Rpb25Db25maWc6IGFueVtdID0gW107XHJcbiAgICAvLyBzdGFydFlQb3NpdGlvbjogZWxlLnNoZWxmTnVtYmVyLFxyXG4gICAgLy8gICAgICAgICBlbmRZUG9zaXRpb246IGVsZS5zaGVsZk51bWJlcixcclxuICAgIC8vICAgICAgICAgLi4uZWxlLFxyXG4gICAgLy8gICAgICAgICBjb2xvcjogdGhpcy5zaGxlZkNvbG9yW2NvdW50XSxcclxuICAgIHNoZWxmRGF0YS5mb3JFYWNoKChzaGVsZjogYW55KSA9PiB7XHJcbiAgICAgIGxldCBnZXRTZWN0aW9uID0gc2VjdGlvbkNvbmZpZy5maWx0ZXIoKGVsZSkgPT4gZWxlLnpvbmUgPT0gc2hlbGYuem9uZSk7XHJcbiAgICAgIGlmICghZ2V0U2VjdGlvbi5sZW5ndGggfHwgKCFzaGVsZi56b25lICYmIGxldmVsID09IFwiTDJcIikpIHtcclxuICAgICAgICBzZWN0aW9uQ29uZmlnLnB1c2goe1xyXG4gICAgICAgICAgLi4uc2hlbGYsXHJcbiAgICAgICAgICBzdGFydFlQb3NpdGlvbjogc2hlbGYuc2hlbGZOdW1iZXIsXHJcbiAgICAgICAgICBlbmRZUG9zaXRpb246IHNoZWxmLnNoZWxmTnVtYmVyLFxyXG4gICAgICAgICAgY29sb3I6IHRoaXMuc2hsZWZDb2xvcltjb3VudF0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY291bnQrKztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBnZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoIC0gMV0uZW5kWVBvc2l0aW9uICsgMSA9PVxyXG4gICAgICAgICAgc2hlbGYuc2hlbGZOdW1iZXJcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGdldFNlY3Rpb25bZ2V0U2VjdGlvbi5sZW5ndGggLSAxXS5lbmRZUG9zaXRpb24gPSBzaGVsZi5zaGVsZk51bWJlcjtcclxuICAgICAgICAgIGdldFNlY3Rpb25bZ2V0U2VjdGlvbi5sZW5ndGggLSAxXS5wcm9kdWN0QnJhbmROYW1lID0gW1xyXG4gICAgICAgICAgICAuLi5nZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoIC0gMV0ucHJvZHVjdEJyYW5kTmFtZSxcclxuICAgICAgICAgICAgLi4uc2hlbGYucHJvZHVjdEJyYW5kTmFtZSxcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgICBnZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoIC0gMV0ucHJvZHVjdEJyYW5kTmFtZSA9IFtcclxuICAgICAgICAgICAgLi4ubmV3IFNldChcclxuICAgICAgICAgICAgICBnZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoIC0gMV0ucHJvZHVjdEJyYW5kTmFtZS5tYXAoXHJcbiAgICAgICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNlY3Rpb25Db25maWcucHVzaCh7XHJcbiAgICAgICAgICAgIC4uLnNoZWxmLFxyXG4gICAgICAgICAgICBzdGFydFlQb3NpdGlvbjogc2hlbGYuc2hlbGZOdW1iZXIsXHJcbiAgICAgICAgICAgIGVuZFlQb3NpdGlvbjogc2hlbGYuc2hlbGZOdW1iZXIsXHJcbiAgICAgICAgICAgIGNvbG9yOiBnZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoIC0gMV0uY29sb3IsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIHRoaXMuaGFuZGxldm1Qb3NpdGlvbihzZWN0aW9uQ29uZmlnKTtcclxuICAgIC8vIHRoaXMuaGFuZGxlU2VjdGlvbihzZWN0aW9uQ29uZmlnKTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgcmV0dXJuIHNlY3Rpb25Db25maWc7XHJcbiAgfVxyXG5cclxuICBjb25maXJtYXRpb24oXHJcbiAgICB0eXBlOiBhbnksXHJcbiAgICBfaWQ6IGFueSxcclxuICAgIGFuc3dlcklkPzogYW55LFxyXG4gICAgaXNzdWVJZD86IGFueSxcclxuICAgIERldGFpbHNJZD86IGFueSxcclxuICAgIHRhc2tUeXBlPzogYW55LFxyXG4gICAgaXNzdWVUeXBlPzogYW55LFxyXG4gICAgZGF0YT86YW55XHJcbiAgKSB7XHJcblxyXG4gICAgbGV0IHBheWxvYWQgPSB7XHJcbiAgICAgIF9pZDogX2lkLFxyXG4gICAgICBhbnN3ZXJJZDogYW5zd2VySWQsXHJcbiAgICAgIGlzc3VlSWQ6IGlzc3VlSWQsXHJcbiAgICAgIERldGFpbHNJZDogRGV0YWlsc0lkLFxyXG4gICAgICB0YXNrVHlwZTogdGFza1R5cGUsXHJcbiAgICAgIGlzc3VlVHlwZTogaXNzdWVUeXBlLFxyXG4gICAgICBwbGFub0lkOiB0aGlzLmN1cnJlbnRQbGFub0RldGFpbHM/LnBsYW5vSWQsXHJcbiAgICAgIGZsb29ySWQ6IHRoaXMuY3VycmVudFBsYW5vRGV0YWlscz8uX2lkLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IG1vZGFsUmVmID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihDb25maXJtYXRpb25Qb3B1cENvbXBvbmVudCwge1xyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgc2l6ZTogXCJtZFwiLFxyXG4gICAgICBzY3JvbGxhYmxlOiB0cnVlLFxyXG4gICAgICBiYWNrZHJvcDogXCJzdGF0aWNcIixcclxuICAgICAgd2luZG93Q2xhc3M6IFwiY3VzdG9tLWhlaWdodC1tb2RhbFwiLCAvLyA8LS0gQWRkIGEgY3VzdG9tIGNsYXNzIGhlcmVcclxuICAgIH0pO1xyXG4gICAgbW9kYWxSZWYuY29tcG9uZW50SW5zdGFuY2UudHlwZSA9IHR5cGU7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS5pbnB1dERhdGEgPSBwYXlsb2FkO1xyXG4gICAgbW9kYWxSZWYucmVzdWx0LnRoZW4oKHJlc3VsdCkgPT4ge1xyXG4gICAgICBcclxuICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwic3VibWl0XCIpIHtcclxuICAgICAgICByZXN1bHQuZml4dHVyZUFpRGV0YWlscyA9IGRhdGE7XHJcbiAgICAgICAgdGhpcy5pc0FwcHJvdmVkLmVtaXQocmVzdWx0KTtcclxuICAgICAgfVxyXG4gICAgICBpZihyZXN1bHQgPT0gJ2VkaXQnKSB7XHJcbiAgICAgICAgZGF0YS50YXNrVHlwZSA9IHRhc2tUeXBlO1xyXG4gICAgICAgIHJlc3VsdCA9IHtcclxuICAgICAgICAgIG1lc3NhZ2U6J2VkaXQnLFxyXG4gICAgICAgICAgZGF0YTpkYXRhXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNBcHByb3ZlZC5lbWl0KHJlc3VsdCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICByZWxvYWQoKSB7XHJcbiAgICBsZXQgcmVzdWx0ID0ge1xyXG4gICAgICByZWxvYWQ6IHRydWUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5pc0FwcHJvdmVkLmVtaXQocmVzdWx0KTtcclxuICB9XHJcbiAgYXBwbHlGaWx0ZXJzKGV2ZW50OiBhbnkpIHtcclxuICAgIGxldCByZXN1bHQ6IGFueSA9IHt9O1xyXG4gICAgaWYgKGV2ZW50Py5sZW5ndGgpIHtcclxuICAgICAgZXZlbnQuZm9yRWFjaCgoZWxlbWVudDogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09IFwiVGFza1wiKSB7XHJcbiAgICAgICAgICByZXN1bHQuZmlsdGVyQnlUYXNrID0gZWxlbWVudC5Jc3N1ZXMubWFwKCh2YWw6IGFueSkgPT4gdmFsPy5pZCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChlbGVtZW50LkRlc2NyaXB0aW9uID09PSBcIlN0YXR1c1wiKSB7XHJcbiAgICAgICAgICByZXN1bHQuZmlsdGVyQnlBcHByb3ZhbFN0YXR1cyA9IGVsZW1lbnQuSXNzdWVzLm1hcCgodmFsOiBhbnkpID0+IHZhbD8uaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZWxlbWVudC5EZXNjcmlwdGlvbiA9PT0gXCJBcHByb3ZhbCBTdGF0dXNcIikge1xyXG4gICAgICAgICAgcmVzdWx0LmZpbHRlckJ5QXBwcm92YWxTdGF0dXMgPSBlbGVtZW50Lklzc3Vlcy5pZFxyXG4gICAgICAgICAgICA/IGVsZW1lbnQuSXNzdWVzLmlkXHJcbiAgICAgICAgICAgIDogXCJcIjtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgcmVzdWx0LmZpbHRlckJ5QXBwcm92YWxTdGF0dXM/Lmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgIHJlc3VsdC5maWx0ZXJCeVN0YXR1cz8ubGVuZ3RoID09PSAwICYmXHJcbiAgICAgICAgcmVzdWx0LmZpbHRlckJ5VGFzaz8ubGVuZ3RoID09PSAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJlc3VsdC5yZWxvYWQgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuaXNBcHByb3ZlZC5lbWl0KHJlc3VsdCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuaXNBcHByb3ZlZC5lbWl0KHJlc3VsdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGV2bVBvc2l0aW9uKHZtRGF0YTogYW55LCBpOiBhbnkpIHtcclxuICAgIGNvbnN0IHZpZXdQb3J0ID0gdGhpcy5ib2R5QmxvY2tSZWY/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBib2R5SGVpZ2h0ID0gdmlld1BvcnQ/Lm9mZnNldEhlaWdodDtcclxuICAgIGNvbnN0IGJvZHlXaWR0aCA9IHZpZXdQb3J0Py5vZmZzZXRXaWR0aDtcclxuICAgIGxldCBzdHlsZTtcclxuICAgIC8vIHRoaXMudm1Db25maWcuZm9yRWFjaCgoZTogYW55LCBpOiBhbnkpID0+IHtcclxuICAgIGxldCBzdGFydFNoZWxmID0gdm1EYXRhPy5zdGFydFlQb3NpdGlvbiA/PyAxO1xyXG4gICAgbGV0IGVuZFNoZWxmID0gdm1EYXRhPy5lbmRZUG9zaXRpb24gPz8gMTtcclxuICAgIGNvbnN0IHZtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJ2bVwiICsgaSk7XHJcbiAgICBpZiAoIXZtKSByZXR1cm47XHJcblxyXG4gICAgbGV0IHdpZHRoID0gMTAwO1xyXG4gICAgbGV0IGhlaWdodCA9IDEwMDtcclxuICAgIGxldCB4ID0gMDtcclxuICAgIGxldCB5ID0gMDtcclxuXHJcbiAgICBsZXQgeVN0YXJ0ID0gMDtcclxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgc3RhcnRTaGVsZiAtIDE7IGsrKykge1xyXG4gICAgICBjb25zdCBzaGVsZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hlbGZcIiArIGspIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoIXNoZWxmKSByZXR1cm47XHJcblxyXG4gICAgICB5U3RhcnQgKz0gc2hlbGYub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBwbGFjZW1lbnRIZWlnaHQgPSAwO1xyXG4gICAgZm9yIChsZXQgayA9IHN0YXJ0U2hlbGYgLSAxOyBrIDwgZW5kU2hlbGY7IGsrKykge1xyXG4gICAgICBjb25zdCBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaGVsZlwiICsgaykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGlmICghcykgcmV0dXJuO1xyXG4gICAgICBwbGFjZW1lbnRIZWlnaHQgKz0gcy5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoICh2bURhdGE/Lnhab25lKSB7XHJcbiAgICAgIGNhc2UgXCJsZWZ0XCI6XHJcbiAgICAgICAgeCA9IDA7XHJcbiAgICAgICAgd2lkdGggPSAxMDA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJyaWdodFwiOlxyXG4gICAgICAgIHdpZHRoID0gMTAwO1xyXG4gICAgICAgIHggPSBib2R5V2lkdGggLSB3aWR0aDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcIm1pZGRsZVwiOlxyXG4gICAgICAgIHdpZHRoID0gMTAwO1xyXG4gICAgICAgIHggPSAoYm9keVdpZHRoIC0gd2lkdGgpIC8gMjtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcInN0cmV0Y2hcIjpcclxuICAgICAgICB3aWR0aCA9IGJvZHlXaWR0aDtcclxuICAgICAgICB4ID0gMDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKHZtRGF0YT8ueVpvbmUpIHtcclxuICAgICAgY2FzZSBcInRvcFwiOlxyXG4gICAgICAgIGhlaWdodCA9IHBsYWNlbWVudEhlaWdodCA8IDEwMCA/IHBsYWNlbWVudEhlaWdodCAtIDIwIDogMTAwO1xyXG4gICAgICAgIHkgPSB5U3RhcnQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJtaWRkbGVcIjpcclxuICAgICAgICBoZWlnaHQgPSBwbGFjZW1lbnRIZWlnaHQgPCAxMDAgPyBwbGFjZW1lbnRIZWlnaHQgLSAyMCA6IDEwMDtcclxuICAgICAgICB5ID0gKHBsYWNlbWVudEhlaWdodCAtIGhlaWdodCkgLyAyICsgeVN0YXJ0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwiYm90dG9tXCI6XHJcbiAgICAgICAgaGVpZ2h0ID0gcGxhY2VtZW50SGVpZ2h0IDwgMTAwID8gcGxhY2VtZW50SGVpZ2h0IC0gMjAgOiAxMDA7XHJcbiAgICAgICAgeSA9IHBsYWNlbWVudEhlaWdodCAtIGhlaWdodCArIHlTdGFydDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcInN0cmV0Y2hcIjpcclxuICAgICAgICBoZWlnaHQgPSBwbGFjZW1lbnRIZWlnaHQ7XHJcbiAgICAgICAgeSA9IHlTdGFydDtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodm1EYXRhLm5ld1ZtKSB7XHJcbiAgICAgIHN0eWxlID0gYHdpZHRoOiR7d2lkdGh9cHg7aGVpZ2h0OiR7aGVpZ2h0fXB4O3RyYW5zZm9ybTp0cmFuc2xhdGUoJHt4fXB4LCAke3l9cHgpO3otaW5kZXg6MjtgO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc3R5bGUgPSBgd2lkdGg6JHt3aWR0aH1weDtoZWlnaHQ6JHtoZWlnaHR9cHg7dHJhbnNmb3JtOnRyYW5zbGF0ZSgke3h9cHgsICR7eX1weCk7YDtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gc3R5bGU7XHJcbiAgICAvLyB9KTtcclxuICB9XHJcbiAgaGFuZGxlU2VjdGlvbihzZWN0aW9uQ29uZmlnOiBhbnksIGk6IGFueSkge1xyXG4gICAgY29uc3Qgdmlld1BvcnQgPSB0aGlzLmJvZHlCbG9ja1JlZj8ubmF0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnN0IGJvZHlIZWlnaHQgPSB2aWV3UG9ydD8ub2Zmc2V0SGVpZ2h0O1xyXG4gICAgY29uc3QgYm9keVdpZHRoID0gdmlld1BvcnQ/Lm9mZnNldFdpZHRoO1xyXG5cclxuICAgIGxldCBzdHlsZTogYW55O1xyXG4gICAgLy8gT2JqZWN0LmtleXMoc2VjdGlvbkNvbmZpZykuZm9yRWFjaCgoZTogYW55LCBpOiBhbnkpID0+IHtcclxuICAgIGxldCBzdGFydFNoZWxmID0gc2VjdGlvbkNvbmZpZz8uc3RhcnRZUG9zaXRpb24gPz8gMTtcclxuICAgIGxldCBlbmRTaGVsZiA9IHNlY3Rpb25Db25maWc/LmVuZFlQb3NpdGlvbiA/PyBzZWN0aW9uQ29uZmlnLmxlbmd0aDtcclxuICAgIGNvbnN0IHNlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNlY3Rpb25cIiArIGkpO1xyXG4gICAgaWYgKCFzZWN0aW9uKSByZXR1cm47XHJcblxyXG4gICAgbGV0IHdpZHRoID0gMTAwO1xyXG4gICAgbGV0IGhlaWdodCA9IDUwO1xyXG4gICAgbGV0IHggPSAwO1xyXG4gICAgbGV0IHkgPSAwO1xyXG5cclxuICAgIGxldCB5U3RhcnQgPSAwO1xyXG4gICAgZm9yIChsZXQgayA9IDA7IGsgPCBzdGFydFNoZWxmIC0gMTsgaysrKSB7XHJcbiAgICAgIGNvbnN0IHNoZWxmID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaGVsZlwiICsgaykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgIGlmICghc2hlbGYpIHJldHVybjtcclxuXHJcbiAgICAgIHlTdGFydCArPSBzaGVsZi5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHBsYWNlbWVudEhlaWdodCA9IDA7XHJcbiAgICBmb3IgKGxldCBrID0gc3RhcnRTaGVsZiAtIDE7IGsgPCBlbmRTaGVsZjsgaysrKSB7XHJcbiAgICAgIGNvbnN0IHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNoZWxmXCIgKyBrKSBhcyBIVE1MRWxlbWVudDtcclxuXHJcbiAgICAgIGlmICghcykgcmV0dXJuO1xyXG4gICAgICBwbGFjZW1lbnRIZWlnaHQgKz0gcy5vZmZzZXRIZWlnaHQ7XHJcbiAgICB9XHJcbiAgICB4ID0gMTA7XHJcbiAgICBoZWlnaHQgPSBwbGFjZW1lbnRIZWlnaHQgPCAxMDAgPyA0OCA6IDUwO1xyXG4gICAgLy8gaGVpZ2h0ID0gNTA7XHJcbiAgICB5ID0gKHBsYWNlbWVudEhlaWdodCAtIGhlaWdodCkgLyAyICsgeVN0YXJ0O1xyXG5cclxuICAgIHN0eWxlID0gYHdpZHRoOiR7d2lkdGh9cHg7aGVpZ2h0OiR7aGVpZ2h0fXB4O3RyYW5zZm9ybTp0cmFuc2xhdGUoJHt4fXB4LCAke3l9cHgpYDtcclxuICAgIC8vIGxldCB2bURldGFpbHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChgdm0tcGxhY2Vob2xkZXIke2l9YCk7XHJcbiAgICAvLyBpZiAodm1EZXRhaWxzKSB7XHJcbiAgICAvLyAgIHZtRGV0YWlscy5zdHlsZS5ib3JkZXIgPSBgMXB4IHNvbGlkICR7dGhpcy5zaGxlZkNvbG9yW2ldLmJvcmRlcn1gO1xyXG4gICAgLy8gfVxyXG4gICAgLy8gc3R5bGUucHVzaCh7em9uZTplLHN0eWxlOnN0eWxlTGlzdH0pXHJcbiAgICAvLyB9KTtcclxuICAgIHJldHVybiBzdHlsZTtcclxuICB9XHJcblxyXG4gIGdldFN0YXJ0UG9zaXRpb24oc2hlbGZOdW1iZXI6IG51bWJlciwgem9uZTogYW55LCBzaGVsZkRldGFpbHM6IGFueSkge1xyXG4gICAgc2hlbGZEZXRhaWxzID0gc2hlbGZEZXRhaWxzLmZpbmQoXHJcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlLnpvbmUgPT0gem9uZSAmJiBlbGUuc3RhcnRZUG9zaXRpb24gPT0gc2hlbGZOdW1iZXJcclxuICAgICk7XHJcbiAgICBpZiAoc2hlbGZEZXRhaWxzKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBnZXRFbmRQb3NpdGlvbihzaGVsZk51bWJlcjogbnVtYmVyLCB6b25lOiBhbnksIHNoZWxmRGV0YWlsczogYW55KSB7XHJcbiAgICBzaGVsZkRldGFpbHMgPSBzaGVsZkRldGFpbHMuZmluZChcclxuICAgICAgKGVsZTogYW55KSA9PiBlbGUuem9uZSA9PSB6b25lICYmIGVsZS5lbmRZUG9zaXRpb24gPT0gc2hlbGZOdW1iZXJcclxuICAgICk7XHJcbiAgICBpZiAoc2hlbGZEZXRhaWxzKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBnZXRNaWRQb3NpdGlvbihzaGVsZk51bWJlcjogbnVtYmVyLCB6b25lOiBhbnksIHNoZWxmRGV0YWlsczogYW55KSB7XHJcbiAgICBzaGVsZkRldGFpbHMgPSBzaGVsZkRldGFpbHMuZmluZChcclxuICAgICAgKGVsZTogYW55KSA9PiBlbGUuem9uZSA9PSB6b25lICYmIGVsZS5lbmRZUG9zaXRpb24gPj0gc2hlbGZOdW1iZXJcclxuICAgICk7XHJcbiAgICBpZiAoc2hlbGZEZXRhaWxzKSB7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBnZXRUeXBlKGRhdGE6YW55KSB7XHJcbiAgICByZXR1cm4gZGF0YT8uZml4dHVyZUFJRGF0YT8udm1Db25maWc/Lmxlbmd0aFxyXG4gICAgICA/IGRhdGE/LmZpeHR1cmVBSURhdGE/LnZtQ29uZmlnXHJcbiAgICAgICAgICA/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZS52bVR5cGUpXHJcbiAgICAgICAgICAuZmlsdGVyKChuYW1lOiBzdHJpbmcpID0+ICEhbmFtZSlcclxuICAgICAgICAgID8udG9TdHJpbmcoKSA/PyBcIi0tXCJcclxuICAgICAgOiBcIi0tXCI7XHJcbiAgfVxyXG5cclxuICBnZXROYW1lKGRhdGE6YW55KSB7XHJcbiAgICByZXR1cm4gZGF0YT8uZml4dHVyZUFJRGF0YT8udm1Db25maWc/Lmxlbmd0aFxyXG4gICAgICA/IGRhdGE/LmZpeHR1cmVBSURhdGEudm1Db25maWdcclxuICAgICAgICAgIC5tYXAoKGVsZTogYW55KSA9PiBlbGUudm1OYW1lPy50cmltPy4oKSlcclxuICAgICAgICAgIC5maWx0ZXIoKG5hbWU6IHN0cmluZykgPT4gISFuYW1lKVxyXG4gICAgICAgICAgLmpvaW4oXCIsIFwiKSB8fCBcIi0tXCJcclxuICAgICAgOiBcIi0tXCI7XHJcbiAgfVxyXG5cclxuICBjb21wYXJlVHlwZShkYXRhOmFueSkge1xyXG4gICAgbGV0IHN0cmluZzEgPSBkYXRhPy5maXh0dXJlQUlEYXRhPy52bUNvbmZpZz8ubGVuZ3RoXHJcbiAgICAgID8gZGF0YT8uZml4dHVyZUFJRGF0YT8udm1Db25maWc/Lm1hcCgoZWxlOiBhbnkpID0+IGVsZS52bVR5cGUpPy50b1N0cmluZygpXHJcbiAgICAgIDogXCItLVwiO1xyXG4gICAgbGV0IHN0cmluZzIgPSB0aGlzLnNlbGVjdGVkRml4dHVyZT8udm1Db25maWdcclxuICAgICAgPy5tYXAoKHZtOiBhbnkpID0+IHZtLnZtVHlwZSlcclxuICAgICAgPy50b1N0cmluZygpO1xyXG4gICAgY29uc3QgYXJyQSA9IHN0cmluZzFcclxuICAgICAgPy5zcGxpdChcIixcIilcclxuICAgICAgPy5tYXAoKHM6IGFueSkgPT4gcy50cmltKCkpXHJcbiAgICAgID8uc29ydCgpO1xyXG4gICAgY29uc3QgYXJyQiA9IHN0cmluZzJcclxuICAgICAgPy5zcGxpdChcIixcIilcclxuICAgICAgPy5tYXAoKHM6IGFueSkgPT4gcy50cmltKCkpXHJcbiAgICAgID8uc29ydCgpO1xyXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyckEpICE9PSBKU09OLnN0cmluZ2lmeShhcnJCKSA/IFwiI2I0MjMxOFwiIDogXCJcIjtcclxuICB9XHJcblxyXG4gIGNvbXBhcmVOYW1lKGRhdGE6YW55KSB7XHJcbiAgICBsZXQgc3RyaW5nMSA9IGRhdGE/LmZpeHR1cmVBSURhdGE/LnZtQ29uZmlnPy5sZW5ndGhcclxuICAgICAgPyBkYXRhPy5maXh0dXJlQUlEYXRhPy52bUNvbmZpZ1xyXG4gICAgICAgICAgPy5tYXAoKGVsZTogYW55KSA9PiBlbGUudm1OYW1lKVxyXG4gICAgICAgICAgPy50b1N0cmluZygpXHJcbiAgICAgIDogXCItLVwiO1xyXG4gICAgbGV0IHN0cmluZzIgPSB0aGlzLnNlbGVjdGVkRml4dHVyZT8udm1Db25maWdcclxuICAgICAgPy5tYXAoKHZtOiBhbnkpID0+IHZtLnZtTmFtZSlcclxuICAgICAgPy50b1N0cmluZygpO1xyXG4gICAgY29uc3QgYXJyQSA9IHN0cmluZzFcclxuICAgICAgPy5zcGxpdChcIixcIilcclxuICAgICAgPy5tYXAoKHM6IGFueSkgPT4gcy50cmltKCkpXHJcbiAgICAgID8uc29ydCgpO1xyXG4gICAgY29uc3QgYXJyQiA9IHN0cmluZzJcclxuICAgICAgPy5zcGxpdChcIixcIilcclxuICAgICAgPy5tYXAoKHM6IGFueSkgPT4gcy50cmltKCkpXHJcbiAgICAgID8uc29ydCgpO1xyXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGFyckEpICE9PSBKU09OLnN0cmluZ2lmeShhcnJCKSA/IFwiI2I0MjMxOFwiIDogXCJcIjtcclxuICB9XHJcblxyXG4gIG9wZW5Qb3B1cChpbWc6IGFueSkge1xyXG4gICAgdGhpcy5zZWxlY3RlZEltYWdlID0gdGhpcy5jZG5VcmwgKyBpbWc7XHJcbiAgfVxyXG5cclxuICBjbG9zZVBvcHVwKGV2ZW50PzogRXZlbnQpIHtcclxuICAgIGlmIChldmVudCkgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIHByZXZlbnRzIGNsaWNrIGJ1YmJsaW5nXHJcbiAgICB0aGlzLnNlbGVjdGVkSW1hZ2UgPSBcIlwiO1xyXG4gIH1cclxuXHJcbiAgbWF0Y2hGaXh0dXJlQ2F0ZWdvcnkoY2F0ZWdvcnk6IGFueSxkYXRhOmFueSkge1xyXG4gICAgaWYoZGF0YT8uaGVhZGVyPy5sYWJlbCAmJiB0aGlzLmZpeHR1cmVIZWFkZXJMaXN0W2RhdGE/LmhlYWRlcj8ubGFiZWxdKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmZpeHR1cmVIZWFkZXJMaXN0W2RhdGE/LmhlYWRlci5sYWJlbF0uaW5jbHVkZXMoY2F0ZWdvcnkpPyBcIlwiOiBcIiNiNDIzMThcIjtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gZGF0YT8uaGVhZGVyPy5sYWJlbCA9PSBjYXRlZ29yeSA/IFwiXCIgOiBcIiNiNDIzMThcIjtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiIsIjxzZWN0aW9uICpuZ0lmPVwibG9hZGluZ1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3cgbG9hZGVyIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3NlY3Rpb24+XHJcblxyXG48c2VjdGlvbiAqbmdJZj1cIiFsb2FkaW5nXCI+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBib3JkZXItYm90dG9tXCI+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwic3RvcmVSZXNwb25zZVwiPlN0b3JlIHJlc3BvbnNlPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJub3JtYWxUZXh0IG1iLTVcIj5DbGljayBhIGZpeHR1cmUgb3IgdmlldyBhbGw8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm10LTRcIj5cclxuICAgICAgPGJ1dHRvbiAqbmdJZj1cInNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCIgKGNsaWNrKT1cInJlbG9hZCgpXCJcclxuICAgICAgICBjbGFzcz1cImJ0biBidG4tbGlnaHQgdGV4dC1wcmltYXJ5IGJvcmRlci0wIHB4LTMgcHktMlwiIHN0eWxlPVwiYmFja2dyb3VuZC1jb2xvcjogI2VhZjZmZjsgYm9yZGVyLXJhZGl1czogMXJlbTtcIj5cclxuICAgICAgICBDbGVhciBGaWx0ZXJcclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIDxsaWItZmlsdGVycyAqbmdJZj1cIiFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiIFtkYXRhT2JqZWN0XT1cImRhdGFPYmplY3RcIlxyXG4gICAgICAgIChhcHBsaWVkRmlsdGVycyk9XCJhcHBseUZpbHRlcnMoJGV2ZW50KVwiPjwvbGliLWZpbHRlcnM+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cInRydWVcIiBjbGFzcz1cIm10LTVcIiAqbmdJZj1cInZtRmVlZGJhY2s/Lmxlbmd0aD4wXCI+XHJcbiAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJkZXRhaWxzXCIgW2NvbGxhcHNlZF09XCJvcGVudm1cIiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYWluaGVhZGluZyBwLTBcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMiBsYXlvdXQtTGJlbFwiPlxyXG4gICAgICAgICAgICAgIDxkaXY+Vm0gdmVyaWZpY2F0aW9uIGFzc2lnbmVkPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+e3t2bUZlZWRiYWNrWzBdPy50YXNrRGF0YT8uY3JlYXRlZEF0IHxkYXRlOiAnaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319PC9kaXY+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHkgY2xhc3M9XCJwcy0wIHBlLTBcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtZGl2aWRlciBtdC0zIG1zLTVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy50YXNrRGF0YT8uY3JlYXRlZEJ5TmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy50YXNrRGF0YT8uY3JlYXRlZEF0IHxkYXRlOiAnaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIEFzc2lnbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy50YXNrRGF0YT8udXNlck5hbWUhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1kaXZpZGVyIG10LTMgbXMtNVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LnRhc2tEYXRhPy51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy50YXNrRGF0YT8uc3VibWl0VGltZV9zdHJpbmd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBBc3NpZ25lZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXMtM1wiICpuZ0lmPVwiIXNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBwLTMgbWUtNFwiICpuZ0lmPVwiY29tcGxldGVkVm09PT12bUZlZWRiYWNrLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwIDNMNC41IDguNUwyIDZcIiBzdHJva2U9XCIjMTJCNzZBXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPlZtIG1hdGNoZWQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kYW5nZXIgcC0zIG1lLTRcIiAqbmdJZj1cImNvbXBsZXRlZFZtIT09dm1GZWVkYmFjay5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNiA0VjZNNiA4SDYuMDA1TTExIDZDMTEgOC43NjE0MiA4Ljc2MTQyIDExIDYgMTFDMy4yMzg1OCAxMSAxIDguNzYxNDIgMSA2QzEgMy4yMzg1OCAzLjIzODU4IDEgNiAxQzguNzYxNDIgMSAxMSAzLjIzODU4IDExIDZaXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNGMDQ0MzhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5WbSBtaXNtYXRjaDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgcC0zXCIgKm5nSWY9XCJwZW5kaW5nVm1pc3N1ZXM+MFwiPlxyXG4gICAgICAgICAgICAgICAgICB7e3BlbmRpbmdWbWlzc3Vlc319L3t7dG90YWxWbWlzc3Vlc319IGFjdGlvbiBwZW5kaW5nXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIHAtM1wiICpuZ0lmPVwiYXBwcm92ZWRWbWlzc3Vlcz4wJiZwZW5kaW5nVm1pc3N1ZXM9PT0wXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7YXBwcm92ZWRWbWlzc3Vlc319L3t7dG90YWxWbWlzc3Vlc319IGFjdGlvbiBkb25lXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJwcmV2aW91c3Rhc2tWbSh2bXRhc2tJbmRleCx2bUZlZWRiYWNrKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwidm10YXNrSW5kZXhcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDZMOSAxMkwxNSAxOFwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIXZtdGFza0luZGV4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA2TDkgMTJMMTUgMThcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZU5hbWV9fSAtXHJcbiAgICAgICAgICAgICAgICAgIHt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlV2lkdGg/LnZhbHVlfX1cclxuICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udW5pdH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7e3ZtdGFza0luZGV4KzF9fS97e3ZtRmVlZGJhY2subGVuZ3RofX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm5leHR0YXNrVm0odm10YXNrSW5kZXgsdm1GZWVkYmFjaylcIj5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cInZtRmVlZGJhY2subGVuZ3RoPnZtdGFza0luZGV4KzFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiKHZtRmVlZGJhY2subGVuZ3RoKT09PSh2bXRhc2tJbmRleCsxKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAxOEwxNSAxMkw5IDZcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kSW1nIG10LTQgcHMtMyBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5GaXh0dXJlIG5hbWU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+Rml4dHVyZSBUeXBlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhdGVnb3J5fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udmFsdWUhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5TaXplIChXaWR0aCk6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udW5pdH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cInZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VG90YWwgc2hlbHZlczo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWc/Lmxlbmd0aH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2FwYWNpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VG90YWwgcHJvZHVjdCBjYXBhY2l0eTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhcGFjaXR5fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIFBsYW5vZ3JhbSBkZXNpZ25cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgIEZpeHR1cmUgZGVzaWduZWQgYnkgdGhlIHBsYW5vZ3JhbSB0ZWFtXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWxsLXZpZXdwb3J0IHctMTAwIG10LTVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJoZWFkZXItYmxvY2tcIiBjbGFzcz1cImhlYWRlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmhlYWRlcj8ubGFiZWwgPz8gJyd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI2JvZHlCbG9jayBpZD1cImJvZHlCbG9ja1wiIGNsYXNzPVwiYm9keS1ibG9jayB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZtIG9mIHZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8udm1Db25maWc7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIid2bScgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiIFtzdHlsZV09XCJoYW5kbGV2bVBvc2l0aW9uKHZtLGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2bS1wbGFjZWhvbGRlclwiIFtpZF09XCIndm0tcGxhY2Vob2xkZXInICsgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJ2bT8uaW1nU3JjXCIgKm5nSWY9XCJ2bT8uaW1nU3JjXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY1N0eWxlIHdvcmRXcmFwXCI+e3t2bT8udm1OYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2hlbGZEYXRhIG9mIHZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2hlbGYnICsgaVwiIGNsYXNzPVwiYmxvY2sgc2hlbGYgaGlkZS1zY3JvbGwgZC1ibG9jayB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6J3doaXRlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOid3aGl0ZSd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU2hlbGYgQ2FwYWNpdHkgOiB7e3NoZWxmRGF0YT8ucHJvZHVjdFBlclNoZWxmfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBGb290ZXIgYmxvY2sgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cD4ge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZvb3Rlcj8ubGFiZWwgPz8gJyd9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cInRydWVcIiBjbGFzcz1cIm10LTVcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGlzc3VlcyBvZiB2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uYW5zd2VycztsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJ7eyAnbmV3ZGV0YWlscy0nICsgayB9fVwiIFtjb2xsYXBzZWRdPVwiaXRlbS5jb2xsYXBzZWRcIiBjbGFzcz1cIm1iLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGlzc3Vlcy5pc3N1ZXM7bGV0IGsgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggXCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmdiQWNjb3JkaW9uQnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0zIGJhY2tncm91bmRJbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGxheW91dC1MYmVsXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4gKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnN0YXR1cz09PSdwZW5kaW5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgYmctd2FybmluZyByb3VuZGVkLWNpcmNsZSBteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTBweDsgaGVpZ2h0OiAxMHB4O1wiPjwvc3Bhbj57e2l0ZW0/LnF1ZXN0aW9ufX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LXN0YXJ0IG10LTVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGU9PT0nVm1NaXNzaW5nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbCBhZGRpdGlvbmFsIFZNczoge3sgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZy5sZW5ndGh9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGU9PT0nZXh0cmFWbSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgYWRkaXRpb25hbCBWTXM6IHt7IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1Db25maWcubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J1ZtTWlzbWF0Y2gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIG1pc3BsYWNlZCBWTXM6IHt7IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1Db25maWcubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kSW1nIG10LTQgcHMtMyBweS0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2bURhdGEgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J1ZtTWlzbWF0Y2gnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/LnZtTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5WTSBOYW1lIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bURhdGE/LnZtTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/LnN0YXJ0WVBvc2l0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlBsYWNlbWVudCBzdGFydCA6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlNoZWxmIHt7dm1EYXRhPy5zdGFydFlQb3NpdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cInZtRGF0YT8uZW5kWVBvc2l0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlBsYWNlbWVudCBFbmQgOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5TaGVsZiB7e3ZtRGF0YT8uZW5kWVBvc2l0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy54Wm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5Ib3Jpem9udGFsIHpvbmUgOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e3ZtRGF0YT8ueFpvbmV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/Lnlab25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlZlcnRpY2FsIHpvbmUgOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e3ZtRGF0YT8ueVpvbmV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/LnBvc2l0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPnBvc2l0aW9uIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bURhdGE/LnBvc2l0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmlzc3VlVHlwZT09PSdWbU1pc21hdGNoJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy5uZXdzdGFydFlQb3NpdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5QbGFjZW1lbnQgc3RhcnQgOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5TaGVsZiB7e3ZtRGF0YT8ubmV3c3RhcnRZUG9zaXRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/Lm5ld2VuZFlQb3NpdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5QbGFjZW1lbnQgRW5kIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+U2hlbGYge3t2bURhdGE/Lm5ld2VuZFlQb3NpdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cInZtRGF0YT8ubmV3eFpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+SG9yaXpvbnRhbCB6b25lIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bURhdGE/Lm5ld3hab25lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy5uZXd5Wm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5WZXJ0aWNhbCB6b25lIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bURhdGE/Lm5ld3lab25lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy5uZXdwb3NpdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5wb3NpdGlvbiA6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7dm1EYXRhPy5uZXdwb3NpdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZz8ubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSBSZXNwb25zZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRml4dHVyZSBmZWVkYmFjayBieSB0aGUgc3RvcmUgdGVhbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FsbC12aWV3cG9ydCB3LTEwMCBtdC01XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiaGVhZGVyLWJsb2NrXCIgY2xhc3M9XCJoZWFkZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5oZWFkZXI/LmxhYmVsID8/ICcnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAjYm9keUJsb2NrIGlkPVwiYm9keUJsb2NrXCIgY2xhc3M9XCJib2R5LWJsb2NrIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdm0gb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy52bUNvbmZpZ25ldztsZXQgbT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3ZtJyArIG1cIiBjbGFzcz1cInZtLWJsb2NrXCIgW3N0eWxlXT1cImhhbmRsZXZtUG9zaXRpb24odm0sbSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLXBsYWNlaG9sZGVyXCIgW2lkXT1cIid2bS1wbGFjZWhvbGRlcicgKyBtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwidm0ubmV3Vm0gPyAncmVkQm9yZGVyJyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cInZtPy5pbWdTcmNcIiAqbmdJZj1cInZtPy5pbWdTcmNcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjU3R5bGVcIj57e3ZtPy52bU5hbWV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxoMz57eyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnpvbmV9fTwvaDM+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2hlbGZEYXRhIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzaGVsZicgKyBpXCIgY2xhc3M9XCJibG9jayBzaGVsZiBoaWRlLXNjcm9sbCBkLWJsb2NrIHRleHQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzond2hpdGUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6J3doaXRlJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGVsZiBDYXBhY2l0eSA6IHt7c2hlbGZEYXRhPy5wcm9kdWN0UGVyU2hlbGZ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4ge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZvb3Rlcj8ubGFiZWwgPz8gJyd9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiICpuZ0lmPVwiaXRlbT8uY29tbWVudHMubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+Q29tbWVudHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtNFwiICpuZ0Zvcj1cImxldCBjb21tZW50IG9mIGl0ZW0/LmNvbW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dCBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGUhPT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiQWdyZWVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkIFwiPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nZGlzYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJEaXNhZ3JlZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0YWluZWQgZXhpc3RpbmdcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIiAqbmdJZj1cImNvbW1lbnQ/LmNvbW1lbnQhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90ZToge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTQgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XS5hbnN3ZXJzWzBdPy5pbWFnZSYmdm1GZWVkYmFja1t2bXRhc2tJbmRleF0uYW5zd2Vyc1swXT8uaW1hZ2UhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5TdG9yZSBmaXh0dXJlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7Y2RuVXJsfX17e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdLmFuc3dlcnNbMF0/LmltYWdlfX1cIiBhbHQ9XCJpbWFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtNCB3LTEwMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTUgcm93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zdGF0dXM9PT0ncGVuZGluZycmJnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3by10b25lLWJ0biBtZS0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybWF0aW9uKCdhZ3JlZScsdm1GZWVkYmFja1t2bXRhc2tJbmRleF0/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XS5faWQsJ3ZtJyxpdGVtLmlzc3VlVHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZ3JlZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtYXRpb24oJ2Rpc2FncmVlJyx2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uX2lkLGlzc3Vlcy5faWQsaXRlbS5faWQsaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5faWQsJ3ZtJyxpdGVtLmlzc3VlVHlwZSlcIj5EaXNhZ3JlZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaXNzdWVzPy5sZW5ndGg9PT0wXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTQgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZSYmdm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5TdG9yZSBmaXh0dXJlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwie3tjZG5Vcmx9fXt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlfX1cIiBhbHQ9XCJpbWFnZVwiIGNsYXNzPVwibXQtNCB3LTEwMFwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00XCIgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uYW5zd2Vyc1swXT8uY29tbWVudHMubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5Db21tZW50czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTRcIiAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiB2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uYW5zd2Vyc1swXT8uY29tbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0IGJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlIT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiQWdyZWVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWRcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nZGlzYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJEaXNhZ3JlZSwgcmV0YWluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1wiPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIiAqbmdJZj1cImNvbW1lbnQ/LmNvbW1lbnQhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBOb3RlOiB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00XCIgKm5nSWY9XCJvcmlnaW5hbERhdGEudm1Db21tZW50Lmxlbmd0aD4wJiYgIXNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPkNvbW1lbnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTRcIiAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiBvcmlnaW5hbERhdGEudm1Db21tZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNyZWF0ZWRBdHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgbmdiQWNjb3JkaW9uICNhY2NvcmRpb249XCJuZ2JBY2NvcmRpb25cIiBbY2xvc2VPdGhlcnNdPVwidHJ1ZVwiIGNsYXNzPVwibXQtNVwiICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdD8ubGVuZ3RoPjBcIj5cclxuICAgIDxuZy1jb250YWluZXI+XHJcbiAgICAgIDxkaXYgbmdiQWNjb3JkaW9uSXRlbT1cImRldGFpbHNmaXh0dXJlXCIgW2NvbGxhcHNlZF09XCJvcGVuZml4dHVyZVwiIGNsYXNzPVwibWItNVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1haW5oZWFkaW5nIHAtMFwiIG5nYkFjY29yZGlvbkJ1dHRvbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGxheW91dC1MYmVsXCI+XHJcbiAgICAgICAgICAgICAgPGRpdj5GaXh0dXJlIHZlcmlmaWNhdGlvbiBhc3NpZ25lZDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPnt7c3RvcmVGaXh0dXJlTGlzdFswXT8udGFza0RhdGE/LmNyZWF0ZWRBdCB8ZGF0ZTogJ2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fTwvZGl2PlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkaXZpZGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxyXG4gICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Cb2R5IGNsYXNzPVwicHMtMCBwZS0wXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoLWRpdmlkZXIgbXQtMyBtcy01XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy50YXNrRGF0YT8uY3JlYXRlZEJ5TmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LnRhc2tEYXRhPy5jcmVhdGVkQXQgfGRhdGU6ICdoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQXNzaWduZXJcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LnRhc2tEYXRhPy51c2VyTmFtZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImgtZGl2aWRlciBtdC0zIG1zLTVcIj48L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy50YXNrRGF0YT8udXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy50YXNrRGF0YT8uc3VibWl0VGltZV9zdHJpbmd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBBc3NpZ25lZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImQtZmxleCBtcy0zXCIgKm5nSWY9XCIhc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIHAtMyBtZS00XCIgKm5nSWY9XCJjb21wbGV0ZWRGaXh0dXJlPT09c3RvcmVGaXh0dXJlTGlzdC5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMCAzTDQuNSA4LjVMMiA2XCIgc3Ryb2tlPVwiIzEyQjc2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5GaXh0dXJlIG1hdGNoZWQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kYW5nZXIgcC0zIG1lLTRcIiAqbmdJZj1cImNvbXBsZXRlZEZpeHR1cmUhPT1zdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgZD1cIk02IDRWNk02IDhINi4wMDVNMTEgNkMxMSA4Ljc2MTQyIDguNzYxNDIgMTEgNiAxMUMzLjIzODU4IDExIDEgOC43NjE0MiAxIDZDMSAzLjIzODU4IDMuMjM4NTggMSA2IDFDOC43NjE0MiAxIDExIDMuMjM4NTggMTEgNlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0YwNDQzOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPkZpeHR1cmUgbWlzbWF0Y2g8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC13YXJuaW5nIHAtM1wiICpuZ0lmPVwicGVuZGluZ0ZpeHR1cmVpc3N1ZXM+MFwiPlxyXG4gICAgICAgICAgICAgICAgICB7e3BlbmRpbmdGaXh0dXJlaXNzdWVzfX0ve3t0b3RhbEZpeHR1cmVpc3N1ZXN9fSBhY3Rpb24gcGVuZGluZ1xyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBwLTNcIiAqbmdJZj1cImFwcHJvdmVkRml4dHVyZWlzc3Vlcz4wJiZwZW5kaW5nRml4dHVyZWlzc3Vlcz09PTBcIj5cclxuICAgICAgICAgICAgICAgICAge3thcHByb3ZlZEZpeHR1cmVpc3N1ZXN9fS97e3RvdGFsRml4dHVyZWlzc3Vlc319IGFjdGlvbiBkb25lXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicHJldmlvdXN0YXNrRml4dHVyZShmaXh0dXJldGFza0luZGV4LHN0b3JlRml4dHVyZUxpc3QpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJmaXh0dXJldGFza0luZGV4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA2TDkgMTJMMTUgMThcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFmaXh0dXJldGFza0luZGV4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA2TDkgMTJMMTUgMThcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhLmZpeHR1cmVOYW1lfX0gLVxyXG4gICAgICAgICAgICAgICAgICB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhLmZpeHR1cmVXaWR0aC52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgIHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGEuZml4dHVyZVdpZHRoLnVuaXR9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAge3tmaXh0dXJldGFza0luZGV4KzF9fS97e3N0b3JlRml4dHVyZUxpc3QubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm5leHR0YXNrRml4dHVyZShmaXh0dXJldGFza0luZGV4LHN0b3JlRml4dHVyZUxpc3QpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aD5maXh0dXJldGFza0luZGV4KzFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiKHN0b3JlRml4dHVyZUxpc3QubGVuZ3RoKT09PShmaXh0dXJldGFza0luZGV4KzEpXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDE4TDE1IDEyTDkgNlwiIHN0cm9rZT1cIiNEMEQ1RERcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmRJbWcgbXQtNCBwcy0zIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+Rml4dHVyZSBOYW1lOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVDYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5GaXh0dXJlIFR5cGU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhdGVnb3J5fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZVdpZHRoPy52YWx1ZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlNpemUgKFdpZHRoKTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlV2lkdGg/LnZhbHVlfX1cclxuICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udW5pdH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5Ub3RhbCBTaGVsdmVzOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNoZWxmQ29uZmlnPy5sZW5ndGh9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2FwYWNpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VG90YWwgUHJvZHVjdCBDYXBhY2l0eTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2FwYWNpdHl9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgUGxhbm9ncmFtIGRlc2lnblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgRml4dHVyZSBkZXNpZ25lZCBieSB0aGUgcGxhbm9ncmFtIHRlYW1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhbGwtdmlld3BvcnQgdy0xMDAgbXQtNVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImhlYWRlci1ibG9ja1wiIGNsYXNzPVwiaGVhZGVyLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5oZWFkZXI/LmxhYmVsID8/ICcnfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2ICNib2R5QmxvY2sgaWQ9XCJib2R5QmxvY2tcIiBjbGFzcz1cImJvZHktYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbktleXM7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzZWN0aW9uJyArIGlcIiBjbGFzcz1cInZtLWJsb2NrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInVwZGF0ZVN0eWxlKHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dLGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2bS1wbGFjZWhvbGRlclwiIFtpZF09XCIndm0tcGxhY2Vob2xkZXInICsgaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIidib3JkZXI6MXB4IHNvbGlkICcrc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LmNvbG9yPy5ib3JkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uem9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LmNvbG9yPy50ZXh0QmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjpzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uY29sb3I/LnRleHR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uem9uZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0b29sdGlwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8ucHJvZHVjdEJyYW5kTmFtZT8udG9TdHJpbmcoKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWNTdHlsZSB3b3JkV3JhcFwiIFtuZ2JUb29sdGlwXT1cInRvb2x0aXBcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LlswXX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzaGVsZkRhdGEgb2Ygc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNoZWxmRGV0YWlsczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3NoZWxmJyArIGlcIiBjbGFzcz1cImJsb2NrIHNoZWxmIGhpZGUtc2Nyb2xsIGQtYmxvY2sgdGV4dC1lbmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQtY29sb3InOihzaGVsZkRhdGE/LnpvbmUgfHwgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWwgPT09ICdMMScpID8gc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnpvbmVDb2xvcltzaGVsZkRhdGEuem9uZV0/LmNvbG9yPy5iZyA6IHNobGVmQ29sb3JbaV0uYmd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOihzaGVsZkRhdGE/LnpvbmUgfHwgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWwgPT09ICdMMScpID8gc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnpvbmVDb2xvcltzaGVsZkRhdGEuem9uZV0/LmNvbG9yPy50ZXh0QmcgOiBzaGxlZkNvbG9yW2ldLnRleHRCZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOihzaGVsZkRhdGE/LnpvbmUgfHwgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWwgPT09ICdMMScpID8gc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnpvbmVDb2xvcltzaGVsZkRhdGEuem9uZV0/LmNvbG9yPy50ZXh0IDogc2hsZWZDb2xvcltpXS50ZXh0fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNoZWxmIENhcGFjaXR5IDoge3tzaGVsZkRhdGE/LnByb2R1Y3RQZXJTaGVsZn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8IS0tIEZvb3RlciBibG9jayAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPiB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5mb290ZXI/LmxhYmVsID8/ICcnfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb24gI2FjY29yZGlvbj1cIm5nYkFjY29yZGlvblwiIFtjbG9zZU90aGVyc109XCJ0cnVlXCIgY2xhc3M9XCJtdC01XCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpc3N1ZXMgb2Ygc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2VycztsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJ7eyAnbmV3ZGV0YWlscy0nICsgayB9fVwiIFtjb2xsYXBzZWRdPVwiaXRlbS5jb2xsYXBzZWRcIiBjbGFzcz1cIm1iLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGlzc3Vlcy5pc3N1ZXM7bGV0IGsgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggXCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmdiQWNjb3JkaW9uQnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0zIGJhY2tncm91bmRJbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGxheW91dC1MYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gPHNwYW4gKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnN0YXR1cz09PSdwZW5kaW5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgYmctd2FybmluZyByb3VuZGVkLWNpcmNsZSBteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTBweDsgaGVpZ2h0OiAxMHB4O1wiPjwvc3Bhbj57e2l0ZW0/LnF1ZXN0aW9ufX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC01XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmRJbWcgbXQtNCBwcy0zIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVDYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5GaXh0dXJlIFR5cGU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlQ2F0ZWdvcnl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmV0ZW1wbGF0ZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VGVtcGxhdGU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJldGVtcGxhdGVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwiaXRlbT8uaXNzdWVUeXBlPT09J3NpemVXcm9uZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+U2l6ZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVXaWR0aD8udmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVXaWR0aD8udW5pdH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbT8uaXNzdWVUeXBlPT09J3Byb2R1Y3RjYXRlZ29yeVdyb25nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBtaXNzaW5nIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8ubWlzc2luZ0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cIm1pc3Npbmc/LnpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj57e21pc3Npbmc/LnpvbmV9fTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBtaXNzaW5nPy5wcm9kdWN0Q2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmQgYmFkZ2UgXCI+e3tjYXRlZ29yeX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbT8uaXNzdWVUeXBlPT09J2JyYW5kV3JvbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1pc3Npbmcgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5taXNzaW5nRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwibWlzc2luZz8uem9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPnt7bWlzc2luZz8uem9uZX19OjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnJhbmQgb2YgbWlzc2luZz8uYnJhbmRcIiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmQgYmFkZ2UgbS0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMy44NDNweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZCc6ICd2YXIoLS1HcmF5LTEwMCwgI2ViZWVmMyknfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YnJhbmR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtPy5pc3N1ZVR5cGUhPT0nYnJhbmRXcm9uZycmJml0ZW0/Lmlzc3VlVHlwZSE9PSdwcm9kdWN0Y2F0ZWdvcnlXcm9uZydcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpeHR1cmVMaXN0IG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2hlbGZDb25maWdGb3JtYXRlZFwiPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsIHRleHQtY2FwaXRhbGl6ZVwiPnt7Zml4dHVyZUxpc3Q/LnpvbmV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTkgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0Zvcj1cImxldCBzaGxlZmRhdGEgb2YgZml4dHVyZUxpc3Q/Lml0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsIHRleHQtY2FwaXRhbGl6ZVwiPnt7c2hsZWZkYXRhPy5zaGVsZlR5cGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c2hsZWZkYXRhPy5zaGVsZk51bWJlcn19OjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNhcGl0YWxpemVcIj5DYXBhY2l0eTogPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPnt7c2hsZWZkYXRhPy5wcm9kdWN0UGVyU2hlbGZ9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMlwiICpuZ0Zvcj1cImxldCBicmFuZHMgb2Ygc2hsZWZkYXRhPy5wcm9kdWN0QnJhbmROYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLXNlY29uZGFyeSBtZS0zIG1iLTJcIj57e2JyYW5kc319PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25LZXlzPy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIFJlc3BvbnNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGFub2dyYW0gcmVzcG9uc2UgYnkgdGhlIHN0b3JlIHRlYW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhbGwtdmlld3BvcnQgdy0xMDAgbXQtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJbJ0ZpeHR1cmUgdHlwZSBpcyB3cm9uZycsJ0ZpeHR1cmUgc2l6ZSBpcyB3cm9uZyddLmluY2x1ZGVzKGl0ZW0/LnF1ZXN0aW9uKSA/ICdib3JkZXI6MXB4IHNvbGlkIHJlZCcgOiAnJ1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImhlYWRlci1ibG9ja1wiIGNsYXNzPVwiaGVhZGVyLWJsb2NrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlcjogMC43NzFweCBzb2xpZCB2YXIoLS1HcmF5LTQwMCwgIzk4QTJCMyk7YmFja2dyb3VuZDogI0YyRjNGNztcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmhlYWRlcj8ubGFiZWwgPz8gJyd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAjYm9keUJsb2NrIGlkPVwiYm9keUJsb2NrXCIgY2xhc3M9XCJib2R5LWJsb2NrXCI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiWydwcm9kdWN0Y2F0ZWdvcnlXcm9uZycsICdicmFuZFdyb25nJ10uaW5jbHVkZXMoaXRlbT8uaXNzdWVUeXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbktleXM7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3NlY3Rpb24nICsgaVwiIGNsYXNzPVwidm0tYmxvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ1cGRhdGVTdHlsZShzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXSxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2bS1wbGFjZWhvbGRlclwiIFtpZF09XCIndm0tcGxhY2Vob2xkZXInICsgaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlcjogMC45NjlweCBzb2xpZCB2YXIoLS1HcmF5LTMwMCwgI0QwRDVERCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMy44NDNweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kJzogJ3ZhcigtLUdyYXktMTAwLCAjZWJlZWYzKSd9XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnpvbmV9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG9vbHRpcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8ucHJvZHVjdEJyYW5kTmFtZT8ubGVuZ3RoID8nZGFuZ2VyJyA6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LnRvU3RyaW5nKCkgPz8gc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LnRvU3RyaW5nKCl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWNTdHlsZSB3b3JkV3JhcFwiIFtuZ2JUb29sdGlwXT1cInRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/Lmxlbmd0aCA/ICdkYW5nZXInIDogJydcIj57e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8ucHJvZHVjdEJyYW5kTmFtZT8uWzBdIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy5bMF19fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFbJ3Byb2R1Y3RjYXRlZ29yeVdyb25nJywgJ2JyYW5kV3JvbmcnXS5pbmNsdWRlcyhpdGVtPy5pc3N1ZVR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbktleXM7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3NlY3Rpb24nICsgaVwiIGNsYXNzPVwidm0tYmxvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ1cGRhdGVTdHlsZShpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0saSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidm0tcGxhY2Vob2xkZXJcIiBbaWRdPVwiJ3ZtLXBsYWNlaG9sZGVyJyArIGlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJib3JkZXI6IDAuOTY5cHggc29saWQgdmFyKC0tR3JheS0zMDAsICNEMEQ1REQpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnMTMuODQzcHgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZCc6ICd2YXIoLS1HcmF5LTEwMCwgI2ViZWVmMyknfVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uem9uZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0b29sdGlwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy50b1N0cmluZygpfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjU3R5bGUgd29yZFdyYXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdiVG9vbHRpcF09XCJ0b29sdGlwXCI+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LlswXX19PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2hlbGZEYXRhIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3NoZWxmJyArIGlcIiBjbGFzcz1cImJsb2NrIHNoZWxmIGhpZGUtc2Nyb2xsIGQtYmxvY2sgdGV4dC1lbmRcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItdG9wJzooZ2V0U3RhcnRQb3NpdGlvbihpKzEsc2hlbGZEYXRhLnpvbmUsaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnKSAmJiAhWydGaXh0dXJlIHR5cGUgaXMgd3JvbmcnLCdGaXh0dXJlIHNpemUgaXMgd3JvbmcnXS5pbmNsdWRlcyhpdGVtPy5xdWVzdGlvbikpICA/ICcwLjc3MXB4IHNvbGlkIHJlZCcgOiAnMC43NzFweCBzb2xpZCB2YXIoLS1HcmF5LTQwMCwgIzk4QTJCMyknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLWJvdHRvbSc6KGdldEVuZFBvc2l0aW9uKGkrMSxzaGVsZkRhdGEuem9uZSxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWcpICYmICFbJ0ZpeHR1cmUgdHlwZSBpcyB3cm9uZycsJ0ZpeHR1cmUgc2l6ZSBpcyB3cm9uZyddLmluY2x1ZGVzKGl0ZW0/LnF1ZXN0aW9uKSkgPyAnIDAuNzcxcHggc29saWQgcmVkJyA6ICcwLjc3MXB4IHNvbGlkIHZhcigtLUdyYXktNDAwLCAjOThBMkIzKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItbGVmdCc6KGdldE1pZFBvc2l0aW9uKGkrMSxzaGVsZkRhdGEuem9uZSxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWcpICYmICFbJ0ZpeHR1cmUgdHlwZSBpcyB3cm9uZycsJ0ZpeHR1cmUgc2l6ZSBpcyB3cm9uZyddLmluY2x1ZGVzKGl0ZW0/LnF1ZXN0aW9uKSkgPyAnIDAuNzcxcHggc29saWQgcmVkJyA6ICcwLjc3MXB4IHNvbGlkIHZhcigtLUdyYXktNDAwLCAjOThBMkIzKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItcmlnaHQnOihnZXRNaWRQb3NpdGlvbihpKzEsc2hlbGZEYXRhLnpvbmUsaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnKSAmJiAhWydGaXh0dXJlIHR5cGUgaXMgd3JvbmcnLCdGaXh0dXJlIHNpemUgaXMgd3JvbmcnXS5pbmNsdWRlcyhpdGVtPy5xdWVzdGlvbikpID8gJyAwLjc3MXB4IHNvbGlkIHJlZCcgOiAnMC43NzFweCBzb2xpZCB2YXIoLS1HcmF5LTQwMCwgIzk4QTJCMyknLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tR3JheS0xMDAsICNmOGY5ZmIpJyx9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzEzLjg0M3B4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kJzogJ3ZhcigtLUdyYXktMTAwLCAjZWJlZWYzKSd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hlbGYgQ2FwYWNpdHkgOiB7e3NoZWxmRGF0YT8ucHJvZHVjdFBlclNoZWxmfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+IHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZvb3Rlcj8ubGFiZWwgPz8gJyd9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00XCIgKm5nSWY9XCJpdGVtPy5jb21tZW50cy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5Db21tZW50czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2YgaXRlbT8uY29tbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0IGJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZSE9PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXJrZWQgYXMgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJBZ3JlZWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWQgXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdkaXNhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIkRpc2FncmVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRhaW5lZCBleGlzdGluZ1wiPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmVha1dvcmQgbXQtMlwiICpuZ0lmPVwiY29tbWVudD8uY29tbWVudCE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlOiB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNCB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlJiZzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlN0b3JlIGZpeHR1cmU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwie3tjZG5Vcmx9fXt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2V9fVwiIGFsdD1cImltYWdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC00IHctMTAwXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNSByb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnN0YXR1cz09PSdwZW5kaW5nJyYmc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidHdvLXRvbmUtYnRuIG1lLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtYXRpb24oJ2FncmVlJyxzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5faWQsaXNzdWVzLl9pZCxpdGVtLl9pZCxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0uX2lkLCdmaXh0dXJlJyxpdGVtLmlzc3VlVHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZ3JlZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjb25maXJtYXRpb24oJ2Rpc2FncmVlJyxzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5faWQsaXNzdWVzLl9pZCxpdGVtLl9pZCxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/Ll9pZCwnZml4dHVyZScsaXRlbS5pc3N1ZVR5cGUpXCI+RGlzYWdyZWU8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaXNzdWVzPy5sZW5ndGg9PT0wXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNCB3LTEwMFwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2UmJnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIFN0b3JlIFJlc3BvbnNlXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBGaXh0dXJlIGZlZWRiYWNrIGJ5IHRoZSBzdG9yZSB0ZWFtXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tjZG5Vcmx9fXt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uZml4dHVyZUFJRGF0YT8uZml4dHVyZUltYWdlID8gc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uZml4dHVyZUFJRGF0YT8uZml4dHVyZUltYWdlIDogc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2V9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgYWx0PVwiaW1hZ2VcIiBjbGFzcz1cIm10LTQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmRJbWcgbXQtNCBwcy0zIHB5LTJcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmZpeHR1cmVBSURhdGE/LmZpeHR1cmVDYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dEhlYWRpbmdcIj5BSSBPdXRwdXQg4pyoPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWlMYXlvdXRMYWJlbFwiPkZpeHR1cmUgVHlwZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2F0ZWdvcnk/LnRvTG93ZXJDYXNlKCkgIT09IHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmZpeHR1cmVBSURhdGE/LmZpeHR1cmVDYXRlZ29yeT8udG9Mb3dlckNhc2UoKSA/ICcjYjQyMzE4JzogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5maXh0dXJlQUlEYXRhPy5maXh0dXJlQ2F0ZWdvcnkgPz8gJy0tJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWlMYXlvdXRMYWJlbFwiPkZpeHR1cmUgSGVhZGVyOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwibWF0Y2hGaXh0dXJlQ2F0ZWdvcnkoc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmhlYWRlcj8ubGFiZWwsc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uZml4dHVyZUFJRGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5maXh0dXJlQUlEYXRhPy5oZWFkZXI/LmxhYmVsID8/ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpTGF5b3V0TGFiZWxcIj5Ub3RhbCBTaGVsdmVzOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNoZWxmQ29uZmlnPy5sZW5ndGggIT09IHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmZpeHR1cmVBSURhdGE/LnNoZWxmQ29uZmlnPy5sZW5ndGggPyAnI2I0MjMxOCc6ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uZml4dHVyZUFJRGF0YT8uc2hlbGZDb25maWc/Lmxlbmd0aCA/PyAwfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaUxheW91dExhYmVsXCI+VG90YWwgUHJvZHVjdCBDYXBhY2l0eTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2FwYWNpdHkgIT09IHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmZpeHR1cmVBSURhdGE/LmZpeHR1cmVDYXBhY2l0eSA/ICcjYjQyMzE4JzogJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5maXh0dXJlQUlEYXRhPy5maXh0dXJlQ2FwYWNpdHkgPz8gMH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWlMYXlvdXRMYWJlbFwiPlZNIFR5cGU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiIFtzdHlsZS5jb2xvcl09XCJjb21wYXJlVHlwZShzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2dldFR5cGUoc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XSl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpTGF5b3V0TGFiZWxcIj5WTSBOYW1lOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIiBbc3R5bGUuY29sb3JdPVwiY29tcGFyZU5hbWUoc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tnZXROYW1lKHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0pfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWlMYXlvdXRMYWJlbFwiPlZpc3VhbCBNZXJjaGFuZGlzZSBJbWFnZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj48YnIgLz5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgbXQtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCB2bSBvZiBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5maXh0dXJlQUlEYXRhPy52bUNvbmZpZ1wiPiA8aW1nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwie3tjZG5Vcmx9fXt7dm0udm1JbWFnZX19XCIgKGNsaWNrKT1cIm9wZW5Qb3B1cCh2bS52bUltYWdlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDoxMjBweDtoZWlnaHQ6MTIwcHhcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBvcHVwXCIgKm5nSWY9XCJzZWxlY3RlZEltYWdlXCIgKGNsaWNrKT1cImNsb3NlUG9wdXAoKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIDxzcGFuIGNsYXNzPVwiY2xvc2VcIiAoY2xpY2spPVwiY2xvc2VQb3B1cCgkZXZlbnQpXCI+JnRpbWVzOzwvc3Bhbj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJzZWxlY3RlZEltYWdlXCIgY2xhc3M9XCJwb3B1cC1pbWdcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00XCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5jb21tZW50cy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPkNvbW1lbnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2Ygc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uY29tbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0IGJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlIT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiQWdyZWVkLCB1cGRhdGVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2Rpc2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiRGlzYWdyZWUsIHJldGFpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmdcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCIgKm5nSWY9XCJjb21tZW50Py5jb21tZW50IT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgTm90ZToge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNSByb3dcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFwcHJvdmFsU3RhdHVzPT09J3BlbmRpbmcnICYmIHNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkICYmICFzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5zdGF0dXMgJiYgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uZml4dHVyZUFJRGF0YT8uZml4dHVyZUNhdGVnb3J5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0d28tdG9uZS1idG4gbWUtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybWF0aW9uKCdhZ3JlZScsc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uX2lkLHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/Ll9pZCwnJywnJywnZml4dHVyZScsJycsc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uZml4dHVyZUFJRGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIEFncmVlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgYnRuLW91dGxpbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1hdGlvbignZGlzYWdyZWUnLHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/Ll9pZCxzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5faWQsJycsJycsJ2ZpeHR1cmUnLCcnLHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmZpeHR1cmVBSURhdGEpXCI+RGlzYWdyZWU8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cIm9yaWdpbmFsRGF0YS5maXh0dXJlQ29tbWVudC5sZW5ndGg+MCYmICFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5Db21tZW50czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2Ygb3JpZ2luYWxEYXRhLmZpeHR1cmVDb21tZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNyZWF0ZWRBdHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cInRydWVcIiBjbGFzcz1cIm10LTVcIiAqbmdJZj1cImxheW91dEZlZWRiYWNrLmxlbmd0aD4wXCI+XHJcbiAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJ7eyAnZGV0YWlscy0nICsgaSB9fVwiIFtjb2xsYXBzZWRdPVwiZmVlZGJhY2suY29sbGFwc2VkXCIgKGhlYWRlckNsaWNrKT1cInRvZ2dsZVBhbmVsKGkpXCJcclxuICAgICAgICBjbGFzcz1cIm1iLTVcIiAqbmdGb3I9XCJsZXQgZmVlZGJhY2sgb2YgbGF5b3V0RmVlZGJhY2s7bGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cIm1haW5oZWFkaW5nIHAtMFwiIG5nYkFjY29yZGlvbkJ1dHRvbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGxheW91dC1MYmVsXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZlZWRiYWNrPy50YXNrVHlwZT09PSdpbml0aWFsJ1wiPkxheW91dCB2ZXJpZmljYXRpb24gYXNzaWduZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiZmVlZGJhY2s/LnRhc2tUeXBlPT09J3JlZG8nXCI+TGF5b3V0IHZlcmlmaWNhdGlvbiByZS1hc3NpZ25lZDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPnt7ZmVlZGJhY2s/LnRhc2tEYXRhPy5jcmVhdGVkQXQgfGRhdGU6ICdoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInBzLTAgcGUtMFwiPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIiFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1kaXZpZGVyIG10LTMgbXMtNVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ZmVlZGJhY2s/LnRhc2tEYXRhPy5jcmVhdGVkQnlOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ZmVlZGJhY2s/LnRhc2tEYXRhPy5jcmVhdGVkQXQgfGRhdGU6ICdoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQXNzaWduZXJcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiAqbmdJZj1cImZlZWRiYWNrPy50YXNrRGF0YT8udXNlck5hbWUhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1kaXZpZGVyIG10LTMgbXMtNVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7ZmVlZGJhY2s/LnRhc2tEYXRhPy51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e2ZlZWRiYWNrPy50YXNrRGF0YT8uc3VibWl0VGltZV9zdHJpbmd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBBc3NpZ25lZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXMtM1wiICpuZ0lmPVwiIXNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBwLTMgbWUtNFwiICpuZ0lmPVwiZmVlZGJhY2s/LnN0YXR1cz09PSdjb21wbGV0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMCAzTDQuNSA4LjVMMiA2XCIgc3Ryb2tlPVwiIzEyQjc2QVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5MYXlvdXQgbWF0Y2hlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBwLTMgbWUtNFwiICpuZ0lmPVwiZmVlZGJhY2s/LnN0YXR1cz09PSdpbmNvbXBsZXRlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgZD1cIk02IDRWNk02IDhINi4wMDVNMTEgNkMxMSA4Ljc2MTQyIDguNzYxNDIgMTEgNiAxMUMzLjIzODU4IDExIDEgOC43NjE0MiAxIDZDMSAzLjIzODU4IDMuMjM4NTggMSA2IDFDOC43NjE0MiAxIDExIDMuMjM4NTggMTEgNlpcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiI0YwNDQzOFwiIHN0cm9rZS13aWR0aD1cIjEuNVwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPkxheW91dCBtaXNtYXRjaDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgcC0zXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmZWVkYmFjaz8uc3RhdHVzPT09J2luY29tcGxldGUnJiZwZW5kaW5nTGF5b3V0aXNzdWVzPjBcIj5cclxuICAgICAgICAgICAgICAgICAge3twZW5kaW5nTGF5b3V0aXNzdWVzfX0ve3tmZWVkYmFjaz8uYW5zd2Vyc1swXT8uaXNzdWVzPy5sZW5ndGh9fSBhY3Rpb24gcGVuZGluZ1xyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBwLTNcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdJZj1cImZlZWRiYWNrPy5zdGF0dXM9PT0naW5jb21wbGV0ZScmJmFwcHJvdmVkTGF5b3V0aXNzdWVzPjAmJnBlbmRpbmdMYXlvdXRpc3N1ZXM9PT0wXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7YXBwcm92ZWRMYXlvdXRpc3N1ZXN9fS97e2ZlZWRiYWNrPy5hbnN3ZXJzWzBdPy5pc3N1ZXM/Lmxlbmd0aH19IGFjdGlvbiBkb25lXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cInRydWVcIiBjbGFzcz1cIm10LTVcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGlzc3VlcyBvZiBmZWVkYmFjay5hbnN3ZXJzO2xldCBqID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc3N1ZXM/Lmlzc3Vlcz8ubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25JdGVtPVwie3sgJ25ld2RldGFpbHMtJyArIGsgfX1cIiBbY29sbGFwc2VkXT1cImlzc3Vlcy5jb2xsYXBzZWRcIiBjbGFzcz1cIm1iLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGlzc3Vlcy5pc3N1ZXM7bGV0IGsgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggXCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmdiQWNjb3JkaW9uQnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0zIGJhY2tncm91bmRJbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGxheW91dC1MYmVsXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+PHNwYW4gKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnN0YXR1cz09PSdwZW5kaW5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgYmctd2FybmluZyByb3VuZGVkLWNpcmNsZSBteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTBweDsgaGVpZ2h0OiAxMHB4O1wiPjwvc3Bhbj57e2l0ZW0/LnF1ZXN0aW9ufX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2Pnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlTmFtZX19PC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gbXQtNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJwcmV2aW91c0ZpeHR1cmUoZml4dHVyZUluZGV4LGl0ZW0/LkRldGFpbHMpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgKm5nSWY9XCJmaXh0dXJlSW5kZXhcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDZMOSAxMkwxNSAxOFwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWZpeHR1cmVJbmRleFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTUgNkw5IDEyTDE1IDE4XCIgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Zml4dHVyZUluZGV4KzF9fS97e2l0ZW0/LkRldGFpbHMubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm5leHRGaXh0dXJlKGZpeHR1cmVJbmRleCxpdGVtPy5EZXRhaWxzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiaXRlbT8uRGV0YWlscy5sZW5ndGg+Zml4dHVyZUluZGV4KzFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiKGl0ZW0/LkRldGFpbHMubGVuZ3RoKT09PShmaXh0dXJlSW5kZXgrMSlcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiI0QwRDVERFwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFja2dyb3VuZEltZyBtdC00IHBzLTMgcHktMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZUNhdGVnb3J5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkZpeHR1cmUgVHlwZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVDYXRlZ29yeX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZVRlbXBsYXRlTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5UZW1wbGF0ZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVUZW1wbGF0ZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpeHR1cmVMaXN0IG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2hlbGZDb25maWdGb3JtYXRlZFwiPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsIHRleHQtY2FwaXRhbGl6ZVwiPnt7Zml4dHVyZUxpc3Q/LnpvbmV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOSBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0Zvcj1cImxldCBzaGxlZmRhdGEgb2YgZml4dHVyZUxpc3Q/Lml0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWwgdGV4dC1jYXBpdGFsaXplXCI+e3tzaGxlZmRhdGE/LnNoZWxmVHlwZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7c2hsZWZkYXRhPy5zaGVsZk51bWJlcn19OjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jYXBpdGFsaXplXCI+Q2FwYWNpdHk6IDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxheW91dExhYmVsXCI+e3tzaGxlZmRhdGE/LnByb2R1Y3RQZXJTaGVsZn19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiICpuZ0Zvcj1cImxldCBicmFuZHMgb2Ygc2hsZWZkYXRhPy5wcm9kdWN0QnJhbmROYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1zZWNvbmRhcnkgbWUtMyBtYi0yXCI+e3ticmFuZHN9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5hc3NvY2lhdGVkRWxlbWVudFR5cGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+TG9jYXRpb246PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmFzc29jaWF0ZWRFbGVtZW50VHlwZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uYXNzb2NpYXRlZEVsZW1lbnROdW1iZXJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmFzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5Qb3NpdGlvbjo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj4oTCB0byBSKTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5hc3NvY2lhdGVkRWxlbWVudEZpeHR1cmVOdW1iZXJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8ubmV3YXNzb2NpYXRlZEVsZW1lbnRUeXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPk5ldyBMb2NhdGlvbjo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8ubmV3YXNzb2NpYXRlZEVsZW1lbnRUeXBlfX17e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8ubmV3YXNzb2NpYXRlZEVsZW1lbnROdW1iZXJ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/Lm5ld2Fzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5OZXcgUG9zaXRpb246PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+KEwgdG8gUik8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8ubmV3YXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbktleXM/Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGU9PT0nZXh0cmFGaXh0dXJlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSBGaXh0dXJlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaXh0dXJlIGZlZWRiYWNrIGJ5IHRoZSBzdG9yZSB0ZWFtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGUhPT0nZXh0cmFGaXh0dXJlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGFub2dyYW0gZml4dHVyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmVsb3cgZml4dHVyZSBpcyBpbiB0aGUgcGxhbm9ncmFtIGJ1dCBub3QgaW4gc3RvcmUuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FsbC12aWV3cG9ydCB3LTEwMCBtdC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gSGVhZGVyIGJsb2NrIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiaGVhZGVyLWJsb2NrXCIgY2xhc3M9XCJoZWFkZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5oZWFkZXI/LmxhYmVsID8/ICcnfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBCb2R5IGJsb2NrIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNib2R5QmxvY2sgaWQ9XCJib2R5QmxvY2tcIiBjbGFzcz1cImJvZHktYmxvY2tcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbktleXM7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzZWN0aW9uJyArIGlcIiBjbGFzcz1cInZtLWJsb2NrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInVwZGF0ZVN0eWxlKGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXSxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidm0tcGxhY2Vob2xkZXJcIiBbaWRdPVwiJ3ZtLXBsYWNlaG9sZGVyJyArIGlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCInYm9yZGVyOjFweCBzb2xpZCAnKyB0aGlzLnNobGVmQ29sb3JbaV0uYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uY29sb3I/LnRleHRCZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjppdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LmNvbG9yPy50ZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uem9uZX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0b29sdGlwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LnRvU3RyaW5nKCl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2VjU3R5bGUgd29yZFdyYXBcIiBbbmdiVG9vbHRpcF09XCJ0b29sdGlwXCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8ucHJvZHVjdEJyYW5kTmFtZT8uWzBdfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzaGVsZkRhdGEgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zaGVsZkRldGFpbHM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQGlmKGl0ZW0uc2hlbGZUeXBlID09PSdzaGVsZicpeyAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2hlbGYnICsgaVwiIGNsYXNzPVwiYmxvY2sgc2hlbGYgaGlkZS1zY3JvbGwgZC1ibG9jayB0ZXh0LWVuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOnNoZWxmRGF0YT8uem9uZSA/IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uem9uZUNvbG9yW3NoZWxmRGF0YT8uem9uZV0/LmNvbG9yPy5iZyA6IHNobGVmQ29sb3JbaV0uYmd9XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy56b25lQ29sb3Jbc2hlbGZEYXRhPy56b25lXT8uY29sb3I/LnRleHRCZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjppdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnpvbmVDb2xvcltzaGVsZkRhdGE/LnpvbmVdPy5jb2xvcj8udGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNoZWxmIENhcGFjaXR5IDoge3tzaGVsZkRhdGE/LnByb2R1Y3RQZXJTaGVsZn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEZvb3RlciBibG9jayAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPiB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZm9vdGVyPy5sYWJlbCA/PyAnJ319PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00IHctMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5pbWFnZSYmaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5pbWFnZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlN0b3JlIGZpeHR1cmU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwie3tjZG5Vcmx9fXt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5pbWFnZX19XCIgYWx0PVwiaW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00XCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmNvbW1lbnRzLmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPkNvbW1lbnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTRcIiAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmNvbW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzeW1ib2wgc3ltYm9sLTM1cHggc3ltYm9sLWNpcmNsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlIT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmtlZCBhcyA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIkFncmVlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZFwiPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nZGlzYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJEaXNhZ3JlZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0YWluZWQgZXhpc3RpbmdcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIiAqbmdJZj1cImNvbW1lbnQ/LmNvbW1lbnQhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90ZToge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTUgcm93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zdGF0dXM9PT0ncGVuZGluZycmJnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkfHxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnN0YXR1cz09PSdwZW5kaW5nJyYmaXRlbS5pc3N1ZVR5cGU9PT0nb3RoZXJzJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0d28tdG9uZS1idG4gbWUtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1hdGlvbignYWdyZWUnLGZlZWRiYWNrPy5faWQsaXNzdWVzLl9pZCxpdGVtLl9pZCxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0uX2lkLCdsYXlvdXQnLGl0ZW0uaXNzdWVUeXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFncmVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tb3V0bGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1hdGlvbignZGlzYWdyZWUnLGZlZWRiYWNrPy5faWQsaXNzdWVzLl9pZCxpdGVtLl9pZCxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/Ll9pZCwnbGF5b3V0JyxpdGVtLmlzc3VlVHlwZSlcIj5EaXNhZ3JlZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTQgdy0xMDBcIiAqbmdJZj1cImZlZWRiYWNrPy5hbnN3ZXJzWzBdPy52aWRlbyYmZmVlZGJhY2s/LmFuc3dlcnNbMF0/LnZpZGVvIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlN0b3JlIFZpZGVvPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPHZpZGVvIGNvbnRyb2xzIHNyYz1cInt7Y2RuVXJsfX17e2ZlZWRiYWNrPy5hbnN3ZXJzWzBdPy52aWRlb319XCIgY2xhc3M9XCJtdC00IHctMTAwXCI+PC92aWRlbz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00XCIgKm5nSWY9XCJvcmlnaW5hbERhdGEubGF5b3V0Q29tbWVudC5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+Q29tbWVudHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTRcIiAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiBvcmlnaW5hbERhdGEubGF5b3V0Q29tbWVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3ltYm9sLWxhYmVsIGJnLWxpZ2h0LXByaW1hcnkgdGV4dC1wcmltYXJ5IG1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNyZWF0ZWRBdHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgPC9kaXY+XHJcblxyXG5cclxuICA8ZGl2IGNsYXNzPVwibXQtNVwiICpuZ0lmPVwibGF5b3V0RmVlZGJhY2s/Lmxlbmd0aD09PTAmJnN0b3JlRml4dHVyZUxpc3Q/Lmxlbmd0aD09PTAmJnZtRmVlZGJhY2s/Lmxlbmd0aD09PTAmJiFsb2FkaW5nXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI5NFwiIGhlaWdodD1cIjk0XCIgdmlld0JveD1cIjAgMCA5NCA5NFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgPHJlY3QgeD1cIjdcIiB5PVwiN1wiIHdpZHRoPVwiODBcIiBoZWlnaHQ9XCI4MFwiIHJ4PVwiNDBcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgPHJlY3QgeD1cIjdcIiB5PVwiN1wiIHdpZHRoPVwiODBcIiBoZWlnaHQ9XCI4MFwiIHJ4PVwiNDBcIiBzdHJva2U9XCIjRUFGOEZGXCIgc3Ryb2tlLXdpZHRoPVwiMTMuMzMzM1wiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGQ9XCJNMzUuOTUwMiA0OC4xOTk3QzM1LjY0ODkgNDguMjMxNSAzNS4zNDIyIDQ4LjI1MDUgMzUuMDMxMiA0OC4yNTA1QzM0Ljg2MTcgNDguMjUwNSAzNC42OTQ0IDQ4LjI0MzYgMzQuNTI5MyA0OC4yMzM5VjU4LjYwNjlDMzQuNTI5MyA2MC4wMzQ5IDM1LjcxMjMgNjEuMjI2IDM3LjIwMDIgNjEuMjI2MUg1Ni44MDQ3QzU4LjI5MjcgNjEuMjI2MSA1OS40NzU2IDYwLjAzNSA1OS40NzU2IDU4LjYwNjlWNDguMjM0OUM1OS4zMTM3IDQ4LjI0NDEgNTkuMTQ5OCA0OC4yNTA1IDU4Ljk4NTQgNDguMjUwNUM1OC42NzE0IDQ4LjI1MDUgNTguMzYwOCA0OC4yMzI1IDU4LjA1NDcgNDguMTk5N1Y1NS45ODc4SDM1Ljk1MDJWNDguMTk5N1pNNTcuOTMxNiAzMi43NzM5SDM2LjA3MzJDMzUuODk1OSAzMi43NzM5IDM1Ljc0MDYgMzIuODY2NyAzNS42NjMxIDMyLjk4NzhMMzUuNjYxMSAzMi45ODk3TDMyLjE1MTQgMzguNDczMUwzMi4wNTY2IDM4LjYyMDZDMzAuODMxMSA0MC43NDA0IDMyLjA5NTcgNDMuNDY3NCAzNC40NDczIDQzLjc3NjlDMzQuNjQ4MiA0My44MDEzIDM0LjgzNzkgNDMuODE1OSAzNS4wMjU0IDQzLjgxNTlDMzYuMjU1NSA0My44MTU5IDM3LjM0MzQgNDMuMjg3MiAzOC4xMDA2IDQyLjQ2NTNMMzkuMDIyNSA0MS40NjQ0TDM5Ljk0MTQgNDIuNDY4M0M0MC42OTAzIDQzLjI4NjMgNDEuNzc3IDQzLjgxNTkgNDMuMDE0NiA0My44MTU5QzQ0LjI0NjcgNDMuODE1OCA0NS4zMzg2IDQzLjI4NTYgNDYuMDg2OSA0Mi40NjgzTDQ3LjAwODggNDEuNDYxNEw0Ny45MzA3IDQyLjQ2ODNDNDguNjc5IDQzLjI4NTcgNDkuNzcwNyA0My44MTU5IDUxLjAwMjkgNDMuODE1OUM1Mi4yMzUxIDQzLjgxNTkgNTMuMzI2OCA0My4yODU3IDU0LjA3NTIgNDIuNDY4M0w1NC45OTcxIDQxLjQ2MTRMNTUuOTE4OSA0Mi40NjgzQzU2LjY2NzMgNDMuMjg1NyA1Ny43NiA0My44MTU5IDU4Ljk5MjIgNDMuODE1OUM1OS4xNzM2IDQzLjgxNTkgNTkuMzY4NyA0My44MDIxIDU5LjU2ODQgNDMuNzc3OEg1OS41Njc0QzYxLjk2MTEgNDMuNDU3MyA2My4yMjkzIDQwLjYwNzggNjEuODYxMyAzOC40NzMxTDYxLjg2MDQgMzguNDc0MUw1OC4zNDM4IDMyLjk5MDdMNTguMzQyOCAzMi45ODc4QzU4LjI2NTMgMzIuODY2NSA1OC4xMDkyIDMyLjc3MzkgNTcuOTMxNiAzMi43NzM5WlwiXHJcbiAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMi41XCIgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtdC0zIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGgzIG10LTJcIj5ObyBpc3N1ZTwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlRoZSBzdG9yZSBkaWQgbm90IGZsYWcgaXQgYXMgYW4gaXNzdWUuPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPiJdfQ==
|
|
744
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby9tYW5hZ2Utc3RvcmUtcGxhbm8tZmVlZGJhY2svbWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLXN0b3JlLWJ1aWxkZXIvc3JjL2xpYi9jb21wb25lbnRzL21hbmFnZS1zdG9yZS1wbGFuby9tYW5hZ2Utc3RvcmUtcGxhbm8tZmVlZGJhY2svbWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXlDLFNBQVMsRUFBRSxLQUFLLEVBQWlCLFlBQVksRUFBRSxNQUFNLEVBQXdCLE1BQU0sZUFBZSxDQUFDO0FBRTlKLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQTtBQUMvRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8saUJBQWlCLE1BQU0sc0JBQXNCLENBQUM7Ozs7Ozs7QUFPckQsTUFBTSxPQUFPLGlDQUFpQztJQXVFbEM7SUFDQTtJQUNBO0lBQ0E7SUF2RWMsWUFBWSxDQUFjO0lBQ1AsU0FBUyxDQUFNO0lBQzFELGlCQUFpQixHQUFRLGlCQUFpQixDQUFDO0lBQzNDLGNBQWMsR0FBUSxFQUFFLENBQUM7SUFDekIsVUFBVSxHQUFRLEVBQUUsQ0FBQztJQUNy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QyxRQUFhLEVBQUMsSUFBUTtRQUN6QyxJQUFHLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxFQUFFO1lBQ3JFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBLENBQUMsQ0FBQyxFQUFFLENBQUEsQ0FBQyxDQUFDLFNBQVMsQ0FBQztTQUNyRjthQUNJO1lBQ0gsT0FBTyxJQUFJLEVBQUUsTUFBTSxFQUFFLEtBQUssSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1NBQ3pEO0lBQ0gsQ0FBQzt3R0FwMEJVLGlDQUFpQzs0RkFBakMsaUNBQWlDLGliQ2Y5Qyw2NGhIQXl1RFU7OzRGRDF0REcsaUNBQWlDO2tCQUw3QyxTQUFTOytCQUNFLGlDQUFpQztnTEFPbkIsWUFBWTtzQkFBbkMsU0FBUzt1QkFBQyxXQUFXO2dCQUNxQixTQUFTO3NCQUFuRCxTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBNEJoQyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIENoYW5nZURldGVjdG9yUmVmLCBFbGVtZW50UmVmLCBWaWV3Q2hpbGQsIElucHV0LCBTaW1wbGVDaGFuZ2VzLCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTmdiTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XHJcbmltcG9ydCB7IFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBHbG9iYWxTdGF0ZVNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktZ2xvYmFsJztcclxuaW1wb3J0IHsgU3RvcmVCdWlsZGVyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3N0b3JlLWJ1aWxkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFNIRUxGX0NPTE9SUyB9IGZyb20gJy4uLy4uLy4uL2RhdGEvZml4dHVyZS10ZW1wbGF0ZS5kYXRhJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uUG9wdXBDb21wb25lbnQgfSBmcm9tIFwiLi4vY29uZmlybWF0aW9uLXBvcHVwL2NvbmZpcm1hdGlvbi1wb3B1cC5jb21wb25lbnRcIlxyXG5pbXBvcnQgeyB0aW1lciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgZml4dHVyZUhlYWRlckxpc3QgZnJvbSAnLi9maXh0dXJlSGVhZGVyLmpzb24nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLW1hbmFnZS1zdG9yZS1wbGFuby1mZWVkYmFja1wiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vbWFuYWdlLXN0b3JlLXBsYW5vLWZlZWRiYWNrLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmw6IFwiLi9tYW5hZ2Utc3RvcmUtcGxhbm8tZmVlZGJhY2suY29tcG9uZW50LnNjc3NcIixcclxufSlcclxuZXhwb3J0IGNsYXNzIE1hbmFnZVN0b3JlUGxhbm9GZWVkYmFja0NvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdFxyXG57XHJcbiAgQFZpZXdDaGlsZChcImJvZHlCbG9ja1wiKSBib2R5QmxvY2tSZWYhOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoXCJhY2NvcmRpb25cIiwgeyBzdGF0aWM6IGZhbHNlIH0pIGFjY29yZGlvbjogYW55O1xyXG4gIGZpeHR1cmVIZWFkZXJMaXN0OiBhbnkgPSBmaXh0dXJlSGVhZGVyTGlzdDtcclxuICBsYXlvdXRGZWVkYmFjazogYW55ID0gW107XHJcbiAgdm1GZWVkYmFjazogYW55ID0gW107XHJcbiAgb3BlbmZpeHR1cmU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIG9wZW52bTogYm9vbGVhbiA9IHRydWU7XHJcbiAgLy8gc2hlbGZEZXRhaWxzOiBhbnkgPSBbXVxyXG4gIGZpeHR1cmVJbmRleDogbnVtYmVyID0gMDtcclxuICBmaXh0dXJldGFza0luZGV4OiBudW1iZXIgPSAwO1xyXG4gIHZtdGFza0luZGV4OiBudW1iZXIgPSAwO1xyXG4gIGFwcHJvdmVkTGF5b3V0aXNzdWVzOiBudW1iZXIgPSAwO1xyXG4gIHBlbmRpbmdMYXlvdXRpc3N1ZXM6IG51bWJlciA9IDA7XHJcbiAgcGVuZGluZ0ZpeHR1cmVpc3N1ZXM6IG51bWJlciA9IDA7XHJcbiAgYXBwcm92ZWRGaXh0dXJlaXNzdWVzOiBudW1iZXIgPSAwO1xyXG4gIHRvdGFsRml4dHVyZWlzc3VlczogbnVtYmVyID0gMDtcclxuICBjb21wbGV0ZWRGaXh0dXJlOiBudW1iZXIgPSAwO1xyXG4gIHBlbmRpbmdWbWlzc3VlczogbnVtYmVyID0gMDtcclxuICBhcHByb3ZlZFZtaXNzdWVzOiBudW1iZXIgPSAwO1xyXG4gIHRvdGFsVm1pc3N1ZXM6IG51bWJlciA9IDA7XHJcbiAgY29tcGxldGVkVm06IG51bWJlciA9IDA7XHJcbiAgY29sb3JMaXN0OiBhbnkgPSB7fTtcclxuICB2bUNvbmZpZzogYW55ID0gW107XHJcbiAgLy8gc2VjdGlvbkNvbmZpZzogYW55ID0gW107XHJcbiAgLy8gc2VjdGlvbktleXM6IGFueSA9IFtdXHJcbiAgc2hsZWZDb2xvciA9IFNIRUxGX0NPTE9SUztcclxuICBsb2FkaW5nOiBib29sZWFuID0gdHJ1ZTtcclxuICBzdG9yZUZpeHR1cmVMaXN0OiBhbnkgPSBbXTtcclxuICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3QoKTtcclxuICBASW5wdXQoKSBjdXJyZW50UGxhbm86IGFueTtcclxuICBASW5wdXQoKSBzdG9yZUZlZWRiYWNrOiBhbnk7XHJcbiAgQElucHV0KCkgc2VsZWN0ZWRJc3N1ZTogYW55O1xyXG4gIEBPdXRwdXQoKSBpc0FwcHJvdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgc2VsZWN0ZWRGaXh0dXJlOiBhbnk7XHJcbiAgb3JpZ2luYWxEYXRhOiBhbnk7XHJcbiAgY2RuVXJsOiBhbnk7XHJcbiAgY3VycmVudFBsYW5vRGV0YWlsczogYW55O1xyXG4gIGRhdGFPYmplY3Q6IGFueSA9IFtcclxuICAgIC8vIHtcclxuICAgIC8vICAgRGVzY3JpcHRpb246IFwiVGFza1wiLFxyXG4gICAgLy8gICBJc3N1ZXM6IFtcclxuICAgIC8vICAgICB7IHRleHQ6IFwiTGF5b3V0IHZlcmlmaWNhdGlvblwiLCBpZDogXCJsYXlvdXRcIiB9LFxyXG4gICAgLy8gICAgIHsgdGV4dDogXCJGaXh0dXJlIHZlcmlmaWNhdGlvblwiLCBpZDogXCJmaXh0dXJlXCIgfSxcclxuICAgIC8vICAgICB7IHRleHQ6IFwiVmlzdWFsIE1lcmNoIHZlcmlmaWNhdGlvblwiLCBpZDogXCJ2bVwiIH0sXHJcbiAgICAvLyAgIF0sXHJcbiAgICAvLyB9LFxyXG4gICAge1xyXG4gICAgICBEZXNjcmlwdGlvbjogXCJTdGF0dXNcIixcclxuICAgICAgSXNzdWVzOiBbXHJcbiAgICAgICAgLy8geyB0ZXh0OiBcIk1hdGNoXCIsIGlkOiBcImNvbXBsZXRlXCIgfSxcclxuICAgICAgICAvLyB7IHRleHQ6IFwiTWlzbWF0Y2hcIiwgaWQ6IFwiaW5jb21wbGV0ZVwiIH0sXHJcbiAgICAgICAgeyB0ZXh0OiBcIkFncmVlXCIsIGlkOiBcImFncmVlXCIgfSxcclxuICAgICAgICB7IHRleHQ6IFwiRGlzYWdyZWUsIFJlZG9cIiwgaWQ6IFwiZGlzYWdyZWVcIiB9LFxyXG4gICAgICAgIHsgdGV4dDogXCJSZXZpZXcgcGVuZGluZ1wiLCBpZDogXCJwZW5kaW5nXCIgfSxcclxuICAgICAgXSxcclxuICAgIH0sXHJcbiAgICAvLyB7XHJcbiAgICAvLyAgIERlc2NyaXB0aW9uOiBcIkFwcHJvdmFsIFN0YXR1c1wiLFxyXG4gICAgLy8gICB0eXBlOiBcInNpbmdsZVwiLFxyXG4gICAgLy8gICBJc3N1ZXM6IFtcclxuICAgIC8vICAgICB7IHRleHQ6IFwiQWN0aW9uIFBlbmRpbmdcIiwgaWQ6IFwicGVuZGluZ1wiIH0sXHJcbiAgICAvLyAgICAgeyB0ZXh0OiBcIkFjdGlvbiBEb25lXCIsIGlkOiBcImFncmVlXCIgfSxcclxuICAgIC8vICAgXSxcclxuICAgIC8vIH0sXHJcbiAgXTtcclxuICAvLyBhaWNkblVybDogc3RyaW5nO1xyXG4gIHNlbGVjdGVkSW1hZ2U6IHN0cmluZztcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgYXBpU2VydmljZTogU3RvcmVCdWlsZGVyU2VydmljZSxcclxuICAgIHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBtb2RhbFNlcnZpY2U6IE5nYk1vZGFsLFxyXG4gICAgcHJpdmF0ZSBnczogR2xvYmFsU3RhdGVTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICBpZiAoY2hhbmdlc1tcImN1cnJlbnRQbGFub1wiXSkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQbGFub0RldGFpbHMgPSBjaGFuZ2VzW1wiY3VycmVudFBsYW5vXCJdLmN1cnJlbnRWYWx1ZTtcclxuICAgIH1cclxuICAgIGlmIChjaGFuZ2VzW1wic3RvcmVGZWVkYmFja1wiXSkge1xyXG4gICAgICBpZiAoY2hhbmdlc1tcInN0b3JlRmVlZGJhY2tcIl0uY3VycmVudFZhbHVlKSB7XHJcbiAgICAgICAgdGhpcy5yZXNldEluaXRpYWxWYWx1ZXMoKTtcclxuICAgICAgICB0aGlzLm9yaWdpbmFsRGF0YSA9IEpTT04ucGFyc2UoXHJcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeShjaGFuZ2VzW1wic3RvcmVGZWVkYmFja1wiXS5jdXJyZW50VmFsdWUpXHJcbiAgICAgICAgKTtcclxuICAgICAgICBsZXQgZmVlZGJhY2tEYXRhID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGNoYW5nZXNbXCJzdG9yZUZlZWRiYWNrXCJdLmN1cnJlbnRWYWx1ZSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmdldHBsYW5vRmVlZGJhY2soZmVlZGJhY2tEYXRhPy5sYXlvdXREYXRhKTtcclxuICAgICAgICB0aGlzLmdldFN0b3JlRml4dHVyZXNmZWVkYmFjayhmZWVkYmFja0RhdGE/LmZpeHR1cmVEYXRhKTtcclxuICAgICAgICB0aGlzLmdldFN0b3JlVm1mZWVkYmFjayhmZWVkYmFja0RhdGE/LlZtRGF0YSk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgZmVlZGJhY2tEYXRhPy5sYXlvdXREYXRhPy5sZW5ndGggPT09IDAgJiZcclxuICAgICAgICAgIGZlZWRiYWNrRGF0YT8uZml4dHVyZURhdGE/Lmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgICAgZmVlZGJhY2tEYXRhPy5WbURhdGE/Lmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1tcInNlbGVjdGVkSXNzdWVcIl0pIHtcclxuICAgICAgdGhpcy5yZXNldEluaXRpYWxWYWx1ZXMoKTtcclxuICAgICAgdGhpcy5zZWxlY3RlZEZpeHR1cmUgPSBjaGFuZ2VzW1wic2VsZWN0ZWRJc3N1ZVwiXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIGlmICh0aGlzLm9yaWdpbmFsRGF0YT8ubGF5b3V0RGF0YSkge1xyXG4gICAgICAgIGxldCBuZXdMYXlvdXREYXRhID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMub3JpZ2luYWxEYXRhPy5sYXlvdXREYXRhKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIG5ld0xheW91dERhdGEuZm9yRWFjaCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICBkYXRhLmFuc3dlcnMuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZWxlLmlzc3Vlcy5mb3JFYWNoKChpc3N1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZC5pbmNsdWRlcyhcIm5ld1wiKSAmJlxyXG4gICAgICAgICAgICAgICAgaXNzdWUuaXNzdWVUeXBlICE9IFwiZXh0cmFGaXh0dXJlXCJcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGlzc3VlLkRldGFpbHMgPSBbXTtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgaXNzdWUuaXNzdWVUeXBlICE9IFwiY29tbWVudHNcIiAmJlxyXG4gICAgICAgICAgICAgICAgaXNzdWUuaXNzdWVUeXBlICE9IFwiZXh0cmFGaXh0dXJlXCJcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGlzc3VlLkRldGFpbHMgPSBpc3N1ZS5EZXRhaWxzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgKHNoZWxmOiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgc2hlbGYuZml4dHVyZUlkID09PSB0aGlzLnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkLmluY2x1ZGVzKFwibmV3XCIpICYmXHJcbiAgICAgICAgICAgICAgICBpc3N1ZS5pc3N1ZVR5cGUgPT09IFwiZXh0cmFGaXh0dXJlXCJcclxuICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGlzc3VlLkRldGFpbHMgPSBpc3N1ZS5EZXRhaWxzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgICAgKGRhdGE6IGFueSkgPT5cclxuICAgICAgICAgICAgICAgICAgICBkYXRhLl9pZCA9PT0gdGhpcy5zZWxlY3RlZEZpeHR1cmU/Lmlzc3VlRGF0YT8uX2lkXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgICAhdGhpcy5zZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZC5pbmNsdWRlcyhcIm5ld1wiKSAmJlxyXG4gICAgICAgICAgICAgICAgaXNzdWUuaXNzdWVUeXBlID09PSBcImV4dHJhRml4dHVyZVwiXHJcbiAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBpc3N1ZS5EZXRhaWxzID0gW107XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZWxlLmlzc3VlcyA9IGVsZS5pc3N1ZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChpc3N1ZTogYW55KSA9PiBpc3N1ZS5EZXRhaWxzLmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgbGV0IGZpeHR1cmVjb3VudCA9IGVsZS5pc3N1ZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAgIChlbGU6IGFueSkgPT4gZWxlLmlzc3VlVHlwZSAhPSBcImV4dHJhRml4dHVyZVwiXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGlmIChmaXh0dXJlY291bnQubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIGVsZS5pc3N1ZXMgPSBlbGUuaXNzdWVzLmZpbHRlcihcclxuICAgICAgICAgICAgICAgIChpc3N1ZTogYW55KSA9PiBpc3N1ZS5pc3N1ZVR5cGUgIT0gXCJleHRyYUZpeHR1cmVcIlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG5ld0xheW91dERhdGEgPSBuZXdMYXlvdXREYXRhLmZpbHRlcigoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gIShkYXRhLmFuc3dlcnNbMF0uaXNzdWVzLmxlbmd0aCA9PT0gMCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5nZXRwbGFub0ZlZWRiYWNrKG5ld0xheW91dERhdGEpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBsZXQgZml4dHVyZUxpc3QgPSB0aGlzLm9yaWdpbmFsRGF0YT8uZml4dHVyZURhdGE/LmZpbHRlcihcclxuICAgICAgICAoZGF0YTogYW55KSA9PiBkYXRhLmZpeHR1cmVJZCA9PT0gdGhpcy5zZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoZml4dHVyZUxpc3QgJiYgZml4dHVyZUxpc3Q/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmZpeHR1cmV0YXNrSW5kZXggPSAwO1xyXG5cclxuICAgICAgICB0aGlzLmdldFN0b3JlRml4dHVyZXNmZWVkYmFjayhmaXh0dXJlTGlzdCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5nZXRTdG9yZUZpeHR1cmVzZmVlZGJhY2soW10pO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCB2bUxpc3QgPSB0aGlzLm9yaWdpbmFsRGF0YT8uVm1EYXRhPy5maWx0ZXIoXHJcbiAgICAgICAgKGRhdGE6IGFueSkgPT4gZGF0YS5maXh0dXJlSWQgPT09IHRoaXMuc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcclxuICAgICAgKTtcclxuICAgICAgaWYgKHZtTGlzdCAmJiB2bUxpc3Q/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLnZtdGFza0luZGV4ID0gMDtcclxuICAgICAgICB0aGlzLmdldFN0b3JlVm1mZWVkYmFjayh2bUxpc3QpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ2V0U3RvcmVWbWZlZWRiYWNrKFtdKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZ3MuZW52aXJvbm1lbnQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZW52KSA9PiB7XHJcbiAgICAgIGlmIChlbnYpIHtcclxuICAgICAgICB0aGlzLmNkblVybCA9IGVudi5wbGFub2dyYW1DRE47XHJcbiAgICAgICAgLy8gdGhpcy5haWNkblVybCA9IGVudi5wbGFub2dyYW1BSUNETjtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICByZXNldEluaXRpYWxWYWx1ZXMoKSB7XHJcbiAgICB0aGlzLmFwcHJvdmVkTGF5b3V0aXNzdWVzID0gMDtcclxuICAgIHRoaXMucGVuZGluZ0xheW91dGlzc3VlcyA9IDA7XHJcbiAgICB0aGlzLnBlbmRpbmdGaXh0dXJlaXNzdWVzID0gMDtcclxuICAgIHRoaXMuYXBwcm92ZWRGaXh0dXJlaXNzdWVzID0gMDtcclxuICAgIHRoaXMudG90YWxGaXh0dXJlaXNzdWVzID0gMDtcclxuICAgIHRoaXMuY29tcGxldGVkRml4dHVyZSA9IDA7XHJcbiAgICB0aGlzLnBlbmRpbmdWbWlzc3VlcyA9IDA7XHJcbiAgICB0aGlzLmFwcHJvdmVkVm1pc3N1ZXMgPSAwO1xyXG4gICAgdGhpcy50b3RhbFZtaXNzdWVzID0gMDtcclxuICAgIHRoaXMuY29tcGxldGVkVm0gPSAwO1xyXG4gIH1cclxuICB0b2dnbGVQYW5lbChpbmRleDogbnVtYmVyKSB7XHJcbiAgICB0aGlzLmxheW91dEZlZWRiYWNrLmZvckVhY2goKGl0ZW06IGFueSwgaTogYW55KSA9PiB7XHJcbiAgICAgIGl0ZW0uY29sbGFwc2VkID0gaSAhPT0gaW5kZXg7IC8vIG9ubHkgc2VsZWN0ZWQgcGFuZWwgc3RheXMgb3BlblxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHVwZGF0ZVN0eWxlKGRhdGE6IGFueSwgaTogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy5oYW5kbGVTZWN0aW9uKGRhdGEsIGkpO1xyXG4gIH1cclxuICBnZXRTdG9yZUZpeHR1cmVzZmVlZGJhY2soZml4dHVyZURhdGE6IGFueSkge1xyXG4gICAgaWYgKGZpeHR1cmVEYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMubGF5b3V0RmVlZGJhY2suZm9yRWFjaCgoZGF0YTogYW55KSA9PiB7XHJcbiAgICAgICAgZGF0YS5jb2xsYXBzZWQgPSB0cnVlO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgIHRoaXMub3BlbmZpeHR1cmUgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNvbXBsZXRlZEZpeHR1cmUgPSBmaXh0dXJlRGF0YT8uZmlsdGVyKFxyXG4gICAgICAoZGF0YTogYW55KSA9PiBkYXRhLnN0YXR1cyA9PT0gXCJjb21wbGV0ZVwiXHJcbiAgICApLmxlbmd0aDtcclxuICAgIGZpeHR1cmVEYXRhPy5mb3JFYWNoKChzaGVsZjogYW55LCBpOiBhbnkpID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHNoZWxmPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWcgJiZcclxuICAgICAgICBzaGVsZj8uRml4dHVyZURhdGE/LnNoZWxmQ29uZmlnPy5sZW5ndGggPiAwXHJcbiAgICAgICkge1xyXG4gICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnRm9ybWF0ZWQgPSB0aGlzLmZvcm1hdERhdGEoXHJcbiAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zaGVsZkNvbmZpZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbkNvbmZpZyA9IHRoaXMuc3RvcmVEYXRhKFxyXG4gICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWcsXHJcbiAgICAgICAgICBzaGVsZj8uRml4dHVyZURhdGE/LnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWxcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChzaGVsZj8uRml4dHVyZURhdGE/LnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWwgPT0gXCJMMVwiKSB7XHJcbiAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zZWN0aW9uQ29uZmlnWzBdLnByb2R1Y3RCcmFuZE5hbWUgPVxyXG4gICAgICAgICAgICBzaGVsZj8uRml4dHVyZURhdGEucHJvZHVjdEJyYW5kTmFtZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHpvbmVDb2xvcjogYW55ID0ge307XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbkNvbmZpZy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgem9uZUNvbG9yW2VsZS56b25lXSA9IHsgY29sb3I6IGVsZS5jb2xvciB9O1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnpvbmVDb2xvciA9IHpvbmVDb2xvcjtcclxuICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zZWN0aW9uS2V5cyA9IE9iamVjdC5rZXlzKFxyXG4gICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbkNvbmZpZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZEZXRhaWxzID0gc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWc7XHJcbiAgICAgICAgc2hlbGY/LmFuc3dlcnM/LmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBlbGUuaXNzdWVzID0gZWxlPy5pc3N1ZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoaXNzdWU6IGFueSkgPT4gaXNzdWUuRGV0YWlscyAmJiBpc3N1ZS5EZXRhaWxzLmxlbmd0aCA+IDBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsRml4dHVyZWlzc3VlcyA9XHJcbiAgICAgICAgICAgIHRoaXMudG90YWxGaXh0dXJlaXNzdWVzICsgZWxlPy5pc3N1ZXM/Lmxlbmd0aDtcclxuXHJcbiAgICAgICAgICBlbGU/Lmlzc3Vlcy5mb3JFYWNoKChpc3N1ZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICBpc3N1ZT8uRGV0YWlscy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5zdGF0dXMgPT09IFwicGVuZGluZ1wiKVxyXG4gICAgICAgICAgICAgICAgLmxlbmd0aCA+IDBcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgaXNzdWUuY29sbGFwc2VkID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nRml4dHVyZWlzc3VlcyA9IHRoaXMucGVuZGluZ0ZpeHR1cmVpc3N1ZXMgKyAxO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlzc3VlLmNvbGxhcHNlZCA9IHRydWU7XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuYXBwcm92ZWRGaXh0dXJlaXNzdWVzID0gdGhpcy5hcHByb3ZlZEZpeHR1cmVpc3N1ZXMgKyAxO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlzc3VlPy5EZXRhaWxzLmZvckVhY2goKG5ld3NoZWxmOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAobmV3c2hlbGY/LnNoZWxmQ29uZmlnICYmIG5ld3NoZWxmPy5zaGVsZkNvbmZpZz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgbmV3c2hlbGYuc2hlbGZDb25maWdGb3JtYXRlZCA9IHRoaXMuZm9ybWF0RGF0YShcclxuICAgICAgICAgICAgICAgICAgbmV3c2hlbGYuc2hlbGZDb25maWdcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBuZXdzaGVsZi5zZWN0aW9uQ29uZmlnID0gdGhpcy5zdG9yZURhdGEoXHJcbiAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnLFxyXG4gICAgICAgICAgICAgICAgICBzaGVsZj8uRml4dHVyZURhdGE/LnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICBpZiAoc2hlbGY/LkZpeHR1cmVEYXRhPy5wcm9kdWN0UmVzb2x1dGlvbkxldmVsID09IFwiTDFcIikge1xyXG4gICAgICAgICAgICAgICAgICBuZXdzaGVsZi5zZWN0aW9uQ29uZmlnWzBdLnByb2R1Y3RCcmFuZE5hbWUgPVxyXG4gICAgICAgICAgICAgICAgICAgIHNoZWxmPy5GaXh0dXJlRGF0YS5wcm9kdWN0QnJhbmROYW1lO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbmV3c2hlbGYuc2VjdGlvbktleXMgPSBPYmplY3Qua2V5cyhuZXdzaGVsZi5zZWN0aW9uQ29uZmlnKTtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgW1wicHJvZHVjdGNhdGVnb3J5V3JvbmdcIiwgXCJicmFuZFdyb25nXCJdLmluY2x1ZGVzKFxyXG4gICAgICAgICAgICAgICAgICAgIGlzc3VlLmlzc3VlVHlwZVxyXG4gICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZEZXRhaWxzLmZvckVhY2goKHNoZWxmOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc2hlbGZEZXRhaWxzID0gbmV3c2hlbGYuc2hlbGZDb25maWcuZmluZChcclxuICAgICAgICAgICAgICAgICAgICAgIChuZXdTaGVsZjogYW55KSA9PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdTaGVsZi5zaGVsZk51bWJlciA9PSBzaGVsZi5zaGVsZk51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzaGVsZkRldGFpbHMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHNoZWxmLm9sZFNoZWxmID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnLnB1c2goc2hlbGYpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnLnNvcnQoXHJcbiAgICAgICAgICAgICAgICAgICAgKGE6IGFueSwgYjogYW55KSA9PiBhLnNoZWxmTnVtYmVyIC0gYi5zaGVsZk51bWJlclxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbmV3c2hlbGYuc2hlbGZEZXRhaWxzID0gbmV3c2hlbGYuc2hlbGZDb25maWc7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc3RvcmVGaXh0dXJlTGlzdCA9IGZpeHR1cmVEYXRhO1xyXG4gIH1cclxuICBnZXRTdG9yZVZtZmVlZGJhY2soVm1EYXRhOiBhbnkpIHtcclxuICAgIGlmIChWbURhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5vcGVudm0gPSBmYWxzZTtcclxuICAgICAgdGhpcy5vcGVuZml4dHVyZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMub3BlbnZtKSB7XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuYWNjb3JkaW9uPy5leHBhbmQoXCJkZXRhaWxzXCIpOyAvLyAnZGV0YWlscycgaXMgdGhlIElEIG9mIHRoZSBpdGVtXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb21wbGV0ZWRWbSA9IFZtRGF0YT8uZmlsdGVyKFxyXG4gICAgICAoZGF0YTogYW55KSA9PiBkYXRhLnN0YXR1cyA9PT0gXCJjb21wbGV0ZVwiXHJcbiAgICApLmxlbmd0aDtcclxuICAgIFZtRGF0YT8uZm9yRWFjaCgoc2hlbGY6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgc2hlbGY/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZyAmJlxyXG4gICAgICAgIHNoZWxmPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDBcclxuICAgICAgKSB7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2hlbGZDb25maWdGb3JtYXRlZCA9IHRoaXMuZm9ybWF0RGF0YShcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zZWN0aW9uQ29uZmlnID0gdGhpcy5zdG9yZURhdGEoXHJcbiAgICAgICAgICBzaGVsZi5GaXh0dXJlRGF0YS5zaGVsZkNvbmZpZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgc2hlbGYuRml4dHVyZURhdGEuc2VjdGlvbktleXMgPSBPYmplY3Qua2V5cyhcclxuICAgICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNlY3Rpb25Db25maWdcclxuICAgICAgICApO1xyXG4gICAgICAgIHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmRGV0YWlscyA9IHNoZWxmLkZpeHR1cmVEYXRhLnNoZWxmQ29uZmlnO1xyXG4gICAgICAgIGxldCB2bUNvbmZpZyA9IHNoZWxmLkZpeHR1cmVEYXRhLnZtQ29uZmlnO1xyXG4gICAgICAgIHNoZWxmPy5hbnN3ZXJzLmZvckVhY2goKGVsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBlbGUuaXNzdWVzID0gZWxlPy5pc3N1ZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoaXNzdWU6IGFueSkgPT4gaXNzdWUuRGV0YWlscyAmJiBpc3N1ZS5EZXRhaWxzLmxlbmd0aCA+IDBcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLnRvdGFsVm1pc3N1ZXMgPSB0aGlzLnRvdGFsVm1pc3N1ZXMgKyBlbGU/Lmlzc3Vlcz8ubGVuZ3RoO1xyXG5cclxuICAgICAgICAgIGVsZT8uaXNzdWVzLmZvckVhY2goKGlzc3VlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIGlzc3VlPy5EZXRhaWxzLmZpbHRlcigoZGF0YTogYW55KSA9PiBkYXRhLnN0YXR1cyA9PT0gXCJwZW5kaW5nXCIpXHJcbiAgICAgICAgICAgICAgICAubGVuZ3RoID4gMFxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBpc3N1ZS5jb2xsYXBzZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdWbWlzc3VlcyA9IHRoaXMucGVuZGluZ1ZtaXNzdWVzICsgMTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpc3N1ZS5jb2xsYXBzZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuYXBwcm92ZWRWbWlzc3VlcyA9IHRoaXMuYXBwcm92ZWRWbWlzc3VlcyArIDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaXNzdWU/LkRldGFpbHMuZm9yRWFjaCgobmV3c2hlbGY6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIG5ld3NoZWxmLnZtQ29uZmlnbmV3ID0gSlNPTi5wYXJzZShcclxuICAgICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KG5ld3NoZWxmLnZtQ29uZmlnKVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgaWYgKG5ld3NoZWxmPy5zaGVsZkNvbmZpZyAmJiBuZXdzaGVsZj8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnRm9ybWF0ZWQgPSB0aGlzLmZvcm1hdERhdGEoXHJcbiAgICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNoZWxmQ29uZmlnXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgbmV3c2hlbGYuc2VjdGlvbkNvbmZpZyA9IHRoaXMuc3RvcmVEYXRhKG5ld3NoZWxmLnNoZWxmQ29uZmlnKTtcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnNlY3Rpb25LZXlzID0gT2JqZWN0LmtleXMobmV3c2hlbGYuc2VjdGlvbkNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICBuZXdzaGVsZi5zaGVsZkRldGFpbHMgPSBuZXdzaGVsZi5zaGVsZkNvbmZpZztcclxuICAgICAgICAgICAgICAgIG5ld3NoZWxmLnZtQ29uZmlnbmV3LmZvckVhY2goKHZtOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKGlzc3VlLmlzc3VlVHlwZSA9PSBcIlZtTWlzbWF0Y2hcIikge1xyXG4gICAgICAgICAgICAgICAgICAgIHZtLnN0YXJ0WVBvc2l0aW9uID0gdm0ubmV3c3RhcnRZUG9zaXRpb247XHJcbiAgICAgICAgICAgICAgICAgICAgdm0uZW5kWVBvc2l0aW9uID0gdm0ubmV3ZW5kWVBvc2l0aW9uO1xyXG4gICAgICAgICAgICAgICAgICAgIHZtLnhab25lID0gdm0ubmV3eFpvbmUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgICAgICB2bS55Wm9uZSA9IHZtLm5ld3lab25lLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgdm0ubmV3Vm0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBuZXdzaGVsZi52bUNvbmZpZ25ldy5wdXNoKC4uLnZtQ29uZmlnKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy52bUZlZWRiYWNrID0gVm1EYXRhO1xyXG4gICAgdGltZXIoMzAwMCkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIG5leHRGaXh0dXJlKGZpeHR1cmVJbmRleDogbnVtYmVyLCB0b3RhbERhdGE6IGFueSkge1xyXG4gICAgaWYgKHRvdGFsRGF0YS5sZW5ndGggPiBmaXh0dXJlSW5kZXggKyAxKSB7XHJcbiAgICAgIHRoaXMuZml4dHVyZUluZGV4ID0gZml4dHVyZUluZGV4ICsgMTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJldmlvdXNGaXh0dXJlKGZpeHR1cmVJbmRleDogbnVtYmVyLCB0b3RhbERhdGE6IGFueSkge1xyXG4gICAgaWYgKGZpeHR1cmVJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy5maXh0dXJlSW5kZXggPSBmaXh0dXJlSW5kZXggLSAxO1xyXG4gICAgfVxyXG4gIH1cclxuICBuZXh0dGFza0ZpeHR1cmUoZml4dHVyZXRhc2tJbmRleDogbnVtYmVyLCB0b3RhbERhdGE6IGFueSkge1xyXG4gICAgaWYgKHRvdGFsRGF0YS5sZW5ndGggPiBmaXh0dXJldGFza0luZGV4ICsgMSkge1xyXG4gICAgICB0aGlzLmZpeHR1cmV0YXNrSW5kZXggPSBmaXh0dXJldGFza0luZGV4ICsgMTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJldmlvdXN0YXNrVm0odm10YXNrSW5kZXg6IG51bWJlciwgdG90YWxEYXRhOiBhbnkpIHtcclxuICAgIGlmICh2bXRhc2tJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy52bXRhc2tJbmRleCA9IHZtdGFza0luZGV4IC0gMTtcclxuICAgIH1cclxuICB9XHJcbiAgbmV4dHRhc2tWbSh2bXRhc2tJbmRleDogbnVtYmVyLCB0b3RhbERhdGE6IGFueSkge1xyXG4gICAgaWYgKHRvdGFsRGF0YS5sZW5ndGggPiB2bXRhc2tJbmRleCArIDEpIHtcclxuICAgICAgdGhpcy52bXRhc2tJbmRleCA9IHZtdGFza0luZGV4ICsgMTtcclxuICAgIH1cclxuICB9XHJcbiAgcHJldmlvdXN0YXNrRml4dHVyZShmaXh0dXJldGFza0luZGV4OiBudW1iZXIsIHRvdGFsRGF0YTogYW55KSB7XHJcbiAgICBpZiAoZml4dHVyZXRhc2tJbmRleCA+IDApIHtcclxuICAgICAgdGhpcy5maXh0dXJldGFza0luZGV4ID0gZml4dHVyZXRhc2tJbmRleCAtIDE7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldHBsYW5vRmVlZGJhY2sobGF5b3V0RGF0YTogYW55KSB7XHJcbiAgICBsYXlvdXREYXRhPy5mb3JFYWNoKChkYXRhOiBhbnksIGk6IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaSA9PT0gMCkge1xyXG4gICAgICAgIGRhdGEuY29sbGFwc2VkID0gZmFsc2U7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZGF0YS5jb2xsYXBzZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGRhdGE/LmFuc3dlcnMuZm9yRWFjaCgoZWxlOiBhbnkpID0+IHtcclxuICAgICAgICBlbGUuaXNzdWVzID0gZWxlPy5pc3N1ZXMuZmlsdGVyKFxyXG4gICAgICAgICAgKGlzc3VlOiBhbnkpID0+IGlzc3VlLkRldGFpbHMgJiYgaXNzdWUuRGV0YWlscy5sZW5ndGggPiAwXHJcbiAgICAgICAgKTtcclxuICAgICAgICAvLyB0aGlzLnBlbmRpbmdMYXlvdXRpc3N1ZXMgPSBlbGU/Lmlzc3Vlcy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5zdGF0dXMgPT09ICdwZW5kaW5nJykubGVuZ3RoXHJcbiAgICAgICAgLy8gdGhpcy5hcHByb3ZlZExheW91dGlzc3VlcyA9IGVsZT8uaXNzdWVzLmZpbHRlcigoZGF0YTogYW55KSA9PiBkYXRhLnN0YXR1cyAhPT0gJ3BlbmRpbmcnKS5sZW5ndGhcclxuXHJcbiAgICAgICAgZWxlPy5pc3N1ZXMuZm9yRWFjaCgoaXNzdWU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBpc3N1ZT8uRGV0YWlscy5maWx0ZXIoKGRhdGE6IGFueSkgPT4gZGF0YS5zdGF0dXMgPT09IFwicGVuZGluZ1wiKVxyXG4gICAgICAgICAgICAgIC5sZW5ndGggPiAwXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5wZW5kaW5nTGF5b3V0aXNzdWVzID0gdGhpcy5wZW5kaW5nTGF5b3V0aXNzdWVzICsgMTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwcm92ZWRMYXlvdXRpc3N1ZXMgPSB0aGlzLmFwcHJvdmVkTGF5b3V0aXNzdWVzICsgMTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlzc3VlPy5EZXRhaWxzLmZvckVhY2goKHNoZWxmOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHNoZWxmPy5zaGVsZkNvbmZpZyAmJiBzaGVsZj8uc2hlbGZDb25maWc/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICBzaGVsZi5zaGVsZkNvbmZpZ0Zvcm1hdGVkID0gdGhpcy5mb3JtYXREYXRhKHNoZWxmLnNoZWxmQ29uZmlnKTtcclxuICAgICAgICAgICAgICBzaGVsZi5zZWN0aW9uQ29uZmlnID0gdGhpcy5zdG9yZURhdGEoc2hlbGYuc2hlbGZDb25maWcpO1xyXG4gICAgICAgICAgICAgIHNoZWxmLnNlY3Rpb25LZXlzID0gT2JqZWN0LmtleXMoc2hlbGYuc2VjdGlvbkNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgbGV0IHpvbmVDb2xvcjogYW55ID0ge307XHJcbiAgICAgICAgICAgICAgc2hlbGYuc2VjdGlvbkNvbmZpZy5mb3JFYWNoKChlbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgem9uZUNvbG9yW2VsZS56b25lXSA9IHsgY29sb3I6IGVsZS5jb2xvciB9O1xyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIHNoZWxmLnpvbmVDb2xvciA9IHpvbmVDb2xvcjtcclxuICAgICAgICAgICAgICBzaGVsZi5zaGVsZkRldGFpbHMgPSBzaGVsZi5zaGVsZkNvbmZpZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5sYXlvdXRGZWVkYmFjayA9IGxheW91dERhdGE7XHJcblxyXG4gICAgdGhpcy5jZC5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgfVxyXG4gIGZvcm1hdERhdGEoZGF0YTogYW55KSB7XHJcbiAgICBjb25zdCBncm91cGVkQXJyYXkgPSBPYmplY3QudmFsdWVzKFxyXG4gICAgICBkYXRhLnJlZHVjZSgoYWNjOiBhbnksIGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHpvbmUgPSBpdGVtLnpvbmUgfHwgXCJ1bmRlZmluZWRcIjtcclxuICAgICAgICBpZiAoIWFjY1t6b25lXSkge1xyXG4gICAgICAgICAgYWNjW3pvbmVdID0geyB6b25lLCBpdGVtczogW10gfTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYWNjW3pvbmVdLml0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgcmV0dXJuIGFjYztcclxuICAgICAgfSwge30pXHJcbiAgICApO1xyXG4gICAgcmV0dXJuIGdyb3VwZWRBcnJheTtcclxuICB9XHJcbiAgc3RvcmVEYXRhKHNoZWxmRGF0YTogYW55LCBsZXZlbD86IHN0cmluZykge1xyXG4gICAgc2hlbGZEYXRhLnNvcnQoKGE6IGFueSwgYjogYW55KSA9PiBhLnNoZWxmTnVtYmVyIC0gYi5zaGVsZk51bWJlcik7XHJcbiAgICBsZXQgY291bnQgPSAwO1xyXG4gICAgbGV0IHNlY3Rpb25Db25maWc6IGFueVtdID0gW107XHJcbiAgICAvLyBzdGFydFlQb3NpdGlvbjogZWxlLnNoZWxmTnVtYmVyLFxyXG4gICAgLy8gICAgICAgICBlbmRZUG9zaXRpb246IGVsZS5zaGVsZk51bWJlcixcclxuICAgIC8vICAgICAgICAgLi4uZWxlLFxyXG4gICAgLy8gICAgICAgICBjb2xvcjogdGhpcy5zaGxlZkNvbG9yW2NvdW50XSxcclxuICAgIHNoZWxmRGF0YS5mb3JFYWNoKChzaGVsZjogYW55KSA9PiB7XHJcbiAgICAgIGxldCBnZXRTZWN0aW9uID0gc2VjdGlvbkNvbmZpZy5maWx0ZXIoKGVsZSkgPT4gZWxlLnpvbmUgPT0gc2hlbGYuem9uZSk7XHJcbiAgICAgIGlmICghZ2V0U2VjdGlvbi5sZW5ndGggfHwgKCFzaGVsZi56b25lICYmIGxldmVsID09IFwiTDJcIikpIHtcclxuICAgICAgICBzZWN0aW9uQ29uZmlnLnB1c2goe1xyXG4gICAgICAgICAgLi4uc2hlbGYsXHJcbiAgICAgICAgICBzdGFydFlQb3NpdGlvbjogc2hlbGYuc2hlbGZOdW1iZXIsXHJcbiAgICAgICAgICBlbmRZUG9zaXRpb246IHNoZWxmLnNoZWxmTnVtYmVyLFxyXG4gICAgICAgICAgY29sb3I6IHRoaXMuc2hsZWZDb2xvcltjb3VudF0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY291bnQrKztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBnZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoIC0gMV0uZW5kWVBvc2l0aW9uICsgMSA9PVxyXG4gICAgICAgICAgc2hlbGYuc2hlbGZOdW1iZXJcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGdldFNlY3Rpb25bZ2V0U2VjdGlvbi5sZW5ndGggLSAxXS5lbmRZUG9zaXRpb24gPSBzaGVsZi5zaGVsZk51bWJlcjtcclxuICAgICAgICAgIGdldFNlY3Rpb25bZ2V0U2VjdGlvbi5sZW5ndGggLSAxXS5wcm9kdWN0QnJhbmROYW1lID0gW1xyXG4gICAgICAgICAgICAuLi5nZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoIC0gMV0ucHJvZHVjdEJyYW5kTmFtZSxcclxuICAgICAgICAgICAgLi4uc2hlbGYucHJvZHVjdEJyYW5kTmFtZSxcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgICBnZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoIC0gMV0ucHJvZHVjdEJyYW5kTmFtZSA9IFtcclxuICAgICAgICAgICAgLi4ubmV3IFNldChcclxuICAgICAgICAgICAgICBnZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoIC0gMV0ucHJvZHVjdEJyYW5kTmFtZS5tYXAoXHJcbiAgICAgICAgICAgICAgICAoZWxlOiBhbnkpID0+IGVsZVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNlY3Rpb25Db25maWcucHVzaCh7XHJcbiAgICAgICAgICAgIC4uLnNoZWxmLFxyXG4gICAgICAgICAgICBzdGFydFlQb3NpdGlvbjogc2hlbGYuc2hlbGZOdW1iZXIsXHJcbiAgICAgICAgICAgIGVuZFlQb3NpdGlvbjogc2hlbGYuc2hlbGZOdW1iZXIsXHJcbiAgICAgICAgICAgIGNvbG9yOiBnZXRTZWN0aW9uW2dldFNlY3Rpb24ubGVuZ3RoIC0gMV0uY29sb3IsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIHRoaXMuaGFuZGxldm1Qb3NpdGlvbihzZWN0aW9uQ29uZmlnKTtcclxuICAgIC8vIHRoaXMuaGFuZGxlU2VjdGlvbihzZWN0aW9uQ29uZmlnKTtcclxuICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgcmV0dXJuIHNlY3Rpb25Db25maWc7XHJcbiAgfVxyXG5cclxuICBjb25maXJtYXRpb24oXHJcbiAgICB0eXBlOiBhbnksXHJcbiAgICBfaWQ6IGFueSxcclxuICAgIGFuc3dlcklkPzogYW55LFxyXG4gICAgaXNzdWVJZD86IGFueSxcclxuICAgIERldGFpbHNJZD86IGFueSxcclxuICAgIHRhc2tUeXBlPzogYW55LFxyXG4gICAgaXNzdWVUeXBlPzogYW55LFxyXG4gICAgZGF0YT86YW55XHJcbiAgKSB7XHJcbiAgICBsZXQgcGF5bG9hZCA9IHtcclxuICAgICAgX2lkOiBfaWQsXHJcbiAgICAgIGFuc3dlcklkOiBhbnN3ZXJJZCxcclxuICAgICAgaXNzdWVJZDogaXNzdWVJZCxcclxuICAgICAgRGV0YWlsc0lkOiBEZXRhaWxzSWQsXHJcbiAgICAgIHRhc2tUeXBlOiB0YXNrVHlwZSxcclxuICAgICAgaXNzdWVUeXBlOiBpc3N1ZVR5cGUsXHJcbiAgICAgIHBsYW5vSWQ6IHRoaXMuY3VycmVudFBsYW5vRGV0YWlscz8ucGxhbm9JZCxcclxuICAgICAgZmxvb3JJZDogdGhpcy5jdXJyZW50UGxhbm9EZXRhaWxzPy5faWQsXHJcbiAgICB9O1xyXG4gICAgY29uc3QgbW9kYWxSZWYgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKENvbmZpcm1hdGlvblBvcHVwQ29tcG9uZW50LCB7XHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICBzaXplOiBcIm1kXCIsXHJcbiAgICAgIHNjcm9sbGFibGU6IHRydWUsXHJcbiAgICAgIGJhY2tkcm9wOiBcInN0YXRpY1wiLFxyXG4gICAgICB3aW5kb3dDbGFzczogXCJjdXN0b20taGVpZ2h0LW1vZGFsXCIsIC8vIDwtLSBBZGQgYSBjdXN0b20gY2xhc3MgaGVyZVxyXG4gICAgfSk7XHJcbiAgICBtb2RhbFJlZi5jb21wb25lbnRJbnN0YW5jZS50eXBlID0gdHlwZTtcclxuICAgIG1vZGFsUmVmLmNvbXBvbmVudEluc3RhbmNlLmlucHV0RGF0YSA9IHBheWxvYWQ7XHJcbiAgICBtb2RhbFJlZi5yZXN1bHQudGhlbigocmVzdWx0KSA9PiB7XHJcbiAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSBcInN1Ym1pdFwiKSB7XHJcbiAgICAgICAgcmVzdWx0LmZpeHR1cmVBaURldGFpbHMgPSBkYXRhO1xyXG4gICAgICAgIHRoaXMuaXNBcHByb3ZlZC5lbWl0KHJlc3VsdCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYocmVzdWx0ID09ICdlZGl0Jykge1xyXG4gICAgICAgIGRhdGEudGFza1R5cGUgPSB0YXNrVHlwZTtcclxuICAgICAgICByZXN1bHQgPSB7XHJcbiAgICAgICAgICBtZXNzYWdlOidlZGl0JyxcclxuICAgICAgICAgIGRhdGE6ZGF0YVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzQXBwcm92ZWQuZW1pdChyZXN1bHQpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmVsb2FkKCkge1xyXG4gICAgbGV0IHJlc3VsdCA9IHtcclxuICAgICAgcmVsb2FkOiB0cnVlLFxyXG4gICAgfTtcclxuICAgIHRoaXMuaXNBcHByb3ZlZC5lbWl0KHJlc3VsdCk7XHJcbiAgfVxyXG4gIGFwcGx5RmlsdGVycyhldmVudDogYW55KSB7XHJcbiAgICBsZXQgcmVzdWx0OiBhbnkgPSB7fTtcclxuICAgIGlmIChldmVudD8ubGVuZ3RoKSB7XHJcbiAgICAgIGV2ZW50LmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChlbGVtZW50LkRlc2NyaXB0aW9uID09PSBcIlRhc2tcIikge1xyXG4gICAgICAgICAgcmVzdWx0LmZpbHRlckJ5VGFzayA9IGVsZW1lbnQuSXNzdWVzLm1hcCgodmFsOiBhbnkpID0+IHZhbD8uaWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZWxlbWVudC5EZXNjcmlwdGlvbiA9PT0gXCJTdGF0dXNcIikge1xyXG4gICAgICAgICAgcmVzdWx0LmZpbHRlckJ5QXBwcm92YWxTdGF0dXMgPSBlbGVtZW50Lklzc3Vlcy5tYXAoKHZhbDogYW55KSA9PiB2YWw/LmlkKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuRGVzY3JpcHRpb24gPT09IFwiQXBwcm92YWwgU3RhdHVzXCIpIHtcclxuICAgICAgICAgIHJlc3VsdC5maWx0ZXJCeUFwcHJvdmFsU3RhdHVzID0gZWxlbWVudC5Jc3N1ZXMuaWRcclxuICAgICAgICAgICAgPyBlbGVtZW50Lklzc3Vlcy5pZFxyXG4gICAgICAgICAgICA6IFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHJlc3VsdC5maWx0ZXJCeUFwcHJvdmFsU3RhdHVzPy5sZW5ndGggPT09IDAgJiZcclxuICAgICAgICByZXN1bHQuZmlsdGVyQnlTdGF0dXM/Lmxlbmd0aCA9PT0gMCAmJlxyXG4gICAgICAgIHJlc3VsdC5maWx0ZXJCeVRhc2s/Lmxlbmd0aCA9PT0gMFxyXG4gICAgICApIHtcclxuICAgICAgICByZXN1bHQucmVsb2FkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmlzQXBwcm92ZWQuZW1pdChyZXN1bHQpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmlzQXBwcm92ZWQuZW1pdChyZXN1bHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaGFuZGxldm1Qb3NpdGlvbih2bURhdGE6IGFueSwgaTogYW55KSB7XHJcbiAgICBjb25zdCB2aWV3UG9ydCA9IHRoaXMuYm9keUJsb2NrUmVmPy5uYXRpdmVFbGVtZW50IGFzIEhUTUxFbGVtZW50O1xyXG4gICAgY29uc3QgYm9keUhlaWdodCA9IHZpZXdQb3J0Py5vZmZzZXRIZWlnaHQ7XHJcbiAgICBjb25zdCBib2R5V2lkdGggPSB2aWV3UG9ydD8ub2Zmc2V0V2lkdGg7XHJcbiAgICBsZXQgc3R5bGU7XHJcbiAgICAvLyB0aGlzLnZtQ29uZmlnLmZvckVhY2goKGU6IGFueSwgaTogYW55KSA9PiB7XHJcbiAgICBsZXQgc3RhcnRTaGVsZiA9IHZtRGF0YT8uc3RhcnRZUG9zaXRpb24gPz8gMTtcclxuICAgIGxldCBlbmRTaGVsZiA9IHZtRGF0YT8uZW5kWVBvc2l0aW9uID8/IDE7XHJcbiAgICBjb25zdCB2bSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidm1cIiArIGkpO1xyXG4gICAgaWYgKCF2bSkgcmV0dXJuO1xyXG5cclxuICAgIGxldCB3aWR0aCA9IDEwMDtcclxuICAgIGxldCBoZWlnaHQgPSAxMDA7XHJcbiAgICBsZXQgeCA9IDA7XHJcbiAgICBsZXQgeSA9IDA7XHJcblxyXG4gICAgbGV0IHlTdGFydCA9IDA7XHJcbiAgICBmb3IgKGxldCBrID0gMDsgayA8IHN0YXJ0U2hlbGYgLSAxOyBrKyspIHtcclxuICAgICAgY29uc3Qgc2hlbGYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInNoZWxmXCIgKyBrKSBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgaWYgKCFzaGVsZikgcmV0dXJuO1xyXG5cclxuICAgICAgeVN0YXJ0ICs9IHNoZWxmLm9mZnNldEhlaWdodDtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgcGxhY2VtZW50SGVpZ2h0ID0gMDtcclxuICAgIGZvciAobGV0IGsgPSBzdGFydFNoZWxmIC0gMTsgayA8IGVuZFNoZWxmOyBrKyspIHtcclxuICAgICAgY29uc3QgcyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hlbGZcIiArIGspIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoIXMpIHJldHVybjtcclxuICAgICAgcGxhY2VtZW50SGVpZ2h0ICs9IHMub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIHN3aXRjaCAodm1EYXRhPy54Wm9uZSkge1xyXG4gICAgICBjYXNlIFwibGVmdFwiOlxyXG4gICAgICAgIHggPSAwO1xyXG4gICAgICAgIHdpZHRoID0gMTAwO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwicmlnaHRcIjpcclxuICAgICAgICB3aWR0aCA9IDEwMDtcclxuICAgICAgICB4ID0gYm9keVdpZHRoIC0gd2lkdGg7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJtaWRkbGVcIjpcclxuICAgICAgICB3aWR0aCA9IDEwMDtcclxuICAgICAgICB4ID0gKGJvZHlXaWR0aCAtIHdpZHRoKSAvIDI7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJzdHJldGNoXCI6XHJcbiAgICAgICAgd2lkdGggPSBib2R5V2lkdGg7XHJcbiAgICAgICAgeCA9IDA7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoICh2bURhdGE/Lnlab25lKSB7XHJcbiAgICAgIGNhc2UgXCJ0b3BcIjpcclxuICAgICAgICBoZWlnaHQgPSBwbGFjZW1lbnRIZWlnaHQgPCAxMDAgPyBwbGFjZW1lbnRIZWlnaHQgLSAyMCA6IDEwMDtcclxuICAgICAgICB5ID0geVN0YXJ0O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIFwibWlkZGxlXCI6XHJcbiAgICAgICAgaGVpZ2h0ID0gcGxhY2VtZW50SGVpZ2h0IDwgMTAwID8gcGxhY2VtZW50SGVpZ2h0IC0gMjAgOiAxMDA7XHJcbiAgICAgICAgeSA9IChwbGFjZW1lbnRIZWlnaHQgLSBoZWlnaHQpIC8gMiArIHlTdGFydDtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSBcImJvdHRvbVwiOlxyXG4gICAgICAgIGhlaWdodCA9IHBsYWNlbWVudEhlaWdodCA8IDEwMCA/IHBsYWNlbWVudEhlaWdodCAtIDIwIDogMTAwO1xyXG4gICAgICAgIHkgPSBwbGFjZW1lbnRIZWlnaHQgLSBoZWlnaHQgKyB5U3RhcnQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgXCJzdHJldGNoXCI6XHJcbiAgICAgICAgaGVpZ2h0ID0gcGxhY2VtZW50SGVpZ2h0O1xyXG4gICAgICAgIHkgPSB5U3RhcnQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHZtRGF0YS5uZXdWbSkge1xyXG4gICAgICBzdHlsZSA9IGB3aWR0aDoke3dpZHRofXB4O2hlaWdodDoke2hlaWdodH1weDt0cmFuc2Zvcm06dHJhbnNsYXRlKCR7eH1weCwgJHt5fXB4KTt6LWluZGV4OjI7YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHN0eWxlID0gYHdpZHRoOiR7d2lkdGh9cHg7aGVpZ2h0OiR7aGVpZ2h0fXB4O3RyYW5zZm9ybTp0cmFuc2xhdGUoJHt4fXB4LCAke3l9cHgpO2A7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHN0eWxlO1xyXG4gICAgLy8gfSk7XHJcbiAgfVxyXG4gIGhhbmRsZVNlY3Rpb24oc2VjdGlvbkNvbmZpZzogYW55LCBpOiBhbnkpIHtcclxuICAgIGNvbnN0IHZpZXdQb3J0ID0gdGhpcy5ib2R5QmxvY2tSZWY/Lm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICBjb25zdCBib2R5SGVpZ2h0ID0gdmlld1BvcnQ/Lm9mZnNldEhlaWdodDtcclxuICAgIGNvbnN0IGJvZHlXaWR0aCA9IHZpZXdQb3J0Py5vZmZzZXRXaWR0aDtcclxuXHJcbiAgICBsZXQgc3R5bGU6IGFueTtcclxuICAgIC8vIE9iamVjdC5rZXlzKHNlY3Rpb25Db25maWcpLmZvckVhY2goKGU6IGFueSwgaTogYW55KSA9PiB7XHJcbiAgICBsZXQgc3RhcnRTaGVsZiA9IHNlY3Rpb25Db25maWc/LnN0YXJ0WVBvc2l0aW9uID8/IDE7XHJcbiAgICBsZXQgZW5kU2hlbGYgPSBzZWN0aW9uQ29uZmlnPy5lbmRZUG9zaXRpb24gPz8gc2VjdGlvbkNvbmZpZy5sZW5ndGg7XHJcbiAgICBjb25zdCBzZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWN0aW9uXCIgKyBpKTtcclxuICAgIGlmICghc2VjdGlvbikgcmV0dXJuO1xyXG5cclxuICAgIGxldCB3aWR0aCA9IDEwMDtcclxuICAgIGxldCBoZWlnaHQgPSA1MDtcclxuICAgIGxldCB4ID0gMDtcclxuICAgIGxldCB5ID0gMDtcclxuXHJcbiAgICBsZXQgeVN0YXJ0ID0gMDtcclxuICAgIGZvciAobGV0IGsgPSAwOyBrIDwgc3RhcnRTaGVsZiAtIDE7IGsrKykge1xyXG4gICAgICBjb25zdCBzaGVsZiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2hlbGZcIiArIGspIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICBpZiAoIXNoZWxmKSByZXR1cm47XHJcblxyXG4gICAgICB5U3RhcnQgKz0gc2hlbGYub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIGxldCBwbGFjZW1lbnRIZWlnaHQgPSAwO1xyXG4gICAgZm9yIChsZXQgayA9IHN0YXJ0U2hlbGYgLSAxOyBrIDwgZW5kU2hlbGY7IGsrKykge1xyXG4gICAgICBjb25zdCBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaGVsZlwiICsgaykgYXMgSFRNTEVsZW1lbnQ7XHJcblxyXG4gICAgICBpZiAoIXMpIHJldHVybjtcclxuICAgICAgcGxhY2VtZW50SGVpZ2h0ICs9IHMub2Zmc2V0SGVpZ2h0O1xyXG4gICAgfVxyXG4gICAgeCA9IDEwO1xyXG4gICAgaGVpZ2h0ID0gcGxhY2VtZW50SGVpZ2h0IDwgMTAwID8gNDggOiA1MDtcclxuICAgIC8vIGhlaWdodCA9IDUwO1xyXG4gICAgeSA9IChwbGFjZW1lbnRIZWlnaHQgLSBoZWlnaHQpIC8gMiArIHlTdGFydDtcclxuXHJcbiAgICBzdHlsZSA9IGB3aWR0aDoke3dpZHRofXB4O2hlaWdodDoke2hlaWdodH1weDt0cmFuc2Zvcm06dHJhbnNsYXRlKCR7eH1weCwgJHt5fXB4KWA7XHJcbiAgICAvLyBsZXQgdm1EZXRhaWxzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYHZtLXBsYWNlaG9sZGVyJHtpfWApO1xyXG4gICAgLy8gaWYgKHZtRGV0YWlscykge1xyXG4gICAgLy8gICB2bURldGFpbHMuc3R5bGUuYm9yZGVyID0gYDFweCBzb2xpZCAke3RoaXMuc2hsZWZDb2xvcltpXS5ib3JkZXJ9YDtcclxuICAgIC8vIH1cclxuICAgIC8vIHN0eWxlLnB1c2goe3pvbmU6ZSxzdHlsZTpzdHlsZUxpc3R9KVxyXG4gICAgLy8gfSk7XHJcbiAgICByZXR1cm4gc3R5bGU7XHJcbiAgfVxyXG5cclxuICBnZXRTdGFydFBvc2l0aW9uKHNoZWxmTnVtYmVyOiBudW1iZXIsIHpvbmU6IGFueSwgc2hlbGZEZXRhaWxzOiBhbnkpIHtcclxuICAgIHNoZWxmRGV0YWlscyA9IHNoZWxmRGV0YWlscy5maW5kKFxyXG4gICAgICAoZWxlOiBhbnkpID0+IGVsZS56b25lID09IHpvbmUgJiYgZWxlLnN0YXJ0WVBvc2l0aW9uID09IHNoZWxmTnVtYmVyXHJcbiAgICApO1xyXG4gICAgaWYgKHNoZWxmRGV0YWlscykge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgZ2V0RW5kUG9zaXRpb24oc2hlbGZOdW1iZXI6IG51bWJlciwgem9uZTogYW55LCBzaGVsZkRldGFpbHM6IGFueSkge1xyXG4gICAgc2hlbGZEZXRhaWxzID0gc2hlbGZEZXRhaWxzLmZpbmQoXHJcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlLnpvbmUgPT0gem9uZSAmJiBlbGUuZW5kWVBvc2l0aW9uID09IHNoZWxmTnVtYmVyXHJcbiAgICApO1xyXG4gICAgaWYgKHNoZWxmRGV0YWlscykge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgZ2V0TWlkUG9zaXRpb24oc2hlbGZOdW1iZXI6IG51bWJlciwgem9uZTogYW55LCBzaGVsZkRldGFpbHM6IGFueSkge1xyXG4gICAgc2hlbGZEZXRhaWxzID0gc2hlbGZEZXRhaWxzLmZpbmQoXHJcbiAgICAgIChlbGU6IGFueSkgPT4gZWxlLnpvbmUgPT0gem9uZSAmJiBlbGUuZW5kWVBvc2l0aW9uID49IHNoZWxmTnVtYmVyXHJcbiAgICApO1xyXG4gICAgaWYgKHNoZWxmRGV0YWlscykge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VHlwZShkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIGRhdGE/LmZpeHR1cmVBSURhdGE/LnZtQ29uZmlnPy5sZW5ndGhcclxuICAgICAgPyBkYXRhPy5maXh0dXJlQUlEYXRhPy52bUNvbmZpZ1xyXG4gICAgICAgICAgPy5tYXAoKGVsZTogYW55KSA9PiBlbGUudm1UeXBlKVxyXG4gICAgICAgICAgLmZpbHRlcigobmFtZTogc3RyaW5nKSA9PiAhIW5hbWUpXHJcbiAgICAgICAgICA/LnRvU3RyaW5nKCkgPz8gXCItLVwiXHJcbiAgICAgIDogXCItLVwiO1xyXG4gIH1cclxuXHJcbiAgZ2V0TmFtZShkYXRhOmFueSkge1xyXG4gICAgcmV0dXJuIGRhdGE/LmZpeHR1cmVBSURhdGE/LnZtQ29uZmlnPy5sZW5ndGhcclxuICAgICAgPyBkYXRhPy5maXh0dXJlQUlEYXRhLnZtQ29uZmlnXHJcbiAgICAgICAgICAubWFwKChlbGU6IGFueSkgPT4gZWxlLnZtTmFtZT8udHJpbT8uKCkpXHJcbiAgICAgICAgICAuZmlsdGVyKChuYW1lOiBzdHJpbmcpID0+ICEhbmFtZSlcclxuICAgICAgICAgIC5qb2luKFwiLCBcIikgfHwgXCItLVwiXHJcbiAgICAgIDogXCItLVwiO1xyXG4gIH1cclxuXHJcbiAgY29tcGFyZVR5cGUoZGF0YTphbnkpIHtcclxuICAgIGxldCBzdHJpbmcxID0gZGF0YT8uZml4dHVyZUFJRGF0YT8udm1Db25maWc/Lmxlbmd0aFxyXG4gICAgICA/IGRhdGE/LmZpeHR1cmVBSURhdGE/LnZtQ29uZmlnPy5tYXAoKGVsZTogYW55KSA9PiBlbGUudm1UeXBlKT8udG9TdHJpbmcoKVxyXG4gICAgICA6IFwiLS1cIjtcclxuICAgIGxldCBzdHJpbmcyID0gdGhpcy5zZWxlY3RlZEZpeHR1cmU/LnZtQ29uZmlnXHJcbiAgICAgID8ubWFwKCh2bTogYW55KSA9PiB2bS52bVR5cGUpXHJcbiAgICAgID8udG9TdHJpbmcoKTtcclxuICAgIGNvbnN0IGFyckEgPSBzdHJpbmcxXHJcbiAgICAgID8uc3BsaXQoXCIsXCIpXHJcbiAgICAgID8ubWFwKChzOiBhbnkpID0+IHMudHJpbSgpKVxyXG4gICAgICA/LnNvcnQoKTtcclxuICAgIGNvbnN0IGFyckIgPSBzdHJpbmcyXHJcbiAgICAgID8uc3BsaXQoXCIsXCIpXHJcbiAgICAgID8ubWFwKChzOiBhbnkpID0+IHMudHJpbSgpKVxyXG4gICAgICA/LnNvcnQoKTtcclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhcnJBKSAhPT0gSlNPTi5zdHJpbmdpZnkoYXJyQikgPyBcIiNiNDIzMThcIiA6IFwiXCI7XHJcbiAgfVxyXG5cclxuICBjb21wYXJlTmFtZShkYXRhOmFueSkge1xyXG4gICAgbGV0IHN0cmluZzEgPSBkYXRhPy5maXh0dXJlQUlEYXRhPy52bUNvbmZpZz8ubGVuZ3RoXHJcbiAgICAgID8gZGF0YT8uZml4dHVyZUFJRGF0YT8udm1Db25maWdcclxuICAgICAgICAgID8ubWFwKChlbGU6IGFueSkgPT4gZWxlLnZtTmFtZSlcclxuICAgICAgICAgID8udG9TdHJpbmcoKVxyXG4gICAgICA6IFwiLS1cIjtcclxuICAgIGxldCBzdHJpbmcyID0gdGhpcy5zZWxlY3RlZEZpeHR1cmU/LnZtQ29uZmlnXHJcbiAgICAgID8ubWFwKCh2bTogYW55KSA9PiB2bS52bU5hbWUpXHJcbiAgICAgID8udG9TdHJpbmcoKTtcclxuICAgIGNvbnN0IGFyckEgPSBzdHJpbmcxXHJcbiAgICAgID8uc3BsaXQoXCIsXCIpXHJcbiAgICAgID8ubWFwKChzOiBhbnkpID0+IHMudHJpbSgpKVxyXG4gICAgICA/LnNvcnQoKTtcclxuICAgIGNvbnN0IGFyckIgPSBzdHJpbmcyXHJcbiAgICAgID8uc3BsaXQoXCIsXCIpXHJcbiAgICAgID8ubWFwKChzOiBhbnkpID0+IHMudHJpbSgpKVxyXG4gICAgICA/LnNvcnQoKTtcclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShhcnJBKSAhPT0gSlNPTi5zdHJpbmdpZnkoYXJyQikgPyBcIiNiNDIzMThcIiA6IFwiXCI7XHJcbiAgfVxyXG5cclxuICBvcGVuUG9wdXAoaW1nOiBhbnkpIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRJbWFnZSA9IHRoaXMuY2RuVXJsICsgaW1nO1xyXG4gIH1cclxuXHJcbiAgY2xvc2VQb3B1cChldmVudD86IEV2ZW50KSB7XHJcbiAgICBpZiAoZXZlbnQpIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAvLyBwcmV2ZW50cyBjbGljayBidWJibGluZ1xyXG4gICAgdGhpcy5zZWxlY3RlZEltYWdlID0gXCJcIjtcclxuICB9XHJcblxyXG4gIG1hdGNoRml4dHVyZUNhdGVnb3J5KGNhdGVnb3J5OiBhbnksZGF0YTphbnkpIHtcclxuICAgIGlmKGRhdGE/LmhlYWRlcj8ubGFiZWwgJiYgdGhpcy5maXh0dXJlSGVhZGVyTGlzdFtkYXRhPy5oZWFkZXI/LmxhYmVsXSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5maXh0dXJlSGVhZGVyTGlzdFtkYXRhPy5oZWFkZXIubGFiZWxdLmluY2x1ZGVzKGNhdGVnb3J5KT8gXCJcIjogXCIjYjQyMzE4XCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmV0dXJuIGRhdGE/LmhlYWRlcj8ubGFiZWwgPT0gY2F0ZWdvcnkgPyBcIlwiIDogXCIjYjQyMzE4XCI7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4iLCI8c2VjdGlvbiAqbmdJZj1cImxvYWRpbmdcIj5cclxuICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPlxyXG5cclxuPHNlY3Rpb24gKm5nSWY9XCIhbG9hZGluZ1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYm9yZGVyLWJvdHRvbVwiPlxyXG4gICAgPGRpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInN0b3JlUmVzcG9uc2VcIj5TdG9yZSByZXNwb25zZTwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibm9ybWFsVGV4dCBtYi01XCI+Q2xpY2sgYSBmaXh0dXJlIG9yIHZpZXcgYWxsPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtdC00XCI+XHJcbiAgICAgIDxidXR0b24gKm5nSWY9XCJzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiIChjbGljayk9XCJyZWxvYWQoKVwiICBjbGFzcz1cImJ0biBidG4tbGlnaHQgdGV4dC1wcmltYXJ5IGJvcmRlci0wIHB4LTMgcHktMlwiXHJcbiAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjZWFmNmZmOyBib3JkZXItcmFkaXVzOiAxcmVtO1wiPlxyXG4gICAgICAgIENsZWFyIEZpbHRlclxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPGxpYi1maWx0ZXJzICpuZ0lmPVwiIXNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCIgW2RhdGFPYmplY3RdPVwiZGF0YU9iamVjdFwiIChhcHBsaWVkRmlsdGVycyk9XCJhcHBseUZpbHRlcnMoJGV2ZW50KVwiPjwvbGliLWZpbHRlcnM+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cInRydWVcIiBjbGFzcz1cIm10LTVcIiAqbmdJZj1cInZtRmVlZGJhY2s/Lmxlbmd0aD4wXCI+XHJcbiAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJkZXRhaWxzXCIgW2NvbGxhcHNlZF09XCJvcGVudm1cIiBjbGFzcz1cIm1iLTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYWluaGVhZGluZyBwLTBcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMiBsYXlvdXQtTGJlbFwiPlxyXG4gICAgICAgICAgICAgIDxkaXY+Vm0gdmVyaWZpY2F0aW9uIGFzc2lnbmVkPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+e3t2bUZlZWRiYWNrWzBdPy50YXNrRGF0YT8uY3JlYXRlZEF0IHxkYXRlOiAnaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319PC9kaXY+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHkgY2xhc3M9XCJwcy0wIHBlLTBcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtZGl2aWRlciBtdC0zIG1zLTVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy50YXNrRGF0YT8uY3JlYXRlZEJ5TmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy50YXNrRGF0YT8uY3JlYXRlZEF0IHxkYXRlOiAnaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIEFzc2lnbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy50YXNrRGF0YT8udXNlck5hbWUhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaC1kaXZpZGVyIG10LTMgbXMtNVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LnRhc2tEYXRhPy51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy50YXNrRGF0YT8uc3VibWl0VGltZV9zdHJpbmd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBBc3NpZ25lZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXMtM1wiICpuZ0lmPVwiIXNlbGVjdGVkRml4dHVyZT8uZml4dHVyZUlkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBwLTMgbWUtNFwiICpuZ0lmPVwiY29tcGxldGVkVm09PT12bUZlZWRiYWNrLmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwIDNMNC41IDguNUwyIDZcIiBzdHJva2U9XCIjMTJCNzZBXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPlZtIG1hdGNoZWQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kYW5nZXIgcC0zIG1lLTRcIiAqbmdJZj1cImNvbXBsZXRlZFZtIT09dm1GZWVkYmFjay5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNiA0VjZNNiA4SDYuMDA1TTExIDZDMTEgOC43NjE0MiA4Ljc2MTQyIDExIDYgMTFDMy4yMzg1OCAxMSAxIDguNzYxNDIgMSA2QzEgMy4yMzg1OCAzLjIzODU4IDEgNiAxQzguNzYxNDIgMSAxMSAzLjIzODU4IDExIDZaXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNGMDQ0MzhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5WbSBtaXNtYXRjaDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgcC0zXCIgKm5nSWY9XCJwZW5kaW5nVm1pc3N1ZXM+MFwiPlxyXG4gICAgICAgICAgICAgICAgICB7e3BlbmRpbmdWbWlzc3Vlc319L3t7dG90YWxWbWlzc3Vlc319IGFjdGlvbiBwZW5kaW5nXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIHAtM1wiICpuZ0lmPVwiYXBwcm92ZWRWbWlzc3Vlcz4wJiZwZW5kaW5nVm1pc3N1ZXM9PT0wXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7YXBwcm92ZWRWbWlzc3Vlc319L3t7dG90YWxWbWlzc3Vlc319IGFjdGlvbiBkb25lXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJwcmV2aW91c3Rhc2tWbSh2bXRhc2tJbmRleCx2bUZlZWRiYWNrKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwidm10YXNrSW5kZXhcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDZMOSAxMkwxNSAxOFwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIXZtdGFza0luZGV4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA2TDkgMTJMMTUgMThcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7IHZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZU5hbWV9fSAtIHt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlV2lkdGg/LnZhbHVlfX0ge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udW5pdH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICB7e3ZtdGFza0luZGV4KzF9fS97e3ZtRmVlZGJhY2subGVuZ3RofX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1cnNvci1wb2ludGVyXCIgKGNsaWNrKT1cIm5leHR0YXNrVm0odm10YXNrSW5kZXgsdm1GZWVkYmFjaylcIj5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cInZtRmVlZGJhY2subGVuZ3RoPnZtdGFza0luZGV4KzFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgMThMMTUgMTJMOSA2XCIgc3Ryb2tlPVwiIzAwOUJGM1wiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiKHZtRmVlZGJhY2subGVuZ3RoKT09PSh2bXRhc2tJbmRleCsxKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAxOEwxNSAxMkw5IDZcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kSW1nIG10LTQgcHMtMyBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5GaXh0dXJlIG5hbWU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+Rml4dHVyZSBUeXBlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhdGVnb3J5fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udmFsdWUhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5TaXplIChXaWR0aCk6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udW5pdH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cInZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VG90YWwgc2hlbHZlczo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWc/Lmxlbmd0aH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2FwYWNpdHlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VG90YWwgcHJvZHVjdCBjYXBhY2l0eTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhcGFjaXR5fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIFBsYW5vZ3JhbSBkZXNpZ25cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgIEZpeHR1cmUgZGVzaWduZWQgYnkgdGhlIHBsYW5vZ3JhbSB0ZWFtXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWxsLXZpZXdwb3J0IHctMTAwIG10LTVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJoZWFkZXItYmxvY2tcIiBjbGFzcz1cImhlYWRlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmhlYWRlcj8ubGFiZWwgPz8gJyd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgI2JvZHlCbG9jayBpZD1cImJvZHlCbG9ja1wiIGNsYXNzPVwiYm9keS1ibG9jayB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZtIG9mIHZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8udm1Db25maWc7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIid2bScgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiIFtzdHlsZV09XCJoYW5kbGV2bVBvc2l0aW9uKHZtLGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2bS1wbGFjZWhvbGRlclwiIFtpZF09XCIndm0tcGxhY2Vob2xkZXInICsgaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJ2bT8uaW1nU3JjXCIgKm5nSWY9XCJ2bT8uaW1nU3JjXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY1N0eWxlIHdvcmRXcmFwXCI+e3t2bT8udm1OYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgc2hlbGZEYXRhIG9mIHZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZEZXRhaWxzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2hlbGYnICsgaVwiIGNsYXNzPVwiYmxvY2sgc2hlbGYgaGlkZS1zY3JvbGwgZC1ibG9jayB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6J3doaXRlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOid3aGl0ZSd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgU2hlbGYgQ2FwYWNpdHkgOiB7e3NoZWxmRGF0YT8ucHJvZHVjdFBlclNoZWxmfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSBGb290ZXIgYmxvY2sgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cD4ge3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZvb3Rlcj8ubGFiZWwgPz8gJyd9fTwvcD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbiAjYWNjb3JkaW9uPVwibmdiQWNjb3JkaW9uXCIgW2Nsb3NlT3RoZXJzXT1cInRydWVcIiBjbGFzcz1cIm10LTVcIlxyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGlzc3VlcyBvZiB2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uYW5zd2VycztsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJ7eyAnbmV3ZGV0YWlscy0nICsgayB9fVwiIFtjb2xsYXBzZWRdPVwiaXRlbS5jb2xsYXBzZWRcIiBjbGFzcz1cIm1iLTVcIlxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpc3N1ZXMuaXNzdWVzO2xldCBrID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG5nYkFjY29yZGlvbkJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nIHAtMyBiYWNrZ3JvdW5kSW1nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMiBsYXlvdXQtTGJlbFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zdGF0dXM9PT0ncGVuZGluZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtaW5saW5lLWJsb2NrIGJnLXdhcm5pbmcgcm91bmRlZC1jaXJjbGUgbXgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwcHg7IGhlaWdodDogMTBweDtcIj48L3NwYW4+e3tpdGVtPy5xdWVzdGlvbn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHkgY2xhc3M9XCJwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydCBtdC01XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J1ZtTWlzc2luZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG90YWwgYWRkaXRpb25hbCBWTXM6IHt7IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1Db25maWcubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J2V4dHJhVm0nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRvdGFsIGFkZGl0aW9uYWwgVk1zOiB7eyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnZtQ29uZmlnLmxlbmd0aH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmlzc3VlVHlwZT09PSdWbU1pc21hdGNoJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUb3RhbCBtaXNwbGFjZWQgVk1zOiB7eyBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnZtQ29uZmlnLmxlbmd0aH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFja2dyb3VuZEltZyBtdC00IHBzLTMgcHktMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgdm1EYXRhIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1Db25maWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtLmlzc3VlVHlwZT09PSdWbU1pc21hdGNoJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy52bU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+Vk0gTmFtZSA6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7dm1EYXRhPy52bU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy5zdGFydFlQb3NpdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5QbGFjZW1lbnQgc3RhcnQgOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5TaGVsZiB7e3ZtRGF0YT8uc3RhcnRZUG9zaXRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/LmVuZFlQb3NpdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5QbGFjZW1lbnQgRW5kIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+U2hlbGYge3t2bURhdGE/LmVuZFlQb3NpdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cInZtRGF0YT8ueFpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+SG9yaXpvbnRhbCB6b25lIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bURhdGE/Lnhab25lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy55Wm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5WZXJ0aWNhbCB6b25lIDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3t2bURhdGE/Lnlab25lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy5wb3NpdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5wb3NpdGlvbiA6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7dm1EYXRhPy5wb3NpdGlvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbS5pc3N1ZVR5cGU9PT0nVm1NaXNtYXRjaCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV3XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cInZtRGF0YT8ubmV3c3RhcnRZUG9zaXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+UGxhY2VtZW50IHN0YXJ0IDo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+U2hlbGYge3t2bURhdGE/Lm5ld3N0YXJ0WVBvc2l0aW9ufX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwidm1EYXRhPy5uZXdlbmRZUG9zaXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+UGxhY2VtZW50IEVuZCA6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlNoZWxmIHt7dm1EYXRhPy5uZXdlbmRZUG9zaXRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJ2bURhdGE/Lm5ld3hab25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkhvcml6b250YWwgem9uZSA6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7dm1EYXRhPy5uZXd4Wm9uZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cInZtRGF0YT8ubmV3eVpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VmVydGljYWwgem9uZSA6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7dm1EYXRhPy5uZXd5Wm9uZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cInZtRGF0YT8ubmV3cG9zaXRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+cG9zaXRpb24gOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj57e3ZtRGF0YT8ubmV3cG9zaXRpb259fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1Db25maWc/Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgUmVzcG9uc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpeHR1cmUgZmVlZGJhY2sgYnkgdGhlIHN0b3JlIHRlYW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhbGwtdmlld3BvcnQgdy0xMDAgbXQtNVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImhlYWRlci1ibG9ja1wiIGNsYXNzPVwiaGVhZGVyLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uaGVhZGVyPy5sYWJlbCA/PyAnJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgI2JvZHlCbG9jayBpZD1cImJvZHlCbG9ja1wiIGNsYXNzPVwiYm9keS1ibG9jayB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHZtIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8udm1Db25maWduZXc7bGV0IG09aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIid2bScgKyBtXCIgY2xhc3M9XCJ2bS1ibG9ja1wiIFtzdHlsZV09XCJoYW5kbGV2bVBvc2l0aW9uKHZtLG0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2bS1wbGFjZWhvbGRlclwiIFtpZF09XCIndm0tcGxhY2Vob2xkZXInICsgbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cInZtLm5ld1ZtID8gJ3JlZEJvcmRlcicgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgW3NyY109XCJ2bT8uaW1nU3JjXCIgKm5nSWY9XCJ2bT8uaW1nU3JjXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlY1N0eWxlXCI+e3t2bT8udm1OYW1lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aDM+e3sgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy56b25lfX08L2gzPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNoZWxmRGF0YSBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNoZWxmRGV0YWlsczsgbGV0IGkgPSBpbmRleFwiPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2hlbGYnICsgaVwiIGNsYXNzPVwiYmxvY2sgc2hlbGYgaGlkZS1zY3JvbGwgZC1ibG9jayB0ZXh0LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmFkZ2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6J3doaXRlJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOid3aGl0ZSd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hlbGYgQ2FwYWNpdHkgOiB7e3NoZWxmRGF0YT8ucHJvZHVjdFBlclNoZWxmfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+IHt7dm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5mb290ZXI/LmxhYmVsID8/ICcnfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cIml0ZW0/LmNvbW1lbnRzLmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPkNvbW1lbnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTRcIiAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiBpdGVtPy5jb21tZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHQgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlIT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmtlZCBhcyA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIkFncmVlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZCBcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2Rpc2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiRGlzYWdyZWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldGFpbmVkIGV4aXN0aW5nXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCIgKm5nSWY9XCJjb21tZW50Py5jb21tZW50IT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6IHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00IHctMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0uYW5zd2Vyc1swXT8uaW1hZ2UmJnZtRmVlZGJhY2tbdm10YXNrSW5kZXhdLmFuc3dlcnNbMF0/LmltYWdlIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+U3RvcmUgZml4dHVyZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJ7e2NkblVybH19e3t2bUZlZWRiYWNrW3ZtdGFza0luZGV4XS5hbnN3ZXJzWzBdPy5pbWFnZX19XCIgYWx0PVwiaW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC01IHJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc3RhdHVzPT09J3BlbmRpbmcnJiZzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0d28tdG9uZS1idG4gbWUtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1hdGlvbignYWdyZWUnLHZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5faWQsaXNzdWVzLl9pZCxpdGVtLl9pZCxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0uX2lkLCd2bScsaXRlbS5pc3N1ZVR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWdyZWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybWF0aW9uKCdkaXNhZ3JlZScsdm1GZWVkYmFja1t2bXRhc2tJbmRleF0/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uX2lkLCd2bScsaXRlbS5pc3N1ZVR5cGUpXCI+RGlzYWdyZWU8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/Lmlzc3Vlcz8ubGVuZ3RoPT09MFwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00IHctMTAwXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ2bUZlZWRiYWNrW3ZtdGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2UmJnZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZSE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+U3RvcmUgZml4dHVyZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7Y2RuVXJsfX17e3ZtRmVlZGJhY2tbdm10YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZX19XCIgYWx0PVwiaW1hZ2VcIiBjbGFzcz1cIm10LTQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiICpuZ0lmPVwidm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmNvbW1lbnRzLmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+Q29tbWVudHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBtdC00XCIgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2Ygdm1GZWVkYmFja1t2bXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmNvbW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dCBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZSE9PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1hcmtlZCBhcyA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIkFncmVlZCwgdXBkYXRlZFwiPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdkaXNhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIkRpc2FncmVlLCByZXRhaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmVha1dvcmQgbXQtMlwiICpuZ0lmPVwiY29tbWVudD8uY29tbWVudCE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6IHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cIm9yaWdpbmFsRGF0YS52bUNvbW1lbnQubGVuZ3RoPjAmJiAhc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+Q29tbWVudHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtNFwiICpuZ0Zvcj1cImxldCBjb21tZW50IG9mIG9yaWdpbmFsRGF0YS52bUNvbW1lbnRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY3JlYXRlZEF0fGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBuZ2JBY2NvcmRpb24gI2FjY29yZGlvbj1cIm5nYkFjY29yZGlvblwiIFtjbG9zZU90aGVyc109XCJ0cnVlXCIgY2xhc3M9XCJtdC01XCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0Py5sZW5ndGg+MFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgPGRpdiBuZ2JBY2NvcmRpb25JdGVtPVwiZGV0YWlsc2ZpeHR1cmVcIiBbY29sbGFwc2VkXT1cIm9wZW5maXh0dXJlXCIgY2xhc3M9XCJtYi01XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0wXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTIgbGF5b3V0LUxiZWxcIj5cclxuICAgICAgICAgICAgICA8ZGl2PkZpeHR1cmUgdmVyaWZpY2F0aW9uIGFzc2lnbmVkPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+e3tzdG9yZUZpeHR1cmVMaXN0WzBdPy50YXNrRGF0YT8uY3JlYXRlZEF0IHxkYXRlOiAnaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319PC9kaXY+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHkgY2xhc3M9XCJwcy0wIHBlLTBcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtZGl2aWRlciBtdC0zIG1zLTVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LnRhc2tEYXRhPy5jcmVhdGVkQnlOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8udGFza0RhdGE/LmNyZWF0ZWRBdCB8ZGF0ZTogJ2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICBBc3NpZ25lclxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8udGFza0RhdGE/LnVzZXJOYW1lIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiaC1kaXZpZGVyIG10LTMgbXMtNVwiPjwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LnRhc2tEYXRhPy51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LnRhc2tEYXRhPy5zdWJtaXRUaW1lX3N0cmluZ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIEFzc2lnbmVlXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1zLTNcIiAqbmdJZj1cIiFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MgcC0zIG1lLTRcIiAqbmdJZj1cImNvbXBsZXRlZEZpeHR1cmU9PT1zdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwIDNMNC41IDguNUwyIDZcIiBzdHJva2U9XCIjMTJCNzZBXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPjxzcGFuIGNsYXNzPVwibXMtMlwiPkZpeHR1cmUgbWF0Y2hlZDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlciBwLTMgbWUtNFwiICpuZ0lmPVwiY29tcGxldGVkRml4dHVyZSE9PXN0b3JlRml4dHVyZUxpc3QubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICBkPVwiTTYgNFY2TTYgOEg2LjAwNU0xMSA2QzExIDguNzYxNDIgOC43NjE0MiAxMSA2IDExQzMuMjM4NTggMTEgMSA4Ljc2MTQyIDEgNkMxIDMuMjM4NTggMy4yMzg1OCAxIDYgMUM4Ljc2MTQyIDEgMTEgMy4yMzg1OCAxMSA2WlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjRjA0NDM4XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+Rml4dHVyZSBtaXNtYXRjaDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXdhcm5pbmcgcC0zXCIgKm5nSWY9XCJwZW5kaW5nRml4dHVyZWlzc3Vlcz4wXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7cGVuZGluZ0ZpeHR1cmVpc3N1ZXN9fS97e3RvdGFsRml4dHVyZWlzc3Vlc319IGFjdGlvbiBwZW5kaW5nXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIHAtM1wiICpuZ0lmPVwiYXBwcm92ZWRGaXh0dXJlaXNzdWVzPjAmJnBlbmRpbmdGaXh0dXJlaXNzdWVzPT09MFwiPlxyXG4gICAgICAgICAgICAgICAgICB7e2FwcHJvdmVkRml4dHVyZWlzc3Vlc319L3t7dG90YWxGaXh0dXJlaXNzdWVzfX0gYWN0aW9uIGRvbmVcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTVcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJwcmV2aW91c3Rhc2tGaXh0dXJlKGZpeHR1cmV0YXNrSW5kZXgsc3RvcmVGaXh0dXJlTGlzdClcIj5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cImZpeHR1cmV0YXNrSW5kZXhcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDZMOSAxMkwxNSAxOFwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiIWZpeHR1cmV0YXNrSW5kZXhcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDZMOSAxMkwxNSAxOFwiIHN0cm9rZT1cIiNEMEQ1RERcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAge3sgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVOYW1lfX0gLSB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlV2lkdGg/LnZhbHVlfX0ge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZVdpZHRoPy51bml0fX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7Zml4dHVyZXRhc2tJbmRleCsxfX0ve3tzdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aH19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJuZXh0dGFza0ZpeHR1cmUoZml4dHVyZXRhc2tJbmRleCxzdG9yZUZpeHR1cmVMaXN0KVwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdC5sZW5ndGg+Zml4dHVyZXRhc2tJbmRleCsxXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIlxyXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDE4TDE1IDEyTDkgNlwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIihzdG9yZUZpeHR1cmVMaXN0Lmxlbmd0aCk9PT0oZml4dHVyZXRhc2tJbmRleCsxKVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAxOEwxNSAxMkw5IDZcIiBzdHJva2U9XCIjRDBENUREXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kSW1nIG10LTQgcHMtMyBweS0yXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkZpeHR1cmUgTmFtZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+Rml4dHVyZSBUeXBlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVDYXRlZ29yeX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVXaWR0aD8udmFsdWUhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5TaXplIChXaWR0aCk6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZVdpZHRoPy52YWx1ZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlV2lkdGg/LnVuaXR9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWdcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VG90YWwgU2hlbHZlczo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zaGVsZkNvbmZpZz8ubGVuZ3RofX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhcGFjaXR5XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlRvdGFsIFByb2R1Y3QgQ2FwYWNpdHk6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZml4dHVyZUNhcGFjaXR5fX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgIFBsYW5vZ3JhbSBkZXNpZ25cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgIEZpeHR1cmUgZGVzaWduZWQgYnkgdGhlIHBsYW5vZ3JhbSB0ZWFtXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWxsLXZpZXdwb3J0IHctMTAwIG10LTVcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJoZWFkZXItYmxvY2tcIiBjbGFzcz1cImhlYWRlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uaGVhZGVyPy5sYWJlbCA/PyAnJ319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiAjYm9keUJsb2NrIGlkPVwiYm9keUJsb2NrXCIgY2xhc3M9XCJib2R5LWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2Ygc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25LZXlzO2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2VjdGlvbicgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ1cGRhdGVTdHlsZShzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXSxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidm0tcGxhY2Vob2xkZXJcIiBbaWRdPVwiJ3ZtLXBsYWNlaG9sZGVyJyArIGlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCInYm9yZGVyOjFweCBzb2xpZCAnK3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5jb2xvcj8uYm9yZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uem9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LmNvbG9yPy50ZXh0QmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjpzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uY29sb3I/LnRleHR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uem9uZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0b29sdGlwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8ucHJvZHVjdEJyYW5kTmFtZT8udG9TdHJpbmcoKX19IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWNTdHlsZSB3b3JkV3JhcFwiIFtuZ2JUb29sdGlwXT1cInRvb2x0aXBcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LlswXX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzaGVsZkRhdGEgb2Ygc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNoZWxmRGV0YWlsczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBbaWRdPVwiJ3NoZWxmJyArIGlcIiBjbGFzcz1cImJsb2NrIHNoZWxmIGhpZGUtc2Nyb2xsIGQtYmxvY2sgdGV4dC1lbmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7J2JhY2tncm91bmQtY29sb3InOihzaGVsZkRhdGE/LnpvbmUgfHwgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWwgPT09ICdMMScpID8gc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnpvbmVDb2xvcltzaGVsZkRhdGEuem9uZV0/LmNvbG9yPy5iZyA6IHNobGVmQ29sb3JbaV0uYmd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOihzaGVsZkRhdGE/LnpvbmUgfHwgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWwgPT09ICdMMScpID8gc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnpvbmVDb2xvcltzaGVsZkRhdGEuem9uZV0/LmNvbG9yPy50ZXh0QmcgOiBzaGxlZkNvbG9yW2ldLnRleHRCZyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOihzaGVsZkRhdGE/LnpvbmUgfHwgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnByb2R1Y3RSZXNvbHV0aW9uTGV2ZWwgPT09ICdMMScpID8gc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnpvbmVDb2xvcltzaGVsZkRhdGEuem9uZV0/LmNvbG9yPy50ZXh0IDogc2hsZWZDb2xvcltpXS50ZXh0fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNoZWxmIENhcGFjaXR5IDoge3tzaGVsZkRhdGE/LnByb2R1Y3RQZXJTaGVsZn19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8IS0tIEZvb3RlciBibG9jayAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvb3Rlci1ibG9ja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwPiB7e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5mb290ZXI/LmxhYmVsID8/ICcnfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb24gI2FjY29yZGlvbj1cIm5nYkFjY29yZGlvblwiIFtjbG9zZU90aGVyc109XCJ0cnVlXCIgY2xhc3M9XCJtdC01XCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpc3N1ZXMgb2Ygc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2VycztsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkl0ZW09XCJ7eyAnbmV3ZGV0YWlscy0nICsgayB9fVwiIFtjb2xsYXBzZWRdPVwiaXRlbS5jb2xsYXBzZWRcIiBjbGFzcz1cIm1iLTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGlzc3Vlcy5pc3N1ZXM7bGV0IGsgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggXCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbmdiQWNjb3JkaW9uQnV0dG9uIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0zIGJhY2tncm91bmRJbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0yIGxheW91dC1MYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4gPHNwYW4gKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnN0YXR1cz09PSdwZW5kaW5nJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2sgYmctd2FybmluZyByb3VuZGVkLWNpcmNsZSBteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aWR0aDogMTBweDsgaGVpZ2h0OiAxMHB4O1wiPjwvc3Bhbj57e2l0ZW0/LnF1ZXN0aW9ufX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInAtMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtdC01XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZU5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmRJbWcgbXQtNCBwcy0zIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVDYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5GaXh0dXJlIFR5cGU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlQ2F0ZWdvcnl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmV0ZW1wbGF0ZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VGVtcGxhdGU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJldGVtcGxhdGVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwiaXRlbT8uaXNzdWVUeXBlPT09J3NpemVXcm9uZydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+U2l6ZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVXaWR0aD8udmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVXaWR0aD8udW5pdH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbT8uaXNzdWVUeXBlPT09J3Byb2R1Y3RjYXRlZ29yeVdyb25nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBtaXNzaW5nIG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8ubWlzc2luZ0RhdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIiAqbmdJZj1cIm1pc3Npbmc/LnpvbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj57e21pc3Npbmc/LnpvbmV9fTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiICpuZ0Zvcj1cImxldCBjYXRlZ29yeSBvZiBtaXNzaW5nPy5wcm9kdWN0Q2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmQgYmFkZ2UgXCI+e3tjYXRlZ29yeX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXRlbT8uaXNzdWVUeXBlPT09J2JyYW5kV3JvbmcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1pc3Npbmcgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5taXNzaW5nRGF0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwibWlzc2luZz8uem9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPnt7bWlzc2luZz8uem9uZX19OjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgYnJhbmQgb2YgbWlzc2luZz8uYnJhbmRcIiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmQgYmFkZ2UgbS0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMy44NDNweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZCc6ICd2YXIoLS1HcmF5LTEwMCwgI2ViZWVmMyknfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YnJhbmR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtPy5pc3N1ZVR5cGUhPT0nYnJhbmRXcm9uZycmJml0ZW0/Lmlzc3VlVHlwZSE9PSdwcm9kdWN0Y2F0ZWdvcnlXcm9uZydcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGZpeHR1cmVMaXN0IG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2hlbGZDb25maWdGb3JtYXRlZFwiPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsIHRleHQtY2FwaXRhbGl6ZVwiPnt7Zml4dHVyZUxpc3Q/LnpvbmV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTkgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0Zvcj1cImxldCBzaGxlZmRhdGEgb2YgZml4dHVyZUxpc3Q/Lml0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsIHRleHQtY2FwaXRhbGl6ZVwiPnt7c2hsZWZkYXRhPy5zaGVsZlR5cGV9fSB7e3NobGVmZGF0YT8uc2hlbGZOdW1iZXJ9fTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jYXBpdGFsaXplXCIgPkNhcGFjaXR5OiA8c3BhbiBjbGFzcz1cImxheW91dExhYmVsXCI+e3tzaGxlZmRhdGE/LnByb2R1Y3RQZXJTaGVsZn19PC9zcGFuPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0yXCIgKm5nRm9yPVwibGV0IGJyYW5kcyBvZiBzaGxlZmRhdGE/LnByb2R1Y3RCcmFuZE5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5IG1lLTMgbWItMlwiPnt7YnJhbmRzfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbktleXM/Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgUmVzcG9uc2VcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBsYW5vZ3JhbSByZXNwb25zZSBieSB0aGUgc3RvcmUgdGVhbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FsbC12aWV3cG9ydCB3LTEwMCBtdC01XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIlsnRml4dHVyZSB0eXBlIGlzIHdyb25nJywnRml4dHVyZSBzaXplIGlzIHdyb25nJ10uaW5jbHVkZXMoaXRlbT8ucXVlc3Rpb24pID8gJ2JvcmRlcjoxcHggc29saWQgcmVkJyA6ICcnXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiaGVhZGVyLWJsb2NrXCIgY2xhc3M9XCJoZWFkZXItYmxvY2tcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyOiAwLjc3MXB4IHNvbGlkIHZhcigtLUdyYXktNDAwLCAjOThBMkIzKTtiYWNrZ3JvdW5kOiAjRjJGM0Y3O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uaGVhZGVyPy5sYWJlbCA/PyAnJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICNib2R5QmxvY2sgaWQ9XCJib2R5QmxvY2tcIiBjbGFzcz1cImJvZHktYmxvY2tcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJbJ3Byb2R1Y3RjYXRlZ29yeVdyb25nJywgJ2JyYW5kV3JvbmcnXS5pbmNsdWRlcyhpdGVtPy5pc3N1ZVR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uS2V5cztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2VjdGlvbicgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInVwZGF0ZVN0eWxlKHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dLGkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLXBsYWNlaG9sZGVyXCIgW2lkXT1cIid2bS1wbGFjZWhvbGRlcicgKyBpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiYm9yZGVyOiAwLjk2OXB4IHNvbGlkIHZhcigtLUdyYXktMzAwLCAjRDBENUREKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2VcIiBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItcmFkaXVzJzogJzEzLjg0M3B4JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQnOiAndmFyKC0tR3JheS0xMDAsICNlYmVlZjMpJ31cIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8uem9uZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI3Rvb2x0aXA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/Lmxlbmd0aCA/J2RhbmdlcicgOiAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LnRvU3RyaW5nKCkgPz8gc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LnRvU3RyaW5nKCl9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlY1N0eWxlIHdvcmRXcmFwXCIgW25nYlRvb2x0aXBdPVwidG9vbHRpcFwiIFtuZ0NsYXNzXT1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXT8ucHJvZHVjdEJyYW5kTmFtZT8ubGVuZ3RoID8gJ2RhbmdlcicgOiAnJ1wiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy5bMF0gfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LlswXX19PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIVsncHJvZHVjdGNhdGVnb3J5V3JvbmcnLCAnYnJhbmRXcm9uZyddLmluY2x1ZGVzKGl0ZW0/Lmlzc3VlVHlwZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uS2V5cztsZXQgaT1pbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2VjdGlvbicgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cInVwZGF0ZVN0eWxlKGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZ1tzZWN0aW9uXSxpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2bS1wbGFjZWhvbGRlclwiIFtpZF09XCIndm0tcGxhY2Vob2xkZXInICsgaVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImJvcmRlcjogMC45NjlweCBzb2xpZCB2YXIoLS1HcmF5LTMwMCwgI0QwRDVERCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9yZGVyLXJhZGl1cyc6ICcxMy44NDNweCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kJzogJ3ZhcigtLUdyYXktMTAwLCAjZWJlZWYzKSd9XCI+e3tcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy56b25lfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG9vbHRpcD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnByb2R1Y3RCcmFuZE5hbWU/LnRvU3RyaW5nKCl9fSA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInNlY1N0eWxlIHdvcmRXcmFwXCIgW25nYlRvb2x0aXBdPVwidG9vbHRpcFwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy5bMF19fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBzaGVsZkRhdGEgb2YgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zaGVsZkRldGFpbHM7IGxldCBpID0gaW5kZXhcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2hlbGYnICsgaVwiIGNsYXNzPVwiYmxvY2sgc2hlbGYgaGlkZS1zY3JvbGwgZC1ibG9jayB0ZXh0LWVuZFwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci10b3AnOihnZXRTdGFydFBvc2l0aW9uKGkrMSxzaGVsZkRhdGEuem9uZSxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWcpICYmICFbJ0ZpeHR1cmUgdHlwZSBpcyB3cm9uZycsJ0ZpeHR1cmUgc2l6ZSBpcyB3cm9uZyddLmluY2x1ZGVzKGl0ZW0/LnF1ZXN0aW9uKSkgID8gJzAuNzcxcHggc29saWQgcmVkJyA6ICcwLjc3MXB4IHNvbGlkIHZhcigtLUdyYXktNDAwLCAjOThBMkIzKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdib3JkZXItYm90dG9tJzooZ2V0RW5kUG9zaXRpb24oaSsxLHNoZWxmRGF0YS56b25lLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZykgJiYgIVsnRml4dHVyZSB0eXBlIGlzIHdyb25nJywnRml4dHVyZSBzaXplIGlzIHdyb25nJ10uaW5jbHVkZXMoaXRlbT8ucXVlc3Rpb24pKSA/ICcgMC43NzFweCBzb2xpZCByZWQnIDogJzAuNzcxcHggc29saWQgdmFyKC0tR3JheS00MDAsICM5OEEyQjMpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1sZWZ0JzooZ2V0TWlkUG9zaXRpb24oaSsxLHNoZWxmRGF0YS56b25lLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc2VjdGlvbkNvbmZpZykgJiYgIVsnRml4dHVyZSB0eXBlIGlzIHdyb25nJywnRml4dHVyZSBzaXplIGlzIHdyb25nJ10uaW5jbHVkZXMoaXRlbT8ucXVlc3Rpb24pKSA/ICcgMC43NzFweCBzb2xpZCByZWQnIDogJzAuNzcxcHggc29saWQgdmFyKC0tR3JheS00MDAsICM5OEEyQjMpJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1yaWdodCc6KGdldE1pZFBvc2l0aW9uKGkrMSxzaGVsZkRhdGEuem9uZSxpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWcpICYmICFbJ0ZpeHR1cmUgdHlwZSBpcyB3cm9uZycsJ0ZpeHR1cmUgc2l6ZSBpcyB3cm9uZyddLmluY2x1ZGVzKGl0ZW0/LnF1ZXN0aW9uKSkgPyAnIDAuNzcxcHggc29saWQgcmVkJyA6ICcwLjc3MXB4IHNvbGlkIHZhcigtLUdyYXktNDAwLCAjOThBMkIzKScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICd2YXIoLS1HcmF5LTEwMCwgI2Y4ZjlmYiknLH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlXCIgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JvcmRlci1yYWRpdXMnOiAnMTMuODQzcHgnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQnOiAndmFyKC0tR3JheS0xMDAsICNlYmVlZjMpJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGVsZiBDYXBhY2l0eSA6IHt7c2hlbGZEYXRhPy5wcm9kdWN0UGVyU2hlbGZ9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXItYmxvY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4ge3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uZm9vdGVyPy5sYWJlbCA/PyAnJ319PC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cIml0ZW0/LmNvbW1lbnRzLmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPkNvbW1lbnRzPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTRcIiAqbmdGb3I9XCJsZXQgY29tbWVudCBvZiBpdGVtPy5jb21tZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHQgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlIT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCIgYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcmtlZCBhcyA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIkFncmVlZCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlZCBcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2Rpc2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiRGlzYWdyZWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldGFpbmVkIGV4aXN0aW5nXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCIgKm5nSWY9XCJjb21tZW50Py5jb21tZW50IT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdGU6IHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00IHctMTAwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2UmJnN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+U3RvcmUgZml4dHVyZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJ7e2NkblVybH19e3tzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZX19XCIgYWx0PVwiaW1hZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm10LTQgdy0xMDBcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC01IHJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc3RhdHVzPT09J3BlbmRpbmcnJiZzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0d28tdG9uZS1idG4gbWUtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1hdGlvbignYWdyZWUnLHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XS5faWQsJ2ZpeHR1cmUnLGl0ZW0uaXNzdWVUeXBlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFncmVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tb3V0bGluZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbmZpcm1hdGlvbignZGlzYWdyZWUnLHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uX2lkLCdmaXh0dXJlJyxpdGVtLmlzc3VlVHlwZSlcIj5EaXNhZ3JlZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pc3N1ZXM/Lmxlbmd0aD09PTBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00IHctMTAwXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5pbWFnZSYmc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uaW1hZ2UhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBTdG9yZSBSZXNwb25zZVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgRml4dHVyZSBmZWVkYmFjayBieSB0aGUgc3RvcmUgdGVhbVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cInt7Y2RuVXJsfX17e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmZpeHR1cmVBSURhdGE/LmZpeHR1cmVJbWFnZSA/IHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmZpeHR1cmVBSURhdGE/LmZpeHR1cmVJbWFnZSA6IHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmltYWdlfX1cIiBhbHQ9XCJpbWFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdC00IHctMTAwXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWNrZ3JvdW5kSW1nIG10LTQgcHMtMyBweS0yXCIgKm5nSWY9XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5maXh0dXJlQUlEYXRhPy5maXh0dXJlQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHRIZWFkaW5nXCI+QUkgT3V0cHV0IOKcqDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaUxheW91dExhYmVsXCI+Rml4dHVyZSBUeXBlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIiBbc3R5bGUuY29sb3JdPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uRml4dHVyZURhdGE/LmZpeHR1cmVDYXRlZ29yeT8udG9Mb3dlckNhc2UoKSAhPT0gc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uZml4dHVyZUFJRGF0YT8uZml4dHVyZUNhdGVnb3J5Py50b0xvd2VyQ2FzZSgpID8gJyNiNDIzMTgnOiAnJ1wiPnt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uZml4dHVyZUFJRGF0YT8uZml4dHVyZUNhdGVnb3J5ID8/ICctLSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaUxheW91dExhYmVsXCI+Rml4dHVyZSBIZWFkZXI6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiIFtzdHlsZS5jb2xvcl09XCJtYXRjaEZpeHR1cmVDYXRlZ29yeShzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uaGVhZGVyPy5sYWJlbCxzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5maXh0dXJlQUlEYXRhKVwiPnt7c3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uZml4dHVyZUFJRGF0YT8uaGVhZGVyPy5sYWJlbCA/PyAnLS0nfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWlMYXlvdXRMYWJlbFwiPlRvdGFsIFNoZWx2ZXM6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiIFtzdHlsZS5jb2xvcl09XCJzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5GaXh0dXJlRGF0YT8uc2hlbGZDb25maWc/Lmxlbmd0aCAhPT0gc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uZml4dHVyZUFJRGF0YT8uc2hlbGZDb25maWc/Lmxlbmd0aCA/ICcjYjQyMzE4JzogJydcIj57e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmZpeHR1cmVBSURhdGE/LnNoZWxmQ29uZmlnPy5sZW5ndGggPz8gMH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFpTGF5b3V0TGFiZWxcIj5Ub3RhbCBQcm9kdWN0IENhcGFjaXR5OjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCIgW3N0eWxlLmNvbG9yXT1cInN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LkZpeHR1cmVEYXRhPy5maXh0dXJlQ2FwYWNpdHkgIT09IHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmZpeHR1cmVBSURhdGE/LmZpeHR1cmVDYXBhY2l0eSA/ICcjYjQyMzE4JzogJydcIj57e3N0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmZpeHR1cmVBSURhdGE/LmZpeHR1cmVDYXBhY2l0eSA/PyAwfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWlMYXlvdXRMYWJlbFwiPlZNIFR5cGU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCIgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIiBbc3R5bGUuY29sb3JdPVwiY29tcGFyZVR5cGUoc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XSlcIj57e2dldFR5cGUoc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XSl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaUxheW91dExhYmVsXCI+Vk0gTmFtZTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIiA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiIFtzdHlsZS5jb2xvcl09XCJjb21wYXJlTmFtZShzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdKVwiPnt7Z2V0TmFtZShzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdKX19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiID5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhaUxheW91dExhYmVsXCI+VmlzdWFsIE1lcmNoYW5kaXNlIEltYWdlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PjxiciAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBtdC01XCIgKm5nRm9yPVwibGV0IHZtIG9mIHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmZpeHR1cmVBSURhdGE/LnZtQ29uZmlnXCIgPiA8aW1nIHNyYz1cInt7Y2RuVXJsfX17e3ZtLnZtSW1hZ2V9fVwiIChjbGljayk9XCJvcGVuUG9wdXAodm0udm1JbWFnZSlcIiBzdHlsZT1cIndpZHRoOjEyMHB4O2hlaWdodDoxMjBweFwiLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwb3B1cFwiICpuZ0lmPVwic2VsZWN0ZWRJbWFnZVwiIChjbGljayk9XCJjbG9zZVBvcHVwKClcIj5cclxuICAgICAgICAgICAgICAgICAgPCEtLSA8c3BhbiBjbGFzcz1cImNsb3NlXCIgKGNsaWNrKT1cImNsb3NlUG9wdXAoJGV2ZW50KVwiPiZ0aW1lczs8L3NwYW4+IC0tPlxyXG4gICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwic2VsZWN0ZWRJbWFnZVwiIGNsYXNzPVwicG9wdXAtaW1nXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNFwiICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uY29tbWVudHMubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5Db21tZW50czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG10LTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBjb21tZW50IG9mIHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LmNvbW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzAwQTNGRlwiIHN0cm9rZS13aWR0aD1cIjEuNjY2NjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dCBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZSE9PSdjb21tZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py50aW1lU3RhbXB8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiIGJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIE1hcmtlZCBhcyA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIkFncmVlZCwgdXBkYXRlZCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGU9PT0nZGlzYWdyZWUnXCIgY2xhc3M9XCJhc3NpZ25UZXh0XCI+XCJEaXNhZ3JlZSwgcmV0YWluZWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ1wiPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIiAqbmdJZj1cImNvbW1lbnQ/LmNvbW1lbnQhPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBOb3RlOiB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC01IHJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwic3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYXBwcm92YWxTdGF0dXM9PT0ncGVuZGluZycgJiYgc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWQgJiYgIXN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmFuc3dlcnNbMF0/LnN0YXR1cyAmJiBzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5maXh0dXJlQUlEYXRhPy5maXh0dXJlQ2F0ZWdvcnlcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3by10b25lLWJ0biBtZS0zXCIgKGNsaWNrKT1cImNvbmZpcm1hdGlvbignYWdyZWUnLHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/Ll9pZCxzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5hbnN3ZXJzWzBdPy5faWQsJycsJycsJ2ZpeHR1cmUnLCcnLHN0b3JlRml4dHVyZUxpc3RbZml4dHVyZXRhc2tJbmRleF0/LmZpeHR1cmVBSURhdGEpXCI+QWdyZWU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBidG4tb3V0bGluZVwiIChjbGljayk9XCJjb25maXJtYXRpb24oJ2Rpc2FncmVlJyxzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5faWQsc3RvcmVGaXh0dXJlTGlzdFtmaXh0dXJldGFza0luZGV4XT8uYW5zd2Vyc1swXT8uX2lkLCcnLCcnLCdmaXh0dXJlJywnJyxzdG9yZUZpeHR1cmVMaXN0W2ZpeHR1cmV0YXNrSW5kZXhdPy5maXh0dXJlQUlEYXRhKVwiPkRpc2FncmVlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteS00XCIgKm5nSWY9XCJvcmlnaW5hbERhdGEuZml4dHVyZUNvbW1lbnQubGVuZ3RoPjAmJiAhc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+Q29tbWVudHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtNFwiICpuZ0Zvcj1cImxldCBjb21tZW50IG9mIG9yaWdpbmFsRGF0YS5maXh0dXJlQ29tbWVudFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN5bWJvbC1sYWJlbCBiZy1saWdodC1wcmltYXJ5IHRleHQtcHJpbWFyeSBtZS0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTE2LjY2NTQgMTcuNVYxNS44MzMzQzE2LjY2NTQgMTQuOTQ5MyAxNi4zMTQyIDE0LjEwMTQgMTUuNjg5MSAxMy40NzYzQzE1LjA2MzkgMTIuODUxMiAxNC4yMTYxIDEyLjUgMTMuMzMyIDEyLjVINi42NjUzNkM1Ljc4MTMxIDEyLjUgNC45MzM0NiAxMi44NTEyIDQuMzA4MzQgMTMuNDc2M0MzLjY4MzIyIDE0LjEwMTQgMy4zMzIwMyAxNC45NDkzIDMuMzMyMDMgMTUuODMzM1YxNy41TTEzLjMzMiA1LjgzMzMzQzEzLjMzMiA3LjY3NDI4IDExLjgzOTYgOS4xNjY2NyA5Ljk5ODcgOS4xNjY2N0M4LjE1Nzc1IDkuMTY2NjcgNi42NjUzNiA3LjY3NDI4IDYuNjY1MzYgNS44MzMzM0M2LjY2NTM2IDMuOTkyMzggOC4xNTc3NSAyLjUgOS45OTg3IDIuNUMxMS44Mzk2IDIuNSAxMy4zMzIgMy45OTIzOCAxMy4zMzIgNS44MzMzM1pcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQudXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jcmVhdGVkQXR8ZGF0ZTonaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnJlYWtXb3JkIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY29tbWVudH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBuZ2JBY2NvcmRpb24gI2FjY29yZGlvbj1cIm5nYkFjY29yZGlvblwiIFtjbG9zZU90aGVyc109XCJ0cnVlXCIgY2xhc3M9XCJtdC01XCIgKm5nSWY9XCJsYXlvdXRGZWVkYmFjay5sZW5ndGg+MFwiPlxyXG4gICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgPGRpdiBuZ2JBY2NvcmRpb25JdGVtPVwie3sgJ2RldGFpbHMtJyArIGkgfX1cIiBbY29sbGFwc2VkXT1cImZlZWRiYWNrLmNvbGxhcHNlZFwiIChoZWFkZXJDbGljayk9XCJ0b2dnbGVQYW5lbChpKVwiXHJcbiAgICAgICAgY2xhc3M9XCJtYi01XCIgKm5nRm9yPVwibGV0IGZlZWRiYWNrIG9mIGxheW91dEZlZWRiYWNrO2xldCBpID0gaW5kZXhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYWluaGVhZGluZyBwLTBcIiBuZ2JBY2NvcmRpb25CdXR0b24+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMiBsYXlvdXQtTGJlbFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJmZWVkYmFjaz8udGFza1R5cGU9PT0naW5pdGlhbCdcIj5MYXlvdXQgdmVyaWZpY2F0aW9uIGFzc2lnbmVkPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZlZWRiYWNrPy50YXNrVHlwZT09PSdyZWRvJ1wiPkxheW91dCB2ZXJpZmljYXRpb24gcmUtYXNzaWduZWQ8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj57e2ZlZWRiYWNrPy50YXNrRGF0YT8uY3JlYXRlZEF0IHxkYXRlOiAnaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319PC9kaXY+XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHkgY2xhc3M9XCJwcy0wIHBlLTBcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIhc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtZGl2aWRlciBtdC0zIG1zLTVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e2ZlZWRiYWNrPy50YXNrRGF0YT8uY3JlYXRlZEJ5TmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e2ZlZWRiYWNrPy50YXNrRGF0YT8uY3JlYXRlZEF0IHxkYXRlOiAnaGg6bW06c3MgYSAtIGRkIE1NTSB5eXl5J319XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIEFzc2lnbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgKm5nSWY9XCJmZWVkYmFjaz8udGFza0RhdGE/LnVzZXJOYW1lIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImgtZGl2aWRlciBtdC0zIG1zLTVcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e2ZlZWRiYWNrPy50YXNrRGF0YT8udXNlck5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3tmZWVkYmFjaz8udGFza0RhdGE/LnN1Ym1pdFRpbWVfc3RyaW5nfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXNzaWduVGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgQXNzaWduZWVcclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IG1zLTNcIiAqbmdJZj1cIiFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MgcC0zIG1lLTRcIiAqbmdJZj1cImZlZWRiYWNrPy5zdGF0dXM9PT0nY29tcGxldGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAgM0w0LjUgOC41TDIgNlwiIHN0cm9rZT1cIiMxMkI3NkFcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPC9zdmc+PHNwYW4gY2xhc3M9XCJtcy0yXCI+TGF5b3V0IG1hdGNoZWQ8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1kYW5nZXIgcC0zIG1lLTRcIiAqbmdJZj1cImZlZWRiYWNrPy5zdGF0dXM9PT0naW5jb21wbGV0ZSdcIj5cclxuICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHBhdGhcclxuICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNiA0VjZNNiA4SDYuMDA1TTExIDZDMTEgOC43NjE0MiA4Ljc2MTQyIDExIDYgMTFDMy4yMzg1OCAxMSAxIDguNzYxNDIgMSA2QzEgMy4yMzg1OCAzLjIzODU4IDEgNiAxQzguNzYxNDIgMSAxMSAzLjIzODU4IDExIDZaXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiNGMDQ0MzhcIiBzdHJva2Utd2lkdGg9XCIxLjVcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L3N2Zz48c3BhbiBjbGFzcz1cIm1zLTJcIj5MYXlvdXQgbWlzbWF0Y2g8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC13YXJuaW5nIHAtM1wiXHJcbiAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmVlZGJhY2s/LnN0YXR1cz09PSdpbmNvbXBsZXRlJyYmcGVuZGluZ0xheW91dGlzc3Vlcz4wXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7cGVuZGluZ0xheW91dGlzc3Vlc319L3t7ZmVlZGJhY2s/LmFuc3dlcnNbMF0/Lmlzc3Vlcz8ubGVuZ3RofX0gYWN0aW9uIHBlbmRpbmdcclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LXN1Y2Nlc3MgcC0zXCJcclxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmZWVkYmFjaz8uc3RhdHVzPT09J2luY29tcGxldGUnJiZhcHByb3ZlZExheW91dGlzc3Vlcz4wJiZwZW5kaW5nTGF5b3V0aXNzdWVzPT09MFwiPlxyXG4gICAgICAgICAgICAgICAgICB7e2FwcHJvdmVkTGF5b3V0aXNzdWVzfX0ve3tmZWVkYmFjaz8uYW5zd2Vyc1swXT8uaXNzdWVzPy5sZW5ndGh9fSBhY3Rpb24gZG9uZVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb24gI2FjY29yZGlvbj1cIm5nYkFjY29yZGlvblwiIFtjbG9zZU90aGVyc109XCJ0cnVlXCIgY2xhc3M9XCJtdC01XCJcclxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpc3N1ZXMgb2YgZmVlZGJhY2suYW5zd2VycztsZXQgaiA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNzdWVzPy5pc3N1ZXM/Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uSXRlbT1cInt7ICduZXdkZXRhaWxzLScgKyBrIH19XCIgW2NvbGxhcHNlZF09XCJpc3N1ZXMuY29sbGFwc2VkXCIgY2xhc3M9XCJtYi01XCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpc3N1ZXMuaXNzdWVzO2xldCBrID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IFwiIG5nYkFjY29yZGlvbkhlYWRlcj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG5nYkFjY29yZGlvbkJ1dHRvbiBjbGFzcz1cIm1haW5oZWFkaW5nIHAtMyBiYWNrZ3JvdW5kSW1nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMiBsYXlvdXQtTGJlbFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxzcGFuICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zdGF0dXM9PT0ncGVuZGluZydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtaW5saW5lLWJsb2NrIGJnLXdhcm5pbmcgcm91bmRlZC1jaXJjbGUgbXgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2lkdGg6IDEwcHg7IGhlaWdodDogMTBweDtcIj48L3NwYW4+e3tpdGVtPy5xdWVzdGlvbn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQ29sbGFwc2U+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHkgY2xhc3M9XCJwLTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdj57e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uZml4dHVyZU5hbWV9fTwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG10LTVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVOYW1lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwicHJldmlvdXNGaXh0dXJlKGZpeHR1cmVJbmRleCxpdGVtPy5EZXRhaWxzKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnICpuZ0lmPVwiZml4dHVyZUluZGV4XCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xNSA2TDkgMTJMMTUgMThcIiBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIiFmaXh0dXJlSW5kZXhcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTE1IDZMOSAxMkwxNSAxOFwiIHN0cm9rZT1cIiNEMEQ1RERcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZpeHR1cmVJbmRleCsxfX0ve3tpdGVtPy5EZXRhaWxzLmxlbmd0aH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJuZXh0Rml4dHVyZShmaXh0dXJlSW5kZXgsaXRlbT8uRGV0YWlscylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIml0ZW0/LkRldGFpbHMubGVuZ3RoPmZpeHR1cmVJbmRleCsxXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDE4TDE1IDEyTDkgNlwiIHN0cm9rZT1cIiMwMDlCRjNcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyAqbmdJZj1cIihpdGVtPy5EZXRhaWxzLmxlbmd0aCk9PT0oZml4dHVyZUluZGV4KzEpXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDE4TDE1IDEyTDkgNlwiIHN0cm9rZT1cIiNEMEQ1RERcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJhY2tncm91bmRJbWcgbXQtNCBwcy0zIHB5LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVDYXRlZ29yeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5GaXh0dXJlIFR5cGU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlQ2F0ZWdvcnl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00XCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmZpeHR1cmVUZW1wbGF0ZU5hbWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+VGVtcGxhdGU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5maXh0dXJlVGVtcGxhdGVOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBmaXh0dXJlTGlzdCBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNoZWxmQ29uZmlnRm9ybWF0ZWRcIj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IG1iLTRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbCB0ZXh0LWNhcGl0YWxpemVcIj57e2ZpeHR1cmVMaXN0Py56b25lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTkgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdGb3I9XCJsZXQgc2hsZWZkYXRhIG9mIGZpeHR1cmVMaXN0Py5pdGVtc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsIHRleHQtY2FwaXRhbGl6ZVwiPnt7c2hsZWZkYXRhPy5zaGVsZlR5cGV9fSB7e3NobGVmZGF0YT8uc2hlbGZOdW1iZXJ9fTo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2FwaXRhbGl6ZVwiID5DYXBhY2l0eTogPHNwYW4gY2xhc3M9XCJsYXlvdXRMYWJlbFwiPnt7c2hsZWZkYXRhPy5wcm9kdWN0UGVyU2hlbGZ9fTwvc3Bhbj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIiAqbmdGb3I9XCJsZXQgYnJhbmRzIG9mIHNobGVmZGF0YT8ucHJvZHVjdEJyYW5kTmFtZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2Utc2Vjb25kYXJ5IG1lLTMgbWItMlwiPnt7YnJhbmRzfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBtYi00IG10LTJcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uYXNzb2NpYXRlZEVsZW1lbnRUeXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPkxvY2F0aW9uOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoZWxmVGV4dCBicmVha1dvcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5hc3NvY2lhdGVkRWxlbWVudFR5cGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmFzc29jaWF0ZWRFbGVtZW50TnVtYmVyfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5hc3NvY2lhdGVkRWxlbWVudEZpeHR1cmVOdW1iZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+UG9zaXRpb246PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+KEwgdG8gUik8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtN1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGVsZlRleHQgYnJlYWtXb3JkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uYXNzb2NpYXRlZEVsZW1lbnRGaXh0dXJlTnVtYmVyfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNCBtdC0yXCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/Lm5ld2Fzc29jaWF0ZWRFbGVtZW50VHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5OZXcgTG9jYXRpb246PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/Lm5ld2Fzc29jaWF0ZWRFbGVtZW50VHlwZX19e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/Lm5ld2Fzc29jaWF0ZWRFbGVtZW50TnVtYmVyfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbWItNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5uZXdhc3NvY2lhdGVkRWxlbWVudEZpeHR1cmVOdW1iZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+TmV3IFBvc2l0aW9uOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPihMIHRvIFIpPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hlbGZUZXh0IGJyZWFrV29yZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/Lm5ld2Fzc29jaWF0ZWRFbGVtZW50Rml4dHVyZU51bWJlcn19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC00XCIgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25LZXlzPy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlPT09J2V4dHJhRml4dHVyZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RvcmUgRml4dHVyZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRml4dHVyZSBmZWVkYmFjayBieSB0aGUgc3RvcmUgdGVhbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIml0ZW0uaXNzdWVUeXBlIT09J2V4dHJhRml4dHVyZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxhbm9ncmFtIGZpeHR1cmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlbG93IGZpeHR1cmUgaXMgaW4gdGhlIHBsYW5vZ3JhbSBidXQgbm90IGluIHN0b3JlLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhbGwtdmlld3BvcnQgdy0xMDAgbXQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEhlYWRlciBibG9jayAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD1cImhlYWRlci1ibG9ja1wiIGNsYXNzPVwiaGVhZGVyLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2l0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uaGVhZGVyPy5sYWJlbCA/PyAnJ319XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gQm9keSBibG9jayAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAjYm9keUJsb2NrIGlkPVwiYm9keUJsb2NrXCIgY2xhc3M9XCJib2R5LWJsb2NrXCI+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgc2VjdGlvbiBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25LZXlzO2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtpZF09XCInc2VjdGlvbicgKyBpXCIgY2xhc3M9XCJ2bS1ibG9ja1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZV09XCJ1cGRhdGVTdHlsZShpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0saSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInZtLXBsYWNlaG9sZGVyXCIgW2lkXT1cIid2bS1wbGFjZWhvbGRlcicgKyBpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwiJ2JvcmRlcjoxcHggc29saWQgJysgdGhpcy5zaGxlZkNvbG9yW2ldLmJvcmRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzppdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LmNvbG9yPy50ZXh0QmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5jb2xvcj8udGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPnt7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNlY3Rpb25Db25maWdbc2VjdGlvbl0/LnpvbmV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICN0b29sdGlwPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy50b1N0cmluZygpfX0gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWNTdHlsZSB3b3JkV3JhcFwiIFtuZ2JUb29sdGlwXT1cInRvb2x0aXBcIj57e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5zZWN0aW9uQ29uZmlnW3NlY3Rpb25dPy5wcm9kdWN0QnJhbmROYW1lPy5bMF19fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHNoZWxmRGF0YSBvZiBpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnNoZWxmRGV0YWlsczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBAaWYoaXRlbS5zaGVsZlR5cGUgPT09J3NoZWxmJyl7IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW2lkXT1cIidzaGVsZicgKyBpXCIgY2xhc3M9XCJibG9jayBzaGVsZiBoaWRlLXNjcm9sbCBkLWJsb2NrIHRleHQtZW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6c2hlbGZEYXRhPy56b25lID8gaXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy56b25lQ29sb3Jbc2hlbGZEYXRhPy56b25lXT8uY29sb3I/LmJnIDogc2hsZWZDb2xvcltpXS5iZ31cIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYWRnZVwiIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzppdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnpvbmVDb2xvcltzaGVsZkRhdGE/LnpvbmVdPy5jb2xvcj8udGV4dEJnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uem9uZUNvbG9yW3NoZWxmRGF0YT8uem9uZV0/LmNvbG9yPy50ZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2hlbGYgQ2FwYWNpdHkgOiB7e3NoZWxmRGF0YT8ucHJvZHVjdFBlclNoZWxmfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gRm9vdGVyIGJsb2NrIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9vdGVyLWJsb2NrXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+IHt7aXRlbT8uRGV0YWlsc1tmaXh0dXJlSW5kZXhdPy5mb290ZXI/LmxhYmVsID8/ICcnfX08L3A+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTQgdy0xMDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmltYWdlJiZpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmltYWdlIT09JydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+U3RvcmUgZml4dHVyZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCJ7e2NkblVybH19e3tpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LmltYWdlfX1cIiBhbHQ9XCJpbWFnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXQtNCB3LTEwMFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cIml0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uY29tbWVudHMubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+Q29tbWVudHM8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtNFwiICpuZ0Zvcj1cImxldCBjb21tZW50IG9mIGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uY29tbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN5bWJvbCBzeW1ib2wtMzVweCBzeW1ib2wtY2lyY2xlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xNi42NjU0IDE3LjVWMTUuODMzM0MxNi42NjU0IDE0Ljk0OTMgMTYuMzE0MiAxNC4xMDE0IDE1LjY4OTEgMTMuNDc2M0MxNS4wNjM5IDEyLjg1MTIgMTQuMjE2MSAxMi41IDEzLjMzMiAxMi41SDYuNjY1MzZDNS43ODEzMSAxMi41IDQuOTMzNDYgMTIuODUxMiA0LjMwODM0IDEzLjQ3NjNDMy42ODMyMiAxNC4xMDE0IDMuMzMyMDMgMTQuOTQ5MyAzLjMzMjAzIDE1LjgzMzNWMTcuNU0xMy4zMzIgNS44MzMzM0MxMy4zMzIgNy42NzQyOCAxMS44Mzk2IDkuMTY2NjcgOS45OTg3IDkuMTY2NjdDOC4xNTc3NSA5LjE2NjY3IDYuNjY1MzYgNy42NzQyOCA2LjY2NTM2IDUuODMzMzNDNi42NjUzNiAzLjk5MjM4IDguMTU3NzUgMi41IDkuOTk4NyAyLjVDMTEuODM5NiAyLjUgMTMuMzMyIDMuOTkyMzggMTMuMzMyIDUuODMzMzNaXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjMDBBM0ZGXCIgc3Ryb2tlLXdpZHRoPVwiMS42NjY2N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXMtM1wiICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2NvbW1lbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxheW91dExhYmVsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudC51c2VyTmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmF5VGV4dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2NvbW1lbnQ/LnRpbWVTdGFtcHxkYXRlOidoaDptbTpzcyBhIC0gZGQgTU1NIHl5eXknfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtcy0zXCIgKm5nSWY9XCJjb21tZW50Py5yZXNwb25zZXR5cGUhPT0nY29tbWVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGF5b3V0TGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYXlUZXh0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8udGltZVN0YW1wfGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIiBicmVha1dvcmQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFya2VkIGFzIDxzcGFuICpuZ0lmPVwiY29tbWVudD8ucmVzcG9uc2V0eXBlPT09J2FncmVlJ1wiIGNsYXNzPVwiYXNzaWduVGV4dFwiPlwiQWdyZWVkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVkXCI8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImNvbW1lbnQ/LnJlc3BvbnNldHlwZT09PSdkaXNhZ3JlZSdcIiBjbGFzcz1cImFzc2lnblRleHRcIj5cIkRpc2FncmVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXRhaW5lZCBleGlzdGluZ1wiPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJicmVha1dvcmQgbXQtMlwiICpuZ0lmPVwiY29tbWVudD8uY29tbWVudCE9PScnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlOiB7e2NvbW1lbnQ/LmNvbW1lbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNSByb3dcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtPy5EZXRhaWxzW2ZpeHR1cmVJbmRleF0/LnN0YXR1cz09PSdwZW5kaW5nJyYmc2VsZWN0ZWRGaXh0dXJlPy5maXh0dXJlSWR8fGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uc3RhdHVzPT09J3BlbmRpbmcnJiZpdGVtLmlzc3VlVHlwZT09PSdvdGhlcnMnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInR3by10b25lLWJ0biBtZS0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybWF0aW9uKCdhZ3JlZScsZmVlZGJhY2s/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XS5faWQsJ2xheW91dCcsaXRlbS5pc3N1ZVR5cGUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWdyZWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IGJ0bi1vdXRsaW5lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29uZmlybWF0aW9uKCdkaXNhZ3JlZScsZmVlZGJhY2s/Ll9pZCxpc3N1ZXMuX2lkLGl0ZW0uX2lkLGl0ZW0/LkRldGFpbHNbZml4dHVyZUluZGV4XT8uX2lkLCdsYXlvdXQnLGl0ZW0uaXNzdWVUeXBlKVwiPkRpc2FncmVlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFzZWxlY3RlZEZpeHR1cmU/LmZpeHR1cmVJZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXktNCB3LTEwMFwiICpuZ0lmPVwiZmVlZGJhY2s/LmFuc3dlcnNbMF0/LnZpZGVvJiZmZWVkYmFjaz8uYW5zd2Vyc1swXT8udmlkZW8hPT0nJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhc3NpZ25UZXh0XCI+U3RvcmUgVmlkZW88L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8dmlkZW8gY29udHJvbHMgc3JjPVwie3tjZG5Vcmx9fXt7ZmVlZGJhY2s/LmFuc3dlcnNbMF0/LnZpZGVvfX1cIiBjbGFzcz1cIm10LTQgdy0xMDBcIj48L3ZpZGVvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm15LTRcIiAqbmdJZj1cIm9yaWdpbmFsRGF0YS5sYXlvdXRDb21tZW50Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFzc2lnblRleHRcIj5Db21tZW50czwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggbXQtNFwiICpuZ0Zvcj1cImxldCBjb21tZW50IG9mIG9yaWdpbmFsRGF0YS5sYXlvdXRDb21tZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3ltYm9sIHN5bWJvbC0zNXB4IHN5bWJvbC1jaXJjbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzeW1ib2wtbGFiZWwgYmctbGlnaHQtcHJpbWFyeSB0ZXh0LXByaW1hcnkgbWUtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTYuNjY1NCAxNy41VjE1LjgzMzNDMTYuNjY1NCAxNC45NDkzIDE2LjMxNDIgMTQuMTAxNCAxNS42ODkxIDEzLjQ3NjNDMTUuMDYzOSAxMi44NTEyIDE0LjIxNjEgMTIuNSAxMy4zMzIgMTIuNUg2LjY2NTM2QzUuNzgxMzEgMTIuNSA0LjkzMzQ2IDEyLjg1MTIgNC4zMDgzNCAxMy40NzYzQzMuNjgzMjIgMTQuMTAxNCAzLjMzMjAzIDE0Ljk0OTMgMy4zMzIwMyAxNS44MzMzVjE3LjVNMTMuMzMyIDUuODMzMzNDMTMuMzMyIDcuNjc0MjggMTEuODM5NiA5LjE2NjY3IDkuOTk4NyA5LjE2NjY3QzguMTU3NzUgOS4xNjY2NyA2LjY2NTM2IDcuNjc0MjggNi42NjUzNiA1LjgzMzMzQzYuNjY1MzYgMy45OTIzOCA4LjE1Nzc1IDIuNSA5Ljk5ODcgMi41QzExLjgzOTYgMi41IDEzLjMzMiAzLjk5MjM4IDEzLjMzMiA1LjgzMzMzWlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiMwMEEzRkZcIiBzdHJva2Utd2lkdGg9XCIxLjY2NjY3XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1zLTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYXlvdXRMYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50LnVzZXJOYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JheVRleHRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7Y29tbWVudD8uY3JlYXRlZEF0fGRhdGU6J2hoOm1tOnNzIGEgLSBkZCBNTU0geXl5eSd9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJyZWFrV29yZCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tjb21tZW50Py5jb21tZW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L2Rpdj5cclxuIFxyXG5cclxuICA8ZGl2IGNsYXNzPVwibXQtNVwiICpuZ0lmPVwibGF5b3V0RmVlZGJhY2s/Lmxlbmd0aD09PTAmJnN0b3JlRml4dHVyZUxpc3Q/Lmxlbmd0aD09PTAmJnZtRmVlZGJhY2s/Lmxlbmd0aD09PTAmJiFsb2FkaW5nXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCI5NFwiIGhlaWdodD1cIjk0XCIgdmlld0JveD1cIjAgMCA5NCA5NFwiIGZpbGw9XCJub25lXCI+XHJcbiAgICAgICAgPHJlY3QgeD1cIjdcIiB5PVwiN1wiIHdpZHRoPVwiODBcIiBoZWlnaHQ9XCI4MFwiIHJ4PVwiNDBcIiBmaWxsPVwiI0RBRjFGRlwiIC8+XHJcbiAgICAgICAgPHJlY3QgeD1cIjdcIiB5PVwiN1wiIHdpZHRoPVwiODBcIiBoZWlnaHQ9XCI4MFwiIHJ4PVwiNDBcIiBzdHJva2U9XCIjRUFGOEZGXCIgc3Ryb2tlLXdpZHRoPVwiMTMuMzMzM1wiIC8+XHJcbiAgICAgICAgPHBhdGhcclxuICAgICAgICAgIGQ9XCJNMzUuOTUwMiA0OC4xOTk3QzM1LjY0ODkgNDguMjMxNSAzNS4zNDIyIDQ4LjI1MDUgMzUuMDMxMiA0OC4yNTA1QzM0Ljg2MTcgNDguMjUwNSAzNC42OTQ0IDQ4LjI0MzYgMzQuNTI5MyA0OC4yMzM5VjU4LjYwNjlDMzQuNTI5MyA2MC4wMzQ5IDM1LjcxMjMgNjEuMjI2IDM3LjIwMDIgNjEuMjI2MUg1Ni44MDQ3QzU4LjI5MjcgNjEuMjI2MSA1OS40NzU2IDYwLjAzNSA1OS40NzU2IDU4LjYwNjlWNDguMjM0OUM1OS4zMTM3IDQ4LjI0NDEgNTkuMTQ5OCA0OC4yNTA1IDU4Ljk4NTQgNDguMjUwNUM1OC42NzE0IDQ4LjI1MDUgNTguMzYwOCA0OC4yMzI1IDU4LjA1NDcgNDguMTk5N1Y1NS45ODc4SDM1Ljk1MDJWNDguMTk5N1pNNTcuOTMxNiAzMi43NzM5SDM2LjA3MzJDMzUuODk1OSAzMi43NzM5IDM1Ljc0MDYgMzIuODY2NyAzNS42NjMxIDMyLjk4NzhMMzUuNjYxMSAzMi45ODk3TDMyLjE1MTQgMzguNDczMUwzMi4wNTY2IDM4LjYyMDZDMzAuODMxMSA0MC43NDA0IDMyLjA5NTcgNDMuNDY3NCAzNC40NDczIDQzLjc3NjlDMzQuNjQ4MiA0My44MDEzIDM0LjgzNzkgNDMuODE1OSAzNS4wMjU0IDQzLjgxNTlDMzYuMjU1NSA0My44MTU5IDM3LjM0MzQgNDMuMjg3MiAzOC4xMDA2IDQyLjQ2NTNMMzkuMDIyNSA0MS40NjQ0TDM5Ljk0MTQgNDIuNDY4M0M0MC42OTAzIDQzLjI4NjMgNDEuNzc3IDQzLjgxNTkgNDMuMDE0NiA0My44MTU5QzQ0LjI0NjcgNDMuODE1OCA0NS4zMzg2IDQzLjI4NTYgNDYuMDg2OSA0Mi40NjgzTDQ3LjAwODggNDEuNDYxNEw0Ny45MzA3IDQyLjQ2ODNDNDguNjc5IDQzLjI4NTcgNDkuNzcwNyA0My44MTU5IDUxLjAwMjkgNDMuODE1OUM1Mi4yMzUxIDQzLjgxNTkgNTMuMzI2OCA0My4yODU3IDU0LjA3NTIgNDIuNDY4M0w1NC45OTcxIDQxLjQ2MTRMNTUuOTE4OSA0Mi40NjgzQzU2LjY2NzMgNDMuMjg1NyA1Ny43NiA0My44MTU5IDU4Ljk5MjIgNDMuODE1OUM1OS4xNzM2IDQzLjgxNTkgNTkuMzY4NyA0My44MDIxIDU5LjU2ODQgNDMuNzc3OEg1OS41Njc0QzYxLjk2MTEgNDMuNDU3MyA2My4yMjkzIDQwLjYwNzggNjEuODYxMyAzOC40NzMxTDYxLjg2MDQgMzguNDc0MUw1OC4zNDM4IDMyLjk5MDdMNTguMzQyOCAzMi45ODc4QzU4LjI2NTMgMzIuODY2NSA1OC4xMDkyIDMyLjc3MzkgNTcuOTMxNiAzMi43NzM5WlwiXHJcbiAgICAgICAgICBzdHJva2U9XCIjMDA5QkYzXCIgc3Ryb2tlLXdpZHRoPVwiMi41XCIgLz5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtdC0zIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmdy1ib2xkIGgzIG10LTJcIj5ObyBpc3N1ZTwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibXQtNFwiPlRoZSBzdG9yZSBkaWQgbm90IGZsYWcgaXQgYXMgYW4gaXNzdWUuPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9zZWN0aW9uPiJdfQ==
|