@cqa-lib/cqa-ui 1.0.17 → 1.0.20
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/esm2020/lib/column-visibility/column-visibility.component.mjs +3 -3
- package/esm2020/lib/dashboards/chart-card/chart-card.component.mjs +5 -3
- package/esm2020/lib/dashboards/dashboard-header/dashboard-header.component.mjs +22 -5
- package/esm2020/lib/dashboards/failed-test-cases-card/failed-test-cases-card.component.mjs +7 -3
- package/esm2020/lib/dashboards/heat-error-map-cell/heat-error-map-cell.component.mjs +5 -3
- package/esm2020/lib/dashboards/insight-card/insight-card.component.mjs +3 -3
- package/esm2020/lib/dashboards/metrics-card/metrics-card.component.mjs +3 -3
- package/esm2020/lib/dashboards/test-distribution-card/test-distribution-card.component.mjs +3 -3
- package/esm2020/lib/dynamic-select/dynamic-select-field.component.mjs +82 -5
- package/esm2020/lib/filters/dynamic-filter/dynamic-filter.component.mjs +62 -13
- package/esm2020/lib/segment-control/segment-control.component.mjs +30 -11
- package/esm2020/lib/table/dynamic-table/dynamic-table.component.mjs +38 -9
- package/esm2020/lib/templates/table-template.component.mjs +7 -24
- package/esm2020/lib/ui-kit.module.mjs +7 -3
- package/fesm2015/cqa-lib-cqa-ui.mjs +261 -75
- package/fesm2015/cqa-lib-cqa-ui.mjs.map +1 -1
- package/fesm2020/cqa-lib-cqa-ui.mjs +256 -71
- package/fesm2020/cqa-lib-cqa-ui.mjs.map +1 -1
- package/lib/dashboards/chart-card/chart-card.component.d.ts +2 -1
- package/lib/dashboards/dashboard-header/dashboard-header.component.d.ts +6 -1
- package/lib/dashboards/failed-test-cases-card/failed-test-cases-card.component.d.ts +3 -1
- package/lib/dynamic-select/dynamic-select-field.component.d.ts +16 -4
- package/lib/filters/dynamic-filter/dynamic-filter.component.d.ts +14 -1
- package/lib/segment-control/segment-control.component.d.ts +8 -0
- package/lib/table/dynamic-table/dynamic-table.component.d.ts +18 -0
- package/lib/templates/table-template.component.d.ts +0 -2
- package/lib/ui-kit.module.d.ts +2 -0
- package/package.json +1 -1
- package/styles.css +1 -1
|
@@ -163,10 +163,10 @@ export class InsightCardComponent {
|
|
|
163
163
|
}
|
|
164
164
|
}
|
|
165
165
|
InsightCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: InsightCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
166
|
-
InsightCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: InsightCardComponent, selector: "cqa-insight-card", inputs: { title: "title", description: "description", badges: "badges", metadata: "metadata", prerequisiteSection: "prerequisiteSection", testDataSection: "testDataSection", metadataExpanded: "metadataExpanded", isPrerequisiteMissing: "isPrerequisiteMissing", isTestDataMissing: "isTestDataMissing" }, outputs: { metadataToggle: "metadataToggle", sectionToggle: "sectionToggle", sectionActionClick: "sectionActionClick", onApplySuggestionClick: "onApplySuggestionClick", onAttachPrerequisitesClick: "onAttachPrerequisitesClick", onImportTestDataClick: "onImportTestDataClick" }, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-font-inter cqa-flex cqa-flex-col cqa-gap-4 cqa-px-[21px] cqa-py-3 cqa-border cqa-border-solid cqa-border-[#ECECEC] cqa-rounded-xl cqa-shadow-card\">\n <!-- Section 1: Badges -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-py-[1.5]\" *ngIf=\"visibleBadges.length > 0\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.4866 12.0005L9.15329 2.66714C9.037 2.46194 8.86836 2.29127 8.66457 2.17252C8.46078 2.05378 8.22915 1.99121 7.99329 1.99121C7.75743 1.99121 7.52579 2.05378 7.322 2.17252C7.11822 2.29127 6.94958 2.46194 6.83329 2.66714L1.49995 12.0005C1.38241 12.204 1.32077 12.4351 1.32129 12.6701C1.32181 12.9052 1.38447 13.136 1.50292 13.339C1.62136 13.5421 1.79138 13.7102 1.99575 13.8264C2.20011 13.9425 2.43156 14.0026 2.66662 14.0005H13.3333C13.5672 14.0002 13.797 13.9385 13.9995 13.8213C14.202 13.7042 14.3701 13.5359 14.487 13.3332C14.6038 13.1306 14.6653 12.9007 14.6653 12.6668C14.6652 12.4329 14.6036 12.2031 14.4866 12.0005Z\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 6V8.66667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 11.333H8.00667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge \n *ngFor=\"let badge of visibleBadges\" \n [label]=\"badge.label\"\n [icon]=\"badge.icon\"\n [variant]=\"badge.variant || 'default'\"\n ></cqa-badge>\n </div>\n </div>\n\n <!-- Section 2: Title & Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-font-medium cqa-text-lg cqa-leading-[22px] cqa-text-title\">\n {{ title }}\n </h2>\n <p class=\"cqa-text-base cqa-font-normal cqa-text-description\">\n {{ description }}\n </p>\n </div>\n\n <!-- Section 3: Metadata Section (always visible) -->\n <div *ngIf=\"metadata\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div class=\"cqa-bg-surface-default cqa-rounded-[10px] cqa-px-4 cqa-py-3 cqa-border-t cqa-border-solid cqa-border-t-primary-surface\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-[25px]\">\n <ng-container *ngFor=\"let item of metadata | keyvalue; let last = last\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-[6px]\">\n <span class=\"cqa-text-xs cqa-font-normal cqa-font-inter cqa-text-metadata-key\">\n {{ item.key }}:\n </span>\n <span \n [ngClass]=\"getMetadataValueClasses(item.key, item.value)\" \n [ngStyle]=\"getMetadataValueStyle(item.key, item.value)\"\n class=\"cqa-font-normal cqa-leading-[18px] cqa-font-inter cqa-text-sm cqa-text-title\">\n {{ getMetadataValue(item.value) }}\n </span>\n </div>\n <div *ngIf=\"!last\" class=\"cqa-h-4 cqa-w-px cqa-bg-gray-200\"></div>\n </ng-container>\n </div>\n </div>\n\n <!-- Section 4: Metadata toggle -->\n <button *ngIf=\"metadata && (isPrerequisiteMissing || isTestDataMissing)\" type=\"button\"\n class=\"cqa-text-sm cqa-text-primary cqa-inline-flex cqa-font-inter cqa-items-center cqa-gap-[6px]\"\n (click)=\"toggleMetadata()\">\n <span>{{ metadataExpanded ? 'Hide details' : 'Show details' }}</span>\n <mat-icon class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\">\n {{ metadataExpanded ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n\n <!-- Section 5: Sections (toggle visibility) -->\n <div *ngIf=\"metadataExpanded && visibleSections?.length\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div\n *ngFor=\"let section of visibleSections\"\n class=\"cqa-border-l-4 cqa-border-solid cqa-border-[#FBBF24] cqa-rounded-[10px] cqa-overflow-hidden\"\n [ngClass]=\"getSectionBorderClass(section)\"\n >\n <div class=\"cqa-p-[10px] cqa-pl-[20px] cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Section Title with Inline Collapse Button -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <h3 [ngClass]=\"getSectionTitleClasses(section)\" class=\"\">\n {{ section.title }}\n </h3>\n <button\n type=\"button\"\n class=\"cqa-ml-auto cqa-inline-flex\"\n (click)=\"toggleSection(section)\"\n [attr.aria-label]=\"section.expanded !== false ? 'Collapse section' : 'Expand section'\"\n >\n <mat-icon [ngClass]=\"getSectionIconColor(section)\" class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px]\">\n {{ section.expanded !== false ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n </div>\n\n <!-- Collapsible Content: Reason and Action Button -->\n <div *ngIf=\"section.expanded !== false\" class=\"cqa-flex cqa-flex-col cqa-gap-[10px]\">\n <!-- Reason -->\n <p class=\"cqa-text-sm cqa-font-normal cqa-leading-[18px] cqa-text-neutral-600\">\n Reason: {{ section.reason }}\n </p>\n \n <!-- Action Button -->\n <div>\n <cqa-button\n variant=\"outlined\"\n (clicked)=\"onSectionAction(section.id)\"\n [customClass]=\"'cqa-py-[9px] cqa-text-[14px] cqa-leading-[17px] cqa-border-slate cqa-text-slate'\"\n >\n {{ section.actionButtonLabel }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <cqa-button\n variant=\"filled\"\n (clicked)=\"onMainAction()\"\n [disabled]=\"isApplying\"\n [customClass]=\"'!cqa-w-full !cqa-text-[14px] !cqa-leading-[20px] !cqa-font-semibold'\"\n >\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.01882 0C9.12979 0.0454767 9.17718 0.15653 9.22261 0.259691C9.24539 0.319799 9.26628 0.380234 9.28657 0.44115C9.29452 0.464493 9.30246 0.487836 9.31065 0.511886C9.41613 0.826009 9.51008 1.1435 9.60457 1.46076C9.62593 1.53238 9.64739 1.60397 9.66885 1.67557C9.7781 2.04007 9.88654 2.4048 9.99438 2.76969C10.0095 2.82093 10.0247 2.87218 10.0398 2.92342C10.0826 3.0679 10.1252 3.21239 10.1677 3.35694C10.2573 3.66239 10.3495 3.96695 10.4476 4.27002C10.4561 4.29653 10.4647 4.32305 10.4735 4.35036C10.7284 5.12999 11.0896 5.82875 11.6818 6.42393C11.6965 6.4394 11.7111 6.45488 11.7262 6.47083C11.979 6.72875 12.3034 6.93541 12.6276 7.10221C12.6441 7.11085 12.6606 7.11948 12.6776 7.12838C13.6317 7.61851 14.779 7.83407 15.8124 8.12101C16.2652 8.24681 16.7166 8.37658 17.1663 8.51206C17.1979 8.52157 17.2296 8.53107 17.2612 8.54055C17.3557 8.5689 17.45 8.59774 17.5442 8.62694C17.5662 8.63358 17.5882 8.64023 17.6108 8.64707C17.7406 8.68812 17.8648 8.73658 17.9713 8.82054C18.0038 8.88837 18.0038 8.88837 17.995 8.95619C17.8913 9.05472 17.7884 9.10092 17.6516 9.14599C17.632 9.15264 17.6124 9.1593 17.5923 9.16615C17.3612 9.24366 17.127 9.31149 16.8925 9.37871C16.8444 9.39261 16.7963 9.40651 16.7482 9.42042C16.4514 9.50603 16.1542 9.5898 15.8566 9.67263C15.4646 9.78175 15.0733 9.89268 14.6823 10.0049C14.6182 10.0232 14.5541 10.0416 14.49 10.0598C14.1534 10.1557 13.8185 10.2551 13.4863 10.3642C13.4587 10.3732 13.4312 10.3822 13.4028 10.3915C12.2902 10.7616 11.4422 11.4522 10.9114 12.462C10.6253 13.0295 10.4565 13.6432 10.2843 14.2489C10.2377 14.4124 10.1882 14.5749 10.1381 14.7374C10.0988 14.8652 10.0604 14.9933 10.023 15.1216C10.0185 15.1369 10.0141 15.1522 10.0095 15.1679C9.98788 15.2419 9.96638 15.3159 9.94503 15.3899C9.89039 15.5776 9.83156 15.7637 9.77111 15.9498C9.66383 16.2804 9.5662 16.6135 9.46917 16.947C9.32288 17.4491 9.32288 17.4491 9.23993 17.6905C9.23443 17.7067 9.22893 17.7229 9.22326 17.7396C9.19298 17.8256 9.16183 17.9047 9.10453 17.9774C9.01734 17.9958 9.01734 17.9958 8.93901 18C8.84946 17.8752 8.79016 17.7542 8.74265 17.6102C8.73574 17.5897 8.72882 17.5693 8.7217 17.5483C8.63368 17.285 8.55502 17.0189 8.47634 16.7529C8.45832 16.6921 8.44022 16.6313 8.42211 16.5705C8.2872 16.1173 8.15451 15.6635 8.02202 15.2096C7.47014 12.9645 7.47014 12.9645 6.078 11.1493C6.05569 11.1319 6.03338 11.1145 6.01039 11.0966C5.09826 10.398 3.89667 10.1394 2.7963 9.83627C2.52415 9.76124 2.2521 9.68587 1.98006 9.61046C1.95628 9.60386 1.95628 9.60386 1.93201 9.59714C1.53962 9.48834 1.14735 9.37925 0.756448 9.26566C0.739911 9.26089 0.723375 9.25612 0.706338 9.25121C0.105798 9.07767 0.105798 9.07767 0.00129307 8.95619C-0.00166252 8.90108 -0.00166252 8.90108 0.0249378 8.84315C0.134167 8.7408 0.240153 8.69696 0.38432 8.65238C0.405194 8.64567 0.426068 8.63897 0.447574 8.63206C0.511506 8.61164 0.575577 8.59169 0.639702 8.57183C0.658001 8.56609 0.676301 8.56035 0.695155 8.55443C0.82457 8.51385 0.95445 8.47479 1.08452 8.43618C1.11648 8.42665 1.11648 8.42665 1.14909 8.41693C1.70454 8.25174 2.26361 8.09801 2.82252 7.94392C3.23899 7.82909 3.65476 7.71236 4.06921 7.59097C4.08825 7.58542 4.1073 7.57987 4.12692 7.57415C5.087 7.29393 6.02557 6.89632 6.64547 6.1074C6.65475 6.09569 6.66403 6.08399 6.6736 6.07194C7.36395 5.1963 7.63315 4.13145 7.93391 3.09241C8.03285 2.75069 8.13298 2.40929 8.23345 2.06798C8.26127 1.97347 8.28906 1.87894 8.31673 1.78439C8.42788 1.40458 8.5407 1.02528 8.66 0.647727C8.67116 0.612372 8.68227 0.577001 8.69333 0.541614C8.86035 0.00797522 8.86035 0.00797522 9.01882 0Z\" fill=\"#FBFCFF\"/><path d=\"M14.4719 1.11069C14.5805 1.22817 14.6022 1.36624 14.636 1.51625C14.7487 1.98751 14.8786 2.42084 15.3293 2.6946C15.6074 2.84167 15.9389 2.90859 16.247 2.9718C16.3771 2.99902 16.4869 3.03515 16.5985 3.1074C16.6236 3.14555 16.6236 3.14555 16.6221 3.21197C16.5963 3.29273 16.5736 3.31878 16.5054 3.37165C16.4308 3.39549 16.4308 3.39549 16.3413 3.41404C16.3075 3.42147 16.2736 3.42898 16.2398 3.43656C16.2217 3.44058 16.2036 3.4446 16.1849 3.44874C15.6339 3.57062 15.6339 3.57062 15.1576 3.84645C15.1421 3.85837 15.1267 3.87029 15.1107 3.88257C14.7703 4.16959 14.6983 4.64703 14.5958 5.04699C14.59 5.06896 14.5841 5.09092 14.578 5.11355C14.573 5.133 14.5679 5.15244 14.5627 5.17248C14.5405 5.23185 14.5176 5.27057 14.4719 5.31607C14.3447 5.33152 14.3447 5.33152 14.2828 5.31607C14.1843 5.24309 14.1623 5.15997 14.1366 5.04828C14.1322 5.03099 14.1279 5.01369 14.1235 4.99587C14.1098 4.94064 14.0965 4.88531 14.0833 4.82996C13.9796 4.39891 13.8625 3.976 13.449 3.72333C13.1258 3.55101 12.7329 3.46951 12.3717 3.4037C12.2727 3.38399 12.216 3.3592 12.1547 3.28121C12.1414 3.20208 12.1414 3.20208 12.1547 3.12294C12.2489 3.02971 12.348 3.00696 12.4754 2.97881C12.5156 2.9693 12.5557 2.95973 12.5958 2.9501C12.6165 2.94516 12.6372 2.94022 12.6586 2.93512C12.7642 2.90911 12.8689 2.87995 12.9734 2.85021C12.9924 2.84494 13.0114 2.83967 13.031 2.83424C13.2436 2.77346 13.4271 2.69571 13.5971 2.5577C13.6129 2.54523 13.6288 2.53276 13.6451 2.5199C13.9096 2.29228 13.9995 1.95032 14.081 1.63124C14.0873 1.60702 14.0935 1.5828 14.0999 1.55784C14.1123 1.50918 14.1244 1.46046 14.1363 1.4117C14.1449 1.37776 14.1449 1.37776 14.1535 1.34315C14.1585 1.32288 14.1635 1.30261 14.1686 1.28172C14.1904 1.21719 14.219 1.16652 14.2591 1.11069C14.3362 1.07385 14.3903 1.0905 14.4719 1.11069Z\" fill=\"#FBFCFF\"/><path d=\"M3.59089 12.4942C3.61902 12.4944 3.61902 12.4944 3.64772 12.4946C3.84954 12.5004 3.98609 12.5623 4.13472 12.692C4.30767 12.8707 4.38753 13.0722 4.38299 13.313C4.36357 13.5082 4.24316 13.6787 4.09547 13.8107C3.92163 13.9448 3.74626 13.9892 3.52411 13.983C3.33681 13.9621 3.1606 13.877 3.02785 13.749C2.86276 13.5336 2.8145 13.3361 2.83869 13.0707C2.88867 12.8618 3.03274 12.6923 3.21701 12.5733C3.34502 12.5113 3.44798 12.493 3.59089 12.4942Z\" fill=\"#FBFCFF\"/></svg>\n {{ isApplying ? 'Applying suggestion' : 'Apply suggestion' }}\n </cqa-button>\n </div>\n</div>\n \n", components: [{ type: i1.BadgeComponent, selector: "cqa-badge", inputs: ["label", "icon", "variant", "backgroundColor", "textColor", "iconBackgroundColor", "iconColor"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.ButtonComponent, selector: "cqa-button", inputs: ["variant", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass"], outputs: ["clicked"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "keyvalue": i4.KeyValuePipe } });
|
|
166
|
+
InsightCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: InsightCardComponent, selector: "cqa-insight-card", inputs: { title: "title", description: "description", badges: "badges", metadata: "metadata", prerequisiteSection: "prerequisiteSection", testDataSection: "testDataSection", metadataExpanded: "metadataExpanded", isPrerequisiteMissing: "isPrerequisiteMissing", isTestDataMissing: "isTestDataMissing" }, outputs: { metadataToggle: "metadataToggle", sectionToggle: "sectionToggle", sectionActionClick: "sectionActionClick", onApplySuggestionClick: "onApplySuggestionClick", onAttachPrerequisitesClick: "onAttachPrerequisitesClick", onImportTestDataClick: "onImportTestDataClick" }, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-font-inter cqa-flex cqa-flex-col cqa-gap-4 cqa-px-[21px] cqa-py-3 cqa-border cqa-border-solid cqa-border-[#ECECEC] cqa-rounded-xl cqa-shadow-card\">\n <!-- Section 1: Badges -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-py-[1.5]\" *ngIf=\"visibleBadges.length > 0\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.4866 12.0005L9.15329 2.66714C9.037 2.46194 8.86836 2.29127 8.66457 2.17252C8.46078 2.05378 8.22915 1.99121 7.99329 1.99121C7.75743 1.99121 7.52579 2.05378 7.322 2.17252C7.11822 2.29127 6.94958 2.46194 6.83329 2.66714L1.49995 12.0005C1.38241 12.204 1.32077 12.4351 1.32129 12.6701C1.32181 12.9052 1.38447 13.136 1.50292 13.339C1.62136 13.5421 1.79138 13.7102 1.99575 13.8264C2.20011 13.9425 2.43156 14.0026 2.66662 14.0005H13.3333C13.5672 14.0002 13.797 13.9385 13.9995 13.8213C14.202 13.7042 14.3701 13.5359 14.487 13.3332C14.6038 13.1306 14.6653 12.9007 14.6653 12.6668C14.6652 12.4329 14.6036 12.2031 14.4866 12.0005Z\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 6V8.66667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 11.333H8.00667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge \n *ngFor=\"let badge of visibleBadges\" \n [label]=\"badge.label\"\n [icon]=\"badge.icon\"\n [variant]=\"badge.variant || 'default'\"\n ></cqa-badge>\n </div>\n </div>\n\n <!-- Section 2: Title & Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-font-medium cqa-text-lg cqa-leading-[22px] cqa-text-title\">\n {{ title }}\n </h2>\n <p class=\"cqa-text-base cqa-font-normal cqa-text-description\">\n {{ description }}\n </p>\n </div>\n\n <!-- Section 3: Metadata Section (always visible) -->\n <div *ngIf=\"metadata\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div class=\"cqa-bg-surface-default cqa-rounded-[10px] cqa-px-4 cqa-py-3 cqa-border-t cqa-border-solid cqa-border-t-primary-surface\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-[25px]\">\n <ng-container *ngFor=\"let item of metadata | keyvalue; let last = last\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-[6px]\">\n <span class=\"cqa-text-xs cqa-font-normal cqa-font-inter cqa-text-metadata-key\">\n {{ item.key }}:\n </span>\n <span \n [ngClass]=\"getMetadataValueClasses(item.key, item.value)\" \n [ngStyle]=\"getMetadataValueStyle(item.key, item.value)\"\n class=\"cqa-font-normal cqa-leading-[18px] cqa-font-inter cqa-text-sm cqa-text-title\">\n {{ getMetadataValue(item.value) }}\n </span>\n </div>\n <div *ngIf=\"!last\" class=\"cqa-h-4 cqa-w-px cqa-bg-gray-200\"></div>\n </ng-container>\n </div>\n </div>\n\n <!-- Section 4: Metadata toggle -->\n <button *ngIf=\"metadata && (isPrerequisiteMissing || isTestDataMissing)\" type=\"button\"\n class=\"cqa-text-sm cqa-text-primary cqa-inline-flex cqa-font-inter cqa-items-center cqa-gap-[6px]\"\n (click)=\"toggleMetadata()\">\n <span>{{ metadataExpanded ? 'Hide details' : 'Show details' }}</span>\n <mat-icon class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\">\n {{ metadataExpanded ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n\n <!-- Section 5: Sections (toggle visibility) -->\n <div *ngIf=\"metadataExpanded && visibleSections?.length\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div\n *ngFor=\"let section of visibleSections\"\n class=\"cqa-border-l-4 cqa-border-solid cqa-rounded-[10px] cqa-overflow-hidden\"\n [ngClass]=\"getSectionBorderClass(section)\"\n >\n <div class=\"cqa-p-[10px] cqa-pl-[20px] cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Section Title with Inline Collapse Button -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <h3 [ngClass]=\"getSectionTitleClasses(section)\" class=\"\">\n {{ section.title }}\n </h3>\n <button\n type=\"button\"\n class=\"cqa-ml-auto cqa-inline-flex cqa-cursor-pointer cqa-outline-none cqa-bg-transparent cqa-border-none cqa-p-1 cqa-items-center cqa-justify-center cqa-min-w-[24px] cqa-min-h-[24px]\"\n (click)=\"toggleSection(section); $event.stopPropagation()\"\n [attr.aria-label]=\"section.expanded !== false ? 'Collapse section' : 'Expand section'\"\n >\n <mat-icon [ngClass]=\"getSectionIconColor(section)\" class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px] cqa-pointer-events-none\">\n {{ section.expanded !== false ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n </div>\n\n <!-- Collapsible Content: Reason and Action Button -->\n <div *ngIf=\"section.expanded !== false\" class=\"cqa-flex cqa-flex-col cqa-gap-[10px]\">\n <!-- Reason -->\n <p class=\"cqa-text-sm cqa-font-normal cqa-leading-[18px] cqa-text-neutral-600\">\n Reason: {{ section.reason }}\n </p>\n \n <!-- Action Button -->\n <div>\n <cqa-button\n variant=\"outlined\"\n (clicked)=\"onSectionAction(section.id)\"\n [customClass]=\"'cqa-py-[9px] cqa-text-[14px] cqa-leading-[17px] cqa-border-slate cqa-text-slate'\"\n >\n {{ section.actionButtonLabel }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <cqa-button\n variant=\"filled\"\n (clicked)=\"onMainAction()\"\n [disabled]=\"isApplying\"\n [customClass]=\"'!cqa-w-full !cqa-text-[14px] !cqa-leading-[20px] !cqa-font-semibold'\"\n >\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.01882 0C9.12979 0.0454767 9.17718 0.15653 9.22261 0.259691C9.24539 0.319799 9.26628 0.380234 9.28657 0.44115C9.29452 0.464493 9.30246 0.487836 9.31065 0.511886C9.41613 0.826009 9.51008 1.1435 9.60457 1.46076C9.62593 1.53238 9.64739 1.60397 9.66885 1.67557C9.7781 2.04007 9.88654 2.4048 9.99438 2.76969C10.0095 2.82093 10.0247 2.87218 10.0398 2.92342C10.0826 3.0679 10.1252 3.21239 10.1677 3.35694C10.2573 3.66239 10.3495 3.96695 10.4476 4.27002C10.4561 4.29653 10.4647 4.32305 10.4735 4.35036C10.7284 5.12999 11.0896 5.82875 11.6818 6.42393C11.6965 6.4394 11.7111 6.45488 11.7262 6.47083C11.979 6.72875 12.3034 6.93541 12.6276 7.10221C12.6441 7.11085 12.6606 7.11948 12.6776 7.12838C13.6317 7.61851 14.779 7.83407 15.8124 8.12101C16.2652 8.24681 16.7166 8.37658 17.1663 8.51206C17.1979 8.52157 17.2296 8.53107 17.2612 8.54055C17.3557 8.5689 17.45 8.59774 17.5442 8.62694C17.5662 8.63358 17.5882 8.64023 17.6108 8.64707C17.7406 8.68812 17.8648 8.73658 17.9713 8.82054C18.0038 8.88837 18.0038 8.88837 17.995 8.95619C17.8913 9.05472 17.7884 9.10092 17.6516 9.14599C17.632 9.15264 17.6124 9.1593 17.5923 9.16615C17.3612 9.24366 17.127 9.31149 16.8925 9.37871C16.8444 9.39261 16.7963 9.40651 16.7482 9.42042C16.4514 9.50603 16.1542 9.5898 15.8566 9.67263C15.4646 9.78175 15.0733 9.89268 14.6823 10.0049C14.6182 10.0232 14.5541 10.0416 14.49 10.0598C14.1534 10.1557 13.8185 10.2551 13.4863 10.3642C13.4587 10.3732 13.4312 10.3822 13.4028 10.3915C12.2902 10.7616 11.4422 11.4522 10.9114 12.462C10.6253 13.0295 10.4565 13.6432 10.2843 14.2489C10.2377 14.4124 10.1882 14.5749 10.1381 14.7374C10.0988 14.8652 10.0604 14.9933 10.023 15.1216C10.0185 15.1369 10.0141 15.1522 10.0095 15.1679C9.98788 15.2419 9.96638 15.3159 9.94503 15.3899C9.89039 15.5776 9.83156 15.7637 9.77111 15.9498C9.66383 16.2804 9.5662 16.6135 9.46917 16.947C9.32288 17.4491 9.32288 17.4491 9.23993 17.6905C9.23443 17.7067 9.22893 17.7229 9.22326 17.7396C9.19298 17.8256 9.16183 17.9047 9.10453 17.9774C9.01734 17.9958 9.01734 17.9958 8.93901 18C8.84946 17.8752 8.79016 17.7542 8.74265 17.6102C8.73574 17.5897 8.72882 17.5693 8.7217 17.5483C8.63368 17.285 8.55502 17.0189 8.47634 16.7529C8.45832 16.6921 8.44022 16.6313 8.42211 16.5705C8.2872 16.1173 8.15451 15.6635 8.02202 15.2096C7.47014 12.9645 7.47014 12.9645 6.078 11.1493C6.05569 11.1319 6.03338 11.1145 6.01039 11.0966C5.09826 10.398 3.89667 10.1394 2.7963 9.83627C2.52415 9.76124 2.2521 9.68587 1.98006 9.61046C1.95628 9.60386 1.95628 9.60386 1.93201 9.59714C1.53962 9.48834 1.14735 9.37925 0.756448 9.26566C0.739911 9.26089 0.723375 9.25612 0.706338 9.25121C0.105798 9.07767 0.105798 9.07767 0.00129307 8.95619C-0.00166252 8.90108 -0.00166252 8.90108 0.0249378 8.84315C0.134167 8.7408 0.240153 8.69696 0.38432 8.65238C0.405194 8.64567 0.426068 8.63897 0.447574 8.63206C0.511506 8.61164 0.575577 8.59169 0.639702 8.57183C0.658001 8.56609 0.676301 8.56035 0.695155 8.55443C0.82457 8.51385 0.95445 8.47479 1.08452 8.43618C1.11648 8.42665 1.11648 8.42665 1.14909 8.41693C1.70454 8.25174 2.26361 8.09801 2.82252 7.94392C3.23899 7.82909 3.65476 7.71236 4.06921 7.59097C4.08825 7.58542 4.1073 7.57987 4.12692 7.57415C5.087 7.29393 6.02557 6.89632 6.64547 6.1074C6.65475 6.09569 6.66403 6.08399 6.6736 6.07194C7.36395 5.1963 7.63315 4.13145 7.93391 3.09241C8.03285 2.75069 8.13298 2.40929 8.23345 2.06798C8.26127 1.97347 8.28906 1.87894 8.31673 1.78439C8.42788 1.40458 8.5407 1.02528 8.66 0.647727C8.67116 0.612372 8.68227 0.577001 8.69333 0.541614C8.86035 0.00797522 8.86035 0.00797522 9.01882 0Z\" fill=\"#FBFCFF\"/><path d=\"M14.4719 1.11069C14.5805 1.22817 14.6022 1.36624 14.636 1.51625C14.7487 1.98751 14.8786 2.42084 15.3293 2.6946C15.6074 2.84167 15.9389 2.90859 16.247 2.9718C16.3771 2.99902 16.4869 3.03515 16.5985 3.1074C16.6236 3.14555 16.6236 3.14555 16.6221 3.21197C16.5963 3.29273 16.5736 3.31878 16.5054 3.37165C16.4308 3.39549 16.4308 3.39549 16.3413 3.41404C16.3075 3.42147 16.2736 3.42898 16.2398 3.43656C16.2217 3.44058 16.2036 3.4446 16.1849 3.44874C15.6339 3.57062 15.6339 3.57062 15.1576 3.84645C15.1421 3.85837 15.1267 3.87029 15.1107 3.88257C14.7703 4.16959 14.6983 4.64703 14.5958 5.04699C14.59 5.06896 14.5841 5.09092 14.578 5.11355C14.573 5.133 14.5679 5.15244 14.5627 5.17248C14.5405 5.23185 14.5176 5.27057 14.4719 5.31607C14.3447 5.33152 14.3447 5.33152 14.2828 5.31607C14.1843 5.24309 14.1623 5.15997 14.1366 5.04828C14.1322 5.03099 14.1279 5.01369 14.1235 4.99587C14.1098 4.94064 14.0965 4.88531 14.0833 4.82996C13.9796 4.39891 13.8625 3.976 13.449 3.72333C13.1258 3.55101 12.7329 3.46951 12.3717 3.4037C12.2727 3.38399 12.216 3.3592 12.1547 3.28121C12.1414 3.20208 12.1414 3.20208 12.1547 3.12294C12.2489 3.02971 12.348 3.00696 12.4754 2.97881C12.5156 2.9693 12.5557 2.95973 12.5958 2.9501C12.6165 2.94516 12.6372 2.94022 12.6586 2.93512C12.7642 2.90911 12.8689 2.87995 12.9734 2.85021C12.9924 2.84494 13.0114 2.83967 13.031 2.83424C13.2436 2.77346 13.4271 2.69571 13.5971 2.5577C13.6129 2.54523 13.6288 2.53276 13.6451 2.5199C13.9096 2.29228 13.9995 1.95032 14.081 1.63124C14.0873 1.60702 14.0935 1.5828 14.0999 1.55784C14.1123 1.50918 14.1244 1.46046 14.1363 1.4117C14.1449 1.37776 14.1449 1.37776 14.1535 1.34315C14.1585 1.32288 14.1635 1.30261 14.1686 1.28172C14.1904 1.21719 14.219 1.16652 14.2591 1.11069C14.3362 1.07385 14.3903 1.0905 14.4719 1.11069Z\" fill=\"#FBFCFF\"/><path d=\"M3.59089 12.4942C3.61902 12.4944 3.61902 12.4944 3.64772 12.4946C3.84954 12.5004 3.98609 12.5623 4.13472 12.692C4.30767 12.8707 4.38753 13.0722 4.38299 13.313C4.36357 13.5082 4.24316 13.6787 4.09547 13.8107C3.92163 13.9448 3.74626 13.9892 3.52411 13.983C3.33681 13.9621 3.1606 13.877 3.02785 13.749C2.86276 13.5336 2.8145 13.3361 2.83869 13.0707C2.88867 12.8618 3.03274 12.6923 3.21701 12.5733C3.34502 12.5113 3.44798 12.493 3.59089 12.4942Z\" fill=\"#FBFCFF\"/></svg>\n {{ isApplying ? 'Applying suggestion' : 'Apply suggestion' }}\n </cqa-button>\n </div>\n</div>\n \n", components: [{ type: i1.BadgeComponent, selector: "cqa-badge", inputs: ["label", "icon", "variant", "backgroundColor", "textColor", "iconBackgroundColor", "iconColor"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.ButtonComponent, selector: "cqa-button", inputs: ["variant", "disabled", "icon", "iconPosition", "fullWidth", "iconColor", "type", "text", "customClass"], outputs: ["clicked"] }], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i4.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i4.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], pipes: { "keyvalue": i4.KeyValuePipe } });
|
|
167
167
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: InsightCardComponent, decorators: [{
|
|
168
168
|
type: Component,
|
|
169
|
-
args: [{ selector: 'cqa-insight-card', template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-font-inter cqa-flex cqa-flex-col cqa-gap-4 cqa-px-[21px] cqa-py-3 cqa-border cqa-border-solid cqa-border-[#ECECEC] cqa-rounded-xl cqa-shadow-card\">\n <!-- Section 1: Badges -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-py-[1.5]\" *ngIf=\"visibleBadges.length > 0\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.4866 12.0005L9.15329 2.66714C9.037 2.46194 8.86836 2.29127 8.66457 2.17252C8.46078 2.05378 8.22915 1.99121 7.99329 1.99121C7.75743 1.99121 7.52579 2.05378 7.322 2.17252C7.11822 2.29127 6.94958 2.46194 6.83329 2.66714L1.49995 12.0005C1.38241 12.204 1.32077 12.4351 1.32129 12.6701C1.32181 12.9052 1.38447 13.136 1.50292 13.339C1.62136 13.5421 1.79138 13.7102 1.99575 13.8264C2.20011 13.9425 2.43156 14.0026 2.66662 14.0005H13.3333C13.5672 14.0002 13.797 13.9385 13.9995 13.8213C14.202 13.7042 14.3701 13.5359 14.487 13.3332C14.6038 13.1306 14.6653 12.9007 14.6653 12.6668C14.6652 12.4329 14.6036 12.2031 14.4866 12.0005Z\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 6V8.66667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 11.333H8.00667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge \n *ngFor=\"let badge of visibleBadges\" \n [label]=\"badge.label\"\n [icon]=\"badge.icon\"\n [variant]=\"badge.variant || 'default'\"\n ></cqa-badge>\n </div>\n </div>\n\n <!-- Section 2: Title & Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-font-medium cqa-text-lg cqa-leading-[22px] cqa-text-title\">\n {{ title }}\n </h2>\n <p class=\"cqa-text-base cqa-font-normal cqa-text-description\">\n {{ description }}\n </p>\n </div>\n\n <!-- Section 3: Metadata Section (always visible) -->\n <div *ngIf=\"metadata\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div class=\"cqa-bg-surface-default cqa-rounded-[10px] cqa-px-4 cqa-py-3 cqa-border-t cqa-border-solid cqa-border-t-primary-surface\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-[25px]\">\n <ng-container *ngFor=\"let item of metadata | keyvalue; let last = last\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-[6px]\">\n <span class=\"cqa-text-xs cqa-font-normal cqa-font-inter cqa-text-metadata-key\">\n {{ item.key }}:\n </span>\n <span \n [ngClass]=\"getMetadataValueClasses(item.key, item.value)\" \n [ngStyle]=\"getMetadataValueStyle(item.key, item.value)\"\n class=\"cqa-font-normal cqa-leading-[18px] cqa-font-inter cqa-text-sm cqa-text-title\">\n {{ getMetadataValue(item.value) }}\n </span>\n </div>\n <div *ngIf=\"!last\" class=\"cqa-h-4 cqa-w-px cqa-bg-gray-200\"></div>\n </ng-container>\n </div>\n </div>\n\n <!-- Section 4: Metadata toggle -->\n <button *ngIf=\"metadata && (isPrerequisiteMissing || isTestDataMissing)\" type=\"button\"\n class=\"cqa-text-sm cqa-text-primary cqa-inline-flex cqa-font-inter cqa-items-center cqa-gap-[6px]\"\n (click)=\"toggleMetadata()\">\n <span>{{ metadataExpanded ? 'Hide details' : 'Show details' }}</span>\n <mat-icon class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\">\n {{ metadataExpanded ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n\n <!-- Section 5: Sections (toggle visibility) -->\n <div *ngIf=\"metadataExpanded && visibleSections?.length\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div\n *ngFor=\"let section of visibleSections\"\n class=\"cqa-border-l-4 cqa-border-solid cqa-border-[#FBBF24] cqa-rounded-[10px] cqa-overflow-hidden\"\n [ngClass]=\"getSectionBorderClass(section)\"\n >\n <div class=\"cqa-p-[10px] cqa-pl-[20px] cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Section Title with Inline Collapse Button -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <h3 [ngClass]=\"getSectionTitleClasses(section)\" class=\"\">\n {{ section.title }}\n </h3>\n <button\n type=\"button\"\n class=\"cqa-ml-auto cqa-inline-flex\"\n (click)=\"toggleSection(section)\"\n [attr.aria-label]=\"section.expanded !== false ? 'Collapse section' : 'Expand section'\"\n >\n <mat-icon [ngClass]=\"getSectionIconColor(section)\" class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px]\">\n {{ section.expanded !== false ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n </div>\n\n <!-- Collapsible Content: Reason and Action Button -->\n <div *ngIf=\"section.expanded !== false\" class=\"cqa-flex cqa-flex-col cqa-gap-[10px]\">\n <!-- Reason -->\n <p class=\"cqa-text-sm cqa-font-normal cqa-leading-[18px] cqa-text-neutral-600\">\n Reason: {{ section.reason }}\n </p>\n \n <!-- Action Button -->\n <div>\n <cqa-button\n variant=\"outlined\"\n (clicked)=\"onSectionAction(section.id)\"\n [customClass]=\"'cqa-py-[9px] cqa-text-[14px] cqa-leading-[17px] cqa-border-slate cqa-text-slate'\"\n >\n {{ section.actionButtonLabel }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <cqa-button\n variant=\"filled\"\n (clicked)=\"onMainAction()\"\n [disabled]=\"isApplying\"\n [customClass]=\"'!cqa-w-full !cqa-text-[14px] !cqa-leading-[20px] !cqa-font-semibold'\"\n >\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.01882 0C9.12979 0.0454767 9.17718 0.15653 9.22261 0.259691C9.24539 0.319799 9.26628 0.380234 9.28657 0.44115C9.29452 0.464493 9.30246 0.487836 9.31065 0.511886C9.41613 0.826009 9.51008 1.1435 9.60457 1.46076C9.62593 1.53238 9.64739 1.60397 9.66885 1.67557C9.7781 2.04007 9.88654 2.4048 9.99438 2.76969C10.0095 2.82093 10.0247 2.87218 10.0398 2.92342C10.0826 3.0679 10.1252 3.21239 10.1677 3.35694C10.2573 3.66239 10.3495 3.96695 10.4476 4.27002C10.4561 4.29653 10.4647 4.32305 10.4735 4.35036C10.7284 5.12999 11.0896 5.82875 11.6818 6.42393C11.6965 6.4394 11.7111 6.45488 11.7262 6.47083C11.979 6.72875 12.3034 6.93541 12.6276 7.10221C12.6441 7.11085 12.6606 7.11948 12.6776 7.12838C13.6317 7.61851 14.779 7.83407 15.8124 8.12101C16.2652 8.24681 16.7166 8.37658 17.1663 8.51206C17.1979 8.52157 17.2296 8.53107 17.2612 8.54055C17.3557 8.5689 17.45 8.59774 17.5442 8.62694C17.5662 8.63358 17.5882 8.64023 17.6108 8.64707C17.7406 8.68812 17.8648 8.73658 17.9713 8.82054C18.0038 8.88837 18.0038 8.88837 17.995 8.95619C17.8913 9.05472 17.7884 9.10092 17.6516 9.14599C17.632 9.15264 17.6124 9.1593 17.5923 9.16615C17.3612 9.24366 17.127 9.31149 16.8925 9.37871C16.8444 9.39261 16.7963 9.40651 16.7482 9.42042C16.4514 9.50603 16.1542 9.5898 15.8566 9.67263C15.4646 9.78175 15.0733 9.89268 14.6823 10.0049C14.6182 10.0232 14.5541 10.0416 14.49 10.0598C14.1534 10.1557 13.8185 10.2551 13.4863 10.3642C13.4587 10.3732 13.4312 10.3822 13.4028 10.3915C12.2902 10.7616 11.4422 11.4522 10.9114 12.462C10.6253 13.0295 10.4565 13.6432 10.2843 14.2489C10.2377 14.4124 10.1882 14.5749 10.1381 14.7374C10.0988 14.8652 10.0604 14.9933 10.023 15.1216C10.0185 15.1369 10.0141 15.1522 10.0095 15.1679C9.98788 15.2419 9.96638 15.3159 9.94503 15.3899C9.89039 15.5776 9.83156 15.7637 9.77111 15.9498C9.66383 16.2804 9.5662 16.6135 9.46917 16.947C9.32288 17.4491 9.32288 17.4491 9.23993 17.6905C9.23443 17.7067 9.22893 17.7229 9.22326 17.7396C9.19298 17.8256 9.16183 17.9047 9.10453 17.9774C9.01734 17.9958 9.01734 17.9958 8.93901 18C8.84946 17.8752 8.79016 17.7542 8.74265 17.6102C8.73574 17.5897 8.72882 17.5693 8.7217 17.5483C8.63368 17.285 8.55502 17.0189 8.47634 16.7529C8.45832 16.6921 8.44022 16.6313 8.42211 16.5705C8.2872 16.1173 8.15451 15.6635 8.02202 15.2096C7.47014 12.9645 7.47014 12.9645 6.078 11.1493C6.05569 11.1319 6.03338 11.1145 6.01039 11.0966C5.09826 10.398 3.89667 10.1394 2.7963 9.83627C2.52415 9.76124 2.2521 9.68587 1.98006 9.61046C1.95628 9.60386 1.95628 9.60386 1.93201 9.59714C1.53962 9.48834 1.14735 9.37925 0.756448 9.26566C0.739911 9.26089 0.723375 9.25612 0.706338 9.25121C0.105798 9.07767 0.105798 9.07767 0.00129307 8.95619C-0.00166252 8.90108 -0.00166252 8.90108 0.0249378 8.84315C0.134167 8.7408 0.240153 8.69696 0.38432 8.65238C0.405194 8.64567 0.426068 8.63897 0.447574 8.63206C0.511506 8.61164 0.575577 8.59169 0.639702 8.57183C0.658001 8.56609 0.676301 8.56035 0.695155 8.55443C0.82457 8.51385 0.95445 8.47479 1.08452 8.43618C1.11648 8.42665 1.11648 8.42665 1.14909 8.41693C1.70454 8.25174 2.26361 8.09801 2.82252 7.94392C3.23899 7.82909 3.65476 7.71236 4.06921 7.59097C4.08825 7.58542 4.1073 7.57987 4.12692 7.57415C5.087 7.29393 6.02557 6.89632 6.64547 6.1074C6.65475 6.09569 6.66403 6.08399 6.6736 6.07194C7.36395 5.1963 7.63315 4.13145 7.93391 3.09241C8.03285 2.75069 8.13298 2.40929 8.23345 2.06798C8.26127 1.97347 8.28906 1.87894 8.31673 1.78439C8.42788 1.40458 8.5407 1.02528 8.66 0.647727C8.67116 0.612372 8.68227 0.577001 8.69333 0.541614C8.86035 0.00797522 8.86035 0.00797522 9.01882 0Z\" fill=\"#FBFCFF\"/><path d=\"M14.4719 1.11069C14.5805 1.22817 14.6022 1.36624 14.636 1.51625C14.7487 1.98751 14.8786 2.42084 15.3293 2.6946C15.6074 2.84167 15.9389 2.90859 16.247 2.9718C16.3771 2.99902 16.4869 3.03515 16.5985 3.1074C16.6236 3.14555 16.6236 3.14555 16.6221 3.21197C16.5963 3.29273 16.5736 3.31878 16.5054 3.37165C16.4308 3.39549 16.4308 3.39549 16.3413 3.41404C16.3075 3.42147 16.2736 3.42898 16.2398 3.43656C16.2217 3.44058 16.2036 3.4446 16.1849 3.44874C15.6339 3.57062 15.6339 3.57062 15.1576 3.84645C15.1421 3.85837 15.1267 3.87029 15.1107 3.88257C14.7703 4.16959 14.6983 4.64703 14.5958 5.04699C14.59 5.06896 14.5841 5.09092 14.578 5.11355C14.573 5.133 14.5679 5.15244 14.5627 5.17248C14.5405 5.23185 14.5176 5.27057 14.4719 5.31607C14.3447 5.33152 14.3447 5.33152 14.2828 5.31607C14.1843 5.24309 14.1623 5.15997 14.1366 5.04828C14.1322 5.03099 14.1279 5.01369 14.1235 4.99587C14.1098 4.94064 14.0965 4.88531 14.0833 4.82996C13.9796 4.39891 13.8625 3.976 13.449 3.72333C13.1258 3.55101 12.7329 3.46951 12.3717 3.4037C12.2727 3.38399 12.216 3.3592 12.1547 3.28121C12.1414 3.20208 12.1414 3.20208 12.1547 3.12294C12.2489 3.02971 12.348 3.00696 12.4754 2.97881C12.5156 2.9693 12.5557 2.95973 12.5958 2.9501C12.6165 2.94516 12.6372 2.94022 12.6586 2.93512C12.7642 2.90911 12.8689 2.87995 12.9734 2.85021C12.9924 2.84494 13.0114 2.83967 13.031 2.83424C13.2436 2.77346 13.4271 2.69571 13.5971 2.5577C13.6129 2.54523 13.6288 2.53276 13.6451 2.5199C13.9096 2.29228 13.9995 1.95032 14.081 1.63124C14.0873 1.60702 14.0935 1.5828 14.0999 1.55784C14.1123 1.50918 14.1244 1.46046 14.1363 1.4117C14.1449 1.37776 14.1449 1.37776 14.1535 1.34315C14.1585 1.32288 14.1635 1.30261 14.1686 1.28172C14.1904 1.21719 14.219 1.16652 14.2591 1.11069C14.3362 1.07385 14.3903 1.0905 14.4719 1.11069Z\" fill=\"#FBFCFF\"/><path d=\"M3.59089 12.4942C3.61902 12.4944 3.61902 12.4944 3.64772 12.4946C3.84954 12.5004 3.98609 12.5623 4.13472 12.692C4.30767 12.8707 4.38753 13.0722 4.38299 13.313C4.36357 13.5082 4.24316 13.6787 4.09547 13.8107C3.92163 13.9448 3.74626 13.9892 3.52411 13.983C3.33681 13.9621 3.1606 13.877 3.02785 13.749C2.86276 13.5336 2.8145 13.3361 2.83869 13.0707C2.88867 12.8618 3.03274 12.6923 3.21701 12.5733C3.34502 12.5113 3.44798 12.493 3.59089 12.4942Z\" fill=\"#FBFCFF\"/></svg>\n {{ isApplying ? 'Applying suggestion' : 'Apply suggestion' }}\n </cqa-button>\n </div>\n</div>\n \n", styles: [] }]
|
|
169
|
+
args: [{ selector: 'cqa-insight-card', template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-font-inter cqa-flex cqa-flex-col cqa-gap-4 cqa-px-[21px] cqa-py-3 cqa-border cqa-border-solid cqa-border-[#ECECEC] cqa-rounded-xl cqa-shadow-card\">\n <!-- Section 1: Badges -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-3 cqa-py-[1.5]\" *ngIf=\"visibleBadges.length > 0\">\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M14.4866 12.0005L9.15329 2.66714C9.037 2.46194 8.86836 2.29127 8.66457 2.17252C8.46078 2.05378 8.22915 1.99121 7.99329 1.99121C7.75743 1.99121 7.52579 2.05378 7.322 2.17252C7.11822 2.29127 6.94958 2.46194 6.83329 2.66714L1.49995 12.0005C1.38241 12.204 1.32077 12.4351 1.32129 12.6701C1.32181 12.9052 1.38447 13.136 1.50292 13.339C1.62136 13.5421 1.79138 13.7102 1.99575 13.8264C2.20011 13.9425 2.43156 14.0026 2.66662 14.0005H13.3333C13.5672 14.0002 13.797 13.9385 13.9995 13.8213C14.202 13.7042 14.3701 13.5359 14.487 13.3332C14.6038 13.1306 14.6653 12.9007 14.6653 12.6668C14.6652 12.4329 14.6036 12.2031 14.4866 12.0005Z\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 6V8.66667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M8 11.333H8.00667\" stroke=\"#E2AC20\" stroke-width=\"1.33333\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/></svg>\n <div class=\"cqa-flex cqa-flex-wrap cqa-gap-2\">\n <cqa-badge \n *ngFor=\"let badge of visibleBadges\" \n [label]=\"badge.label\"\n [icon]=\"badge.icon\"\n [variant]=\"badge.variant || 'default'\"\n ></cqa-badge>\n </div>\n </div>\n\n <!-- Section 2: Title & Description -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-3\">\n <h2 class=\"cqa-font-medium cqa-text-lg cqa-leading-[22px] cqa-text-title\">\n {{ title }}\n </h2>\n <p class=\"cqa-text-base cqa-font-normal cqa-text-description\">\n {{ description }}\n </p>\n </div>\n\n <!-- Section 3: Metadata Section (always visible) -->\n <div *ngIf=\"metadata\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div class=\"cqa-bg-surface-default cqa-rounded-[10px] cqa-px-4 cqa-py-3 cqa-border-t cqa-border-solid cqa-border-t-primary-surface\">\n <div class=\"cqa-flex cqa-flex-wrap cqa-items-center cqa-gap-[25px]\">\n <ng-container *ngFor=\"let item of metadata | keyvalue; let last = last\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-[6px]\">\n <span class=\"cqa-text-xs cqa-font-normal cqa-font-inter cqa-text-metadata-key\">\n {{ item.key }}:\n </span>\n <span \n [ngClass]=\"getMetadataValueClasses(item.key, item.value)\" \n [ngStyle]=\"getMetadataValueStyle(item.key, item.value)\"\n class=\"cqa-font-normal cqa-leading-[18px] cqa-font-inter cqa-text-sm cqa-text-title\">\n {{ getMetadataValue(item.value) }}\n </span>\n </div>\n <div *ngIf=\"!last\" class=\"cqa-h-4 cqa-w-px cqa-bg-gray-200\"></div>\n </ng-container>\n </div>\n </div>\n\n <!-- Section 4: Metadata toggle -->\n <button *ngIf=\"metadata && (isPrerequisiteMissing || isTestDataMissing)\" type=\"button\"\n class=\"cqa-text-sm cqa-text-primary cqa-inline-flex cqa-font-inter cqa-items-center cqa-gap-[6px]\"\n (click)=\"toggleMetadata()\">\n <span>{{ metadataExpanded ? 'Hide details' : 'Show details' }}</span>\n <mat-icon class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\">\n {{ metadataExpanded ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n\n <!-- Section 5: Sections (toggle visibility) -->\n <div *ngIf=\"metadataExpanded && visibleSections?.length\" class=\"cqa-flex cqa-flex-col cqa-gap-4\">\n <div\n *ngFor=\"let section of visibleSections\"\n class=\"cqa-border-l-4 cqa-border-solid cqa-rounded-[10px] cqa-overflow-hidden\"\n [ngClass]=\"getSectionBorderClass(section)\"\n >\n <div class=\"cqa-p-[10px] cqa-pl-[20px] cqa-flex cqa-flex-col cqa-gap-3\">\n <!-- Section Title with Inline Collapse Button -->\n <div class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <h3 [ngClass]=\"getSectionTitleClasses(section)\" class=\"\">\n {{ section.title }}\n </h3>\n <button\n type=\"button\"\n class=\"cqa-ml-auto cqa-inline-flex cqa-cursor-pointer cqa-outline-none cqa-bg-transparent cqa-border-none cqa-p-1 cqa-items-center cqa-justify-center cqa-min-w-[24px] cqa-min-h-[24px]\"\n (click)=\"toggleSection(section); $event.stopPropagation()\"\n [attr.aria-label]=\"section.expanded !== false ? 'Collapse section' : 'Expand section'\"\n >\n <mat-icon [ngClass]=\"getSectionIconColor(section)\" class=\"cqa-w-4 cqa-h-4 cqa-text-[16px] cqa-leading-[16px] cqa-pointer-events-none\">\n {{ section.expanded !== false ? 'expand_less' : 'expand_more' }}\n </mat-icon>\n </button>\n </div>\n\n <!-- Collapsible Content: Reason and Action Button -->\n <div *ngIf=\"section.expanded !== false\" class=\"cqa-flex cqa-flex-col cqa-gap-[10px]\">\n <!-- Reason -->\n <p class=\"cqa-text-sm cqa-font-normal cqa-leading-[18px] cqa-text-neutral-600\">\n Reason: {{ section.reason }}\n </p>\n \n <!-- Action Button -->\n <div>\n <cqa-button\n variant=\"outlined\"\n (clicked)=\"onSectionAction(section.id)\"\n [customClass]=\"'cqa-py-[9px] cqa-text-[14px] cqa-leading-[17px] cqa-border-slate cqa-text-slate'\"\n >\n {{ section.actionButtonLabel }}\n </cqa-button>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <cqa-button\n variant=\"filled\"\n (clicked)=\"onMainAction()\"\n [disabled]=\"isApplying\"\n [customClass]=\"'!cqa-w-full !cqa-text-[14px] !cqa-leading-[20px] !cqa-font-semibold'\"\n >\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M9.01882 0C9.12979 0.0454767 9.17718 0.15653 9.22261 0.259691C9.24539 0.319799 9.26628 0.380234 9.28657 0.44115C9.29452 0.464493 9.30246 0.487836 9.31065 0.511886C9.41613 0.826009 9.51008 1.1435 9.60457 1.46076C9.62593 1.53238 9.64739 1.60397 9.66885 1.67557C9.7781 2.04007 9.88654 2.4048 9.99438 2.76969C10.0095 2.82093 10.0247 2.87218 10.0398 2.92342C10.0826 3.0679 10.1252 3.21239 10.1677 3.35694C10.2573 3.66239 10.3495 3.96695 10.4476 4.27002C10.4561 4.29653 10.4647 4.32305 10.4735 4.35036C10.7284 5.12999 11.0896 5.82875 11.6818 6.42393C11.6965 6.4394 11.7111 6.45488 11.7262 6.47083C11.979 6.72875 12.3034 6.93541 12.6276 7.10221C12.6441 7.11085 12.6606 7.11948 12.6776 7.12838C13.6317 7.61851 14.779 7.83407 15.8124 8.12101C16.2652 8.24681 16.7166 8.37658 17.1663 8.51206C17.1979 8.52157 17.2296 8.53107 17.2612 8.54055C17.3557 8.5689 17.45 8.59774 17.5442 8.62694C17.5662 8.63358 17.5882 8.64023 17.6108 8.64707C17.7406 8.68812 17.8648 8.73658 17.9713 8.82054C18.0038 8.88837 18.0038 8.88837 17.995 8.95619C17.8913 9.05472 17.7884 9.10092 17.6516 9.14599C17.632 9.15264 17.6124 9.1593 17.5923 9.16615C17.3612 9.24366 17.127 9.31149 16.8925 9.37871C16.8444 9.39261 16.7963 9.40651 16.7482 9.42042C16.4514 9.50603 16.1542 9.5898 15.8566 9.67263C15.4646 9.78175 15.0733 9.89268 14.6823 10.0049C14.6182 10.0232 14.5541 10.0416 14.49 10.0598C14.1534 10.1557 13.8185 10.2551 13.4863 10.3642C13.4587 10.3732 13.4312 10.3822 13.4028 10.3915C12.2902 10.7616 11.4422 11.4522 10.9114 12.462C10.6253 13.0295 10.4565 13.6432 10.2843 14.2489C10.2377 14.4124 10.1882 14.5749 10.1381 14.7374C10.0988 14.8652 10.0604 14.9933 10.023 15.1216C10.0185 15.1369 10.0141 15.1522 10.0095 15.1679C9.98788 15.2419 9.96638 15.3159 9.94503 15.3899C9.89039 15.5776 9.83156 15.7637 9.77111 15.9498C9.66383 16.2804 9.5662 16.6135 9.46917 16.947C9.32288 17.4491 9.32288 17.4491 9.23993 17.6905C9.23443 17.7067 9.22893 17.7229 9.22326 17.7396C9.19298 17.8256 9.16183 17.9047 9.10453 17.9774C9.01734 17.9958 9.01734 17.9958 8.93901 18C8.84946 17.8752 8.79016 17.7542 8.74265 17.6102C8.73574 17.5897 8.72882 17.5693 8.7217 17.5483C8.63368 17.285 8.55502 17.0189 8.47634 16.7529C8.45832 16.6921 8.44022 16.6313 8.42211 16.5705C8.2872 16.1173 8.15451 15.6635 8.02202 15.2096C7.47014 12.9645 7.47014 12.9645 6.078 11.1493C6.05569 11.1319 6.03338 11.1145 6.01039 11.0966C5.09826 10.398 3.89667 10.1394 2.7963 9.83627C2.52415 9.76124 2.2521 9.68587 1.98006 9.61046C1.95628 9.60386 1.95628 9.60386 1.93201 9.59714C1.53962 9.48834 1.14735 9.37925 0.756448 9.26566C0.739911 9.26089 0.723375 9.25612 0.706338 9.25121C0.105798 9.07767 0.105798 9.07767 0.00129307 8.95619C-0.00166252 8.90108 -0.00166252 8.90108 0.0249378 8.84315C0.134167 8.7408 0.240153 8.69696 0.38432 8.65238C0.405194 8.64567 0.426068 8.63897 0.447574 8.63206C0.511506 8.61164 0.575577 8.59169 0.639702 8.57183C0.658001 8.56609 0.676301 8.56035 0.695155 8.55443C0.82457 8.51385 0.95445 8.47479 1.08452 8.43618C1.11648 8.42665 1.11648 8.42665 1.14909 8.41693C1.70454 8.25174 2.26361 8.09801 2.82252 7.94392C3.23899 7.82909 3.65476 7.71236 4.06921 7.59097C4.08825 7.58542 4.1073 7.57987 4.12692 7.57415C5.087 7.29393 6.02557 6.89632 6.64547 6.1074C6.65475 6.09569 6.66403 6.08399 6.6736 6.07194C7.36395 5.1963 7.63315 4.13145 7.93391 3.09241C8.03285 2.75069 8.13298 2.40929 8.23345 2.06798C8.26127 1.97347 8.28906 1.87894 8.31673 1.78439C8.42788 1.40458 8.5407 1.02528 8.66 0.647727C8.67116 0.612372 8.68227 0.577001 8.69333 0.541614C8.86035 0.00797522 8.86035 0.00797522 9.01882 0Z\" fill=\"#FBFCFF\"/><path d=\"M14.4719 1.11069C14.5805 1.22817 14.6022 1.36624 14.636 1.51625C14.7487 1.98751 14.8786 2.42084 15.3293 2.6946C15.6074 2.84167 15.9389 2.90859 16.247 2.9718C16.3771 2.99902 16.4869 3.03515 16.5985 3.1074C16.6236 3.14555 16.6236 3.14555 16.6221 3.21197C16.5963 3.29273 16.5736 3.31878 16.5054 3.37165C16.4308 3.39549 16.4308 3.39549 16.3413 3.41404C16.3075 3.42147 16.2736 3.42898 16.2398 3.43656C16.2217 3.44058 16.2036 3.4446 16.1849 3.44874C15.6339 3.57062 15.6339 3.57062 15.1576 3.84645C15.1421 3.85837 15.1267 3.87029 15.1107 3.88257C14.7703 4.16959 14.6983 4.64703 14.5958 5.04699C14.59 5.06896 14.5841 5.09092 14.578 5.11355C14.573 5.133 14.5679 5.15244 14.5627 5.17248C14.5405 5.23185 14.5176 5.27057 14.4719 5.31607C14.3447 5.33152 14.3447 5.33152 14.2828 5.31607C14.1843 5.24309 14.1623 5.15997 14.1366 5.04828C14.1322 5.03099 14.1279 5.01369 14.1235 4.99587C14.1098 4.94064 14.0965 4.88531 14.0833 4.82996C13.9796 4.39891 13.8625 3.976 13.449 3.72333C13.1258 3.55101 12.7329 3.46951 12.3717 3.4037C12.2727 3.38399 12.216 3.3592 12.1547 3.28121C12.1414 3.20208 12.1414 3.20208 12.1547 3.12294C12.2489 3.02971 12.348 3.00696 12.4754 2.97881C12.5156 2.9693 12.5557 2.95973 12.5958 2.9501C12.6165 2.94516 12.6372 2.94022 12.6586 2.93512C12.7642 2.90911 12.8689 2.87995 12.9734 2.85021C12.9924 2.84494 13.0114 2.83967 13.031 2.83424C13.2436 2.77346 13.4271 2.69571 13.5971 2.5577C13.6129 2.54523 13.6288 2.53276 13.6451 2.5199C13.9096 2.29228 13.9995 1.95032 14.081 1.63124C14.0873 1.60702 14.0935 1.5828 14.0999 1.55784C14.1123 1.50918 14.1244 1.46046 14.1363 1.4117C14.1449 1.37776 14.1449 1.37776 14.1535 1.34315C14.1585 1.32288 14.1635 1.30261 14.1686 1.28172C14.1904 1.21719 14.219 1.16652 14.2591 1.11069C14.3362 1.07385 14.3903 1.0905 14.4719 1.11069Z\" fill=\"#FBFCFF\"/><path d=\"M3.59089 12.4942C3.61902 12.4944 3.61902 12.4944 3.64772 12.4946C3.84954 12.5004 3.98609 12.5623 4.13472 12.692C4.30767 12.8707 4.38753 13.0722 4.38299 13.313C4.36357 13.5082 4.24316 13.6787 4.09547 13.8107C3.92163 13.9448 3.74626 13.9892 3.52411 13.983C3.33681 13.9621 3.1606 13.877 3.02785 13.749C2.86276 13.5336 2.8145 13.3361 2.83869 13.0707C2.88867 12.8618 3.03274 12.6923 3.21701 12.5733C3.34502 12.5113 3.44798 12.493 3.59089 12.4942Z\" fill=\"#FBFCFF\"/></svg>\n {{ isApplying ? 'Applying suggestion' : 'Apply suggestion' }}\n </cqa-button>\n </div>\n</div>\n \n", styles: [] }]
|
|
170
170
|
}], propDecorators: { title: [{
|
|
171
171
|
type: Input
|
|
172
172
|
}], description: [{
|
|
@@ -198,4 +198,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
198
198
|
}], onImportTestDataClick: [{
|
|
199
199
|
type: Output
|
|
200
200
|
}] } });
|
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zaWdodC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9pbnNpZ2h0LWNhcmQvaW5zaWdodC1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9pbnNpZ2h0LWNhcmQvaW5zaWdodC1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixJQUFJLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQXdCbEcsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDMUIsWUFBTyxHQUFtQixFQUFFLENBQUM7UUFXNUIscUJBQWdCLEdBQVksSUFBSSxDQUFDO1FBQ2pDLDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQUN2QyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFNUMsb0NBQW9DO1FBQzVCLHlCQUFvQixHQUF5QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRS9ELGdDQUFnQztRQUNoQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRWxCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUM3QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFxQyxDQUFDO1FBQ3RFLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDaEQsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNsRCwrQkFBMEIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3RELDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7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LENBQUM7U0FDOUI7SUFDSCxDQUFDOztpSEF2TFUsb0JBQW9CO3FHQUFwQixvQkFBb0IsMm5CQ3pCakMscXhYQW1IQTsyRkQxRmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjs4QkFLbkIsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0YsTUFBTTtzQkFEVCxLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBUUksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csMEJBQTBCO3NCQUFuQyxNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRNZXRhZGF0YVZhbHVlU3R5bGUgYXMgZ2V0TWV0YWRhdGFDb2xvclN0eWxlIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWV0YWRhdGEtY29sb3JzLnV0aWwnO1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYWRnZS9iYWRnZS5jb21wb25lbnQnO1xuXG4vLyBVc2UgQmFkZ2VDb21wb25lbnQgaW5wdXRzIGRpcmVjdGx5IGluc3RlYWQgb2YgYSBzZXBhcmF0ZSBpbnRlcmZhY2VcbmV4cG9ydCB0eXBlIEluc2lnaHRCYWRnZSA9IFBpY2s8QmFkZ2VDb21wb25lbnQsICdsYWJlbCcgfCAnaWNvbicgfCAndmFyaWFudCc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEluc2lnaHRNZXRhZGF0YSB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9O1xufVxuXG5pbnRlcmZhY2UgSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHZhcmlhbnQ6ICd3YXJuaW5nJyB8ICdlcnJvcicgfCAnZGVmYXVsdCc7XG4gIHJlYXNvbjogc3RyaW5nO1xuICBhY3Rpb25CdXR0b25MYWJlbDogc3RyaW5nO1xuICBleHBhbmRlZD86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1pbnNpZ2h0LWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5zaWdodC1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBJbnNpZ2h0Q2FyZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZGVzY3JpcHRpb246IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9iYWRnZXM6IEluc2lnaHRCYWRnZVtdID0gW107XG4gIEBJbnB1dCgpXG4gIHNldCBiYWRnZXModmFsdWU6IEluc2lnaHRCYWRnZVtdKSB7XG4gICAgdGhpcy5fYmFkZ2VzID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGJhZGdlcygpOiBJbnNpZ2h0QmFkZ2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2JhZGdlcztcbiAgfVxuICBASW5wdXQoKSBtZXRhZGF0YT86IEluc2lnaHRNZXRhZGF0YTtcbiAgQElucHV0KCkgcHJlcmVxdWlzaXRlU2VjdGlvbj86IHN0cmluZztcbiAgQElucHV0KCkgdGVzdERhdGFTZWN0aW9uPzogc3RyaW5nO1xuICBASW5wdXQoKSBtZXRhZGF0YUV4cGFuZGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgaXNQcmVyZXF1aXNpdGVNaXNzaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzVGVzdERhdGFNaXNzaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gVHJhY2sgZXhwYW5kZWQgc3RhdGUgZm9yIHNlY3Rpb25zXG4gIHByaXZhdGUgc2VjdGlvbkV4cGFuZGVkU3RhdGU6IE1hcDxzdHJpbmcsIGJvb2xlYW4+ID0gbmV3IE1hcCgpO1xuICBcbiAgLy8gTG9hZGluZyBzdGF0ZSBmb3IgbWFpbiBhY3Rpb25cbiAgaXNBcHBseWluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBtZXRhZGF0YVRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHNlY3Rpb25Ub2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWQ6IHN0cmluZzsgZXhwYW5kZWQ6IGJvb2xlYW4gfT4oKTtcbiAgQE91dHB1dCgpIHNlY3Rpb25BY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgb25BcHBseVN1Z2dlc3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIG9uQXR0YWNoUHJlcmVxdWlzaXRlc0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb25JbXBvcnRUZXN0RGF0YUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHRvZ2dsZU1ldGFkYXRhKCk6IHZvaWQge1xuICAgIHRoaXMubWV0YWRhdGFFeHBhbmRlZCA9ICF0aGlzLm1ldGFkYXRhRXhwYW5kZWQ7XG4gICAgdGhpcy5tZXRhZGF0YVRvZ2dsZS5lbWl0KHRoaXMubWV0YWRhdGFFeHBhbmRlZCk7XG4gIH1cblxuICB0b2dnbGVTZWN0aW9uKHNlY3Rpb246IEludGVybmFsSW5zaWdodFNlY3Rpb24pOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLnNlY3Rpb25FeHBhbmRlZFN0YXRlLmdldChzZWN0aW9uLmlkKSA/PyAoc2VjdGlvbi5leHBhbmRlZCA/PyB0cnVlKTtcbiAgICBjb25zdCBuZXdTdGF0ZSA9ICFjdXJyZW50U3RhdGU7XG4gICAgdGhpcy5zZWN0aW9uRXhwYW5kZWRTdGF0ZS5zZXQoc2VjdGlvbi5pZCwgbmV3U3RhdGUpO1xuICAgIFxuICAgIHRoaXMuc2VjdGlvblRvZ2dsZS5lbWl0KHsgaWQ6IHNlY3Rpb24uaWQsIGV4cGFuZGVkOiBuZXdTdGF0ZSB9KTtcbiAgfVxuXG4gIG9uU2VjdGlvbkFjdGlvbihzZWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VjdGlvbkFjdGlvbkNsaWNrLmVtaXQoc2VjdGlvbklkKTtcbiAgICBcbiAgICAvLyBFbWl0IHNwZWNpZmljIGV2ZW50cyBmb3Iga25vd24gYWN0aW9uc1xuICAgIGlmIChzZWN0aW9uSWQgPT09ICdwcmVyZXF1aXNpdGUnKSB7XG4gICAgICB0aGlzLm9uQXR0YWNoUHJlcmVxdWlzaXRlc0NsaWNrLmVtaXQoKTtcbiAgICB9IGVsc2UgaWYgKHNlY3Rpb25JZCA9PT0gJ3Rlc3QtZGF0YScpIHtcbiAgICAgIHRoaXMub25JbXBvcnRUZXN0RGF0YUNsaWNrLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmlzaWJsZUJhZGdlcygpOiBJbnNpZ2h0QmFkZ2VbXSB7XG4gICAgY29uc3QgdmlzaWJsZTogSW5zaWdodEJhZGdlW10gPSBbXTtcbiAgICBpZiAodGhpcy5pc1ByZXJlcXVpc2l0ZU1pc3NpbmcpIHtcbiAgICAgIHZpc2libGUucHVzaCh7IGxhYmVsOiAnUHJlcmVxdWlzaXRlIE1pc3NpbmcnLCB2YXJpYW50OiAnd2FybmluZycgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzVGVzdERhdGFNaXNzaW5nKSB7XG4gICAgICB2aXNpYmxlLnB1c2goeyBsYWJlbDogJ1Rlc3QgRGF0YSBNaXNzaW5nJywgdmFyaWFudDogJ2Vycm9yJyB9KTtcbiAgICB9XG4gICAgLy8gQWxzbyBpbmNsdWRlIGFueSBjdXN0b20gYmFkZ2VzXG4gICAgaWYgKHRoaXMuYmFkZ2VzKSB7XG4gICAgICB2aXNpYmxlLnB1c2goLi4udGhpcy5iYWRnZXMpO1xuICAgIH1cbiAgICByZXR1cm4gdmlzaWJsZTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlU2VjdGlvbnMoKTogSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbltdIHtcbiAgICBjb25zdCB2aXNpYmxlOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uW10gPSBbXTtcbiAgICBcbiAgICBpZiAodGhpcy5pc1ByZXJlcXVpc2l0ZU1pc3NpbmcgJiYgdGhpcy5wcmVyZXF1aXNpdGVTZWN0aW9uKSB7XG4gICAgICAvLyBVc2Ugc3RvcmVkIHN0YXRlIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGRlZmF1bHQgdG8gdHJ1ZVxuICAgICAgY29uc3QgZXhwYW5kZWQgPSB0aGlzLnNlY3Rpb25FeHBhbmRlZFN0YXRlLmhhcygncHJlcmVxdWlzaXRlJykgXG4gICAgICAgID8gdGhpcy5zZWN0aW9uRXhwYW5kZWRTdGF0ZS5nZXQoJ3ByZXJlcXVpc2l0ZScpIVxuICAgICAgICA6IHRydWU7XG4gICAgICBcbiAgICAgIHZpc2libGUucHVzaCh7XG4gICAgICAgIGlkOiAncHJlcmVxdWlzaXRlJyxcbiAgICAgICAgdGl0bGU6ICdQcmVyZXF1aXNpdGUgTWlzc2luZycsXG4gICAgICAgIHZhcmlhbnQ6ICd3YXJuaW5nJyxcbiAgICAgICAgcmVhc29uOiB0aGlzLnByZXJlcXVpc2l0ZVNlY3Rpb24sXG4gICAgICAgIGFjdGlvbkJ1dHRvbkxhYmVsOiAnQXR0YWNoIFByZXJlcXVpc2l0ZXMnLFxuICAgICAgICBleHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMuaXNUZXN0RGF0YU1pc3NpbmcgJiYgdGhpcy50ZXN0RGF0YVNlY3Rpb24pIHtcbiAgICAgIC8vIFVzZSBzdG9yZWQgc3RhdGUgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgZGVmYXVsdCB0byB0cnVlXG4gICAgICBjb25zdCBleHBhbmRlZCA9IHRoaXMuc2VjdGlvbkV4cGFuZGVkU3RhdGUuaGFzKCd0ZXN0LWRhdGEnKVxuICAgICAgICA/IHRoaXMuc2VjdGlvbkV4cGFuZGVkU3RhdGUuZ2V0KCd0ZXN0LWRhdGEnKSFcbiAgICAgICAgOiB0cnVlO1xuICAgICAgXG4gICAgICB2aXNpYmxlLnB1c2goe1xuICAgICAgICBpZDogJ3Rlc3QtZGF0YScsXG4gICAgICAgIHRpdGxlOiAnVGVzdCBEYXRhIE1pc3NpbmcnLFxuICAgICAgICB2YXJpYW50OiAnZXJyb3InLFxuICAgICAgICByZWFzb246IHRoaXMudGVzdERhdGFTZWN0aW9uLFxuICAgICAgICBhY3Rpb25CdXR0b25MYWJlbDogJ0ltcG9ydCBUZXN0IERhdGEnLFxuICAgICAgICBleHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHZpc2libGU7XG4gIH1cblxuICBhc3luYyBvbk1haW5BY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNBcHBseWluZykge1xuICAgICAgcmV0dXJuOyAvLyBQcmV2ZW50IG11bHRpcGxlIGNsaWNrc1xuICAgIH1cbiAgICBcbiAgICB0aGlzLmlzQXBwbHlpbmcgPSB0cnVlO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICB0aGlzLm9uQXBwbHlTdWdnZXN0aW9uQ2xpY2suZW1pdCgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBSZXNldCBsb2FkaW5nIHN0YXRlIGFmdGVyIGFjdGlvbiBjb21wbGV0ZXNcbiAgICAgIC8vIElmIHlvdSBuZWVkIHRvIGtlZXAgdGhlIGxvYWRpbmcgc3RhdGUgbG9uZ2VyLCBjYWxsIHJlc2V0QXBwbHlpbmdTdGF0ZSgpIG1hbnVhbGx5XG4gICAgICAvLyBhZnRlciB5b3VyIGFzeW5jIG9wZXJhdGlvbiBjb21wbGV0ZXNcbiAgICAgIHRoaXMuaXNBcHBseWluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIE1ldGhvZCB0byByZXNldCBsb2FkaW5nIHN0YXRlIChjYW4gYmUgY2FsbGVkIGV4dGVybmFsbHkgaWYgbmVlZGVkKVxuICByZXNldEFwcGx5aW5nU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5pc0FwcGx5aW5nID0gZmFsc2U7XG4gIH1cblxuICAvLyBSZW1vdmVkIGdldEJhZGdlQ2xhc3NlcyAtIG5vdyB1c2luZyBCYWRnZUNvbXBvbmVudFxuXG4gIGdldFNlY3Rpb25Cb3JkZXJDbGFzcyhzZWN0aW9uOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHNlY3Rpb24udmFyaWFudCkge1xuICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgIHJldHVybiAnY3FhLWJvcmRlci1sLTQgY3FhLWJvcmRlci1sLXllbGxvdy01MDAnO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gJ2NxYS1ib3JkZXItbC00IGNxYS1ib3JkZXItbC1yZWQtNTAwJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLWJvcmRlci1sLTQgY3FhLWJvcmRlci1sLWdyYXktNTAwJztcbiAgICB9XG4gIH1cblxuICBnZXRNZXRhZGF0YVZhbHVlQ2xhc3NlcyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9KTogc3RyaW5nIHtcbiAgICAvLyBCYXNlIGNsYXNzZXMgZm9yIGFsbCB2YWx1ZXMgKGZvbnQtc2l6ZTogMTRweCwgbGluZS1oZWlnaHQ6IDE4cHgsIGZvbnQtd2VpZ2h0OiA0MDApXG4gICAgcmV0dXJuICdjcWEtZm9udC1ub3JtYWwgY3FhLWxlYWRpbmctWzE4cHhdIGNxYS10cmFja2luZy1ub3JtYWwnO1xuICB9XG5cbiAgZ2V0TWV0YWRhdGFWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyBoaWdobGlnaHQ/OiBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcbiAgfVxuXG4gIGdldE1ldGFkYXRhVmFsdWVTdHlsZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9KTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgLy8gVXNlIHRoZSBzaGFyZWQgdXRpbGl0eSBmdW5jdGlvbiBmb3IgY29uc2lzdGVudCBjb2xvcnNcbiAgICByZXR1cm4gZ2V0TWV0YWRhdGFDb2xvclN0eWxlKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0U2VjdGlvblRpdGxlQ2xhc3NlcyhzZWN0aW9uOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlQ2xhc3NlcyA9IFsnY3FhLXRleHQtc20nLCAnY3FhLWxlYWRpbmctWzE3cHhdJywgJ2NxYS1mb250LXNlbWlib2xkJ107XG4gICAgXG4gICAgc3dpdGNoIChzZWN0aW9uLnZhcmlhbnQpIHtcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtWyM3ODM1MEZdJ10uam9pbignICcpO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtWyM4ODEzMzddJ10uam9pbignICcpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtaW5rJ10uam9pbignICcpO1xuICAgIH1cbiAgfVxuXG4gIGdldFNlY3Rpb25JY29uQ29sb3Ioc2VjdGlvbjogSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbik6IHN0cmluZyB7XG4gICAgc3dpdGNoIChzZWN0aW9uLnZhcmlhbnQpIHtcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gJ2NxYS10ZXh0LVsjNzgzNTBGXSc7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtWyM4ODEzMzddJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtZ3JheS00MDAnO1xuICAgIH1cbiAgfVxufVxuXG5cbiIsIjxkaXYgaWQ9XCJjcWEtdWktcm9vdFwiPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZvbnQtaW50ZXIgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtNCBjcWEtcHgtWzIxcHhdIGNxYS1weS0zIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRUNFQ0VDXSBjcWEtcm91bmRlZC14bCBjcWEtc2hhZG93LWNhcmRcIj5cbiAgICA8IS0tIFNlY3Rpb24gMTogQmFkZ2VzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMyBjcWEtcHktWzEuNV1cIiAqbmdJZj1cInZpc2libGVCYWRnZXMubGVuZ3RoID4gMFwiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xNC40ODY2IDEyLjAwMDVMOS4xNTMyOSAyLjY2NzE0QzkuMDM3IDIuNDYxOTQgOC44NjgzNiAyLjI5MTI3IDguNjY0NTcgMi4xNzI1MkM4LjQ2MDc4IDIuMDUzNzggOC4yMjkxNSAxLjk5MTIxIDcuOTkzMjkgMS45OTEyMUM3Ljc1NzQzIDEuOTkxMjEgNy41MjU3OSAyLjA1Mzc4IDcuMzIyIDIuMTcyNTJDNy4xMTgyMiAyLjI5MTI3IDYuOTQ5NTggMi40NjE5NCA2LjgzMzI5IDIuNjY3MTRMMS40OTk5NSAxMi4wMDA1QzEuMzgyNDEgMTIuMjA0IDEuMzIwNzcgMTIuNDM1MSAxLjMyMTI5IDEyLjY3MDFDMS4zMjE4MSAxMi45MDUyIDEuMzg0NDcgMTMuMTM2IDEuNTAyOTIgMTMuMzM5QzEuNjIxMzYgMTMuNTQyMSAxLjc5MTM4IDEzLjcxMDIgMS45OTU3NSAxMy44MjY0QzIuMjAwMTEgMTMuOTQyNSAyLjQzMTU2IDE0LjAwMjYgMi42NjY2MiAxNC4wMDA1SDEzLjMzMzNDMTMuNTY3MiAxNC4wMDAyIDEzLjc5NyAxMy45Mzg1IDEzLjk5OTUgMTMuODIxM0MxNC4yMDIgMTMuNzA0MiAxNC4zNzAxIDEzLjUzNTkgMTQuNDg3IDEzLjMzMzJDMTQuNjAzOCAxMy4xMzA2IDE0LjY2NTMgMTIuOTAwNyAxNC42NjUzIDEyLjY2NjhDMTQuNjY1MiAxMi40MzI5IDE0LjYwMzYgMTIuMjAzMSAxNC40ODY2IDEyLjAwMDVaXCIgc3Ryb2tlPVwiI0UyQUMyMFwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk04IDZWOC42NjY2N1wiIHN0cm9rZT1cIiNFMkFDMjBcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNOCAxMS4zMzNIOC4wMDY2N1wiIHN0cm9rZT1cIiNFMkFDMjBcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxjcWEtYmFkZ2UgXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGJhZGdlIG9mIHZpc2libGVCYWRnZXNcIiBcbiAgICAgICAgICBbbGFiZWxdPVwiYmFkZ2UubGFiZWxcIlxuICAgICAgICAgIFtpY29uXT1cImJhZGdlLmljb25cIlxuICAgICAgICAgIFt2YXJpYW50XT1cImJhZGdlLnZhcmlhbnQgfHwgJ2RlZmF1bHQnXCJcbiAgICAgICAgPjwvY3FhLWJhZGdlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlY3Rpb24gMjogVGl0bGUgJiBEZXNjcmlwdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtM1wiPlxuICAgICAgPGgyIGNsYXNzPVwiY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LWxnIGNxYS1sZWFkaW5nLVsyMnB4XSBjcWEtdGV4dC10aXRsZVwiPlxuICAgICAgICB7eyB0aXRsZSB9fVxuICAgICAgPC9oMj5cbiAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtYmFzZSBjcWEtZm9udC1ub3JtYWwgY3FhLXRleHQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAge3sgZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cblxuICA8IS0tIFNlY3Rpb24gMzogTWV0YWRhdGEgU2VjdGlvbiAoYWx3YXlzIHZpc2libGUpIC0tPlxuICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGFcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWJnLXN1cmZhY2UtZGVmYXVsdCBjcWEtcm91bmRlZC1bMTBweF0gY3FhLXB4LTQgY3FhLXB5LTMgY3FhLWJvcmRlci10IGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci10LXByaW1hcnktc3VyZmFjZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVsyNXB4XVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1ldGFkYXRhIHwga2V5dmFsdWU7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtWzZweF1cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLWZvbnQtbm9ybWFsIGNxYS1mb250LWludGVyIGNxYS10ZXh0LW1ldGFkYXRhLWtleVwiPlxuICAgICAgICAgICAgICB7eyBpdGVtLmtleSB9fTpcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIFxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRNZXRhZGF0YVZhbHVlQ2xhc3NlcyhpdGVtLmtleSwgaXRlbS52YWx1ZSlcIiBcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TWV0YWRhdGFWYWx1ZVN0eWxlKGl0ZW0ua2V5LCBpdGVtLnZhbHVlKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWZvbnQtbm9ybWFsIGNxYS1sZWFkaW5nLVsxOHB4XSBjcWEtZm9udC1pbnRlciBjcWEtdGV4dC1zbSBjcWEtdGV4dC10aXRsZVwiPlxuICAgICAgICAgICAgICB7eyBnZXRNZXRhZGF0YVZhbHVlKGl0ZW0udmFsdWUpIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFsYXN0XCIgY2xhc3M9XCJjcWEtaC00IGNxYS13LXB4IGNxYS1iZy1ncmF5LTIwMFwiPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWN0aW9uIDQ6IE1ldGFkYXRhIHRvZ2dsZSAtLT5cbiAgICA8YnV0dG9uICpuZ0lmPVwibWV0YWRhdGEgJiYgKGlzUHJlcmVxdWlzaXRlTWlzc2luZyB8fCBpc1Rlc3REYXRhTWlzc2luZylcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLXRleHQtcHJpbWFyeSBjcWEtaW5saW5lLWZsZXggY3FhLWZvbnQtaW50ZXIgY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVs2cHhdXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVNZXRhZGF0YSgpXCI+XG4gICAgICA8c3Bhbj57eyBtZXRhZGF0YUV4cGFuZGVkID8gJ0hpZGUgZGV0YWlscycgOiAnU2hvdyBkZXRhaWxzJyB9fTwvc3Bhbj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS13LVsxNHB4XSBjcWEtaC1bMTRweF0gY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsxNHB4XVwiPlxuICAgICAgICB7eyBtZXRhZGF0YUV4cGFuZGVkID8gJ2V4cGFuZF9sZXNzJyA6ICdleHBhbmRfbW9yZScgfX1cbiAgICAgIDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgPCEtLSBTZWN0aW9uIDU6IFNlY3Rpb25zICh0b2dnbGUgdmlzaWJpbGl0eSkgLS0+XG4gIDxkaXYgKm5nSWY9XCJtZXRhZGF0YUV4cGFuZGVkICYmIHZpc2libGVTZWN0aW9ucz8ubGVuZ3RoXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC00XCI+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgdmlzaWJsZVNlY3Rpb25zXCJcbiAgICAgIGNsYXNzPVwiY3FhLWJvcmRlci1sLTQgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRkJCRjI0XSBjcWEtcm91bmRlZC1bMTBweF0gY3FhLW92ZXJmbG93LWhpZGRlblwiXG4gICAgICBbbmdDbGFzc109XCJnZXRTZWN0aW9uQm9yZGVyQ2xhc3Moc2VjdGlvbilcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtcC1bMTBweF0gY3FhLXBsLVsyMHB4XSBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0zXCI+XG4gICAgICAgIDwhLS0gU2VjdGlvbiBUaXRsZSB3aXRoIElubGluZSBDb2xsYXBzZSBCdXR0b24gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxoMyBbbmdDbGFzc109XCJnZXRTZWN0aW9uVGl0bGVDbGFzc2VzKHNlY3Rpb24pXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgIHt7IHNlY3Rpb24udGl0bGUgfX1cbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtbWwtYXV0byBjcWEtaW5saW5lLWZsZXhcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZVNlY3Rpb24oc2VjdGlvbilcIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJzZWN0aW9uLmV4cGFuZGVkICE9PSBmYWxzZSA/ICdDb2xsYXBzZSBzZWN0aW9uJyA6ICdFeHBhbmQgc2VjdGlvbidcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBbbmdDbGFzc109XCJnZXRTZWN0aW9uSWNvbkNvbG9yKHNlY3Rpb24pXCIgY2xhc3M9XCJjcWEtdy00IGNxYS1oLTQgY3FhLXRleHQtWzE2cHhdIGNxYS1sZWFkaW5nLVsxNnB4XVwiPlxuICAgICAgICAgICAgICB7eyBzZWN0aW9uLmV4cGFuZGVkICE9PSBmYWxzZSA/ICdleHBhbmRfbGVzcycgOiAnZXhwYW5kX21vcmUnIH19XG4gICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIENvbGxhcHNpYmxlIENvbnRlbnQ6IFJlYXNvbiBhbmQgQWN0aW9uIEJ1dHRvbiAtLT5cbiAgICAgICAgPGRpdiAqbmdJZj1cInNlY3Rpb24uZXhwYW5kZWQgIT09IGZhbHNlXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC1bMTBweF1cIj5cbiAgICAgICAgICA8IS0tIFJlYXNvbiAtLT5cbiAgICAgICAgICA8cCBjbGFzcz1cImNxYS10ZXh0LXNtIGNxYS1mb250LW5vcm1hbCBjcWEtbGVhZGluZy1bMThweF0gY3FhLXRleHQtbmV1dHJhbC02MDBcIj5cbiAgICAgICAgICAgIFJlYXNvbjoge3sgc2VjdGlvbi5yZWFzb24gfX1cbiAgICAgICAgICA8L3A+XG4gICAgICAgICAgXG4gICAgICAgICAgPCEtLSBBY3Rpb24gQnV0dG9uIC0tPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8Y3FhLWJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgICAoY2xpY2tlZCk9XCJvblNlY3Rpb25BY3Rpb24oc2VjdGlvbi5pZClcIlxuICAgICAgICAgICAgICBbY3VzdG9tQ2xhc3NdPVwiJ2NxYS1weS1bOXB4XSBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzE3cHhdIGNxYS1ib3JkZXItc2xhdGUgY3FhLXRleHQtc2xhdGUnXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgc2VjdGlvbi5hY3Rpb25CdXR0b25MYWJlbCB9fVxuICAgICAgICAgICAgPC9jcWEtYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgXG4gIDxjcWEtYnV0dG9uXG4gICAgICB2YXJpYW50PVwiZmlsbGVkXCJcbiAgICAgIChjbGlja2VkKT1cIm9uTWFpbkFjdGlvbigpXCJcbiAgICAgIFtkaXNhYmxlZF09XCJpc0FwcGx5aW5nXCJcbiAgICAgIFtjdXN0b21DbGFzc109XCInIWNxYS13LWZ1bGwgIWNxYS10ZXh0LVsxNHB4XSAhY3FhLWxlYWRpbmctWzIwcHhdICFjcWEtZm9udC1zZW1pYm9sZCdcIlxuICAgID5cbiAgICAgIDxzdmcgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPjxwYXRoIGQ9XCJNOS4wMTg4MiAwQzkuMTI5NzkgMC4wNDU0NzY3IDkuMTc3MTggMC4xNTY1MyA5LjIyMjYxIDAuMjU5NjkxQzkuMjQ1MzkgMC4zMTk3OTkgOS4yNjYyOCAwLjM4MDIzNCA5LjI4NjU3IDAuNDQxMTVDOS4yOTQ1MiAwLjQ2NDQ5MyA5LjMwMjQ2IDAuNDg3ODM2IDkuMzEwNjUgMC41MTE4ODZDOS40MTYxMyAwLjgyNjAwOSA5LjUxMDA4IDEuMTQzNSA5LjYwNDU3IDEuNDYwNzZDOS42MjU5MyAxLjUzMjM4IDkuNjQ3MzkgMS42MDM5NyA5LjY2ODg1IDEuNjc1NTdDOS43NzgxIDIuMDQwMDcgOS44ODY1NCAyLjQwNDggOS45OTQzOCAyLjc2OTY5QzEwLjAwOTUgMi44MjA5MyAxMC4wMjQ3IDIuODcyMTggMTAuMDM5OCAyLjkyMzQyQzEwLjA4MjYgMy4wNjc5IDEwLjEyNTIgMy4yMTIzOSAxMC4xNjc3IDMuMzU2OTRDMTAuMjU3MyAzLjY2MjM5IDEwLjM0OTUgMy45NjY5NSAxMC40NDc2IDQuMjcwMDJDMTAuNDU2MSA0LjI5NjUzIDEwLjQ2NDcgNC4zMjMwNSAxMC40NzM1IDQuMzUwMzZDMTAuNzI4NCA1LjEyOTk5IDExLjA4OTYgNS44Mjg3NSAxMS42ODE4IDYuNDIzOTNDMTEuNjk2NSA2LjQzOTQgMTEuNzExMSA2LjQ1NDg4IDExLjcyNjIgNi40NzA4M0MxMS45NzkgNi43Mjg3NSAxMi4zMDM0IDYuOTM1NDEgMTIuNjI3NiA3LjEwMjIxQzEyLjY0NDEgNy4xMTA4NSAxMi42NjA2IDcuMTE5NDggMTIuNjc3NiA3LjEyODM4QzEzLjYzMTcgNy42MTg1MSAxNC43NzkgNy44MzQwNyAxNS44MTI0IDguMTIxMDFDMTYuMjY1MiA4LjI0NjgxIDE2LjcxNjYgOC4zNzY1OCAxNy4xNjYzIDguNTEyMDZDMTcuMTk3OSA4LjUyMTU3IDE3LjIyOTYgOC41MzEwNyAxNy4yNjEyIDguNTQwNTVDMTcuMzU1NyA4LjU2ODkgMTcuNDUgOC41OTc3NCAxNy41NDQyIDguNjI2OTRDMTcuNTY2MiA4LjYzMzU4IDE3LjU4ODIgOC42NDAyMyAxNy42MTA4IDguNjQ3MDdDMTcuNzQwNiA4LjY4ODEyIDE3Ljg2NDggOC43MzY1OCAxNy45NzEzIDguODIwNTRDMTguMDAzOCA4Ljg4ODM3IDE4LjAwMzggOC44ODgzNyAxNy45OTUgOC45NTYxOUMxNy44OTEzIDkuMDU0NzIgMTcuNzg4NCA5LjEwMDkyIDE3LjY1MTYgOS4xNDU5OUMxNy42MzIgOS4xNTI2NCAxNy42MTI0IDkuMTU5MyAxNy41OTIzIDkuMTY2MTVDMTcuMzYxMiA5LjI0MzY2IDE3LjEyNyA5LjMxMTQ5IDE2Ljg5MjUgOS4zNzg3MUMxNi44NDQ0IDkuMzkyNjEgMTYuNzk2MyA5LjQwNjUxIDE2Ljc0ODIgOS40MjA0MkMxNi40NTE0IDkuNTA2MDMgMTYuMTU0MiA5LjU4OTggMTUuODU2NiA5LjY3MjYzQzE1LjQ2NDYgOS43ODE3NSAxNS4wNzMzIDkuODkyNjggMTQuNjgyMyAxMC4wMDQ5QzE0LjYxODIgMTAuMDIzMiAxNC41NTQxIDEwLjA0MTYgMTQuNDkgMTAuMDU5OEMxNC4xNTM0IDEwLjE1NTcgMTMuODE4NSAxMC4yNTUxIDEzLjQ4NjMgMTAuMzY0MkMxMy40NTg3IDEwLjM3MzIgMTMuNDMxMiAxMC4zODIyIDEzLjQwMjggMTAuMzkxNUMxMi4yOTAyIDEwLjc2MTYgMTEuNDQyMiAxMS40NTIyIDEwLjkxMTQgMTIuNDYyQzEwLjYyNTMgMTMuMDI5NSAxMC40NTY1IDEzLjY0MzIgMTAuMjg0MyAxNC4yNDg5QzEwLjIzNzcgMTQuNDEyNCAxMC4xODgyIDE0LjU3NDkgMTAuMTM4MSAxNC43Mzc0QzEwLjA5ODggMTQuODY1MiAxMC4wNjA0IDE0Ljk5MzMgMTAuMDIzIDE1LjEyMTZDMTAuMDE4NSAxNS4xMzY5IDEwLjAxNDEgMTUuMTUyMiAxMC4wMDk1IDE1LjE2NzlDOS45ODc4OCAxNS4yNDE5IDkuOTY2MzggMTUuMzE1OSA5Ljk0NTAzIDE1LjM4OTlDOS44OTAzOSAxNS41Nzc2IDkuODMxNTYgMTUuNzYzNyA5Ljc3MTExIDE1Ljk0OThDOS42NjM4MyAxNi4yODA0IDkuNTY2MiAxNi42MTM1IDkuNDY5MTcgMTYuOTQ3QzkuMzIyODggMTcuNDQ5MSA5LjMyMjg4IDE3LjQ0OTEgOS4yMzk5MyAxNy42OTA1QzkuMjM0NDMgMTcuNzA2NyA5LjIyODkzIDE3LjcyMjkgOS4yMjMyNiAxNy43Mzk2QzkuMTkyOTggMTcuODI1NiA5LjE2MTgzIDE3LjkwNDcgOS4xMDQ1MyAxNy45Nzc0QzkuMDE3MzQgMTcuOTk1OCA5LjAxNzM0IDE3Ljk5NTggOC45MzkwMSAxOEM4Ljg0OTQ2IDE3Ljg3NTIgOC43OTAxNiAxNy43NTQyIDguNzQyNjUgMTcuNjEwMkM4LjczNTc0IDE3LjU4OTcgOC43Mjg4MiAxNy41NjkzIDguNzIxNyAxNy41NDgzQzguNjMzNjggMTcuMjg1IDguNTU1MDIgMTcuMDE4OSA4LjQ3NjM0IDE2Ljc1MjlDOC40NTgzMiAxNi42OTIxIDguNDQwMjIgMTYuNjMxMyA4LjQyMjExIDE2LjU3MDVDOC4yODcyIDE2LjExNzMgOC4xNTQ1MSAxNS42NjM1IDguMDIyMDIgMTUuMjA5NkM3LjQ3MDE0IDEyLjk2NDUgNy40NzAxNCAxMi45NjQ1IDYuMDc4IDExLjE0OTNDNi4wNTU2OSAxMS4xMzE5IDYuMDMzMzggMTEuMTE0NSA2LjAxMDM5IDExLjA5NjZDNS4wOTgyNiAxMC4zOTggMy44OTY2NyAxMC4xMzk0IDIuNzk2MyA5LjgzNjI3QzIuNTI0MTUgOS43NjEyNCAyLjI1MjEgOS42ODU4NyAxLjk4MDA2IDkuNjEwNDZDMS45NTYyOCA5LjYwMzg2IDEuOTU2MjggOS42MDM4NiAxLjkzMjAxIDkuNTk3MTRDMS41Mzk2MiA5LjQ4ODM0IDEuMTQ3MzUgOS4zNzkyNSAwLjc1NjQ0OCA5LjI2NTY2QzAuNzM5OTExIDkuMjYwODkgMC43MjMzNzUgOS4yNTYxMiAwLjcwNjMzOCA5LjI1MTIxQzAuMTA1Nzk4IDkuMDc3NjcgMC4xMDU3OTggOS4wNzc2NyAwLjAwMTI5MzA3IDguOTU2MTlDLTAuMDAxNjYyNTIgOC45MDEwOCAtMC4wMDE2NjI1MiA4LjkwMTA4IDAuMDI0OTM3OCA4Ljg0MzE1QzAuMTM0MTY3IDguNzQwOCAwLjI0MDE1MyA4LjY5Njk2IDAuMzg0MzIgOC42NTIzOEMwLjQwNTE5NCA4LjY0NTY3IDAuNDI2MDY4IDguNjM4OTcgMC40NDc1NzQgOC42MzIwNkMwLjUxMTUwNiA4LjYxMTY0IDAuNTc1NTc3IDguNTkxNjkgMC42Mzk3MDIgOC41NzE4M0MwLjY1ODAwMSA4LjU2NjA5IDAuNjc2MzAxIDguNTYwMzUgMC42OTUxNTUgOC41NTQ0M0MwLjgyNDU3IDguNTEzODUgMC45NTQ0NSA4LjQ3NDc5IDEuMDg0NTIgOC40MzYxOEMxLjExNjQ4IDguNDI2NjUgMS4xMTY0OCA4LjQyNjY1IDEuMTQ5MDkgOC40MTY5M0MxLjcwNDU0IDguMjUxNzQgMi4yNjM2MSA4LjA5ODAxIDIuODIyNTIgNy45NDM5MkMzLjIzODk5IDcuODI5MDkgMy42NTQ3NiA3LjcxMjM2IDQuMDY5MjEgNy41OTA5N0M0LjA4ODI1IDcuNTg1NDIgNC4xMDczIDcuNTc5ODcgNC4xMjY5MiA3LjU3NDE1QzUuMDg3IDcuMjkzOTMgNi4wMjU1NyA2Ljg5NjMyIDYuNjQ1NDcgNi4xMDc0QzYuNjU0NzUgNi4wOTU2OSA2LjY2NDAzIDYuMDgzOTkgNi42NzM2IDYuMDcxOTRDNy4zNjM5NSA1LjE5NjMgNy42MzMxNSA0LjEzMTQ1IDcuOTMzOTEgMy4wOTI0MUM4LjAzMjg1IDIuNzUwNjkgOC4xMzI5OCAyLjQwOTI5IDguMjMzNDUgMi4wNjc5OEM4LjI2MTI3IDEuOTczNDcgOC4yODkwNiAxLjg3ODk0IDguMzE2NzMgMS43ODQzOUM4LjQyNzg4IDEuNDA0NTggOC41NDA3IDEuMDI1MjggOC42NiAwLjY0NzcyN0M4LjY3MTE2IDAuNjEyMzcyIDguNjgyMjcgMC41NzcwMDEgOC42OTMzMyAwLjU0MTYxNEM4Ljg2MDM1IDAuMDA3OTc1MjIgOC44NjAzNSAwLjAwNzk3NTIyIDkuMDE4ODIgMFpcIiBmaWxsPVwiI0ZCRkNGRlwiLz48cGF0aCBkPVwiTTE0LjQ3MTkgMS4xMTA2OUMxNC41ODA1IDEuMjI4MTcgMTQuNjAyMiAxLjM2NjI0IDE0LjYzNiAxLjUxNjI1QzE0Ljc0ODcgMS45ODc1MSAxNC44Nzg2IDIuNDIwODQgMTUuMzI5MyAyLjY5NDZDMTUuNjA3NCAyLjg0MTY3IDE1LjkzODkgMi45MDg1OSAxNi4yNDcgMi45NzE4QzE2LjM3NzEgMi45OTkwMiAxNi40ODY5IDMuMDM1MTUgMTYuNTk4NSAzLjEwNzRDMTYuNjIzNiAzLjE0NTU1IDE2LjYyMzYgMy4xNDU1NSAxNi42MjIxIDMuMjExOTdDMTYuNTk2MyAzLjI5MjczIDE2LjU3MzYgMy4zMTg3OCAxNi41MDU0IDMuMzcxNjVDMTYuNDMwOCAzLjM5NTQ5IDE2LjQzMDggMy4zOTU0OSAxNi4zNDEzIDMuNDE0MDRDMTYuMzA3NSAzLjQyMTQ3IDE2LjI3MzYgMy40Mjg5OCAxNi4yMzk4IDMuNDM2NTZDMTYuMjIxNyAzLjQ0MDU4IDE2LjIwMzYgMy40NDQ2IDE2LjE4NDkgMy40NDg3NEMxNS42MzM5IDMuNTcwNjIgMTUuNjMzOSAzLjU3MDYyIDE1LjE1NzYgMy44NDY0NUMxNS4xNDIxIDMuODU4MzcgMTUuMTI2NyAzLjg3MDI5IDE1LjExMDcgMy44ODI1N0MxNC43NzAzIDQuMTY5NTkgMTQuNjk4MyA0LjY0NzAzIDE0LjU5NTggNS4wNDY5OUMxNC41OSA1LjA2ODk2IDE0LjU4NDEgNS4wOTA5MiAxNC41NzggNS4xMTM1NUMxNC41NzMgNS4xMzMgMTQuNTY3OSA1LjE1MjQ0IDE0LjU2MjcgNS4xNzI0OEMxNC41NDA1IDUuMjMxODUgMTQuNTE3NiA1LjI3MDU3IDE0LjQ3MTkgNS4zMTYwN0MxNC4zNDQ3IDUuMzMxNTIgMTQuMzQ0NyA1LjMzMTUyIDE0LjI4MjggNS4zMTYwN0MxNC4xODQzIDUuMjQzMDkgMTQuMTYyMyA1LjE1OTk3IDE0LjEzNjYgNS4wNDgyOEMxNC4xMzIyIDUuMDMwOTkgMTQuMTI3OSA1LjAxMzY5IDE0LjEyMzUgNC45OTU4N0MxNC4xMDk4IDQuOTQwNjQgMTQuMDk2NSA0Ljg4NTMxIDE0LjA4MzMgNC44Mjk5NkMxMy45Nzk2IDQuMzk4OTEgMTMuODYyNSAzLjk3NiAxMy40NDkgMy43MjMzM0MxMy4xMjU4IDMuNTUxMDEgMTIuNzMyOSAzLjQ2OTUxIDEyLjM3MTcgMy40MDM3QzEyLjI3MjcgMy4zODM5OSAxMi4yMTYgMy4zNTkyIDEyLjE1NDcgMy4yODEyMUMxMi4xNDE0IDMuMjAyMDggMTIuMTQxNCAzLjIwMjA4IDEyLjE1NDcgMy4xMjI5NEMxMi4yNDg5IDMuMDI5NzEgMTIuMzQ4IDMuMDA2OTYgMTIuNDc1NCAyLjk3ODgxQzEyLjUxNTYgMi45NjkzIDEyLjU1NTcgMi45NTk3MyAxMi41OTU4IDIuOTUwMUMxMi42MTY1IDIuOTQ1MTYgMTIuNjM3MiAyLjk0MDIyIDEyLjY1ODYgMi45MzUxMkMxMi43NjQyIDIuOTA5MTEgMTIuODY4OSAyLjg3OTk1IDEyLjk3MzQgMi44NTAyMUMxMi45OTI0IDIuODQ0OTQgMTMuMDExNCAyLjgzOTY3IDEzLjAzMSAyLjgzNDI0QzEzLjI0MzYgMi43NzM0NiAxMy40MjcxIDIuNjk1NzEgMTMuNTk3MSAyLjU1NzdDMTMuNjEyOSAyLjU0NTIzIDEzLjYyODggMi41MzI3NiAxMy42NDUxIDIuNTE5OUMxMy45MDk2IDIuMjkyMjggMTMuOTk5NSAxLjk1MDMyIDE0LjA4MSAxLjYzMTI0QzE0LjA4NzMgMS42MDcwMiAxNC4wOTM1IDEuNTgyOCAxNC4wOTk5IDEuNTU3ODRDMTQuMTEyMyAxLjUwOTE4IDE0LjEyNDQgMS40NjA0NiAxNC4xMzYzIDEuNDExN0MxNC4xNDQ5IDEuMzc3NzYgMTQuMTQ0OSAxLjM3Nzc2IDE0LjE1MzUgMS4zNDMxNUMxNC4xNTg1IDEuMzIyODggMTQuMTYzNSAxLjMwMjYxIDE0LjE2ODYgMS4yODE3MkMxNC4xOTA0IDEuMjE3MTkgMTQuMjE5IDEuMTY2NTIgMTQuMjU5MSAxLjExMDY5QzE0LjMzNjIgMS4wNzM4NSAxNC4zOTAzIDEuMDkwNSAxNC40NzE5IDEuMTEwNjlaXCIgZmlsbD1cIiNGQkZDRkZcIi8+PHBhdGggZD1cIk0zLjU5MDg5IDEyLjQ5NDJDMy42MTkwMiAxMi40OTQ0IDMuNjE5MDIgMTIuNDk0NCAzLjY0NzcyIDEyLjQ5NDZDMy44NDk1NCAxMi41MDA0IDMuOTg2MDkgMTIuNTYyMyA0LjEzNDcyIDEyLjY5MkM0LjMwNzY3IDEyLjg3MDcgNC4zODc1MyAxMy4wNzIyIDQuMzgyOTkgMTMuMzEzQzQuMzYzNTcgMTMuNTA4MiA0LjI0MzE2IDEzLjY3ODcgNC4wOTU0NyAxMy44MTA3QzMuOTIxNjMgMTMuOTQ0OCAzLjc0NjI2IDEzLjk4OTIgMy41MjQxMSAxMy45ODNDMy4zMzY4MSAxMy45NjIxIDMuMTYwNiAxMy44NzcgMy4wMjc4NSAxMy43NDlDMi44NjI3NiAxMy41MzM2IDIuODE0NSAxMy4zMzYxIDIuODM4NjkgMTMuMDcwN0MyLjg4ODY3IDEyLjg2MTggMy4wMzI3NCAxMi42OTIzIDMuMjE3MDEgMTIuNTczM0MzLjM0NTAyIDEyLjUxMTMgMy40NDc5OCAxMi40OTMgMy41OTA4OSAxMi40OTQyWlwiIGZpbGw9XCIjRkJGQ0ZGXCIvPjwvc3ZnPlxuICAgICAge3sgaXNBcHBseWluZyA/ICdBcHBseWluZyBzdWdnZXN0aW9uJyA6ICdBcHBseSBzdWdnZXN0aW9uJyB9fVxuICAgIDwvY3FhLWJ1dHRvbj5cbiAgPC9kaXY+XG48L2Rpdj5cbiBcbiJdfQ==
|
|
201
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zaWdodC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9pbnNpZ2h0LWNhcmQvaW5zaWdodC1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9pbnNpZ2h0LWNhcmQvaW5zaWdodC1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLHFCQUFxQixJQUFJLHFCQUFxQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQXdCbEcsTUFBTSxPQUFPLG9CQUFvQjtJQUxqQztRQU1XLFVBQUssR0FBVyxFQUFFLENBQUM7UUFDbkIsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFDMUIsWUFBTyxHQUFtQixFQUFFLENBQUM7UUFXNUIscUJBQWdCLEdBQVksSUFBSSxDQUFDO1FBQ2pDLDBCQUFxQixHQUFZLEtBQUssQ0FBQztRQUN2QyxzQkFBaUIsR0FBWSxLQUFLLENBQUM7UUFFNUMsb0NBQW9DO1FBQzVCLHlCQUFvQixHQUF5QixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBRS9ELGdDQUFnQztRQUNoQyxlQUFVLEdBQVksS0FBSyxDQUFDO1FBRWxCLG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUM3QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFxQyxDQUFDO1FBQ3RFLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDaEQsMkJBQXNCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNsRCwrQkFBMEIsR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3RELDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7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LENBQUM7U0FDOUI7SUFDSCxDQUFDOztpSEF2TFUsb0JBQW9CO3FHQUFwQixvQkFBb0IsMm5CQ3pCakMsdThYQW1IQTsyRkQxRmEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLGtCQUFrQjs4QkFLbkIsS0FBSztzQkFBYixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBR0YsTUFBTTtzQkFEVCxLQUFLO2dCQU9HLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBUUksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csMEJBQTBCO3NCQUFuQyxNQUFNO2dCQUNHLHFCQUFxQjtzQkFBOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRNZXRhZGF0YVZhbHVlU3R5bGUgYXMgZ2V0TWV0YWRhdGFDb2xvclN0eWxlIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWV0YWRhdGEtY29sb3JzLnV0aWwnO1xuaW1wb3J0IHsgQmFkZ2VDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYWRnZS9iYWRnZS5jb21wb25lbnQnO1xuXG4vLyBVc2UgQmFkZ2VDb21wb25lbnQgaW5wdXRzIGRpcmVjdGx5IGluc3RlYWQgb2YgYSBzZXBhcmF0ZSBpbnRlcmZhY2VcbmV4cG9ydCB0eXBlIEluc2lnaHRCYWRnZSA9IFBpY2s8QmFkZ2VDb21wb25lbnQsICdsYWJlbCcgfCAnaWNvbicgfCAndmFyaWFudCc+O1xuXG5leHBvcnQgaW50ZXJmYWNlIEluc2lnaHRNZXRhZGF0YSB7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9O1xufVxuXG5pbnRlcmZhY2UgSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHZhcmlhbnQ6ICd3YXJuaW5nJyB8ICdlcnJvcicgfCAnZGVmYXVsdCc7XG4gIHJlYXNvbjogc3RyaW5nO1xuICBhY3Rpb25CdXR0b25MYWJlbDogc3RyaW5nO1xuICBleHBhbmRlZD86IGJvb2xlYW47XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2NxYS1pbnNpZ2h0LWNhcmQnLFxuICB0ZW1wbGF0ZVVybDogJy4vaW5zaWdodC1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXVxufSlcbmV4cG9ydCBjbGFzcyBJbnNpZ2h0Q2FyZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZGVzY3JpcHRpb246IHN0cmluZyA9ICcnO1xuICBwcml2YXRlIF9iYWRnZXM6IEluc2lnaHRCYWRnZVtdID0gW107XG4gIEBJbnB1dCgpXG4gIHNldCBiYWRnZXModmFsdWU6IEluc2lnaHRCYWRnZVtdKSB7XG4gICAgdGhpcy5fYmFkZ2VzID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGJhZGdlcygpOiBJbnNpZ2h0QmFkZ2VbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2JhZGdlcztcbiAgfVxuICBASW5wdXQoKSBtZXRhZGF0YT86IEluc2lnaHRNZXRhZGF0YTtcbiAgQElucHV0KCkgcHJlcmVxdWlzaXRlU2VjdGlvbj86IHN0cmluZztcbiAgQElucHV0KCkgdGVzdERhdGFTZWN0aW9uPzogc3RyaW5nO1xuICBASW5wdXQoKSBtZXRhZGF0YUV4cGFuZGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgQElucHV0KCkgaXNQcmVyZXF1aXNpdGVNaXNzaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIEBJbnB1dCgpIGlzVGVzdERhdGFNaXNzaW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gVHJhY2sgZXhwYW5kZWQgc3RhdGUgZm9yIHNlY3Rpb25zXG4gIHByaXZhdGUgc2VjdGlvbkV4cGFuZGVkU3RhdGU6IE1hcDxzdHJpbmcsIGJvb2xlYW4+ID0gbmV3IE1hcCgpO1xuICBcbiAgLy8gTG9hZGluZyBzdGF0ZSBmb3IgbWFpbiBhY3Rpb25cbiAgaXNBcHBseWluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBtZXRhZGF0YVRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHNlY3Rpb25Ub2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPHsgaWQ6IHN0cmluZzsgZXhwYW5kZWQ6IGJvb2xlYW4gfT4oKTtcbiAgQE91dHB1dCgpIHNlY3Rpb25BY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgb25BcHBseVN1Z2dlc3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIG9uQXR0YWNoUHJlcmVxdWlzaXRlc0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb25JbXBvcnRUZXN0RGF0YUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHRvZ2dsZU1ldGFkYXRhKCk6IHZvaWQge1xuICAgIHRoaXMubWV0YWRhdGFFeHBhbmRlZCA9ICF0aGlzLm1ldGFkYXRhRXhwYW5kZWQ7XG4gICAgdGhpcy5tZXRhZGF0YVRvZ2dsZS5lbWl0KHRoaXMubWV0YWRhdGFFeHBhbmRlZCk7XG4gIH1cblxuICB0b2dnbGVTZWN0aW9uKHNlY3Rpb246IEludGVybmFsSW5zaWdodFNlY3Rpb24pOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50U3RhdGUgPSB0aGlzLnNlY3Rpb25FeHBhbmRlZFN0YXRlLmdldChzZWN0aW9uLmlkKSA/PyAoc2VjdGlvbi5leHBhbmRlZCA/PyB0cnVlKTtcbiAgICBjb25zdCBuZXdTdGF0ZSA9ICFjdXJyZW50U3RhdGU7XG4gICAgdGhpcy5zZWN0aW9uRXhwYW5kZWRTdGF0ZS5zZXQoc2VjdGlvbi5pZCwgbmV3U3RhdGUpO1xuICAgIFxuICAgIHRoaXMuc2VjdGlvblRvZ2dsZS5lbWl0KHsgaWQ6IHNlY3Rpb24uaWQsIGV4cGFuZGVkOiBuZXdTdGF0ZSB9KTtcbiAgfVxuXG4gIG9uU2VjdGlvbkFjdGlvbihzZWN0aW9uSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuc2VjdGlvbkFjdGlvbkNsaWNrLmVtaXQoc2VjdGlvbklkKTtcbiAgICBcbiAgICAvLyBFbWl0IHNwZWNpZmljIGV2ZW50cyBmb3Iga25vd24gYWN0aW9uc1xuICAgIGlmIChzZWN0aW9uSWQgPT09ICdwcmVyZXF1aXNpdGUnKSB7XG4gICAgICB0aGlzLm9uQXR0YWNoUHJlcmVxdWlzaXRlc0NsaWNrLmVtaXQoKTtcbiAgICB9IGVsc2UgaWYgKHNlY3Rpb25JZCA9PT0gJ3Rlc3QtZGF0YScpIHtcbiAgICAgIHRoaXMub25JbXBvcnRUZXN0RGF0YUNsaWNrLmVtaXQoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmlzaWJsZUJhZGdlcygpOiBJbnNpZ2h0QmFkZ2VbXSB7XG4gICAgY29uc3QgdmlzaWJsZTogSW5zaWdodEJhZGdlW10gPSBbXTtcbiAgICBpZiAodGhpcy5pc1ByZXJlcXVpc2l0ZU1pc3NpbmcpIHtcbiAgICAgIHZpc2libGUucHVzaCh7IGxhYmVsOiAnUHJlcmVxdWlzaXRlIE1pc3NpbmcnLCB2YXJpYW50OiAnd2FybmluZycgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzVGVzdERhdGFNaXNzaW5nKSB7XG4gICAgICB2aXNpYmxlLnB1c2goeyBsYWJlbDogJ1Rlc3QgRGF0YSBNaXNzaW5nJywgdmFyaWFudDogJ2Vycm9yJyB9KTtcbiAgICB9XG4gICAgLy8gQWxzbyBpbmNsdWRlIGFueSBjdXN0b20gYmFkZ2VzXG4gICAgaWYgKHRoaXMuYmFkZ2VzKSB7XG4gICAgICB2aXNpYmxlLnB1c2goLi4udGhpcy5iYWRnZXMpO1xuICAgIH1cbiAgICByZXR1cm4gdmlzaWJsZTtcbiAgfVxuXG4gIGdldCB2aXNpYmxlU2VjdGlvbnMoKTogSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbltdIHtcbiAgICBjb25zdCB2aXNpYmxlOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uW10gPSBbXTtcbiAgICBcbiAgICBpZiAodGhpcy5pc1ByZXJlcXVpc2l0ZU1pc3NpbmcgJiYgdGhpcy5wcmVyZXF1aXNpdGVTZWN0aW9uKSB7XG4gICAgICAvLyBVc2Ugc3RvcmVkIHN0YXRlIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIGRlZmF1bHQgdG8gdHJ1ZVxuICAgICAgY29uc3QgZXhwYW5kZWQgPSB0aGlzLnNlY3Rpb25FeHBhbmRlZFN0YXRlLmhhcygncHJlcmVxdWlzaXRlJykgXG4gICAgICAgID8gdGhpcy5zZWN0aW9uRXhwYW5kZWRTdGF0ZS5nZXQoJ3ByZXJlcXVpc2l0ZScpIVxuICAgICAgICA6IHRydWU7XG4gICAgICBcbiAgICAgIHZpc2libGUucHVzaCh7XG4gICAgICAgIGlkOiAncHJlcmVxdWlzaXRlJyxcbiAgICAgICAgdGl0bGU6ICdQcmVyZXF1aXNpdGUgTWlzc2luZycsXG4gICAgICAgIHZhcmlhbnQ6ICd3YXJuaW5nJyxcbiAgICAgICAgcmVhc29uOiB0aGlzLnByZXJlcXVpc2l0ZVNlY3Rpb24sXG4gICAgICAgIGFjdGlvbkJ1dHRvbkxhYmVsOiAnQXR0YWNoIFByZXJlcXVpc2l0ZXMnLFxuICAgICAgICBleHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMuaXNUZXN0RGF0YU1pc3NpbmcgJiYgdGhpcy50ZXN0RGF0YVNlY3Rpb24pIHtcbiAgICAgIC8vIFVzZSBzdG9yZWQgc3RhdGUgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgZGVmYXVsdCB0byB0cnVlXG4gICAgICBjb25zdCBleHBhbmRlZCA9IHRoaXMuc2VjdGlvbkV4cGFuZGVkU3RhdGUuaGFzKCd0ZXN0LWRhdGEnKVxuICAgICAgICA/IHRoaXMuc2VjdGlvbkV4cGFuZGVkU3RhdGUuZ2V0KCd0ZXN0LWRhdGEnKSFcbiAgICAgICAgOiB0cnVlO1xuICAgICAgXG4gICAgICB2aXNpYmxlLnB1c2goe1xuICAgICAgICBpZDogJ3Rlc3QtZGF0YScsXG4gICAgICAgIHRpdGxlOiAnVGVzdCBEYXRhIE1pc3NpbmcnLFxuICAgICAgICB2YXJpYW50OiAnZXJyb3InLFxuICAgICAgICByZWFzb246IHRoaXMudGVzdERhdGFTZWN0aW9uLFxuICAgICAgICBhY3Rpb25CdXR0b25MYWJlbDogJ0ltcG9ydCBUZXN0IERhdGEnLFxuICAgICAgICBleHBhbmRlZDogZXhwYW5kZWQsXG4gICAgICB9KTtcbiAgICB9XG4gICAgXG4gICAgcmV0dXJuIHZpc2libGU7XG4gIH1cblxuICBhc3luYyBvbk1haW5BY3Rpb24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgaWYgKHRoaXMuaXNBcHBseWluZykge1xuICAgICAgcmV0dXJuOyAvLyBQcmV2ZW50IG11bHRpcGxlIGNsaWNrc1xuICAgIH1cbiAgICBcbiAgICB0aGlzLmlzQXBwbHlpbmcgPSB0cnVlO1xuICAgIFxuICAgIHRyeSB7XG4gICAgICB0aGlzLm9uQXBwbHlTdWdnZXN0aW9uQ2xpY2suZW1pdCgpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICAvLyBSZXNldCBsb2FkaW5nIHN0YXRlIGFmdGVyIGFjdGlvbiBjb21wbGV0ZXNcbiAgICAgIC8vIElmIHlvdSBuZWVkIHRvIGtlZXAgdGhlIGxvYWRpbmcgc3RhdGUgbG9uZ2VyLCBjYWxsIHJlc2V0QXBwbHlpbmdTdGF0ZSgpIG1hbnVhbGx5XG4gICAgICAvLyBhZnRlciB5b3VyIGFzeW5jIG9wZXJhdGlvbiBjb21wbGV0ZXNcbiAgICAgIHRoaXMuaXNBcHBseWluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8vIE1ldGhvZCB0byByZXNldCBsb2FkaW5nIHN0YXRlIChjYW4gYmUgY2FsbGVkIGV4dGVybmFsbHkgaWYgbmVlZGVkKVxuICByZXNldEFwcGx5aW5nU3RhdGUoKTogdm9pZCB7XG4gICAgdGhpcy5pc0FwcGx5aW5nID0gZmFsc2U7XG4gIH1cblxuICAvLyBSZW1vdmVkIGdldEJhZGdlQ2xhc3NlcyAtIG5vdyB1c2luZyBCYWRnZUNvbXBvbmVudFxuXG4gIGdldFNlY3Rpb25Cb3JkZXJDbGFzcyhzZWN0aW9uOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHNlY3Rpb24udmFyaWFudCkge1xuICAgICAgY2FzZSAnd2FybmluZyc6XG4gICAgICAgIHJldHVybiAnY3FhLWJvcmRlci1sLTQgY3FhLWJvcmRlci1sLXllbGxvdy01MDAnO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gJ2NxYS1ib3JkZXItbC00IGNxYS1ib3JkZXItbC1yZWQtNTAwJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLWJvcmRlci1sLTQgY3FhLWJvcmRlci1sLWdyYXktNTAwJztcbiAgICB9XG4gIH1cblxuICBnZXRNZXRhZGF0YVZhbHVlQ2xhc3NlcyhrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9KTogc3RyaW5nIHtcbiAgICAvLyBCYXNlIGNsYXNzZXMgZm9yIGFsbCB2YWx1ZXMgKGZvbnQtc2l6ZTogMTRweCwgbGluZS1oZWlnaHQ6IDE4cHgsIGZvbnQtd2VpZ2h0OiA0MDApXG4gICAgcmV0dXJuICdjcWEtZm9udC1ub3JtYWwgY3FhLWxlYWRpbmctWzE4cHhdIGNxYS10cmFja2luZy1ub3JtYWwnO1xuICB9XG5cbiAgZ2V0TWV0YWRhdGFWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgeyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nOyBoaWdobGlnaHQ/OiBib29sZWFuIH0pOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZS52YWx1ZTtcbiAgfVxuXG4gIGdldE1ldGFkYXRhVmFsdWVTdHlsZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB8IHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZzsgaGlnaGxpZ2h0PzogYm9vbGVhbiB9KTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSB7XG4gICAgLy8gVXNlIHRoZSBzaGFyZWQgdXRpbGl0eSBmdW5jdGlvbiBmb3IgY29uc2lzdGVudCBjb2xvcnNcbiAgICByZXR1cm4gZ2V0TWV0YWRhdGFDb2xvclN0eWxlKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgZ2V0U2VjdGlvblRpdGxlQ2xhc3NlcyhzZWN0aW9uOiBJbnRlcm5hbEluc2lnaHRTZWN0aW9uKTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlQ2xhc3NlcyA9IFsnY3FhLXRleHQtc20nLCAnY3FhLWxlYWRpbmctWzE3cHhdJywgJ2NxYS1mb250LXNlbWlib2xkJ107XG4gICAgXG4gICAgc3dpdGNoIChzZWN0aW9uLnZhcmlhbnQpIHtcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtWyM3ODM1MEZdJ10uam9pbignICcpO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtWyM4ODEzMzddJ10uam9pbignICcpO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gWy4uLmJhc2VDbGFzc2VzLCAnY3FhLXRleHQtaW5rJ10uam9pbignICcpO1xuICAgIH1cbiAgfVxuXG4gIGdldFNlY3Rpb25JY29uQ29sb3Ioc2VjdGlvbjogSW50ZXJuYWxJbnNpZ2h0U2VjdGlvbik6IHN0cmluZyB7XG4gICAgc3dpdGNoIChzZWN0aW9uLnZhcmlhbnQpIHtcbiAgICAgIGNhc2UgJ3dhcm5pbmcnOlxuICAgICAgICByZXR1cm4gJ2NxYS10ZXh0LVsjNzgzNTBGXSc7XG4gICAgICBjYXNlICdlcnJvcic6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtWyM4ODEzMzddJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAnY3FhLXRleHQtZ3JheS00MDAnO1xuICAgIH1cbiAgfVxufVxuXG5cbiIsIjxkaXYgaWQ9XCJjcWEtdWktcm9vdFwiPlxuICA8ZGl2IGNsYXNzPVwiY3FhLWZvbnQtaW50ZXIgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtNCBjcWEtcHgtWzIxcHhdIGNxYS1weS0zIGNxYS1ib3JkZXIgY3FhLWJvcmRlci1zb2xpZCBjcWEtYm9yZGVyLVsjRUNFQ0VDXSBjcWEtcm91bmRlZC14bCBjcWEtc2hhZG93LWNhcmRcIj5cbiAgICA8IS0tIFNlY3Rpb24gMTogQmFkZ2VzIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMyBjcWEtcHktWzEuNV1cIiAqbmdJZj1cInZpc2libGVCYWRnZXMubGVuZ3RoID4gMFwiPlxuICAgICAgPHN2ZyB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xNC40ODY2IDEyLjAwMDVMOS4xNTMyOSAyLjY2NzE0QzkuMDM3IDIuNDYxOTQgOC44NjgzNiAyLjI5MTI3IDguNjY0NTcgMi4xNzI1MkM4LjQ2MDc4IDIuMDUzNzggOC4yMjkxNSAxLjk5MTIxIDcuOTkzMjkgMS45OTEyMUM3Ljc1NzQzIDEuOTkxMjEgNy41MjU3OSAyLjA1Mzc4IDcuMzIyIDIuMTcyNTJDNy4xMTgyMiAyLjI5MTI3IDYuOTQ5NTggMi40NjE5NCA2LjgzMzI5IDIuNjY3MTRMMS40OTk5NSAxMi4wMDA1QzEuMzgyNDEgMTIuMjA0IDEuMzIwNzcgMTIuNDM1MSAxLjMyMTI5IDEyLjY3MDFDMS4zMjE4MSAxMi45MDUyIDEuMzg0NDcgMTMuMTM2IDEuNTAyOTIgMTMuMzM5QzEuNjIxMzYgMTMuNTQyMSAxLjc5MTM4IDEzLjcxMDIgMS45OTU3NSAxMy44MjY0QzIuMjAwMTEgMTMuOTQyNSAyLjQzMTU2IDE0LjAwMjYgMi42NjY2MiAxNC4wMDA1SDEzLjMzMzNDMTMuNTY3MiAxNC4wMDAyIDEzLjc5NyAxMy45Mzg1IDEzLjk5OTUgMTMuODIxM0MxNC4yMDIgMTMuNzA0MiAxNC4zNzAxIDEzLjUzNTkgMTQuNDg3IDEzLjMzMzJDMTQuNjAzOCAxMy4xMzA2IDE0LjY2NTMgMTIuOTAwNyAxNC42NjUzIDEyLjY2NjhDMTQuNjY1MiAxMi40MzI5IDE0LjYwMzYgMTIuMjAzMSAxNC40ODY2IDEyLjAwMDVaXCIgc3Ryb2tlPVwiI0UyQUMyMFwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+PHBhdGggZD1cIk04IDZWOC42NjY2N1wiIHN0cm9rZT1cIiNFMkFDMjBcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjxwYXRoIGQ9XCJNOCAxMS4zMzNIOC4wMDY2N1wiIHN0cm9rZT1cIiNFMkFDMjBcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPjwvc3ZnPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWdhcC0yXCI+XG4gICAgICAgIDxjcWEtYmFkZ2UgXG4gICAgICAgICAgKm5nRm9yPVwibGV0IGJhZGdlIG9mIHZpc2libGVCYWRnZXNcIiBcbiAgICAgICAgICBbbGFiZWxdPVwiYmFkZ2UubGFiZWxcIlxuICAgICAgICAgIFtpY29uXT1cImJhZGdlLmljb25cIlxuICAgICAgICAgIFt2YXJpYW50XT1cImJhZGdlLnZhcmlhbnQgfHwgJ2RlZmF1bHQnXCJcbiAgICAgICAgPjwvY3FhLWJhZGdlPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIFNlY3Rpb24gMjogVGl0bGUgJiBEZXNjcmlwdGlvbiAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtM1wiPlxuICAgICAgPGgyIGNsYXNzPVwiY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LWxnIGNxYS1sZWFkaW5nLVsyMnB4XSBjcWEtdGV4dC10aXRsZVwiPlxuICAgICAgICB7eyB0aXRsZSB9fVxuICAgICAgPC9oMj5cbiAgICAgIDxwIGNsYXNzPVwiY3FhLXRleHQtYmFzZSBjcWEtZm9udC1ub3JtYWwgY3FhLXRleHQtZGVzY3JpcHRpb25cIj5cbiAgICAgICAge3sgZGVzY3JpcHRpb24gfX1cbiAgICAgIDwvcD5cbiAgICA8L2Rpdj5cblxuICA8IS0tIFNlY3Rpb24gMzogTWV0YWRhdGEgU2VjdGlvbiAoYWx3YXlzIHZpc2libGUpIC0tPlxuICA8ZGl2ICpuZ0lmPVwibWV0YWRhdGFcIiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtZ2FwLTRcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWJnLXN1cmZhY2UtZGVmYXVsdCBjcWEtcm91bmRlZC1bMTBweF0gY3FhLXB4LTQgY3FhLXB5LTMgY3FhLWJvcmRlci10IGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci10LXByaW1hcnktc3VyZmFjZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LXdyYXAgY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVsyNXB4XVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1ldGFkYXRhIHwga2V5dmFsdWU7IGxldCBsYXN0ID0gbGFzdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtWzZweF1cIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLXRleHQteHMgY3FhLWZvbnQtbm9ybWFsIGNxYS1mb250LWludGVyIGNxYS10ZXh0LW1ldGFkYXRhLWtleVwiPlxuICAgICAgICAgICAgICB7eyBpdGVtLmtleSB9fTpcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIFxuICAgICAgICAgICAgICBbbmdDbGFzc109XCJnZXRNZXRhZGF0YVZhbHVlQ2xhc3NlcyhpdGVtLmtleSwgaXRlbS52YWx1ZSlcIiBcbiAgICAgICAgICAgICAgW25nU3R5bGVdPVwiZ2V0TWV0YWRhdGFWYWx1ZVN0eWxlKGl0ZW0ua2V5LCBpdGVtLnZhbHVlKVwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiY3FhLWZvbnQtbm9ybWFsIGNxYS1sZWFkaW5nLVsxOHB4XSBjcWEtZm9udC1pbnRlciBjcWEtdGV4dC1zbSBjcWEtdGV4dC10aXRsZVwiPlxuICAgICAgICAgICAgICB7eyBnZXRNZXRhZGF0YVZhbHVlKGl0ZW0udmFsdWUpIH19XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIiFsYXN0XCIgY2xhc3M9XCJjcWEtaC00IGNxYS13LXB4IGNxYS1iZy1ncmF5LTIwMFwiPjwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTZWN0aW9uIDQ6IE1ldGFkYXRhIHRvZ2dsZSAtLT5cbiAgICA8YnV0dG9uICpuZ0lmPVwibWV0YWRhdGEgJiYgKGlzUHJlcmVxdWlzaXRlTWlzc2luZyB8fCBpc1Rlc3REYXRhTWlzc2luZylcIiB0eXBlPVwiYnV0dG9uXCJcbiAgICAgIGNsYXNzPVwiY3FhLXRleHQtc20gY3FhLXRleHQtcHJpbWFyeSBjcWEtaW5saW5lLWZsZXggY3FhLWZvbnQtaW50ZXIgY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLVs2cHhdXCJcbiAgICAgIChjbGljayk9XCJ0b2dnbGVNZXRhZGF0YSgpXCI+XG4gICAgICA8c3Bhbj57eyBtZXRhZGF0YUV4cGFuZGVkID8gJ0hpZGUgZGV0YWlscycgOiAnU2hvdyBkZXRhaWxzJyB9fTwvc3Bhbj5cbiAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImNxYS13LVsxNHB4XSBjcWEtaC1bMTRweF0gY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsxNHB4XVwiPlxuICAgICAgICB7eyBtZXRhZGF0YUV4cGFuZGVkID8gJ2V4cGFuZF9sZXNzJyA6ICdleHBhbmRfbW9yZScgfX1cbiAgICAgIDwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG5cbiAgPCEtLSBTZWN0aW9uIDU6IFNlY3Rpb25zICh0b2dnbGUgdmlzaWJpbGl0eSkgLS0+XG4gIDxkaXYgKm5nSWY9XCJtZXRhZGF0YUV4cGFuZGVkICYmIHZpc2libGVTZWN0aW9ucz8ubGVuZ3RoXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC00XCI+XG4gICAgPGRpdlxuICAgICAgKm5nRm9yPVwibGV0IHNlY3Rpb24gb2YgdmlzaWJsZVNlY3Rpb25zXCJcbiAgICAgIGNsYXNzPVwiY3FhLWJvcmRlci1sLTQgY3FhLWJvcmRlci1zb2xpZCBjcWEtcm91bmRlZC1bMTBweF0gY3FhLW92ZXJmbG93LWhpZGRlblwiXG4gICAgICBbbmdDbGFzc109XCJnZXRTZWN0aW9uQm9yZGVyQ2xhc3Moc2VjdGlvbilcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJjcWEtcC1bMTBweF0gY3FhLXBsLVsyMHB4XSBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC0zXCI+XG4gICAgICAgIDwhLS0gU2VjdGlvbiBUaXRsZSB3aXRoIElubGluZSBDb2xsYXBzZSBCdXR0b24gLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxoMyBbbmdDbGFzc109XCJnZXRTZWN0aW9uVGl0bGVDbGFzc2VzKHNlY3Rpb24pXCIgY2xhc3M9XCJcIj5cbiAgICAgICAgICAgIHt7IHNlY3Rpb24udGl0bGUgfX1cbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJjcWEtbWwtYXV0byBjcWEtaW5saW5lLWZsZXggY3FhLWN1cnNvci1wb2ludGVyIGNxYS1vdXRsaW5lLW5vbmUgY3FhLWJnLXRyYW5zcGFyZW50IGNxYS1ib3JkZXItbm9uZSBjcWEtcC0xIGNxYS1pdGVtcy1jZW50ZXIgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1taW4tdy1bMjRweF0gY3FhLW1pbi1oLVsyNHB4XVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlU2VjdGlvbihzZWN0aW9uKTsgJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwic2VjdGlvbi5leHBhbmRlZCAhPT0gZmFsc2UgPyAnQ29sbGFwc2Ugc2VjdGlvbicgOiAnRXhwYW5kIHNlY3Rpb24nXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8bWF0LWljb24gW25nQ2xhc3NdPVwiZ2V0U2VjdGlvbkljb25Db2xvcihzZWN0aW9uKVwiIGNsYXNzPVwiY3FhLXctNCBjcWEtaC00IGNxYS10ZXh0LVsxNnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLXBvaW50ZXItZXZlbnRzLW5vbmVcIj5cbiAgICAgICAgICAgICAge3sgc2VjdGlvbi5leHBhbmRlZCAhPT0gZmFsc2UgPyAnZXhwYW5kX2xlc3MnIDogJ2V4cGFuZF9tb3JlJyB9fVxuICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBDb2xsYXBzaWJsZSBDb250ZW50OiBSZWFzb24gYW5kIEFjdGlvbiBCdXR0b24gLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJzZWN0aW9uLmV4cGFuZGVkICE9PSBmYWxzZVwiIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtWzEwcHhdXCI+XG4gICAgICAgICAgPCEtLSBSZWFzb24gLS0+XG4gICAgICAgICAgPHAgY2xhc3M9XCJjcWEtdGV4dC1zbSBjcWEtZm9udC1ub3JtYWwgY3FhLWxlYWRpbmctWzE4cHhdIGNxYS10ZXh0LW5ldXRyYWwtNjAwXCI+XG4gICAgICAgICAgICBSZWFzb246IHt7IHNlY3Rpb24ucmVhc29uIH19XG4gICAgICAgICAgPC9wPlxuICAgICAgICAgIFxuICAgICAgICAgIDwhLS0gQWN0aW9uIEJ1dHRvbiAtLT5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPGNxYS1idXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgICAgKGNsaWNrZWQpPVwib25TZWN0aW9uQWN0aW9uKHNlY3Rpb24uaWQpXCJcbiAgICAgICAgICAgICAgW2N1c3RvbUNsYXNzXT1cIidjcWEtcHktWzlweF0gY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLVsxN3B4XSBjcWEtYm9yZGVyLXNsYXRlIGNxYS10ZXh0LXNsYXRlJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHNlY3Rpb24uYWN0aW9uQnV0dG9uTGFiZWwgfX1cbiAgICAgICAgICAgIDwvY3FhLWJ1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIFxuICA8Y3FhLWJ1dHRvblxuICAgICAgdmFyaWFudD1cImZpbGxlZFwiXG4gICAgICAoY2xpY2tlZCk9XCJvbk1haW5BY3Rpb24oKVwiXG4gICAgICBbZGlzYWJsZWRdPVwiaXNBcHBseWluZ1wiXG4gICAgICBbY3VzdG9tQ2xhc3NdPVwiJyFjcWEtdy1mdWxsICFjcWEtdGV4dC1bMTRweF0gIWNxYS1sZWFkaW5nLVsyMHB4XSAhY3FhLWZvbnQtc2VtaWJvbGQnXCJcbiAgICA+XG4gICAgICA8c3ZnIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj48cGF0aCBkPVwiTTkuMDE4ODIgMEM5LjEyOTc5IDAuMDQ1NDc2NyA5LjE3NzE4IDAuMTU2NTMgOS4yMjI2MSAwLjI1OTY5MUM5LjI0NTM5IDAuMzE5Nzk5IDkuMjY2MjggMC4zODAyMzQgOS4yODY1NyAwLjQ0MTE1QzkuMjk0NTIgMC40NjQ0OTMgOS4zMDI0NiAwLjQ4NzgzNiA5LjMxMDY1IDAuNTExODg2QzkuNDE2MTMgMC44MjYwMDkgOS41MTAwOCAxLjE0MzUgOS42MDQ1NyAxLjQ2MDc2QzkuNjI1OTMgMS41MzIzOCA5LjY0NzM5IDEuNjAzOTcgOS42Njg4NSAxLjY3NTU3QzkuNzc4MSAyLjA0MDA3IDkuODg2NTQgMi40MDQ4IDkuOTk0MzggMi43Njk2OUMxMC4wMDk1IDIuODIwOTMgMTAuMDI0NyAyLjg3MjE4IDEwLjAzOTggMi45MjM0MkMxMC4wODI2IDMuMDY3OSAxMC4xMjUyIDMuMjEyMzkgMTAuMTY3NyAzLjM1Njk0QzEwLjI1NzMgMy42NjIzOSAxMC4zNDk1IDMuOTY2OTUgMTAuNDQ3NiA0LjI3MDAyQzEwLjQ1NjEgNC4yOTY1MyAxMC40NjQ3IDQuMzIzMDUgMTAuNDczNSA0LjM1MDM2QzEwLjcyODQgNS4xMjk5OSAxMS4wODk2IDUuODI4NzUgMTEuNjgxOCA2LjQyMzkzQzExLjY5NjUgNi40Mzk0IDExLjcxMTEgNi40NTQ4OCAxMS43MjYyIDYuNDcwODNDMTEuOTc5IDYuNzI4NzUgMTIuMzAzNCA2LjkzNTQxIDEyLjYyNzYgNy4xMDIyMUMxMi42NDQxIDcuMTEwODUgMTIuNjYwNiA3LjExOTQ4IDEyLjY3NzYgNy4xMjgzOEMxMy42MzE3IDcuNjE4NTEgMTQuNzc5IDcuODM0MDcgMTUuODEyNCA4LjEyMTAxQzE2LjI2NTIgOC4yNDY4MSAxNi43MTY2IDguMzc2NTggMTcuMTY2MyA4LjUxMjA2QzE3LjE5NzkgOC41MjE1NyAxNy4yMjk2IDguNTMxMDcgMTcuMjYxMiA4LjU0MDU1QzE3LjM1NTcgOC41Njg5IDE3LjQ1IDguNTk3NzQgMTcuNTQ0MiA4LjYyNjk0QzE3LjU2NjIgOC42MzM1OCAxNy41ODgyIDguNjQwMjMgMTcuNjEwOCA4LjY0NzA3QzE3Ljc0MDYgOC42ODgxMiAxNy44NjQ4IDguNzM2NTggMTcuOTcxMyA4LjgyMDU0QzE4LjAwMzggOC44ODgzNyAxOC4wMDM4IDguODg4MzcgMTcuOTk1IDguOTU2MTlDMTcuODkxMyA5LjA1NDcyIDE3Ljc4ODQgOS4xMDA5MiAxNy42NTE2IDkuMTQ1OTlDMTcuNjMyIDkuMTUyNjQgMTcuNjEyNCA5LjE1OTMgMTcuNTkyMyA5LjE2NjE1QzE3LjM2MTIgOS4yNDM2NiAxNy4xMjcgOS4zMTE0OSAxNi44OTI1IDkuMzc4NzFDMTYuODQ0NCA5LjM5MjYxIDE2Ljc5NjMgOS40MDY1MSAxNi43NDgyIDkuNDIwNDJDMTYuNDUxNCA5LjUwNjAzIDE2LjE1NDIgOS41ODk4IDE1Ljg1NjYgOS42NzI2M0MxNS40NjQ2IDkuNzgxNzUgMTUuMDczMyA5Ljg5MjY4IDE0LjY4MjMgMTAuMDA0OUMxNC42MTgyIDEwLjAyMzIgMTQuNTU0MSAxMC4wNDE2IDE0LjQ5IDEwLjA1OThDMTQuMTUzNCAxMC4xNTU3IDEzLjgxODUgMTAuMjU1MSAxMy40ODYzIDEwLjM2NDJDMTMuNDU4NyAxMC4zNzMyIDEzLjQzMTIgMTAuMzgyMiAxMy40MDI4IDEwLjM5MTVDMTIuMjkwMiAxMC43NjE2IDExLjQ0MjIgMTEuNDUyMiAxMC45MTE0IDEyLjQ2MkMxMC42MjUzIDEzLjAyOTUgMTAuNDU2NSAxMy42NDMyIDEwLjI4NDMgMTQuMjQ4OUMxMC4yMzc3IDE0LjQxMjQgMTAuMTg4MiAxNC41NzQ5IDEwLjEzODEgMTQuNzM3NEMxMC4wOTg4IDE0Ljg2NTIgMTAuMDYwNCAxNC45OTMzIDEwLjAyMyAxNS4xMjE2QzEwLjAxODUgMTUuMTM2OSAxMC4wMTQxIDE1LjE1MjIgMTAuMDA5NSAxNS4xNjc5QzkuOTg3ODggMTUuMjQxOSA5Ljk2NjM4IDE1LjMxNTkgOS45NDUwMyAxNS4zODk5QzkuODkwMzkgMTUuNTc3NiA5LjgzMTU2IDE1Ljc2MzcgOS43NzExMSAxNS45NDk4QzkuNjYzODMgMTYuMjgwNCA5LjU2NjIgMTYuNjEzNSA5LjQ2OTE3IDE2Ljk0N0M5LjMyMjg4IDE3LjQ0OTEgOS4zMjI4OCAxNy40NDkxIDkuMjM5OTMgMTcuNjkwNUM5LjIzNDQzIDE3LjcwNjcgOS4yMjg5MyAxNy43MjI5IDkuMjIzMjYgMTcuNzM5NkM5LjE5Mjk4IDE3LjgyNTYgOS4xNjE4MyAxNy45MDQ3IDkuMTA0NTMgMTcuOTc3NEM5LjAxNzM0IDE3Ljk5NTggOS4wMTczNCAxNy45OTU4IDguOTM5MDEgMThDOC44NDk0NiAxNy44NzUyIDguNzkwMTYgMTcuNzU0MiA4Ljc0MjY1IDE3LjYxMDJDOC43MzU3NCAxNy41ODk3IDguNzI4ODIgMTcuNTY5MyA4LjcyMTcgMTcuNTQ4M0M4LjYzMzY4IDE3LjI4NSA4LjU1NTAyIDE3LjAxODkgOC40NzYzNCAxNi43NTI5QzguNDU4MzIgMTYuNjkyMSA4LjQ0MDIyIDE2LjYzMTMgOC40MjIxMSAxNi41NzA1QzguMjg3MiAxNi4xMTczIDguMTU0NTEgMTUuNjYzNSA4LjAyMjAyIDE1LjIwOTZDNy40NzAxNCAxMi45NjQ1IDcuNDcwMTQgMTIuOTY0NSA2LjA3OCAxMS4xNDkzQzYuMDU1NjkgMTEuMTMxOSA2LjAzMzM4IDExLjExNDUgNi4wMTAzOSAxMS4wOTY2QzUuMDk4MjYgMTAuMzk4IDMuODk2NjcgMTAuMTM5NCAyLjc5NjMgOS44MzYyN0MyLjUyNDE1IDkuNzYxMjQgMi4yNTIxIDkuNjg1ODcgMS45ODAwNiA5LjYxMDQ2QzEuOTU2MjggOS42MDM4NiAxLjk1NjI4IDkuNjAzODYgMS45MzIwMSA5LjU5NzE0QzEuNTM5NjIgOS40ODgzNCAxLjE0NzM1IDkuMzc5MjUgMC43NTY0NDggOS4yNjU2NkMwLjczOTkxMSA5LjI2MDg5IDAuNzIzMzc1IDkuMjU2MTIgMC43MDYzMzggOS4yNTEyMUMwLjEwNTc5OCA5LjA3NzY3IDAuMTA1Nzk4IDkuMDc3NjcgMC4wMDEyOTMwNyA4Ljk1NjE5Qy0wLjAwMTY2MjUyIDguOTAxMDggLTAuMDAxNjYyNTIgOC45MDEwOCAwLjAyNDkzNzggOC44NDMxNUMwLjEzNDE2NyA4Ljc0MDggMC4yNDAxNTMgOC42OTY5NiAwLjM4NDMyIDguNjUyMzhDMC40MDUxOTQgOC42NDU2NyAwLjQyNjA2OCA4LjYzODk3IDAuNDQ3NTc0IDguNjMyMDZDMC41MTE1MDYgOC42MTE2NCAwLjU3NTU3NyA4LjU5MTY5IDAuNjM5NzAyIDguNTcxODNDMC42NTgwMDEgOC41NjYwOSAwLjY3NjMwMSA4LjU2MDM1IDAuNjk1MTU1IDguNTU0NDNDMC44MjQ1NyA4LjUxMzg1IDAuOTU0NDUgOC40NzQ3OSAxLjA4NDUyIDguNDM2MThDMS4xMTY0OCA4LjQyNjY1IDEuMTE2NDggOC40MjY2NSAxLjE0OTA5IDguNDE2OTNDMS43MDQ1NCA4LjI1MTc0IDIuMjYzNjEgOC4wOTgwMSAyLjgyMjUyIDcuOTQzOTJDMy4yMzg5OSA3LjgyOTA5IDMuNjU0NzYgNy43MTIzNiA0LjA2OTIxIDcuNTkwOTdDNC4wODgyNSA3LjU4NTQyIDQuMTA3MyA3LjU3OTg3IDQuMTI2OTIgNy41NzQxNUM1LjA4NyA3LjI5MzkzIDYuMDI1NTcgNi44OTYzMiA2LjY0NTQ3IDYuMTA3NEM2LjY1NDc1IDYuMDk1NjkgNi42NjQwMyA2LjA4Mzk5IDYuNjczNiA2LjA3MTk0QzcuMzYzOTUgNS4xOTYzIDcuNjMzMTUgNC4xMzE0NSA3LjkzMzkxIDMuMDkyNDFDOC4wMzI4NSAyLjc1MDY5IDguMTMyOTggMi40MDkyOSA4LjIzMzQ1IDIuMDY3OThDOC4yNjEyNyAxLjk3MzQ3IDguMjg5MDYgMS44Nzg5NCA4LjMxNjczIDEuNzg0MzlDOC40Mjc4OCAxLjQwNDU4IDguNTQwNyAxLjAyNTI4IDguNjYgMC42NDc3MjdDOC42NzExNiAwLjYxMjM3MiA4LjY4MjI3IDAuNTc3MDAxIDguNjkzMzMgMC41NDE2MTRDOC44NjAzNSAwLjAwNzk3NTIyIDguODYwMzUgMC4wMDc5NzUyMiA5LjAxODgyIDBaXCIgZmlsbD1cIiNGQkZDRkZcIi8+PHBhdGggZD1cIk0xNC40NzE5IDEuMTEwNjlDMTQuNTgwNSAxLjIyODE3IDE0LjYwMjIgMS4zNjYyNCAxNC42MzYgMS41MTYyNUMxNC43NDg3IDEuOTg3NTEgMTQuODc4NiAyLjQyMDg0IDE1LjMyOTMgMi42OTQ2QzE1LjYwNzQgMi44NDE2NyAxNS45Mzg5IDIuOTA4NTkgMTYuMjQ3IDIuOTcxOEMxNi4zNzcxIDIuOTk5MDIgMTYuNDg2OSAzLjAzNTE1IDE2LjU5ODUgMy4xMDc0QzE2LjYyMzYgMy4xNDU1NSAxNi42MjM2IDMuMTQ1NTUgMTYuNjIyMSAzLjIxMTk3QzE2LjU5NjMgMy4yOTI3MyAxNi41NzM2IDMuMzE4NzggMTYuNTA1NCAzLjM3MTY1QzE2LjQzMDggMy4zOTU0OSAxNi40MzA4IDMuMzk1NDkgMTYuMzQxMyAzLjQxNDA0QzE2LjMwNzUgMy40MjE0NyAxNi4yNzM2IDMuNDI4OTggMTYuMjM5OCAzLjQzNjU2QzE2LjIyMTcgMy40NDA1OCAxNi4yMDM2IDMuNDQ0NiAxNi4xODQ5IDMuNDQ4NzRDMTUuNjMzOSAzLjU3MDYyIDE1LjYzMzkgMy41NzA2MiAxNS4xNTc2IDMuODQ2NDVDMTUuMTQyMSAzLjg1ODM3IDE1LjEyNjcgMy44NzAyOSAxNS4xMTA3IDMuODgyNTdDMTQuNzcwMyA0LjE2OTU5IDE0LjY5ODMgNC42NDcwMyAxNC41OTU4IDUuMDQ2OTlDMTQuNTkgNS4wNjg5NiAxNC41ODQxIDUuMDkwOTIgMTQuNTc4IDUuMTEzNTVDMTQuNTczIDUuMTMzIDE0LjU2NzkgNS4xNTI0NCAxNC41NjI3IDUuMTcyNDhDMTQuNTQwNSA1LjIzMTg1IDE0LjUxNzYgNS4yNzA1NyAxNC40NzE5IDUuMzE2MDdDMTQuMzQ0NyA1LjMzMTUyIDE0LjM0NDcgNS4zMzE1MiAxNC4yODI4IDUuMzE2MDdDMTQuMTg0MyA1LjI0MzA5IDE0LjE2MjMgNS4xNTk5NyAxNC4xMzY2IDUuMDQ4MjhDMTQuMTMyMiA1LjAzMDk5IDE0LjEyNzkgNS4wMTM2OSAxNC4xMjM1IDQuOTk1ODdDMTQuMTA5OCA0Ljk0MDY0IDE0LjA5NjUgNC44ODUzMSAxNC4wODMzIDQuODI5OTZDMTMuOTc5NiA0LjM5ODkxIDEzLjg2MjUgMy45NzYgMTMuNDQ5IDMuNzIzMzNDMTMuMTI1OCAzLjU1MTAxIDEyLjczMjkgMy40Njk1MSAxMi4zNzE3IDMuNDAzN0MxMi4yNzI3IDMuMzgzOTkgMTIuMjE2IDMuMzU5MiAxMi4xNTQ3IDMuMjgxMjFDMTIuMTQxNCAzLjIwMjA4IDEyLjE0MTQgMy4yMDIwOCAxMi4xNTQ3IDMuMTIyOTRDMTIuMjQ4OSAzLjAyOTcxIDEyLjM0OCAzLjAwNjk2IDEyLjQ3NTQgMi45Nzg4MUMxMi41MTU2IDIuOTY5MyAxMi41NTU3IDIuOTU5NzMgMTIuNTk1OCAyLjk1MDFDMTIuNjE2NSAyLjk0NTE2IDEyLjYzNzIgMi45NDAyMiAxMi42NTg2IDIuOTM1MTJDMTIuNzY0MiAyLjkwOTExIDEyLjg2ODkgMi44Nzk5NSAxMi45NzM0IDIuODUwMjFDMTIuOTkyNCAyLjg0NDk0IDEzLjAxMTQgMi44Mzk2NyAxMy4wMzEgMi44MzQyNEMxMy4yNDM2IDIuNzczNDYgMTMuNDI3MSAyLjY5NTcxIDEzLjU5NzEgMi41NTc3QzEzLjYxMjkgMi41NDUyMyAxMy42Mjg4IDIuNTMyNzYgMTMuNjQ1MSAyLjUxOTlDMTMuOTA5NiAyLjI5MjI4IDEzLjk5OTUgMS45NTAzMiAxNC4wODEgMS42MzEyNEMxNC4wODczIDEuNjA3MDIgMTQuMDkzNSAxLjU4MjggMTQuMDk5OSAxLjU1Nzg0QzE0LjExMjMgMS41MDkxOCAxNC4xMjQ0IDEuNDYwNDYgMTQuMTM2MyAxLjQxMTdDMTQuMTQ0OSAxLjM3Nzc2IDE0LjE0NDkgMS4zNzc3NiAxNC4xNTM1IDEuMzQzMTVDMTQuMTU4NSAxLjMyMjg4IDE0LjE2MzUgMS4zMDI2MSAxNC4xNjg2IDEuMjgxNzJDMTQuMTkwNCAxLjIxNzE5IDE0LjIxOSAxLjE2NjUyIDE0LjI1OTEgMS4xMTA2OUMxNC4zMzYyIDEuMDczODUgMTQuMzkwMyAxLjA5MDUgMTQuNDcxOSAxLjExMDY5WlwiIGZpbGw9XCIjRkJGQ0ZGXCIvPjxwYXRoIGQ9XCJNMy41OTA4OSAxMi40OTQyQzMuNjE5MDIgMTIuNDk0NCAzLjYxOTAyIDEyLjQ5NDQgMy42NDc3MiAxMi40OTQ2QzMuODQ5NTQgMTIuNTAwNCAzLjk4NjA5IDEyLjU2MjMgNC4xMzQ3MiAxMi42OTJDNC4zMDc2NyAxMi44NzA3IDQuMzg3NTMgMTMuMDcyMiA0LjM4Mjk5IDEzLjMxM0M0LjM2MzU3IDEzLjUwODIgNC4yNDMxNiAxMy42Nzg3IDQuMDk1NDcgMTMuODEwN0MzLjkyMTYzIDEzLjk0NDggMy43NDYyNiAxMy45ODkyIDMuNTI0MTEgMTMuOTgzQzMuMzM2ODEgMTMuOTYyMSAzLjE2MDYgMTMuODc3IDMuMDI3ODUgMTMuNzQ5QzIuODYyNzYgMTMuNTMzNiAyLjgxNDUgMTMuMzM2MSAyLjgzODY5IDEzLjA3MDdDMi44ODg2NyAxMi44NjE4IDMuMDMyNzQgMTIuNjkyMyAzLjIxNzAxIDEyLjU3MzNDMy4zNDUwMiAxMi41MTEzIDMuNDQ3OTggMTIuNDkzIDMuNTkwODkgMTIuNDk0MlpcIiBmaWxsPVwiI0ZCRkNGRlwiLz48L3N2Zz5cbiAgICAgIHt7IGlzQXBwbHlpbmcgPyAnQXBwbHlpbmcgc3VnZ2VzdGlvbicgOiAnQXBwbHkgc3VnZ2VzdGlvbicgfX1cbiAgICA8L2NxYS1idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4gXG4iXX0=
|
|
@@ -40,10 +40,10 @@ export class MetricsCardComponent {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
MetricsCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: MetricsCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
43
|
-
MetricsCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: MetricsCardComponent, selector: "cqa-metrics-card", inputs: { icon: "icon", title: "title", total: "total", items: "items", cardClass: "cardClass", layout: "layout", totalPercent: "totalPercent" }, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <div *ngIf=\"layout === '1'\"\n class=\"cqa-w-full cqa-box-border cqa-flex cqa-flex-col cqa-items-start cqa-px-px cqa-pb-px md:cqa-h-[63px] cqa-bg-white cqa-border-t-2 cqa-border-r cqa-border-b-0 cqa-border-l cqa-border-solid cqa-border-[#3F43EE] cqa-rounded-[10px] cqa-flex-none cqa-order-0 cqa-self-stretch cqa-grow-0\"\n [ngClass]=\"cardClass\">\n <!-- Metric blocks -->\n <div\n class=\"cqa-flex-1 cqa-w-full cqa-grid cqa-grid-cols-2
|
|
43
|
+
MetricsCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: MetricsCardComponent, selector: "cqa-metrics-card", inputs: { icon: "icon", title: "title", total: "total", items: "items", cardClass: "cardClass", layout: "layout", totalPercent: "totalPercent" }, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <div *ngIf=\"layout === '1'\"\n class=\"cqa-w-full cqa-box-border cqa-flex cqa-flex-col cqa-items-start cqa-px-px cqa-pb-px md:cqa-h-[63px] cqa-bg-white cqa-border-t-2 cqa-border-r cqa-border-b-0 cqa-border-l cqa-border-solid cqa-border-[#3F43EE] cqa-rounded-[10px] cqa-flex-none cqa-order-0 cqa-self-stretch cqa-grow-0\"\n [ngClass]=\"cardClass\">\n <!-- Metric blocks -->\n <div\n class=\"cqa-flex-1 cqa-w-full cqa-grid cqa-grid-cols-2 sm:cqa-grid-cols-2 md:cqa-grid-cols-4 cqa-border cqa-border-[#E5E7EB] cqa-rounded-[10px] cqa-overflow-hidden\">\n <!-- Left total block -->\n <div\n class=\"cqa-flex cqa-flex-col cqa-justify-center cqa-items-start cqa-py-3 md:cqa-pt-1 md:cqa-pb-0.5 cqa-px-6 cqa-gap-1 cqa-w-full sm:cqa-w-[100%] md:cqa-w-[180px] lg:cqa-w-[290px] md:cqa-h-[61px] cqa-border-b cqa-border-[#E5E7EB] sm:cqa-border-b-0 sm:cqa-border-r\">\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-medium cqa-text-[#6A7282]\"> {{ title }} </span>\n <h3 class=\"cqa-text-[30px] cqa-leading-[36px] cqa-font-bold cqa-tracking-[0.395508px] cqa-text-[#101828]\"> {{\n total | number }} </h3>\n </div>\n <ng-container *ngFor=\"let it of items; let i = index\">\n <div class=\"cqa-flex cqa-items-stretch cqa-border-b cqa-border-[#E5E7EB] md:cqa-border-b-0\">\n <div class=\"cqa-hidden sm:cqa-block md:cqa-block cqa-w-[1px] cqa-bg-[#E5E7EB] cqa-mr-4\"></div>\n <cqa-metrics-block [item]=\"it\" [itemslength]=\"items.length.toString()\"\n [progress]=\"progressWidth(it)\">\n </cqa-metrics-block>\n </div>\n </ng-container>\n </div>\n </div>\n\n <div *ngIf=\"layout === '2'\"\n class=\"cqa-w-full cqa-box-border cqa-flex cqa-flex-col cqa-items-start cqa-px-px cqa-pb-px md:cqa-h-[63px] cqa-bg-white cqa-flex-none cqa-order-0 cqa-self-stretch cqa-grow-0\"\n [ngClass]=\"cardClass\">\n <div\n class=\"cqa-flex cqa-flex-col md:cqa-flex-row cqa-flex-wrap cqa-items-stretch cqa-w-full cqa-min-h-[53px] cqa-rounded-none cqa-flex-none cqa-order-0 cqa-self-stretch cqa-grow-0 cqa-gap-4\">\n <!-- Left total block -->\n <div\n class=\"cqa-flex cqa-flex-col cqa-justify-center cqa-items-start cqa-py-3 md:cqa-py-1 cqa-px-4 sm:cqa-px-6 cqa-gap-1 cqa-w-full sm:cqa-w-[100%] md:cqa-w-[240px] lg:cqa-w-[290px] md:cqa-h-[61px] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-relative cqa-overflow-hidden before:cqa-content-[''] before:cqa-bg-[#4C4C51] before:cqa-h-[2px] before:cqa-w-full before:cqa-absolute before:cqa-top-0 before:cqa-left-0\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-justify-between cqa-w-full\">\n <mat-icon class=\"!cqa-w-4 !cqa-h-4 !cqa-text-[16px] cqa-text-[#6B7280]\">{{ icon }}</mat-icon>\n <span class=\"cqa-text-[#6B7280] cqa-text-[14px] cqa-leading-4\">{{ title }}</span>\n <div class=\"cqa-flex cqa-items-end cqa-gap-2 cqa-ml-auto\">\n <h4 class=\"cqa-text-[28px] cqa-leading-7 cqa-tracking-[-0.45px] cqa-text-[#111827]\">{{ total | number }}\n </h4>\n <span *ngIf=\"totalPercent !== undefined\" class=\"cqa-text-[10px] cqa-leading-4\"\n [ngClass]=\"percentClass(totalPercent)\">{{ formatPercent(totalPercent) }}</span>\n </div>\n </div>\n\n </div>\n <!-- Metric blocks -->\n <div\n class=\"cqa-flex-1 cqa-w-full cqa-grid cqa-grid-cols-2 md:cqa-grid-cols-3 lg:cqa-grid-cols-5 cqa-gap-2 md:cqa-gap-3 cqa-items-center cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-relative cqa-overflow-hidden\">\n <span class=\"cqa-h-[2px] cqa-w-full cqa-absolute cqa-top-0 cqa-left-0\"\n [style.background]=\"'linear-gradient(90deg, #3B82F6 0%, rgba(0, 0, 0, 0) 100%)'\"></span>\n <cqa-metrics-block *ngFor=\"let it of items; let i = index\" [item]=\"it\" [layout]=\"layout\">\n </cqa-metrics-block>\n </div>\n </div>\n </div>\n</div>", components: [{ type: i1.MetricsBlockComponent, selector: "cqa-metrics-block", inputs: ["item", "progress", "layout", "itemslength"] }, { type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "number": i3.DecimalPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
44
44
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: MetricsCardComponent, decorators: [{
|
|
45
45
|
type: Component,
|
|
46
|
-
args: [{ selector: 'cqa-metrics-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"cqa-ui-root\">\n <div *ngIf=\"layout === '1'\"\n class=\"cqa-w-full cqa-box-border cqa-flex cqa-flex-col cqa-items-start cqa-px-px cqa-pb-px md:cqa-h-[63px] cqa-bg-white cqa-border-t-2 cqa-border-r cqa-border-b-0 cqa-border-l cqa-border-solid cqa-border-[#3F43EE] cqa-rounded-[10px] cqa-flex-none cqa-order-0 cqa-self-stretch cqa-grow-0\"\n [ngClass]=\"cardClass\">\n <!-- Metric blocks -->\n <div\n class=\"cqa-flex-1 cqa-w-full cqa-grid cqa-grid-cols-2
|
|
46
|
+
args: [{ selector: 'cqa-metrics-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"cqa-ui-root\">\n <div *ngIf=\"layout === '1'\"\n class=\"cqa-w-full cqa-box-border cqa-flex cqa-flex-col cqa-items-start cqa-px-px cqa-pb-px md:cqa-h-[63px] cqa-bg-white cqa-border-t-2 cqa-border-r cqa-border-b-0 cqa-border-l cqa-border-solid cqa-border-[#3F43EE] cqa-rounded-[10px] cqa-flex-none cqa-order-0 cqa-self-stretch cqa-grow-0\"\n [ngClass]=\"cardClass\">\n <!-- Metric blocks -->\n <div\n class=\"cqa-flex-1 cqa-w-full cqa-grid cqa-grid-cols-2 sm:cqa-grid-cols-2 md:cqa-grid-cols-4 cqa-border cqa-border-[#E5E7EB] cqa-rounded-[10px] cqa-overflow-hidden\">\n <!-- Left total block -->\n <div\n class=\"cqa-flex cqa-flex-col cqa-justify-center cqa-items-start cqa-py-3 md:cqa-pt-1 md:cqa-pb-0.5 cqa-px-6 cqa-gap-1 cqa-w-full sm:cqa-w-[100%] md:cqa-w-[180px] lg:cqa-w-[290px] md:cqa-h-[61px] cqa-border-b cqa-border-[#E5E7EB] sm:cqa-border-b-0 sm:cqa-border-r\">\n <span class=\"cqa-text-[12px] cqa-leading-[16px] cqa-font-medium cqa-text-[#6A7282]\"> {{ title }} </span>\n <h3 class=\"cqa-text-[30px] cqa-leading-[36px] cqa-font-bold cqa-tracking-[0.395508px] cqa-text-[#101828]\"> {{\n total | number }} </h3>\n </div>\n <ng-container *ngFor=\"let it of items; let i = index\">\n <div class=\"cqa-flex cqa-items-stretch cqa-border-b cqa-border-[#E5E7EB] md:cqa-border-b-0\">\n <div class=\"cqa-hidden sm:cqa-block md:cqa-block cqa-w-[1px] cqa-bg-[#E5E7EB] cqa-mr-4\"></div>\n <cqa-metrics-block [item]=\"it\" [itemslength]=\"items.length.toString()\"\n [progress]=\"progressWidth(it)\">\n </cqa-metrics-block>\n </div>\n </ng-container>\n </div>\n </div>\n\n <div *ngIf=\"layout === '2'\"\n class=\"cqa-w-full cqa-box-border cqa-flex cqa-flex-col cqa-items-start cqa-px-px cqa-pb-px md:cqa-h-[63px] cqa-bg-white cqa-flex-none cqa-order-0 cqa-self-stretch cqa-grow-0\"\n [ngClass]=\"cardClass\">\n <div\n class=\"cqa-flex cqa-flex-col md:cqa-flex-row cqa-flex-wrap cqa-items-stretch cqa-w-full cqa-min-h-[53px] cqa-rounded-none cqa-flex-none cqa-order-0 cqa-self-stretch cqa-grow-0 cqa-gap-4\">\n <!-- Left total block -->\n <div\n class=\"cqa-flex cqa-flex-col cqa-justify-center cqa-items-start cqa-py-3 md:cqa-py-1 cqa-px-4 sm:cqa-px-6 cqa-gap-1 cqa-w-full sm:cqa-w-[100%] md:cqa-w-[240px] lg:cqa-w-[290px] md:cqa-h-[61px] cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-relative cqa-overflow-hidden before:cqa-content-[''] before:cqa-bg-[#4C4C51] before:cqa-h-[2px] before:cqa-w-full before:cqa-absolute before:cqa-top-0 before:cqa-left-0\">\n <div class=\"cqa-flex cqa-items-center cqa-gap-2 cqa-justify-between cqa-w-full\">\n <mat-icon class=\"!cqa-w-4 !cqa-h-4 !cqa-text-[16px] cqa-text-[#6B7280]\">{{ icon }}</mat-icon>\n <span class=\"cqa-text-[#6B7280] cqa-text-[14px] cqa-leading-4\">{{ title }}</span>\n <div class=\"cqa-flex cqa-items-end cqa-gap-2 cqa-ml-auto\">\n <h4 class=\"cqa-text-[28px] cqa-leading-7 cqa-tracking-[-0.45px] cqa-text-[#111827]\">{{ total | number }}\n </h4>\n <span *ngIf=\"totalPercent !== undefined\" class=\"cqa-text-[10px] cqa-leading-4\"\n [ngClass]=\"percentClass(totalPercent)\">{{ formatPercent(totalPercent) }}</span>\n </div>\n </div>\n\n </div>\n <!-- Metric blocks -->\n <div\n class=\"cqa-flex-1 cqa-w-full cqa-grid cqa-grid-cols-2 md:cqa-grid-cols-3 lg:cqa-grid-cols-5 cqa-gap-2 md:cqa-gap-3 cqa-items-center cqa-rounded-[10px] cqa-border cqa-border-solid cqa-border-[#E5E7EB] cqa-relative cqa-overflow-hidden\">\n <span class=\"cqa-h-[2px] cqa-w-full cqa-absolute cqa-top-0 cqa-left-0\"\n [style.background]=\"'linear-gradient(90deg, #3B82F6 0%, rgba(0, 0, 0, 0) 100%)'\"></span>\n <cqa-metrics-block *ngFor=\"let it of items; let i = index\" [item]=\"it\" [layout]=\"layout\">\n </cqa-metrics-block>\n </div>\n </div>\n </div>\n</div>", styles: [] }]
|
|
47
47
|
}], propDecorators: { icon: [{
|
|
48
48
|
type: Input
|
|
49
49
|
}], title: [{
|
|
@@ -59,4 +59,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
59
59
|
}], totalPercent: [{
|
|
60
60
|
type: Input
|
|
61
61
|
}] } });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9tZXRyaWNzLWNhcmQvbWV0cmljcy1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9tZXRyaWNzLWNhcmQvbWV0cmljcy1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVMxRSxNQUFNLE9BQU8sb0JBQW9CO0lBTmpDO1FBT1csU0FBSSxHQUFXLGNBQWMsQ0FBQztRQUM5QixVQUFLLEdBQVcsa0JBQWtCLENBQUM7UUFDbkMsVUFBSyxHQUFvQixDQUFDLENBQUM7UUFDM0IsVUFBSyxHQUFzQixFQUFFLENBQUM7UUFDOUIsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUN2QixXQUFNLEdBQVcsR0FBRyxDQUFDO0tBMkIvQjtJQXhCQyxhQUFhLENBQUMsSUFBcUI7UUFDakMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ2xDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDOUIsQ0FBQztJQUVPLFFBQVE7UUFDZCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RSxPQUFPLFlBQVksSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFjO1FBQzFCLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDNUUsTUFBTSxJQUFJLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuRCxPQUFPLEdBQUcsSUFBSSxHQUFHLEtBQUssR0FBRyxDQUFDO0lBQzVCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYztRQUN6QixJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sb0JBQW9CLENBQUM7UUFDOUYsSUFBSSxLQUFLLEdBQUcsQ0FBQztZQUFFLE9BQU8sb0JBQW9CLENBQUMsQ0FBQyxRQUFRO1FBQ3BELElBQUksS0FBSyxHQUFHLENBQUM7WUFBRSxPQUFPLG9CQUFvQixDQUFDLENBQUMsTUFBTTtRQUNsRCxPQUFPLG9CQUFvQixDQUFDLENBQUMsVUFBVTtJQUN6QyxDQUFDOztpSEFoQ1Usb0JBQW9CO3FHQUFwQixvQkFBb0IsME1DVGpDLDRvSEFrRE07MkZEekNPLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWV0cmljc0NhcmRJdGVtIH0gZnJvbSAnLi9tZXRyaWNzLWNhcmQtaXRlbS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtbWV0cmljcy1jYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21ldHJpY3MtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNZXRyaWNzQ2FyZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGljb246IHN0cmluZyA9ICd0ZXh0X3NuaXBwZXQnO1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJ1RvdGFsIFRlc3QgQ2FzZXMnO1xuICBASW5wdXQoKSB0b3RhbDogbnVtYmVyIHwgc3RyaW5nID0gMDtcbiAgQElucHV0KCkgaXRlbXM6IE1ldHJpY3NDYXJkSXRlbVtdID0gW107XG4gIEBJbnB1dCgpIGNhcmRDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGxheW91dDogc3RyaW5nID0gJzEnO1xuICBASW5wdXQoKSB0b3RhbFBlcmNlbnQ/OiBudW1iZXI7IC8vIE9wdGlvbmFsIG92ZXJhbGwgcGVyY2VudCBkZWx0YSBmb3IgbGF5b3V0IDJcblxuICBwcm9ncmVzc1dpZHRoKGl0ZW06IE1ldHJpY3NDYXJkSXRlbSk6IHN0cmluZyB7XG4gICAgY29uc3QgbWF4ID0gaXRlbS5tYXggPz8gdGhpcy5pbmZlck1heCgpO1xuICAgIGlmICghbWF4IHx8IG1heCA8PSAwKSByZXR1cm4gJzAlJztcbiAgICBjb25zdCBwY3QgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAsIChpdGVtLnZhbHVlIC8gbWF4KSAqIDEwMCkpO1xuICAgIHJldHVybiBwY3QudG9GaXhlZCgxKSArICclJztcbiAgfVxuXG4gIHByaXZhdGUgaW5mZXJNYXgoKTogbnVtYmVyIHtcbiAgICBjb25zdCBtYXhGcm9tSXRlbXMgPSB0aGlzLml0ZW1zLnJlZHVjZSgobSwgaXQpID0+IE1hdGgubWF4KG0sIGl0LnZhbHVlKSwgMCk7XG4gICAgcmV0dXJuIG1heEZyb21JdGVtcyB8fCAxO1xuICB9XG5cbiAgZm9ybWF0UGVyY2VudCh2YWx1ZT86IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgTnVtYmVyLmlzTmFOKHZhbHVlKSkgcmV0dXJuICcnO1xuICAgIGNvbnN0IHNpZ24gPSB2YWx1ZSA+IDAgPyAnKycgOiB2YWx1ZSA8IDAgPyAnJyA6ICcnO1xuICAgIHJldHVybiBgJHtzaWdufSR7dmFsdWV9JWA7XG4gIH1cblxuICBwZXJjZW50Q2xhc3ModmFsdWU/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IE51bWJlci5pc05hTih2YWx1ZSkpIHJldHVybiAnY3FhLXRleHQtWyM2QjcyODBdJztcbiAgICBpZiAodmFsdWUgPiAwKSByZXR1cm4gJ2NxYS10ZXh0LVsjMTBCOTgxXSc7IC8vIGdyZWVuXG4gICAgaWYgKHZhbHVlIDwgMCkgcmV0dXJuICdjcWEtdGV4dC1bI0VGNDQ0NF0nOyAvLyByZWRcbiAgICByZXR1cm4gJ2NxYS10ZXh0LVsjNkI3MjgwXSc7IC8vIG5ldXRyYWxcbiAgfVxufVxuXG5cbiIsIjxkaXYgaWQ9XCJjcWEtdWktcm9vdFwiPlxuICA8ZGl2ICpuZ0lmPVwibGF5b3V0ID09PSAnMSdcIlxuICAgIGNsYXNzPVwiY3FhLXctZnVsbCBjcWEtYm94LWJvcmRlciBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWl0ZW1zLXN0YXJ0IGNxYS1weC1weCBjcWEtcGItcHggbWQ6Y3FhLWgtWzYzcHhdIGNxYS1iZy13aGl0ZSBjcWEtYm9yZGVyLXQtMiBjcWEtYm9yZGVyLXIgY3FhLWJvcmRlci1iLTAgY3FhLWJvcmRlci1sIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bIzNGNDNFRV0gY3FhLXJvdW5kZWQtWzEwcHhdIGNxYS1mbGV4LW5vbmUgY3FhLW9yZGVyLTAgY3FhLXNlbGYtc3RyZXRjaCBjcWEtZ3Jvdy0wXCJcbiAgICBbbmdDbGFzc109XCJjYXJkQ2xhc3NcIj5cbiAgICA8IS0tIE1ldHJpYyBibG9ja3MgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS13LWZ1bGwgY3FhLWdyaWQgY3FhLWdyaWQtY29scy0yIG1kOmNxYS1nYXAtMCBjcWEtZ2FwLXktMiBjcWEtcHktMSBtZDpjcWEtcC0wIHNtOmNxYS1ncmlkLWNvbHMtMiBtZDpjcWEtZ3JpZC1jb2xzLTQgc206Y3FhLWJvcmRlci1yIGNxYS1ib3JkZXItWyNFNUU3RUJdXCI+XG4gICAgICA8IS0tIExlZnQgdG90YWwgYmxvY2sgLS0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1qdXN0aWZ5LWNlbnRlciBjcWEtaXRlbXMtc3RhcnQgY3FhLXB5LTMgbWQ6Y3FhLXB0LTEgbWQ6Y3FhLXBiLTAuNSBjcWEtcHgtNiBjcWEtZ2FwLTEgY3FhLXctZnVsbCBzbTpjcWEtdy1bMTAwJV0gbWQ6Y3FhLXctWzE4MHB4XSBsZzpjcWEtdy1bMjkwcHhdIG1kOmNxYS1oLVs2MXB4XSBjcWEtYm9yZGVyLWItMSBzbTpjcWEtYm9yZGVyLWItMCBtZDpjcWEtYm9yZGVyLWItMCBjcWEtYm9yZGVyLVsjRTVFN0VCXVwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjNkE3MjgyXVwiPiB7eyB0aXRsZSB9fSA8L3NwYW4+XG4gICAgICAgIDxoMyBjbGFzcz1cImNxYS10ZXh0LVszMHB4XSBjcWEtbGVhZGluZy1bMzZweF0gY3FhLWZvbnQtYm9sZCBjcWEtdHJhY2tpbmctWzAuMzk1NTA4cHhdIGNxYS10ZXh0LVsjMTAxODI4XVwiPiB7e1xuICAgICAgICAgIHRvdGFsIHwgbnVtYmVyIH19IDwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxjcWEtbWV0cmljcy1ibG9jayAqbmdGb3I9XCJsZXQgaXQgb2YgaXRlbXM7XCIgW2l0ZW1dPVwiaXRcIiBbaXRlbXNsZW5ndGhdPVwiaXRlbXMubGVuZ3RoLnRvU3RyaW5nKClcIlxuICAgICAgICBbcHJvZ3Jlc3NdPVwicHJvZ3Jlc3NXaWR0aChpdClcIj5cbiAgICAgIDwvY3FhLW1ldHJpY3MtYmxvY2s+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJsYXlvdXQgPT09ICcyJ1wiXG4gICAgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1ib3gtYm9yZGVyIGNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtaXRlbXMtc3RhcnQgY3FhLXB4LXB4IGNxYS1wYi1weCBtZDpjcWEtaC1bNjNweF0gY3FhLWJnLXdoaXRlIGNxYS1mbGV4LW5vbmUgY3FhLW9yZGVyLTAgY3FhLXNlbGYtc3RyZXRjaCBjcWEtZ3Jvdy0wXCJcbiAgICBbbmdDbGFzc109XCJjYXJkQ2xhc3NcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBtZDpjcWEtZmxleC1yb3cgY3FhLWZsZXgtd3JhcCBjcWEtaXRlbXMtc3RyZXRjaCBjcWEtdy1mdWxsIGNxYS1taW4taC1bNTNweF0gY3FhLXJvdW5kZWQtbm9uZSBjcWEtZmxleC1ub25lIGNxYS1vcmRlci0wIGNxYS1zZWxmLXN0cmV0Y2ggY3FhLWdyb3ctMCBjcWEtZ2FwLTRcIj5cbiAgICAgIDwhLS0gTGVmdCB0b3RhbCBibG9jayAtLT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWp1c3RpZnktY2VudGVyIGNxYS1pdGVtcy1zdGFydCBjcWEtcHktMyBtZDpjcWEtcHktMSBjcWEtcHgtNCBzbTpjcWEtcHgtNiBjcWEtZ2FwLTEgY3FhLXctZnVsbCBzbTpjcWEtdy1bMTAwJV0gbWQ6Y3FhLXctWzI0MHB4XSBsZzpjcWEtdy1bMjkwcHhdIG1kOmNxYS1oLVs2MXB4XSBjcWEtcm91bmRlZC1bMTBweF0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyNFNUU3RUJdIGNxYS1yZWxhdGl2ZSBjcWEtb3ZlcmZsb3ctaGlkZGVuIGJlZm9yZTpjcWEtY29udGVudC1bJyddIGJlZm9yZTpjcWEtYmctWyM0QzRDNTFdIGJlZm9yZTpjcWEtaC1bMnB4XSBiZWZvcmU6Y3FhLXctZnVsbCBiZWZvcmU6Y3FhLWFic29sdXRlIGJlZm9yZTpjcWEtdG9wLTAgYmVmb3JlOmNxYS1sZWZ0LTBcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLWdhcC0yIGNxYS1qdXN0aWZ5LWJldHdlZW4gY3FhLXctZnVsbFwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIiFjcWEtdy00ICFjcWEtaC00ICFjcWEtdGV4dC1bMTZweF0gY3FhLXRleHQtWyM2QjcyODBdXCI+e3sgaWNvbiB9fTwvbWF0LWljb24+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdGV4dC1bIzZCNzI4MF0gY3FhLXRleHQtWzE0cHhdIGNxYS1sZWFkaW5nLTRcIj57eyB0aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWVuZCBjcWEtZ2FwLTIgY3FhLW1sLWF1dG9cIj5cbiAgICAgICAgICAgIDxoNCBjbGFzcz1cImNxYS10ZXh0LVsyOHB4XSBjcWEtbGVhZGluZy03IGNxYS10cmFja2luZy1bLTAuNDVweF0gY3FhLXRleHQtWyMxMTE4MjddXCI+e3sgdG90YWwgfCBudW1iZXIgfX1cbiAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInRvdGFsUGVyY2VudCAhPT0gdW5kZWZpbmVkXCIgY2xhc3M9XCJjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctNFwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInBlcmNlbnRDbGFzcyh0b3RhbFBlcmNlbnQpXCI+e3sgZm9ybWF0UGVyY2VudCh0b3RhbFBlcmNlbnQpIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tIE1ldHJpYyBibG9ja3MgLS0+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiY3FhLWZsZXgtMSBjcWEtdy1mdWxsIGNxYS1ncmlkIGNxYS1ncmlkLWNvbHMtMiBtZDpjcWEtZ3JpZC1jb2xzLTMgY3FhLWl0ZW1zLWNlbnRlciBjcWEtcm91bmRlZC1bMTBweF0gY3FhLWJvcmRlciBjcWEtYm9yZGVyLXNvbGlkIGNxYS1ib3JkZXItWyNFNUU3RUJdIGNxYS1yZWxhdGl2ZSBjcWEtb3ZlcmZsb3ctaGlkZGVuXCI+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWgtWzJweF0gY3FhLXctZnVsbCBjcWEtYWJzb2x1dGUgY3FhLXRvcC0wIGNxYS1sZWZ0LTBcIlxuICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIidsaW5lYXItZ3JhZGllbnQoOTBkZWcsICMzQjgyRjYgMCUsIHJnYmEoMCwgMCwgMCwgMCkgMTAwJSknXCI+PC9zcGFuPlxuICAgICAgICA8Y3FhLW1ldHJpY3MtYmxvY2sgKm5nRm9yPVwibGV0IGl0IG9mIGl0ZW1zOyBsZXQgaSA9IGluZGV4XCIgW2l0ZW1dPVwiaXRcIiBbbGF5b3V0XT1cImxheW91dFwiPlxuICAgICAgICA8L2NxYS1tZXRyaWNzLWJsb2NrPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9tZXRyaWNzLWNhcmQvbWV0cmljcy1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy9tZXRyaWNzLWNhcmQvbWV0cmljcy1jYXJkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDOzs7OztBQVMxRSxNQUFNLE9BQU8sb0JBQW9CO0lBTmpDO1FBT1csU0FBSSxHQUFXLGNBQWMsQ0FBQztRQUM5QixVQUFLLEdBQVcsa0JBQWtCLENBQUM7UUFDbkMsVUFBSyxHQUFvQixDQUFDLENBQUM7UUFDM0IsVUFBSyxHQUFzQixFQUFFLENBQUM7UUFDOUIsY0FBUyxHQUFXLEVBQUUsQ0FBQztRQUN2QixXQUFNLEdBQVcsR0FBRyxDQUFDO0tBMkIvQjtJQXhCQyxhQUFhLENBQUMsSUFBcUI7UUFDakMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDeEMsSUFBSSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ2xDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDOUIsQ0FBQztJQUVPLFFBQVE7UUFDZCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RSxPQUFPLFlBQVksSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFjO1FBQzFCLElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFDNUUsTUFBTSxJQUFJLEdBQUcsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNuRCxPQUFPLEdBQUcsSUFBSSxHQUFHLEtBQUssR0FBRyxDQUFDO0lBQzVCLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYztRQUN6QixJQUFJLEtBQUssS0FBSyxTQUFTLElBQUksS0FBSyxLQUFLLElBQUksSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sb0JBQW9CLENBQUM7UUFDOUYsSUFBSSxLQUFLLEdBQUcsQ0FBQztZQUFFLE9BQU8sb0JBQW9CLENBQUMsQ0FBQyxRQUFRO1FBQ3BELElBQUksS0FBSyxHQUFHLENBQUM7WUFBRSxPQUFPLG9CQUFvQixDQUFDLENBQUMsTUFBTTtRQUNsRCxPQUFPLG9CQUFvQixDQUFDLENBQUMsVUFBVTtJQUN6QyxDQUFDOztpSEFoQ1Usb0JBQW9CO3FHQUFwQixvQkFBb0IsME1DVGpDLGs5SEF1RE07MkZEOUNPLG9CQUFvQjtrQkFOaEMsU0FBUzsrQkFDRSxrQkFBa0IsbUJBR1gsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWV0cmljc0NhcmRJdGVtIH0gZnJvbSAnLi9tZXRyaWNzLWNhcmQtaXRlbS5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtbWV0cmljcy1jYXJkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21ldHJpY3MtY2FyZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBNZXRyaWNzQ2FyZENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGljb246IHN0cmluZyA9ICd0ZXh0X3NuaXBwZXQnO1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJ1RvdGFsIFRlc3QgQ2FzZXMnO1xuICBASW5wdXQoKSB0b3RhbDogbnVtYmVyIHwgc3RyaW5nID0gMDtcbiAgQElucHV0KCkgaXRlbXM6IE1ldHJpY3NDYXJkSXRlbVtdID0gW107XG4gIEBJbnB1dCgpIGNhcmRDbGFzczogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGxheW91dDogc3RyaW5nID0gJzEnO1xuICBASW5wdXQoKSB0b3RhbFBlcmNlbnQ/OiBudW1iZXI7IC8vIE9wdGlvbmFsIG92ZXJhbGwgcGVyY2VudCBkZWx0YSBmb3IgbGF5b3V0IDJcblxuICBwcm9ncmVzc1dpZHRoKGl0ZW06IE1ldHJpY3NDYXJkSXRlbSk6IHN0cmluZyB7XG4gICAgY29uc3QgbWF4ID0gaXRlbS5tYXggPz8gdGhpcy5pbmZlck1heCgpO1xuICAgIGlmICghbWF4IHx8IG1heCA8PSAwKSByZXR1cm4gJzAlJztcbiAgICBjb25zdCBwY3QgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAsIChpdGVtLnZhbHVlIC8gbWF4KSAqIDEwMCkpO1xuICAgIHJldHVybiBwY3QudG9GaXhlZCgxKSArICclJztcbiAgfVxuXG4gIHByaXZhdGUgaW5mZXJNYXgoKTogbnVtYmVyIHtcbiAgICBjb25zdCBtYXhGcm9tSXRlbXMgPSB0aGlzLml0ZW1zLnJlZHVjZSgobSwgaXQpID0+IE1hdGgubWF4KG0sIGl0LnZhbHVlKSwgMCk7XG4gICAgcmV0dXJuIG1heEZyb21JdGVtcyB8fCAxO1xuICB9XG5cbiAgZm9ybWF0UGVyY2VudCh2YWx1ZT86IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgTnVtYmVyLmlzTmFOKHZhbHVlKSkgcmV0dXJuICcnO1xuICAgIGNvbnN0IHNpZ24gPSB2YWx1ZSA+IDAgPyAnKycgOiB2YWx1ZSA8IDAgPyAnJyA6ICcnO1xuICAgIHJldHVybiBgJHtzaWdufSR7dmFsdWV9JWA7XG4gIH1cblxuICBwZXJjZW50Q2xhc3ModmFsdWU/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IE51bWJlci5pc05hTih2YWx1ZSkpIHJldHVybiAnY3FhLXRleHQtWyM2QjcyODBdJztcbiAgICBpZiAodmFsdWUgPiAwKSByZXR1cm4gJ2NxYS10ZXh0LVsjMTBCOTgxXSc7IC8vIGdyZWVuXG4gICAgaWYgKHZhbHVlIDwgMCkgcmV0dXJuICdjcWEtdGV4dC1bI0VGNDQ0NF0nOyAvLyByZWRcbiAgICByZXR1cm4gJ2NxYS10ZXh0LVsjNkI3MjgwXSc7IC8vIG5ldXRyYWxcbiAgfVxufVxuXG5cbiIsIjxkaXYgaWQ9XCJjcWEtdWktcm9vdFwiPlxuICA8ZGl2ICpuZ0lmPVwibGF5b3V0ID09PSAnMSdcIlxuICAgIGNsYXNzPVwiY3FhLXctZnVsbCBjcWEtYm94LWJvcmRlciBjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWl0ZW1zLXN0YXJ0IGNxYS1weC1weCBjcWEtcGItcHggbWQ6Y3FhLWgtWzYzcHhdIGNxYS1iZy13aGl0ZSBjcWEtYm9yZGVyLXQtMiBjcWEtYm9yZGVyLXIgY3FhLWJvcmRlci1iLTAgY3FhLWJvcmRlci1sIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bIzNGNDNFRV0gY3FhLXJvdW5kZWQtWzEwcHhdIGNxYS1mbGV4LW5vbmUgY3FhLW9yZGVyLTAgY3FhLXNlbGYtc3RyZXRjaCBjcWEtZ3Jvdy0wXCJcbiAgICBbbmdDbGFzc109XCJjYXJkQ2xhc3NcIj5cbiAgICA8IS0tIE1ldHJpYyBibG9ja3MgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS13LWZ1bGwgY3FhLWdyaWQgY3FhLWdyaWQtY29scy0yIHNtOmNxYS1ncmlkLWNvbHMtMiBtZDpjcWEtZ3JpZC1jb2xzLTQgY3FhLWJvcmRlciBjcWEtYm9yZGVyLVsjRTVFN0VCXSBjcWEtcm91bmRlZC1bMTBweF0gY3FhLW92ZXJmbG93LWhpZGRlblwiPlxuICAgICAgPCEtLSBMZWZ0IHRvdGFsIGJsb2NrIC0tPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWl0ZW1zLXN0YXJ0IGNxYS1weS0zIG1kOmNxYS1wdC0xIG1kOmNxYS1wYi0wLjUgY3FhLXB4LTYgY3FhLWdhcC0xIGNxYS13LWZ1bGwgc206Y3FhLXctWzEwMCVdIG1kOmNxYS13LVsxODBweF0gbGc6Y3FhLXctWzI5MHB4XSBtZDpjcWEtaC1bNjFweF0gY3FhLWJvcmRlci1iIGNxYS1ib3JkZXItWyNFNUU3RUJdIHNtOmNxYS1ib3JkZXItYi0wIHNtOmNxYS1ib3JkZXItclwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMTZweF0gY3FhLWZvbnQtbWVkaXVtIGNxYS10ZXh0LVsjNkE3MjgyXVwiPiB7eyB0aXRsZSB9fSA8L3NwYW4+XG4gICAgICAgIDxoMyBjbGFzcz1cImNxYS10ZXh0LVszMHB4XSBjcWEtbGVhZGluZy1bMzZweF0gY3FhLWZvbnQtYm9sZCBjcWEtdHJhY2tpbmctWzAuMzk1NTA4cHhdIGNxYS10ZXh0LVsjMTAxODI4XVwiPiB7e1xuICAgICAgICAgIHRvdGFsIHwgbnVtYmVyIH19IDwvaDM+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0IG9mIGl0ZW1zOyBsZXQgaSA9IGluZGV4XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtc3RyZXRjaCBjcWEtYm9yZGVyLWIgY3FhLWJvcmRlci1bI0U1RTdFQl0gbWQ6Y3FhLWJvcmRlci1iLTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWhpZGRlbiBzbTpjcWEtYmxvY2sgbWQ6Y3FhLWJsb2NrIGNxYS13LVsxcHhdIGNxYS1iZy1bI0U1RTdFQl0gY3FhLW1yLTRcIj48L2Rpdj5cbiAgICAgICAgICA8Y3FhLW1ldHJpY3MtYmxvY2sgW2l0ZW1dPVwiaXRcIiBbaXRlbXNsZW5ndGhdPVwiaXRlbXMubGVuZ3RoLnRvU3RyaW5nKClcIlxuICAgICAgICAgICAgW3Byb2dyZXNzXT1cInByb2dyZXNzV2lkdGgoaXQpXCI+XG4gICAgICAgICAgPC9jcWEtbWV0cmljcy1ibG9jaz5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiAqbmdJZj1cImxheW91dCA9PT0gJzInXCJcbiAgICBjbGFzcz1cImNxYS13LWZ1bGwgY3FhLWJveC1ib3JkZXIgY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1pdGVtcy1zdGFydCBjcWEtcHgtcHggY3FhLXBiLXB4IG1kOmNxYS1oLVs2M3B4XSBjcWEtYmctd2hpdGUgY3FhLWZsZXgtbm9uZSBjcWEtb3JkZXItMCBjcWEtc2VsZi1zdHJldGNoIGNxYS1ncm93LTBcIlxuICAgIFtuZ0NsYXNzXT1cImNhcmRDbGFzc1wiPlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIG1kOmNxYS1mbGV4LXJvdyBjcWEtZmxleC13cmFwIGNxYS1pdGVtcy1zdHJldGNoIGNxYS13LWZ1bGwgY3FhLW1pbi1oLVs1M3B4XSBjcWEtcm91bmRlZC1ub25lIGNxYS1mbGV4LW5vbmUgY3FhLW9yZGVyLTAgY3FhLXNlbGYtc3RyZXRjaCBjcWEtZ3Jvdy0wIGNxYS1nYXAtNFwiPlxuICAgICAgPCEtLSBMZWZ0IHRvdGFsIGJsb2NrIC0tPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImNxYS1mbGV4IGNxYS1mbGV4LWNvbCBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLWl0ZW1zLXN0YXJ0IGNxYS1weS0zIG1kOmNxYS1weS0xIGNxYS1weC00IHNtOmNxYS1weC02IGNxYS1nYXAtMSBjcWEtdy1mdWxsIHNtOmNxYS13LVsxMDAlXSBtZDpjcWEtdy1bMjQwcHhdIGxnOmNxYS13LVsyOTBweF0gbWQ6Y3FhLWgtWzYxcHhdIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0U1RTdFQl0gY3FhLXJlbGF0aXZlIGNxYS1vdmVyZmxvdy1oaWRkZW4gYmVmb3JlOmNxYS1jb250ZW50LVsnJ10gYmVmb3JlOmNxYS1iZy1bIzRDNEM1MV0gYmVmb3JlOmNxYS1oLVsycHhdIGJlZm9yZTpjcWEtdy1mdWxsIGJlZm9yZTpjcWEtYWJzb2x1dGUgYmVmb3JlOmNxYS10b3AtMCBiZWZvcmU6Y3FhLWxlZnQtMFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtZ2FwLTIgY3FhLWp1c3RpZnktYmV0d2VlbiBjcWEtdy1mdWxsXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiIWNxYS13LTQgIWNxYS1oLTQgIWNxYS10ZXh0LVsxNnB4XSBjcWEtdGV4dC1bIzZCNzI4MF1cIj57eyBpY29uIH19PC9tYXQtaWNvbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsjNkI3MjgwXSBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctNFwiPnt7IHRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtZW5kIGNxYS1nYXAtMiBjcWEtbWwtYXV0b1wiPlxuICAgICAgICAgICAgPGg0IGNsYXNzPVwiY3FhLXRleHQtWzI4cHhdIGNxYS1sZWFkaW5nLTcgY3FhLXRyYWNraW5nLVstMC40NXB4XSBjcWEtdGV4dC1bIzExMTgyN11cIj57eyB0b3RhbCB8IG51bWJlciB9fVxuICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwidG90YWxQZXJjZW50ICE9PSB1bmRlZmluZWRcIiBjbGFzcz1cImNxYS10ZXh0LVsxMHB4XSBjcWEtbGVhZGluZy00XCJcbiAgICAgICAgICAgICAgW25nQ2xhc3NdPVwicGVyY2VudENsYXNzKHRvdGFsUGVyY2VudClcIj57eyBmb3JtYXRQZXJjZW50KHRvdGFsUGVyY2VudCkgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS0gTWV0cmljIGJsb2NrcyAtLT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJjcWEtZmxleC0xIGNxYS13LWZ1bGwgY3FhLWdyaWQgY3FhLWdyaWQtY29scy0yIG1kOmNxYS1ncmlkLWNvbHMtMyBsZzpjcWEtZ3JpZC1jb2xzLTUgY3FhLWdhcC0yIG1kOmNxYS1nYXAtMyBjcWEtaXRlbXMtY2VudGVyIGNxYS1yb3VuZGVkLVsxMHB4XSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1bI0U1RTdFQl0gY3FhLXJlbGF0aXZlIGNxYS1vdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtaC1bMnB4XSBjcWEtdy1mdWxsIGNxYS1hYnNvbHV0ZSBjcWEtdG9wLTAgY3FhLWxlZnQtMFwiXG4gICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwiJ2xpbmVhci1ncmFkaWVudCg5MGRlZywgIzNCODJGNiAwJSwgcmdiYSgwLCAwLCAwLCAwKSAxMDAlKSdcIj48L3NwYW4+XG4gICAgICAgIDxjcWEtbWV0cmljcy1ibG9jayAqbmdGb3I9XCJsZXQgaXQgb2YgaXRlbXM7IGxldCBpID0gaW5kZXhcIiBbaXRlbV09XCJpdFwiIFtsYXlvdXRdPVwibGF5b3V0XCI+XG4gICAgICAgIDwvY3FhLW1ldHJpY3MtYmxvY2s+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -45,10 +45,10 @@ export class TestDistributionCardComponent {
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
TestDistributionCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TestDistributionCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
48
|
-
TestDistributionCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TestDistributionCardComponent, selector: "cqa-test-distribution-card", inputs: { title: "title", segments: "segments", items: "items" }, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-bg-white cqa-rounded-[8px] cqa-border cqa-border-solid cqa-border-border-default cqa-py-[14.5px] cqa-px-[17px] cqa-shadow-card\">\n <!-- Title -->\n <h3 class=\"cqa-text-[16px] cqa-leading-6 cqa-text-[#111827] cqa-mb-2\">{{ title }}</h3>\n\n <!-- Stacked segments pill -->\n <div class=\"cqa-w-full cqa-h-[24px] cqa-rounded-full cqa-bg-[#F3F4F6] cqa-overflow-hidden cqa-flex cqa-mb-2\">\n <ng-container *ngFor=\"let s of segments; let i = index; let last = last\">\n <div\n class=\"cqa-h-full cqa-flex cqa-items-center cqa-justify-center cqa-text-white cqa-text-[12px] cqa-leading-[16px]\"\n [ngClass]=\"[\n segmentColor(s, i === 0 ? 'cqa-bg-[#4F46E5]' : i === segments.length - 1 ? 'cqa-bg-[#059669]' : 'cqa-bg-[#9333EA]'),\n i === 0 ? 'cqa-rounded-l-full' : '',\n last ? 'cqa-rounded-r-full' : ''\n ]\" [style.width]=\"segmentWidth(s)\">\n {{ s.label }}\n </div>\n </ng-container>\n </div>\n\n <!-- Items list -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px]\">\n <div *ngFor=\"let it of items\" class=\"cqa-flex cqa-flex-col cqa-gap-[6px]\">\n <!-- Parent row -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between\">\n <div class=\"cqa-flex cqa-items-center\">\n <span class=\"cqa-w-[4px] cqa-h-[12px] cqa-rounded-full\" [style.background-color]=\"getItemIconColor(it)\"></span>\n <div class=\"cqa-ml-[8px] cqa-mr-[6px]\">\n <mat-icon *ngIf=\"it.icon\" class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\" [style.color]=\"getItemIconColor(it)\">\n {{ it.icon }}\n </mat-icon>\n </div>\n <span class=\"cqa-text-[12px] cqa-leading-[18px] cqa-text-dialog-muted\">{{ it.label }}</span>\n </div>\n <div class=\"cqa-text-[12px] cqa-leading-4 cqa-font-bold\">{{ it.value | number }}</div>\n </div>\n\n <!-- Children rows -->\n <div *ngIf=\"it.children?.length\" class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div *ngFor=\"let ch of it.children\"\n class=\"cqa-flex cqa-items-center cqa-justify-between cqa-flex-1 cqa-rounded-[4px] cqa-bg-[#F9FAFB]\">\n <div class=\"cqa-flex cqa-items-center cqa-text-[10px] cqa-leading-[15px] cqa-text-[#4B5563]\">\n <
|
|
48
|
+
TestDistributionCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.4.0", type: TestDistributionCardComponent, selector: "cqa-test-distribution-card", inputs: { title: "title", segments: "segments", items: "items" }, ngImport: i0, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-bg-white cqa-rounded-[8px] cqa-border cqa-border-solid cqa-border-border-default cqa-py-[14.5px] cqa-px-[17px] cqa-shadow-card\">\n <!-- Title -->\n <h3 class=\"cqa-text-[16px] cqa-leading-6 cqa-text-[#111827] cqa-mb-2\">{{ title }}</h3>\n\n <!-- Stacked segments pill -->\n <div class=\"cqa-w-full cqa-h-[24px] cqa-rounded-full cqa-bg-[#F3F4F6] cqa-overflow-hidden cqa-flex cqa-mb-2\">\n <ng-container *ngFor=\"let s of segments; let i = index; let last = last\">\n <div\n class=\"cqa-h-full cqa-flex cqa-items-center cqa-justify-center cqa-text-white cqa-text-[12px] cqa-leading-[16px]\"\n [ngClass]=\"[\n segmentColor(s, i === 0 ? 'cqa-bg-[#4F46E5]' : i === segments.length - 1 ? 'cqa-bg-[#059669]' : 'cqa-bg-[#9333EA]'),\n i === 0 ? 'cqa-rounded-l-full' : '',\n last ? 'cqa-rounded-r-full' : ''\n ]\" [style.width]=\"segmentWidth(s)\">\n {{ s.label }}\n </div>\n </ng-container>\n </div>\n\n <!-- Items list -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px]\">\n <div *ngFor=\"let it of items\" class=\"cqa-flex cqa-flex-col cqa-gap-[6px]\">\n <!-- Parent row -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between\">\n <div class=\"cqa-flex cqa-items-center\">\n <span class=\"cqa-w-[4px] cqa-h-[12px] cqa-rounded-full\" [style.background-color]=\"getItemIconColor(it)\"></span>\n <div class=\"cqa-ml-[8px] cqa-mr-[6px]\">\n <mat-icon *ngIf=\"it.icon\" class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\" [style.color]=\"getItemIconColor(it)\">\n {{ it.icon }}\n </mat-icon>\n </div>\n <span class=\"cqa-text-[12px] cqa-leading-[18px] cqa-text-dialog-muted\">{{ it.label }}</span>\n </div>\n <div class=\"cqa-text-[12px] cqa-leading-4 cqa-font-bold\">{{ it.value | number }}</div>\n </div>\n\n <!-- Children rows -->\n <div *ngIf=\"it.children?.length\" class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div *ngFor=\"let ch of it.children\"\n class=\"cqa-flex cqa-items-center cqa-justify-between cqa-flex-1 cqa-rounded-[4px] cqa-bg-[#F9FAFB]\">\n <div class=\"cqa-flex cqa-items-center cqa-text-[10px] cqa-leading-[15px] cqa-text-[#4B5563]\">\n <ng-container *ngIf=\"getChildIcon(ch.label) as icon\">\n <ng-container [ngSwitch]=\"icon\">\n <svg *ngSwitchCase=\"'apple'\" class=\"cqa-w-[14px] cqa-h-[14px] cqa-ml-2 cqa-mr-1\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">\n <path fill=\"currentColor\" d=\"M16.365 1.43c0 1.182-.435 2.014-1.086 2.845-.823.99-1.982 1.707-3.078 1.6-.13-1.115.433-2.154 1.09-2.87.825-.925 2.196-1.59 3.07-1.575-.003.003.003 0 .003 0zm3.217 6.094c-.086-.067-2.684-1.598-5.468-.507-1.332.53-2.429.542-3.788.006-1.997-.8-3.635.156-3.735.208-.083.044-1.948 1.143-2.4 3.667-.43 2.375.6 4.92 1.4 6.52.723 1.421 1.704 3.126 3.067 3.07 1.35-.053 1.78-.883 3.323-.883 1.542 0 1.92.883 3.36.853 1.44-.026 2.352-1.443 3.073-2.855.674-1.324.963-2.603.983-2.668-.021-.009-1.88-.72-1.903-2.854-.021-1.786 1.463-2.64 1.534-2.682z\"/>\n </svg>\n <svg *ngSwitchCase=\"'android'\" class=\"cqa-w-[14px] cqa-h-[14px] cqa-ml-2 cqa-mr-1\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">\n <path fill=\"currentColor\" d=\"M17.6 9.48l1.42-2.46a.5.5 0 10-.86-.5l-1.44 2.52A11 11 0 0016 7h-8c-.24 0-.48.01-.72.04L5.84 6.5a.5.5 0 00-.86.5l1.42 2.46A7 7 0 004 15h.5a1.5 1.5 0 001.5-1.5V10h1v9.5A1.5 1.5 0 008.5 21h1a1.5 1.5 0 001.5-1.5V17h2v2.5A1.5 1.5 0 0014.5 21h1a1.5 1.5 0 001.5-1.5V10h1v3.5A1.5 1.5 0 0019.5 15H20a7 7 0 00-2.4-5.52zM9 5a.75.75 0 11-1.5 0A.75.75 0 019 5zm7.5 0a.75.75 0 11-1.5 0 .75.75 0 011.5 0z\"/>\n </svg>\n </ng-container>\n </ng-container>\n <div class=\"cqa-pr-1\" [ngClass]=\"getChildIcon(ch.label) ? 'cqa-pl-0' : 'cqa-pl-2'\">{{ ch.label }}</div>\n </div>\n <span class=\"cqa-font-bold cqa-text-[#111827] cqa-text-[10px] cqa-leading-[15px]\">{{ ch.value }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", components: [{ type: i1.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], directives: [{ type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }], pipes: { "number": i2.DecimalPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
49
49
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImport: i0, type: TestDistributionCardComponent, decorators: [{
|
|
50
50
|
type: Component,
|
|
51
|
-
args: [{ selector: 'cqa-test-distribution-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-bg-white cqa-rounded-[8px] cqa-border cqa-border-solid cqa-border-border-default cqa-py-[14.5px] cqa-px-[17px] cqa-shadow-card\">\n <!-- Title -->\n <h3 class=\"cqa-text-[16px] cqa-leading-6 cqa-text-[#111827] cqa-mb-2\">{{ title }}</h3>\n\n <!-- Stacked segments pill -->\n <div class=\"cqa-w-full cqa-h-[24px] cqa-rounded-full cqa-bg-[#F3F4F6] cqa-overflow-hidden cqa-flex cqa-mb-2\">\n <ng-container *ngFor=\"let s of segments; let i = index; let last = last\">\n <div\n class=\"cqa-h-full cqa-flex cqa-items-center cqa-justify-center cqa-text-white cqa-text-[12px] cqa-leading-[16px]\"\n [ngClass]=\"[\n segmentColor(s, i === 0 ? 'cqa-bg-[#4F46E5]' : i === segments.length - 1 ? 'cqa-bg-[#059669]' : 'cqa-bg-[#9333EA]'),\n i === 0 ? 'cqa-rounded-l-full' : '',\n last ? 'cqa-rounded-r-full' : ''\n ]\" [style.width]=\"segmentWidth(s)\">\n {{ s.label }}\n </div>\n </ng-container>\n </div>\n\n <!-- Items list -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px]\">\n <div *ngFor=\"let it of items\" class=\"cqa-flex cqa-flex-col cqa-gap-[6px]\">\n <!-- Parent row -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between\">\n <div class=\"cqa-flex cqa-items-center\">\n <span class=\"cqa-w-[4px] cqa-h-[12px] cqa-rounded-full\" [style.background-color]=\"getItemIconColor(it)\"></span>\n <div class=\"cqa-ml-[8px] cqa-mr-[6px]\">\n <mat-icon *ngIf=\"it.icon\" class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\" [style.color]=\"getItemIconColor(it)\">\n {{ it.icon }}\n </mat-icon>\n </div>\n <span class=\"cqa-text-[12px] cqa-leading-[18px] cqa-text-dialog-muted\">{{ it.label }}</span>\n </div>\n <div class=\"cqa-text-[12px] cqa-leading-4 cqa-font-bold\">{{ it.value | number }}</div>\n </div>\n\n <!-- Children rows -->\n <div *ngIf=\"it.children?.length\" class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div *ngFor=\"let ch of it.children\"\n class=\"cqa-flex cqa-items-center cqa-justify-between cqa-flex-1 cqa-rounded-[4px] cqa-bg-[#F9FAFB]\">\n <div class=\"cqa-flex cqa-items-center cqa-text-[10px] cqa-leading-[15px] cqa-text-[#4B5563]\">\n <
|
|
51
|
+
args: [{ selector: 'cqa-test-distribution-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"cqa-ui-root\">\n <div class=\"cqa-bg-white cqa-rounded-[8px] cqa-border cqa-border-solid cqa-border-border-default cqa-py-[14.5px] cqa-px-[17px] cqa-shadow-card\">\n <!-- Title -->\n <h3 class=\"cqa-text-[16px] cqa-leading-6 cqa-text-[#111827] cqa-mb-2\">{{ title }}</h3>\n\n <!-- Stacked segments pill -->\n <div class=\"cqa-w-full cqa-h-[24px] cqa-rounded-full cqa-bg-[#F3F4F6] cqa-overflow-hidden cqa-flex cqa-mb-2\">\n <ng-container *ngFor=\"let s of segments; let i = index; let last = last\">\n <div\n class=\"cqa-h-full cqa-flex cqa-items-center cqa-justify-center cqa-text-white cqa-text-[12px] cqa-leading-[16px]\"\n [ngClass]=\"[\n segmentColor(s, i === 0 ? 'cqa-bg-[#4F46E5]' : i === segments.length - 1 ? 'cqa-bg-[#059669]' : 'cqa-bg-[#9333EA]'),\n i === 0 ? 'cqa-rounded-l-full' : '',\n last ? 'cqa-rounded-r-full' : ''\n ]\" [style.width]=\"segmentWidth(s)\">\n {{ s.label }}\n </div>\n </ng-container>\n </div>\n\n <!-- Items list -->\n <div class=\"cqa-flex cqa-flex-col cqa-gap-[6px]\">\n <div *ngFor=\"let it of items\" class=\"cqa-flex cqa-flex-col cqa-gap-[6px]\">\n <!-- Parent row -->\n <div class=\"cqa-flex cqa-items-center cqa-justify-between\">\n <div class=\"cqa-flex cqa-items-center\">\n <span class=\"cqa-w-[4px] cqa-h-[12px] cqa-rounded-full\" [style.background-color]=\"getItemIconColor(it)\"></span>\n <div class=\"cqa-ml-[8px] cqa-mr-[6px]\">\n <mat-icon *ngIf=\"it.icon\" class=\"cqa-w-[14px] cqa-h-[14px] cqa-text-[14px] cqa-leading-[14px]\" [style.color]=\"getItemIconColor(it)\">\n {{ it.icon }}\n </mat-icon>\n </div>\n <span class=\"cqa-text-[12px] cqa-leading-[18px] cqa-text-dialog-muted\">{{ it.label }}</span>\n </div>\n <div class=\"cqa-text-[12px] cqa-leading-4 cqa-font-bold\">{{ it.value | number }}</div>\n </div>\n\n <!-- Children rows -->\n <div *ngIf=\"it.children?.length\" class=\"cqa-flex cqa-items-center cqa-gap-2\">\n <div *ngFor=\"let ch of it.children\"\n class=\"cqa-flex cqa-items-center cqa-justify-between cqa-flex-1 cqa-rounded-[4px] cqa-bg-[#F9FAFB]\">\n <div class=\"cqa-flex cqa-items-center cqa-text-[10px] cqa-leading-[15px] cqa-text-[#4B5563]\">\n <ng-container *ngIf=\"getChildIcon(ch.label) as icon\">\n <ng-container [ngSwitch]=\"icon\">\n <svg *ngSwitchCase=\"'apple'\" class=\"cqa-w-[14px] cqa-h-[14px] cqa-ml-2 cqa-mr-1\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">\n <path fill=\"currentColor\" d=\"M16.365 1.43c0 1.182-.435 2.014-1.086 2.845-.823.99-1.982 1.707-3.078 1.6-.13-1.115.433-2.154 1.09-2.87.825-.925 2.196-1.59 3.07-1.575-.003.003.003 0 .003 0zm3.217 6.094c-.086-.067-2.684-1.598-5.468-.507-1.332.53-2.429.542-3.788.006-1.997-.8-3.635.156-3.735.208-.083.044-1.948 1.143-2.4 3.667-.43 2.375.6 4.92 1.4 6.52.723 1.421 1.704 3.126 3.067 3.07 1.35-.053 1.78-.883 3.323-.883 1.542 0 1.92.883 3.36.853 1.44-.026 2.352-1.443 3.073-2.855.674-1.324.963-2.603.983-2.668-.021-.009-1.88-.72-1.903-2.854-.021-1.786 1.463-2.64 1.534-2.682z\"/>\n </svg>\n <svg *ngSwitchCase=\"'android'\" class=\"cqa-w-[14px] cqa-h-[14px] cqa-ml-2 cqa-mr-1\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">\n <path fill=\"currentColor\" d=\"M17.6 9.48l1.42-2.46a.5.5 0 10-.86-.5l-1.44 2.52A11 11 0 0016 7h-8c-.24 0-.48.01-.72.04L5.84 6.5a.5.5 0 00-.86.5l1.42 2.46A7 7 0 004 15h.5a1.5 1.5 0 001.5-1.5V10h1v9.5A1.5 1.5 0 008.5 21h1a1.5 1.5 0 001.5-1.5V17h2v2.5A1.5 1.5 0 0014.5 21h1a1.5 1.5 0 001.5-1.5V10h1v3.5A1.5 1.5 0 0019.5 15H20a7 7 0 00-2.4-5.52zM9 5a.75.75 0 11-1.5 0A.75.75 0 019 5zm7.5 0a.75.75 0 11-1.5 0 .75.75 0 011.5 0z\"/>\n </svg>\n </ng-container>\n </ng-container>\n <div class=\"cqa-pr-1\" [ngClass]=\"getChildIcon(ch.label) ? 'cqa-pl-0' : 'cqa-pl-2'\">{{ ch.label }}</div>\n </div>\n <span class=\"cqa-font-bold cqa-text-[#111827] cqa-text-[10px] cqa-leading-[15px]\">{{ ch.value }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [] }]
|
|
52
52
|
}], propDecorators: { title: [{
|
|
53
53
|
type: Input
|
|
54
54
|
}], segments: [{
|
|
@@ -56,4 +56,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.4.0", ngImpor
|
|
|
56
56
|
}], items: [{
|
|
57
57
|
type: Input
|
|
58
58
|
}] } });
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1kaXN0cmlidXRpb24tY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rhc2hib2FyZHMvdGVzdC1kaXN0cmlidXRpb24tY2FyZC90ZXN0LWRpc3RyaWJ1dGlvbi1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy90ZXN0LWRpc3RyaWJ1dGlvbi1jYXJkL3Rlc3QtZGlzdHJpYnV0aW9uLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUE2QjFFLE1BQU0sT0FBTyw2QkFBNkI7SUFOMUM7UUFPVyxVQUFLLEdBQVcsbUJBQW1CLENBQUM7UUFDcEMsYUFBUSxHQUEwQixFQUFFLENBQUM7UUFDckMsVUFBSyxHQUF1QixFQUFFLENBQUM7S0FzQ3pDO0lBcENDLGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUE0QjtRQUN2QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEUsT0FBTyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZLENBQUMsT0FBNEIsRUFBRSxRQUFnQjtRQUN6RCxPQUFPLE9BQU8sQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUN4QixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkQsSUFBSSxlQUFlLEtBQUssS0FBSyxJQUFJLGVBQWUsS0FBSyxPQUFPLEVBQUU7WUFDNUQsT0FBTyxPQUFPLENBQUM7U0FDaEI7YUFBTSxJQUFJLGVBQWUsS0FBSyxTQUFTLEVBQUU7WUFDeEMsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFzQjtRQUNyQyw2Q0FBNkM7UUFDN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2QyxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUU7WUFDbkIsT0FBTyxTQUFTLENBQUM7U0FDbEI7YUFBTSxJQUFJLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDN0IsT0FBTyxTQUFTLENBQUM7U0FDbEI7YUFBTSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUU7WUFDMUIsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFDRCxPQUFPLFNBQVMsQ0FBQyxDQUFDLFVBQVU7SUFDOUIsQ0FBQzs7MEhBeENVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLG9JQzdCMUMsODdGQXFETTsyRkR4Qk8sNkJBQTZCO2tCQU56QyxTQUFTOytCQUNFLDRCQUE0QixtQkFHckIsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBEaXN0cmlidXRpb25TZWdtZW50IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbiAgLyoqIFRhaWx3aW5kLWxpa2UgY2xhc3Mgb3IgaGV4IGJnIGNvbG9yICovXG4gIGNvbG9yQ2xhc3M/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzdHJpYnV0aW9uQ2hpbGRJdGVtIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbiAgY29sb3JDbGFzcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXN0cmlidXRpb25JdGVtIHtcbiAgaWNvbj86IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbiAgY29sb3JDbGFzcz86IHN0cmluZzsgLy8gdXNlZCBmb3IgaWNvbi9hY2NlbnQgaWYgZGVzaXJlZFxuICBjaGlsZHJlbj86IERpc3RyaWJ1dGlvbkNoaWxkSXRlbVtdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtdGVzdC1kaXN0cmlidXRpb24tY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXN0LWRpc3RyaWJ1dGlvbi1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFRlc3REaXN0cmlidXRpb25DYXJkQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9ICdUZXN0IERpc3RyaWJ1dGlvbic7XG4gIEBJbnB1dCgpIHNlZ21lbnRzOiBEaXN0cmlidXRpb25TZWdtZW50W10gPSBbXTtcbiAgQElucHV0KCkgaXRlbXM6IERpc3RyaWJ1dGlvbkl0ZW1bXSA9IFtdO1xuXG4gIHRvdGFsU2VnbWVudHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zZWdtZW50cy5yZWR1Y2UoKHN1bSwgcykgPT4gc3VtICsgKHMudmFsdWUgfHwgMCksIDApIHx8IDE7XG4gIH1cblxuICBzZWdtZW50V2lkdGgoc2VnbWVudDogRGlzdHJpYnV0aW9uU2VnbWVudCk6IHN0cmluZyB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnRvdGFsU2VnbWVudHMoKTtcbiAgICBjb25zdCBwY3QgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAsIChzZWdtZW50LnZhbHVlIC8gdG90YWwpICogMTAwKSk7XG4gICAgcmV0dXJuIHBjdCArICclJztcbiAgfVxuXG4gIHNlZ21lbnRDb2xvcihzZWdtZW50OiBEaXN0cmlidXRpb25TZWdtZW50LCBmYWxsYmFjazogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc2VnbWVudC5jb2xvckNsYXNzIHx8IGZhbGxiYWNrO1xuICB9XG5cbiAgZ2V0Q2hpbGRJY29uKGxhYmVsOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBub3JtYWxpemVkTGFiZWwgPSBsYWJlbC50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICBpZiAobm9ybWFsaXplZExhYmVsID09PSAnaW9zJyB8fCBub3JtYWxpemVkTGFiZWwgPT09ICdhcHBsZScpIHtcbiAgICAgIHJldHVybiAnYXBwbGUnO1xuICAgIH0gZWxzZSBpZiAobm9ybWFsaXplZExhYmVsID09PSAnYW5kcm9pZCcpIHtcbiAgICAgIHJldHVybiAnYW5kcm9pZCc7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0SXRlbUljb25Db2xvcihpdGVtOiBEaXN0cmlidXRpb25JdGVtKTogc3RyaW5nIHtcbiAgICAvLyBSZXR1cm4gY29sb3IgYmFzZWQgb24gbGFiZWwgb3IgdXNlIGRlZmF1bHRcbiAgICBjb25zdCBsYWJlbCA9IGl0ZW0ubGFiZWwudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAobGFiZWwgPT09ICd3ZWInKSB7XG4gICAgICByZXR1cm4gJyM0RjQ2RTUnO1xuICAgIH0gZWxzZSBpZiAobGFiZWwgPT09ICdtb2JpbGUnKSB7XG4gICAgICByZXR1cm4gJyM5MzMzRUEnO1xuICAgIH0gZWxzZSBpZiAobGFiZWwgPT09ICdhcGknKSB7XG4gICAgICByZXR1cm4gJyMwNTk2NjknO1xuICAgIH1cbiAgICByZXR1cm4gJyM0RjQ2RTUnOyAvLyBkZWZhdWx0XG4gIH1cbn1cblxuXG4iLCI8ZGl2IGlkPVwiY3FhLXVpLXJvb3RcIj5cbiAgPGRpdiBjbGFzcz1cImNxYS1iZy13aGl0ZSBjcWEtcm91bmRlZC1bOHB4XSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1ib3JkZXItZGVmYXVsdCBjcWEtcHktWzE0LjVweF0gY3FhLXB4LVsxN3B4XSBjcWEtc2hhZG93LWNhcmRcIj5cbiAgICA8IS0tIFRpdGxlIC0tPlxuICAgIDxoMyBjbGFzcz1cImNxYS10ZXh0LVsxNnB4XSBjcWEtbGVhZGluZy02IGNxYS10ZXh0LVsjMTExODI3XSBjcWEtbWItMlwiPnt7IHRpdGxlIH19PC9oMz5cblxuICAgIDwhLS0gU3RhY2tlZCBzZWdtZW50cyBwaWxsIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1oLVsyNHB4XSBjcWEtcm91bmRlZC1mdWxsIGNxYS1iZy1bI0YzRjRGNl0gY3FhLW92ZXJmbG93LWhpZGRlbiBjcWEtZmxleCBjcWEtbWItMlwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcyBvZiBzZWdtZW50czsgbGV0IGkgPSBpbmRleDsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNxYS1oLWZ1bGwgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXRleHQtd2hpdGUgY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiW1xuICAgICAgICAgICAgc2VnbWVudENvbG9yKHMsIGkgPT09IDAgPyAnY3FhLWJnLVsjNEY0NkU1XScgOiBpID09PSBzZWdtZW50cy5sZW5ndGggLSAxID8gJ2NxYS1iZy1bIzA1OTY2OV0nIDogJ2NxYS1iZy1bIzkzMzNFQV0nKSxcbiAgICAgICAgICAgIGkgPT09IDAgPyAnY3FhLXJvdW5kZWQtbC1mdWxsJyA6ICcnLFxuICAgICAgICAgICAgbGFzdCA/ICdjcWEtcm91bmRlZC1yLWZ1bGwnIDogJydcbiAgICAgICAgICBdXCIgW3N0eWxlLndpZHRoXT1cInNlZ21lbnRXaWR0aChzKVwiPlxuICAgICAgICAgIHt7IHMubGFiZWwgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gSXRlbXMgbGlzdCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtWzZweF1cIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0IG9mIGl0ZW1zXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC1bNnB4XVwiPlxuICAgICAgICA8IS0tIFBhcmVudCByb3cgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdy1bNHB4XSBjcWEtaC1bMTJweF0gY3FhLXJvdW5kZWQtZnVsbFwiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImdldEl0ZW1JY29uQ29sb3IoaXQpXCI+PC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1tbC1bOHB4XSBjcWEtbXItWzZweF1cIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaXQuaWNvblwiIGNsYXNzPVwiY3FhLXctWzE0cHhdIGNxYS1oLVsxNHB4XSBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzE0cHhdXCIgW3N0eWxlLmNvbG9yXT1cImdldEl0ZW1JY29uQ29sb3IoaXQpXCI+XG4gICAgICAgICAgICAgICAge3sgaXQuaWNvbiB9fVxuICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMThweF0gY3FhLXRleHQtZGlhbG9nLW11dGVkXCI+e3sgaXQubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy00IGNxYS1mb250LWJvbGRcIj57eyBpdC52YWx1ZSB8IG51bWJlciB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIENoaWxkcmVuIHJvd3MgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpdC5jaGlsZHJlbj8ubGVuZ3RoXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNoIG9mIGl0LmNoaWxkcmVuXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1mbGV4LTEgY3FhLXJvdW5kZWQtWzRweF0gY3FhLWJnLVsjRjlGQUZCXVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtdGV4dC1bIzRCNTU2M11cIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiZ2V0Q2hpbGRJY29uKGNoLmxhYmVsKVwiIGNsYXNzPVwiY3FhLXctWzE0cHhdIGNxYS1oLVsxNHB4XSBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzE0cHhdIGNxYS1tbC0yIGNxYS1tci0xIGNxYS10ZXh0LVsjNEI1NTYzXVwiPlxuICAgICAgICAgICAgICAgIHt7IGdldENoaWxkSWNvbihjaC5sYWJlbCkgfX1cbiAgICAgICAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1wci0xXCIgW25nQ2xhc3NdPVwiZ2V0Q2hpbGRJY29uKGNoLmxhYmVsKSA/ICdjcWEtcGwtMCcgOiAnY3FhLXBsLTInXCI+e3sgY2gubGFiZWwgfX08L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtZm9udC1ib2xkIGNxYS10ZXh0LVsjMTExODI3XSBjcWEtdGV4dC1bMTBweF0gY3FhLWxlYWRpbmctWzE1cHhdXCI+e3sgY2gudmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+Il19
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC1kaXN0cmlidXRpb24tY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2Rhc2hib2FyZHMvdGVzdC1kaXN0cmlidXRpb24tY2FyZC90ZXN0LWRpc3RyaWJ1dGlvbi1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZGFzaGJvYXJkcy90ZXN0LWRpc3RyaWJ1dGlvbi1jYXJkL3Rlc3QtZGlzdHJpYnV0aW9uLWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7QUE2QjFFLE1BQU0sT0FBTyw2QkFBNkI7SUFOMUM7UUFPVyxVQUFLLEdBQVcsbUJBQW1CLENBQUM7UUFDcEMsYUFBUSxHQUEwQixFQUFFLENBQUM7UUFDckMsVUFBSyxHQUF1QixFQUFFLENBQUM7S0FzQ3pDO0lBcENDLGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELFlBQVksQ0FBQyxPQUE0QjtRQUN2QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDbkMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdEUsT0FBTyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFFRCxZQUFZLENBQUMsT0FBNEIsRUFBRSxRQUFnQjtRQUN6RCxPQUFPLE9BQU8sQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUN4QixNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbkQsSUFBSSxlQUFlLEtBQUssS0FBSyxJQUFJLGVBQWUsS0FBSyxPQUFPLEVBQUU7WUFDNUQsT0FBTyxPQUFPLENBQUM7U0FDaEI7YUFBTSxJQUFJLGVBQWUsS0FBSyxTQUFTLEVBQUU7WUFDeEMsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxJQUFzQjtRQUNyQyw2Q0FBNkM7UUFDN0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN2QyxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUU7WUFDbkIsT0FBTyxTQUFTLENBQUM7U0FDbEI7YUFBTSxJQUFJLEtBQUssS0FBSyxRQUFRLEVBQUU7WUFDN0IsT0FBTyxTQUFTLENBQUM7U0FDbEI7YUFBTSxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUU7WUFDMUIsT0FBTyxTQUFTLENBQUM7U0FDbEI7UUFDRCxPQUFPLFNBQVMsQ0FBQyxDQUFDLFVBQVU7SUFDOUIsQ0FBQzs7MEhBeENVLDZCQUE2Qjs4R0FBN0IsNkJBQTZCLG9JQzdCMUMsbXlJQTRETTsyRkQvQk8sNkJBQTZCO2tCQU56QyxTQUFTOytCQUNFLDRCQUE0QixtQkFHckIsdUJBQXVCLENBQUMsTUFBTTs4QkFHdEMsS0FBSztzQkFBYixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGludGVyZmFjZSBEaXN0cmlidXRpb25TZWdtZW50IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbiAgLyoqIFRhaWx3aW5kLWxpa2UgY2xhc3Mgb3IgaGV4IGJnIGNvbG9yICovXG4gIGNvbG9yQ2xhc3M/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzdHJpYnV0aW9uQ2hpbGRJdGVtIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbiAgY29sb3JDbGFzcz86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXN0cmlidXRpb25JdGVtIHtcbiAgaWNvbj86IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbiAgY29sb3JDbGFzcz86IHN0cmluZzsgLy8gdXNlZCBmb3IgaWNvbi9hY2NlbnQgaWYgZGVzaXJlZFxuICBjaGlsZHJlbj86IERpc3RyaWJ1dGlvbkNoaWxkSXRlbVtdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjcWEtdGVzdC1kaXN0cmlidXRpb24tY2FyZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi90ZXN0LWRpc3RyaWJ1dGlvbi1jYXJkLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFRlc3REaXN0cmlidXRpb25DYXJkQ29tcG9uZW50IHtcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9ICdUZXN0IERpc3RyaWJ1dGlvbic7XG4gIEBJbnB1dCgpIHNlZ21lbnRzOiBEaXN0cmlidXRpb25TZWdtZW50W10gPSBbXTtcbiAgQElucHV0KCkgaXRlbXM6IERpc3RyaWJ1dGlvbkl0ZW1bXSA9IFtdO1xuXG4gIHRvdGFsU2VnbWVudHMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5zZWdtZW50cy5yZWR1Y2UoKHN1bSwgcykgPT4gc3VtICsgKHMudmFsdWUgfHwgMCksIDApIHx8IDE7XG4gIH1cblxuICBzZWdtZW50V2lkdGgoc2VnbWVudDogRGlzdHJpYnV0aW9uU2VnbWVudCk6IHN0cmluZyB7XG4gICAgY29uc3QgdG90YWwgPSB0aGlzLnRvdGFsU2VnbWVudHMoKTtcbiAgICBjb25zdCBwY3QgPSBNYXRoLm1heCgwLCBNYXRoLm1pbigxMDAsIChzZWdtZW50LnZhbHVlIC8gdG90YWwpICogMTAwKSk7XG4gICAgcmV0dXJuIHBjdCArICclJztcbiAgfVxuXG4gIHNlZ21lbnRDb2xvcihzZWdtZW50OiBEaXN0cmlidXRpb25TZWdtZW50LCBmYWxsYmFjazogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc2VnbWVudC5jb2xvckNsYXNzIHx8IGZhbGxiYWNrO1xuICB9XG5cbiAgZ2V0Q2hpbGRJY29uKGxhYmVsOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBjb25zdCBub3JtYWxpemVkTGFiZWwgPSBsYWJlbC50b0xvd2VyQ2FzZSgpLnRyaW0oKTtcbiAgICBpZiAobm9ybWFsaXplZExhYmVsID09PSAnaW9zJyB8fCBub3JtYWxpemVkTGFiZWwgPT09ICdhcHBsZScpIHtcbiAgICAgIHJldHVybiAnYXBwbGUnO1xuICAgIH0gZWxzZSBpZiAobm9ybWFsaXplZExhYmVsID09PSAnYW5kcm9pZCcpIHtcbiAgICAgIHJldHVybiAnYW5kcm9pZCc7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgZ2V0SXRlbUljb25Db2xvcihpdGVtOiBEaXN0cmlidXRpb25JdGVtKTogc3RyaW5nIHtcbiAgICAvLyBSZXR1cm4gY29sb3IgYmFzZWQgb24gbGFiZWwgb3IgdXNlIGRlZmF1bHRcbiAgICBjb25zdCBsYWJlbCA9IGl0ZW0ubGFiZWwudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAobGFiZWwgPT09ICd3ZWInKSB7XG4gICAgICByZXR1cm4gJyM0RjQ2RTUnO1xuICAgIH0gZWxzZSBpZiAobGFiZWwgPT09ICdtb2JpbGUnKSB7XG4gICAgICByZXR1cm4gJyM5MzMzRUEnO1xuICAgIH0gZWxzZSBpZiAobGFiZWwgPT09ICdhcGknKSB7XG4gICAgICByZXR1cm4gJyMwNTk2NjknO1xuICAgIH1cbiAgICByZXR1cm4gJyM0RjQ2RTUnOyAvLyBkZWZhdWx0XG4gIH1cbn1cblxuXG4iLCI8ZGl2IGlkPVwiY3FhLXVpLXJvb3RcIj5cbiAgPGRpdiBjbGFzcz1cImNxYS1iZy13aGl0ZSBjcWEtcm91bmRlZC1bOHB4XSBjcWEtYm9yZGVyIGNxYS1ib3JkZXItc29saWQgY3FhLWJvcmRlci1ib3JkZXItZGVmYXVsdCBjcWEtcHktWzE0LjVweF0gY3FhLXB4LVsxN3B4XSBjcWEtc2hhZG93LWNhcmRcIj5cbiAgICA8IS0tIFRpdGxlIC0tPlxuICAgIDxoMyBjbGFzcz1cImNxYS10ZXh0LVsxNnB4XSBjcWEtbGVhZGluZy02IGNxYS10ZXh0LVsjMTExODI3XSBjcWEtbWItMlwiPnt7IHRpdGxlIH19PC9oMz5cblxuICAgIDwhLS0gU3RhY2tlZCBzZWdtZW50cyBwaWxsIC0tPlxuICAgIDxkaXYgY2xhc3M9XCJjcWEtdy1mdWxsIGNxYS1oLVsyNHB4XSBjcWEtcm91bmRlZC1mdWxsIGNxYS1iZy1bI0YzRjRGNl0gY3FhLW92ZXJmbG93LWhpZGRlbiBjcWEtZmxleCBjcWEtbWItMlwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcyBvZiBzZWdtZW50czsgbGV0IGkgPSBpbmRleDsgbGV0IGxhc3QgPSBsYXN0XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNxYS1oLWZ1bGwgY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1jZW50ZXIgY3FhLXRleHQtd2hpdGUgY3FhLXRleHQtWzEycHhdIGNxYS1sZWFkaW5nLVsxNnB4XVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwiW1xuICAgICAgICAgICAgc2VnbWVudENvbG9yKHMsIGkgPT09IDAgPyAnY3FhLWJnLVsjNEY0NkU1XScgOiBpID09PSBzZWdtZW50cy5sZW5ndGggLSAxID8gJ2NxYS1iZy1bIzA1OTY2OV0nIDogJ2NxYS1iZy1bIzkzMzNFQV0nKSxcbiAgICAgICAgICAgIGkgPT09IDAgPyAnY3FhLXJvdW5kZWQtbC1mdWxsJyA6ICcnLFxuICAgICAgICAgICAgbGFzdCA/ICdjcWEtcm91bmRlZC1yLWZ1bGwnIDogJydcbiAgICAgICAgICBdXCIgW3N0eWxlLndpZHRoXT1cInNlZ21lbnRXaWR0aChzKVwiPlxuICAgICAgICAgIHt7IHMubGFiZWwgfX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gSXRlbXMgbGlzdCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWZsZXgtY29sIGNxYS1nYXAtWzZweF1cIj5cbiAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0IG9mIGl0ZW1zXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtZmxleC1jb2wgY3FhLWdhcC1bNnB4XVwiPlxuICAgICAgICA8IS0tIFBhcmVudCByb3cgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1qdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjcWEtdy1bNHB4XSBjcWEtaC1bMTJweF0gY3FhLXJvdW5kZWQtZnVsbFwiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImdldEl0ZW1JY29uQ29sb3IoaXQpXCI+PC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1tbC1bOHB4XSBjcWEtbXItWzZweF1cIj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiaXQuaWNvblwiIGNsYXNzPVwiY3FhLXctWzE0cHhdIGNxYS1oLVsxNHB4XSBjcWEtdGV4dC1bMTRweF0gY3FhLWxlYWRpbmctWzE0cHhdXCIgW3N0eWxlLmNvbG9yXT1cImdldEl0ZW1JY29uQ29sb3IoaXQpXCI+XG4gICAgICAgICAgICAgICAge3sgaXQuaWNvbiB9fVxuICAgICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy1bMThweF0gY3FhLXRleHQtZGlhbG9nLW11dGVkXCI+e3sgaXQubGFiZWwgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS10ZXh0LVsxMnB4XSBjcWEtbGVhZGluZy00IGNxYS1mb250LWJvbGRcIj57eyBpdC52YWx1ZSB8IG51bWJlciB9fTwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIENoaWxkcmVuIHJvd3MgLS0+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpdC5jaGlsZHJlbj8ubGVuZ3RoXCIgY2xhc3M9XCJjcWEtZmxleCBjcWEtaXRlbXMtY2VudGVyIGNxYS1nYXAtMlwiPlxuICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGNoIG9mIGl0LmNoaWxkcmVuXCJcbiAgICAgICAgICAgIGNsYXNzPVwiY3FhLWZsZXggY3FhLWl0ZW1zLWNlbnRlciBjcWEtanVzdGlmeS1iZXR3ZWVuIGNxYS1mbGV4LTEgY3FhLXJvdW5kZWQtWzRweF0gY3FhLWJnLVsjRjlGQUZCXVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNxYS1mbGV4IGNxYS1pdGVtcy1jZW50ZXIgY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XSBjcWEtdGV4dC1bIzRCNTU2M11cIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdldENoaWxkSWNvbihjaC5sYWJlbCkgYXMgaWNvblwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cImljb25cIj5cbiAgICAgICAgICAgICAgICAgIDxzdmcgKm5nU3dpdGNoQ2FzZT1cIidhcHBsZSdcIiBjbGFzcz1cImNxYS13LVsxNHB4XSBjcWEtaC1bMTRweF0gY3FhLW1sLTIgY3FhLW1yLTFcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNMTYuMzY1IDEuNDNjMCAxLjE4Mi0uNDM1IDIuMDE0LTEuMDg2IDIuODQ1LS44MjMuOTktMS45ODIgMS43MDctMy4wNzggMS42LS4xMy0xLjExNS40MzMtMi4xNTQgMS4wOS0yLjg3LjgyNS0uOTI1IDIuMTk2LTEuNTkgMy4wNy0xLjU3NS0uMDAzLjAwMy4wMDMgMCAuMDAzIDB6bTMuMjE3IDYuMDk0Yy0uMDg2LS4wNjctMi42ODQtMS41OTgtNS40NjgtLjUwNy0xLjMzMi41My0yLjQyOS41NDItMy43ODguMDA2LTEuOTk3LS44LTMuNjM1LjE1Ni0zLjczNS4yMDgtLjA4My4wNDQtMS45NDggMS4xNDMtMi40IDMuNjY3LS40MyAyLjM3NS42IDQuOTIgMS40IDYuNTIuNzIzIDEuNDIxIDEuNzA0IDMuMTI2IDMuMDY3IDMuMDcgMS4zNS0uMDUzIDEuNzgtLjg4MyAzLjMyMy0uODgzIDEuNTQyIDAgMS45Mi44ODMgMy4zNi44NTMgMS40NC0uMDI2IDIuMzUyLTEuNDQzIDMuMDczLTIuODU1LjY3NC0xLjMyNC45NjMtMi42MDMuOTgzLTIuNjY4LS4wMjEtLjAwOS0xLjg4LS43Mi0xLjkwMy0yLjg1NC0uMDIxLTEuNzg2IDEuNDYzLTIuNjQgMS41MzQtMi42ODJ6XCIvPlxuICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICA8c3ZnICpuZ1N3aXRjaENhc2U9XCInYW5kcm9pZCdcIiBjbGFzcz1cImNxYS13LVsxNHB4XSBjcWEtaC1bMTRweF0gY3FhLW1sLTIgY3FhLW1yLTFcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNMTcuNiA5LjQ4bDEuNDItMi40NmEuNS41IDAgMTAtLjg2LS41bC0xLjQ0IDIuNTJBMTEgMTEgMCAwMDE2IDdoLThjLS4yNCAwLS40OC4wMS0uNzIuMDRMNS44NCA2LjVhLjUuNSAwIDAwLS44Ni41bDEuNDIgMi40NkE3IDcgMCAwMDQgMTVoLjVhMS41IDEuNSAwIDAwMS41LTEuNVYxMGgxdjkuNUExLjUgMS41IDAgMDA4LjUgMjFoMWExLjUgMS41IDAgMDAxLjUtMS41VjE3aDJ2Mi41QTEuNSAxLjUgMCAwMDE0LjUgMjFoMWExLjUgMS41IDAgMDAxLjUtMS41VjEwaDF2My41QTEuNSAxLjUgMCAwMDE5LjUgMTVIMjBhNyA3IDAgMDAtMi40LTUuNTJ6TTkgNWEuNzUuNzUgMCAxMS0xLjUgMEEuNzUuNzUgMCAwMTkgNXptNy41IDBhLjc1Ljc1IDAgMTEtMS41IDAgLjc1Ljc1IDAgMDExLjUgMHpcIi8+XG4gICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjcWEtcHItMVwiIFtuZ0NsYXNzXT1cImdldENoaWxkSWNvbihjaC5sYWJlbCkgPyAnY3FhLXBsLTAnIDogJ2NxYS1wbC0yJ1wiPnt7IGNoLmxhYmVsIH19PC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY3FhLWZvbnQtYm9sZCBjcWEtdGV4dC1bIzExMTgyN10gY3FhLXRleHQtWzEwcHhdIGNxYS1sZWFkaW5nLVsxNXB4XVwiPnt7IGNoLnZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|