@almatar/smart-booking-dashboard 0.0.2-alpha.4 → 0.0.2-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/hotel-cancel/almatar-hotel-auto-cancellation.component.mjs +40 -27
- package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-summary/almatar-hotel-auto-cancellation-refund-summary.component.mjs +14 -28
- package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-summary-skeleton/almatar-hotel-auto-cancellation-refund-summary-skeleton.component.mjs +16 -0
- package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-result-overlay/almatar-hotel-auto-cancellation-result-overlay.component.mjs +10 -13
- package/esm2022/lib/components/hotel-cancel/components/hotel-content/hotel-content.component.mjs +4 -4
- package/esm2022/lib/components/hotel-cancel/components/hotel-refund-method-selector/hotel-refund-method-selector.component.mjs +9 -10
- package/esm2022/lib/components/hotel-cancel/services/almatar-hotel-auto-cancellation-endpoints.service.mjs +2 -30
- package/esm2022/lib/models/booking.types.mjs +8 -1
- package/fesm2022/almatar-smart-booking-dashboard.mjs +175 -189
- package/fesm2022/almatar-smart-booking-dashboard.mjs.map +1 -1
- package/lib/components/cancel-dialog/cancel-dialog.component.d.ts +2 -2
- package/lib/components/hotel-cancel/almatar-hotel-auto-cancellation.component.d.ts +1 -3
- package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-summary/almatar-hotel-auto-cancellation-refund-summary.component.d.ts +2 -4
- package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-refund-summary-skeleton/almatar-hotel-auto-cancellation-refund-summary-skeleton.component.d.ts +7 -0
- package/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-result-overlay/almatar-hotel-auto-cancellation-result-overlay.component.d.ts +1 -1
- package/lib/models/booking.types.d.ts +2 -0
- package/package.json +1 -1
- package/esm2022/lib/shared/store/selectors/currency.selectors.mjs +0 -9
- package/lib/shared/store/selectors/currency.selectors.d.ts +0 -2
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Component, ChangeDetectionStrategy } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class AlmatarHotelAutoCancellationRefundSummarySkeletonComponent {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.skeletonCards = [1, 2];
|
|
7
|
+
this.summaryRows = [1, 2, 3];
|
|
8
|
+
}
|
|
9
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlmatarHotelAutoCancellationRefundSummarySkeletonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
10
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AlmatarHotelAutoCancellationRefundSummarySkeletonComponent, isStandalone: true, selector: "almatar-hotel-auto-cancellation-refund-summary-skeleton", ngImport: i0, template: "<div class=\"refund-summary-skeleton\">\n <div class=\"refund-summary-skeleton__content\">\n <!-- Skeleton Title -->\n <div class=\"skeleton skeleton--title\"></div>\n\n <!-- Skeleton Package Cards -->\n @for (item of skeletonCards; track item) {\n <div class=\"skeleton-card\">\n <div class=\"skeleton-card__header\">\n <div class=\"skeleton-card__title-section\">\n <div class=\"skeleton skeleton--text skeleton--text-lg\"></div>\n <div class=\"skeleton skeleton--badge\"></div>\n </div>\n <div class=\"skeleton skeleton--icon\"></div>\n </div>\n <div class=\"skeleton-card__room-info\">\n <div class=\"skeleton skeleton--text skeleton--text-sm\"></div>\n <div class=\"skeleton skeleton--text skeleton--text-sm\" style=\"width: 70%;\"></div>\n </div>\n <div class=\"skeleton-card__date\">\n <div class=\"skeleton skeleton--text skeleton--text-xs\" style=\"width: 50%;\"></div>\n </div>\n </div>\n }\n\n <!-- Skeleton Separator -->\n <div class=\"skeleton-separator\"></div>\n\n <!-- Skeleton Total Summary -->\n <div class=\"skeleton-summary\">\n @for (item of summaryRows; track item) {\n <div class=\"skeleton-summary__row\">\n <div class=\"skeleton skeleton--text skeleton--text-sm\" style=\"width: 40%;\"></div>\n <div class=\"skeleton skeleton--text skeleton--text-sm\" style=\"width: 30%;\"></div>\n </div>\n }\n </div>\n\n <!-- Skeleton Info Banner -->\n <div class=\"skeleton-banner\">\n <div class=\"skeleton skeleton--icon-circle\"></div>\n <div class=\"skeleton-banner__content\">\n <div class=\"skeleton skeleton--text skeleton--text-sm\"></div>\n <div class=\"skeleton skeleton--text skeleton--text-sm\" style=\"width: 80%;\"></div>\n <div class=\"skeleton skeleton--text skeleton--text-xs\" style=\"width: 60%;\"></div>\n </div>\n </div>\n </div>\n\n <!-- Skeleton Footer -->\n <div class=\"refund-summary-skeleton__footer\">\n <div class=\"skeleton skeleton--button\"></div>\n <div class=\"skeleton skeleton--button\"></div>\n </div>\n</div>\n", styles: [".refund-summary-skeleton{display:flex;flex-direction:column;height:100%}.refund-summary-skeleton__content{flex:1;overflow-y:auto;padding:16px;background-color:#fff}.refund-summary-skeleton__footer{display:flex;gap:12px;padding:16px 20px;background:#fff;border-top:1px solid rgb(229,231,235)}.skeleton{background:linear-gradient(90deg,#f3f4f6,#e5e7eb,#f3f4f6);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:8px}.skeleton--title{height:24px;width:150px;margin-bottom:16px}.skeleton--text{height:16px;border-radius:4px}.skeleton--text-xs{height:12px}.skeleton--text-sm{height:14px;width:100%}.skeleton--text-lg{height:18px;width:100%}.skeleton--badge{height:24px;width:140px;border-radius:999px}.skeleton--icon{width:20px;height:20px;border-radius:4px;flex-shrink:0}.skeleton--icon-circle{width:20px;height:20px;border-radius:50%;flex-shrink:0}.skeleton--button{flex:1;height:44px;border-radius:10px}.skeleton-card{background:#fff;border:1px solid rgb(229,231,235);border-radius:12px;padding:16px;margin-bottom:12px}.skeleton-card__header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.skeleton-card__title-section{flex:1;display:flex;flex-direction:column;gap:8px}.skeleton-card__room-info{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.skeleton-card__date{margin-bottom:4px}.skeleton-separator{height:1px;background:linear-gradient(90deg,#f3f4f6,#e5e7eb,#f3f4f6);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;margin:12px 0;border-radius:1px}.skeleton-summary{background:#f3f4f6;border-radius:12px;padding:16px;margin-bottom:16px}.skeleton-summary__row{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.skeleton-summary__row:last-child{margin-bottom:0}.skeleton-banner{display:flex;gap:8px;border:1px solid rgb(229,231,235);border-radius:12px;padding:14px;align-items:flex-start}.skeleton-banner__content{flex:1;display:flex;flex-direction:column;gap:6px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
11
|
+
}
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlmatarHotelAutoCancellationRefundSummarySkeletonComponent, decorators: [{
|
|
13
|
+
type: Component,
|
|
14
|
+
args: [{ selector: 'almatar-hotel-auto-cancellation-refund-summary-skeleton', standalone: true, imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"refund-summary-skeleton\">\n <div class=\"refund-summary-skeleton__content\">\n <!-- Skeleton Title -->\n <div class=\"skeleton skeleton--title\"></div>\n\n <!-- Skeleton Package Cards -->\n @for (item of skeletonCards; track item) {\n <div class=\"skeleton-card\">\n <div class=\"skeleton-card__header\">\n <div class=\"skeleton-card__title-section\">\n <div class=\"skeleton skeleton--text skeleton--text-lg\"></div>\n <div class=\"skeleton skeleton--badge\"></div>\n </div>\n <div class=\"skeleton skeleton--icon\"></div>\n </div>\n <div class=\"skeleton-card__room-info\">\n <div class=\"skeleton skeleton--text skeleton--text-sm\"></div>\n <div class=\"skeleton skeleton--text skeleton--text-sm\" style=\"width: 70%;\"></div>\n </div>\n <div class=\"skeleton-card__date\">\n <div class=\"skeleton skeleton--text skeleton--text-xs\" style=\"width: 50%;\"></div>\n </div>\n </div>\n }\n\n <!-- Skeleton Separator -->\n <div class=\"skeleton-separator\"></div>\n\n <!-- Skeleton Total Summary -->\n <div class=\"skeleton-summary\">\n @for (item of summaryRows; track item) {\n <div class=\"skeleton-summary__row\">\n <div class=\"skeleton skeleton--text skeleton--text-sm\" style=\"width: 40%;\"></div>\n <div class=\"skeleton skeleton--text skeleton--text-sm\" style=\"width: 30%;\"></div>\n </div>\n }\n </div>\n\n <!-- Skeleton Info Banner -->\n <div class=\"skeleton-banner\">\n <div class=\"skeleton skeleton--icon-circle\"></div>\n <div class=\"skeleton-banner__content\">\n <div class=\"skeleton skeleton--text skeleton--text-sm\"></div>\n <div class=\"skeleton skeleton--text skeleton--text-sm\" style=\"width: 80%;\"></div>\n <div class=\"skeleton skeleton--text skeleton--text-xs\" style=\"width: 60%;\"></div>\n </div>\n </div>\n </div>\n\n <!-- Skeleton Footer -->\n <div class=\"refund-summary-skeleton__footer\">\n <div class=\"skeleton skeleton--button\"></div>\n <div class=\"skeleton skeleton--button\"></div>\n </div>\n</div>\n", styles: [".refund-summary-skeleton{display:flex;flex-direction:column;height:100%}.refund-summary-skeleton__content{flex:1;overflow-y:auto;padding:16px;background-color:#fff}.refund-summary-skeleton__footer{display:flex;gap:12px;padding:16px 20px;background:#fff;border-top:1px solid rgb(229,231,235)}.skeleton{background:linear-gradient(90deg,#f3f4f6,#e5e7eb,#f3f4f6);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:8px}.skeleton--title{height:24px;width:150px;margin-bottom:16px}.skeleton--text{height:16px;border-radius:4px}.skeleton--text-xs{height:12px}.skeleton--text-sm{height:14px;width:100%}.skeleton--text-lg{height:18px;width:100%}.skeleton--badge{height:24px;width:140px;border-radius:999px}.skeleton--icon{width:20px;height:20px;border-radius:4px;flex-shrink:0}.skeleton--icon-circle{width:20px;height:20px;border-radius:50%;flex-shrink:0}.skeleton--button{flex:1;height:44px;border-radius:10px}.skeleton-card{background:#fff;border:1px solid rgb(229,231,235);border-radius:12px;padding:16px;margin-bottom:12px}.skeleton-card__header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.skeleton-card__title-section{flex:1;display:flex;flex-direction:column;gap:8px}.skeleton-card__room-info{display:flex;flex-direction:column;gap:6px;margin-bottom:8px}.skeleton-card__date{margin-bottom:4px}.skeleton-separator{height:1px;background:linear-gradient(90deg,#f3f4f6,#e5e7eb,#f3f4f6);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;margin:12px 0;border-radius:1px}.skeleton-summary{background:#f3f4f6;border-radius:12px;padding:16px;margin-bottom:16px}.skeleton-summary__row{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.skeleton-summary__row:last-child{margin-bottom:0}.skeleton-banner{display:flex;gap:8px;border:1px solid rgb(229,231,235);border-radius:12px;padding:14px;align-items:flex-start}.skeleton-banner__content{flex:1;display:flex;flex-direction:column;gap:6px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}\n"] }]
|
|
15
|
+
}] });
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1yZWZ1bmQtc3VtbWFyeS1za2VsZXRvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL2NvbXBvbmVudHMvaG90ZWwtY2FuY2VsL2NvbXBvbmVudHMvYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1yZWZ1bmQtc3VtbWFyeS1za2VsZXRvbi9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLXJlZnVuZC1zdW1tYXJ5LXNrZWxldG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9ob3RlbC1jYW5jZWwvY29tcG9uZW50cy9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLXJlZnVuZC1zdW1tYXJ5LXNrZWxldG9uL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tcmVmdW5kLXN1bW1hcnktc2tlbGV0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7O0FBYS9DLE1BQU0sT0FBTywwREFBMEQ7SUFYdkU7UUFZVyxrQkFBYSxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLGdCQUFXLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0tBQ2xDOytHQUhZLDBEQUEwRDttR0FBMUQsMERBQTBELG1IQ2R2RSwwcUVBdURBLGdtRURqRFksWUFBWTs7NEZBUVgsMERBQTBEO2tCQVh0RSxTQUFTOytCQUNFLHlEQUF5RCxjQUN2RCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsbUJBTU4sdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tcmVmdW5kLXN1bW1hcnktc2tlbGV0b24nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6XG4gICAgJy4vYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1yZWZ1bmQtc3VtbWFyeS1za2VsZXRvbi5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW1xuICAgICcuL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tcmVmdW5kLXN1bW1hcnktc2tlbGV0b24uY29tcG9uZW50LnNjc3MnLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvblJlZnVuZFN1bW1hcnlTa2VsZXRvbkNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IHNrZWxldG9uQ2FyZHMgPSBbMSwgMl07XG4gIHJlYWRvbmx5IHN1bW1hcnlSb3dzID0gWzEsIDIsIDNdO1xufVxuIiwiPGRpdiBjbGFzcz1cInJlZnVuZC1zdW1tYXJ5LXNrZWxldG9uXCI+XG4gIDxkaXYgY2xhc3M9XCJyZWZ1bmQtc3VtbWFyeS1za2VsZXRvbl9fY29udGVudFwiPlxuICAgIDwhLS0gU2tlbGV0b24gVGl0bGUgLS0+XG4gICAgPGRpdiBjbGFzcz1cInNrZWxldG9uIHNrZWxldG9uLS10aXRsZVwiPjwvZGl2PlxuXG4gICAgPCEtLSBTa2VsZXRvbiBQYWNrYWdlIENhcmRzIC0tPlxuICAgIEBmb3IgKGl0ZW0gb2Ygc2tlbGV0b25DYXJkczsgdHJhY2sgaXRlbSkge1xuICAgICAgPGRpdiBjbGFzcz1cInNrZWxldG9uLWNhcmRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNrZWxldG9uLWNhcmRfX2hlYWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJza2VsZXRvbi1jYXJkX190aXRsZS1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24gc2tlbGV0b24tLXRleHQgc2tlbGV0b24tLXRleHQtbGdcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJza2VsZXRvbiBza2VsZXRvbi0tYmFkZ2VcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24gc2tlbGV0b24tLWljb25cIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJza2VsZXRvbi1jYXJkX19yb29tLWluZm9cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24gc2tlbGV0b24tLXRleHQgc2tlbGV0b24tLXRleHQtc21cIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24gc2tlbGV0b24tLXRleHQgc2tlbGV0b24tLXRleHQtc21cIiBzdHlsZT1cIndpZHRoOiA3MCU7XCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24tY2FyZF9fZGF0ZVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJza2VsZXRvbiBza2VsZXRvbi0tdGV4dCBza2VsZXRvbi0tdGV4dC14c1wiIHN0eWxlPVwid2lkdGg6IDUwJTtcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8IS0tIFNrZWxldG9uIFNlcGFyYXRvciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24tc2VwYXJhdG9yXCI+PC9kaXY+XG5cbiAgICA8IS0tIFNrZWxldG9uIFRvdGFsIFN1bW1hcnkgLS0+XG4gICAgPGRpdiBjbGFzcz1cInNrZWxldG9uLXN1bW1hcnlcIj5cbiAgICAgIEBmb3IgKGl0ZW0gb2Ygc3VtbWFyeVJvd3M7IHRyYWNrIGl0ZW0pIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInNrZWxldG9uLXN1bW1hcnlfX3Jvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJza2VsZXRvbiBza2VsZXRvbi0tdGV4dCBza2VsZXRvbi0tdGV4dC1zbVwiIHN0eWxlPVwid2lkdGg6IDQwJTtcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24gc2tlbGV0b24tLXRleHQgc2tlbGV0b24tLXRleHQtc21cIiBzdHlsZT1cIndpZHRoOiAzMCU7XCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuXG4gICAgPCEtLSBTa2VsZXRvbiBJbmZvIEJhbm5lciAtLT5cbiAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24tYmFubmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24gc2tlbGV0b24tLWljb24tY2lyY2xlXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24tYmFubmVyX19jb250ZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJza2VsZXRvbiBza2VsZXRvbi0tdGV4dCBza2VsZXRvbi0tdGV4dC1zbVwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24gc2tlbGV0b24tLXRleHQgc2tlbGV0b24tLXRleHQtc21cIiBzdHlsZT1cIndpZHRoOiA4MCU7XCI+PC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJza2VsZXRvbiBza2VsZXRvbi0tdGV4dCBza2VsZXRvbi0tdGV4dC14c1wiIHN0eWxlPVwid2lkdGg6IDYwJTtcIj48L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cblxuICA8IS0tIFNrZWxldG9uIEZvb3RlciAtLT5cbiAgPGRpdiBjbGFzcz1cInJlZnVuZC1zdW1tYXJ5LXNrZWxldG9uX19mb290ZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwic2tlbGV0b24gc2tlbGV0b24tLWJ1dHRvblwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJza2VsZXRvbiBza2VsZXRvbi0tYnV0dG9uXCI+PC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,20 +1,16 @@
|
|
|
1
|
-
import { Component, ChangeDetectionStrategy, input, output, computed, inject, signal, DestroyRef, } from '@angular/core';
|
|
1
|
+
import { Component, ChangeDetectionStrategy, input, output, computed, inject, signal, DestroyRef, effect, } from '@angular/core';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import { TranslationService } from '../../../../shared/services/translation.service';
|
|
4
4
|
import { CurrencyCodeIconComponent } from '../../../../shared/components/currency-code-icon/currency-code-icon.component';
|
|
5
5
|
import { ExchangePipeModule } from '../../../../shared/pipes/exchange.pipe';
|
|
6
|
-
import { Store } from '@ngrx/store';
|
|
7
|
-
import { getCurrentCurrency } from '../../../../shared/store/selectors/currency.selectors';
|
|
8
6
|
import { SharedService } from '../../../../shared/services/shared.service';
|
|
9
7
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
10
|
-
import { filter } from 'rxjs/operators';
|
|
11
8
|
import { PAYMENT_GATEWAY_LABELS, PaymentGatewayCode, } from '../../../shared/interfaces/i-flight-refund-details';
|
|
12
9
|
import * as i0 from "@angular/core";
|
|
13
10
|
import * as i1 from "../../../../shared/pipes/exchange.pipe";
|
|
14
11
|
export class AlmatarHotelAutoCancellationResultOverlayComponent {
|
|
15
12
|
constructor() {
|
|
16
13
|
this.translateService = inject(TranslationService);
|
|
17
|
-
this.store = inject(Store);
|
|
18
14
|
this.sharedService = inject(SharedService);
|
|
19
15
|
this.destroyRef = inject(DestroyRef);
|
|
20
16
|
// Currency
|
|
@@ -46,17 +42,18 @@ export class AlmatarHotelAutoCancellationResultOverlayComponent {
|
|
|
46
42
|
}
|
|
47
43
|
return this.buildRowsFromApiResponse(response);
|
|
48
44
|
});
|
|
45
|
+
// Sync currency input to local signal
|
|
46
|
+
effect(() => {
|
|
47
|
+
const inputCurrency = this.currencyObj();
|
|
48
|
+
if (inputCurrency) {
|
|
49
|
+
this.currentCurrency.set(inputCurrency);
|
|
50
|
+
}
|
|
51
|
+
}, { allowSignalWrites: true });
|
|
49
52
|
}
|
|
50
53
|
ngOnInit() {
|
|
51
54
|
this.initCurrency();
|
|
52
55
|
}
|
|
53
56
|
initCurrency() {
|
|
54
|
-
this.store
|
|
55
|
-
.select(getCurrentCurrency)
|
|
56
|
-
.pipe(filter((currency) => !!currency), takeUntilDestroyed(this.destroyRef))
|
|
57
|
-
.subscribe((currency) => {
|
|
58
|
-
this.currentCurrency.set(currency);
|
|
59
|
-
});
|
|
60
57
|
this.sharedService
|
|
61
58
|
.getBaseCurrency()
|
|
62
59
|
.pipe(takeUntilDestroyed(this.destroyRef))
|
|
@@ -206,5 +203,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
206
203
|
CurrencyCodeIconComponent,
|
|
207
204
|
ExchangePipeModule,
|
|
208
205
|
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"result-overlay\" [class.result-overlay--visible]=\"visible()\">\n <div class=\"result-overlay__backdrop\"></div>\n <div class=\"result-overlay__modal\">\n <div class=\"result-overlay__hero\">\n <span class=\"result-overlay__icon result-overlay__icon--green\">\n <svg\n width=\"114\"\n height=\"114\"\n viewBox=\"0 0 114 114\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"57\" cy=\"57\" r=\"42\" fill=\"#6DE197\" />\n <path\n d=\"M71.417 43.5774C73.169 41.8254 76.0097 41.8254 77.7617 43.5774C79.5134 45.3294 79.5136 48.1702 77.7617 49.9221L55.4248 72.2581C54.5835 73.0992 53.4426 73.5715 52.2529 73.5715C51.0632 73.5715 49.9224 73.0992 49.0811 72.2581L36.3174 59.4944C34.5654 57.7424 34.5654 54.9017 36.3174 53.1497C38.0694 51.3978 40.9102 51.3977 42.6621 53.1497L52.041 62.5286C52.0973 62.5848 52.1734 62.6165 52.2529 62.6165C52.3325 62.6164 52.4086 62.5848 52.4648 62.5286L71.417 43.5774Z\"\n fill=\"url(#paint0_linear_hotel_result)\"\n fill-opacity=\"0.9\"\n stroke=\"url(#paint1_linear_hotel_result)\"\n stroke-width=\"0.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <defs>\n <linearGradient\n id=\"paint0_linear_hotel_result\"\n x1=\"41.6842\"\n y1=\"54.1291\"\n x2=\"111.486\"\n y2=\"62.3784\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"white\" />\n <stop offset=\"1\" stop-color=\"white\" stop-opacity=\"0\" />\n </linearGradient>\n <linearGradient\n id=\"paint1_linear_hotel_result\"\n x1=\"42.6803\"\n y1=\"51.352\"\n x2=\"61.1185\"\n y2=\"79.3662\"\n gradientUnits=\"userSpaceOnUse\"\n >\n <stop stop-color=\"white\" />\n <stop offset=\"1\" stop-color=\"white\" stop-opacity=\"0\" />\n </linearGradient>\n </defs>\n </svg>\n </span>\n <h3 class=\"result-overlay__title\">\n {{ isNilRefund() ? 'Cancellation Confirmed' : 'Refund Confirmed' }}\n </h3>\n </div>\n\n @for (row of refundRows(); track $index) {\n <div\n class=\"result-overlay__row\"\n [class.result-overlay__row--with-breakdown]=\"\n row.loyaltySubItems?.length\n \"\n >\n <!-- Wallet Icon -->\n @if (isWalletRow(row)) {\n <span class=\"result-overlay__method-icon\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 22 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clip-path=\"url(#clip0_wallet_result)\">\n <path\n d=\"M2.67627 20.8852C1.74854 20.8852 1.04655 20.6533 0.570312 20.1894C0.10026 19.7256 -0.134766 19.0359 -0.134766 18.1206V8.51852C-0.134766 7.77015 0.0260417 7.1764 0.347656 6.73727C0.675456 6.29815 1.1888 5.97344 1.8877 5.76315L13.7812 2.3027C14.4554 2.11097 15.0584 2.06149 15.5903 2.15427C16.1284 2.24704 16.549 2.49443 16.8521 2.89645C17.1613 3.29229 17.3159 3.85511 17.3159 4.58493V6.25485L15.8037 6.38473V4.45505C15.8037 4.04684 15.6893 3.76543 15.4604 3.61081C15.2316 3.45619 14.8945 3.44382 14.4492 3.5737L7.27783 5.55905C7.19124 5.5776 7.15104 5.61471 7.15723 5.67038C7.16341 5.71986 7.20671 5.7446 7.28711 5.7446H17.5942C18.5282 5.7446 19.2271 5.97962 19.6909 6.44968C20.161 6.91354 20.396 7.60316 20.396 8.51852V10.8564H18.8931V8.60202C18.8931 8.15671 18.7786 7.81963 18.5498 7.59079C18.321 7.36195 17.9932 7.24753 17.5664 7.24753H2.69482C2.26807 7.24753 1.94027 7.36195 1.71143 7.59079C1.48877 7.81963 1.37744 8.15671 1.37744 8.60202V18.0371C1.37744 18.4824 1.48877 18.8164 1.71143 19.039C1.94027 19.2679 2.26807 19.3823 2.69482 19.3823H17.5664C17.9932 19.3823 18.321 19.2679 18.5498 19.039C18.7786 18.8164 18.8931 18.4824 18.8931 18.0371V15.4394H20.396V18.1206C20.396 19.0359 20.161 19.7256 19.6909 20.1894C19.2271 20.6533 18.5282 20.8852 17.5942 20.8852H2.67627ZM16.7686 14.2334C16.5088 14.2334 16.2861 14.1437 16.1006 13.9643C15.9212 13.7788 15.8315 13.5561 15.8315 13.2964C15.8315 13.0366 15.9212 12.817 16.1006 12.6377C16.2861 12.4521 16.5088 12.3593 16.7686 12.3593C17.0283 12.3593 17.2479 12.4521 17.4272 12.6377C17.6128 12.817 17.7056 13.0366 17.7056 13.2964C17.7056 13.5561 17.6128 13.7788 17.4272 13.9643C17.2479 14.1437 17.0283 14.2334 16.7686 14.2334ZM16.6758 16.2187C15.7419 16.2187 14.9873 15.9775 14.4121 15.4951C13.8369 15.0065 13.5493 14.2767 13.5493 13.3056C13.5493 12.3346 13.8369 11.6079 14.4121 11.1255C14.9873 10.643 15.7419 10.4018 16.6758 10.4018H20.1084C20.6898 10.4018 21.1475 10.5812 21.4814 10.9399C21.8216 11.2986 21.9917 11.7439 21.9917 12.2758V14.3354C21.9917 14.8673 21.8216 15.3157 21.4814 15.6806C21.1475 16.0394 20.6898 16.2187 20.1084 16.2187H16.6758ZM16.7686 14.9756H19.7837C20.1053 14.9756 20.3465 14.8921 20.5073 14.7251C20.6743 14.5519 20.7578 14.3138 20.7578 14.0107V12.6006C20.7578 12.2975 20.6743 12.0625 20.5073 11.8955C20.3465 11.7223 20.1053 11.6357 19.7837 11.6357H16.7686C16.1191 11.6357 15.6367 11.7841 15.3213 12.081C15.012 12.3779 14.8574 12.7861 14.8574 13.3056C14.8574 13.8252 15.012 14.2334 15.3213 14.5302C15.6367 14.8271 16.1191 14.9756 16.7686 14.9756Z\"\n fill=\"black\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_wallet_result\">\n <rect width=\"24\" height=\"24\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n }\n\n <!-- Card Icon -->\n @if (!isWalletRow(row)) {\n <span class=\"result-overlay__method-icon\">\n <svg\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M2.25 8.25H21.75M2.25 9H21.75M5.25 14.25H11.25M5.25 16.5H8.25M4.5 19.5H19.5C20.0967 19.5 20.669 19.2629 21.091 18.841C21.5129 18.419 21.75 17.8467 21.75 17.25V6.75C21.75 6.15326 21.5129 5.58097 21.091 5.15901C20.669 4.73705 20.0967 4.5 19.5 4.5H4.5C3.90326 4.5 3.33097 4.73705 2.90901 5.15901C2.48705 5.58097 2.25 6.15326 2.25 6.75V17.25C2.25 17.8467 2.48705 18.419 2.90901 18.841C3.33097 19.2629 3.90326 19.5 4.5 19.5Z\"\n stroke=\"#1B1A1F\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n </span>\n }\n\n <span class=\"result-overlay__body\">\n <span class=\"result-overlay__method-name\">\n <span class=\"result-overlay__method-block\">\n {{ row.label }}\n\n @if (!isWalletRow(row) && !row?.isInstallment) {\n <span class=\"mada-logo\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"43\"\n height=\"15\"\n viewBox=\"0 0 43 15\"\n fill=\"none\"\n >\n <g clip-path=\"url(#clip0_19158_27303)\">\n <path\n d=\"M18.1894 8.65527H0V14.9943H18.1894V8.65527Z\"\n fill=\"#84B740\"\n />\n <path\n d=\"M18.1894 0H0V6.34463H18.1894V0Z\"\n fill=\"#259BD6\"\n />\n <path\n d=\"M36.3779 13.7034L36.2969 13.7203C36.016 13.7768 35.9134 13.7994 35.7082 13.7994C35.233 13.7994 34.6713 13.5452 34.6713 12.3475C34.6713 11.7316 34.7685 10.9124 35.6542 10.9124H35.6596C35.8108 10.9237 35.9836 10.9407 36.3077 11.0424L36.3779 11.065V13.7034ZM36.5237 7.73164L36.3779 7.75989V9.97458L36.2483 9.93503L36.2105 9.92373C36.0647 9.87853 35.7298 9.77684 35.4058 9.77684C33.6344 9.77684 33.2617 11.178 33.2617 12.3531C33.2617 13.9633 34.1258 14.8898 35.6326 14.8898C36.2699 14.8898 36.7397 14.822 37.215 14.6582C37.6524 14.5113 37.8091 14.3023 37.8091 13.8559V7.5C37.3878 7.5791 36.9504 7.65819 36.5237 7.73164Z\"\n fill=\"#747583\"\n />\n <path\n d=\"M41.651 13.7375L41.5754 13.7601L41.3053 13.8336C41.0515 13.9014 40.8247 13.9409 40.6519 13.9409C40.236 13.9409 39.9876 13.7262 39.9876 13.359C39.9876 13.1217 40.0902 12.7206 40.7707 12.7206H41.651V13.7375ZM41.0299 9.74316C40.4844 9.74316 39.9228 9.84486 39.2261 10.0708L38.7724 10.2121L38.9236 11.2855L39.3665 11.133C39.831 10.9748 40.4088 10.8731 40.8409 10.8731C41.0353 10.8731 41.6294 10.8731 41.6294 11.5454V11.8392H40.8031C39.2963 11.8392 38.5996 12.342 38.5996 13.4211C38.5996 14.342 39.2423 14.8957 40.3224 14.8957C40.6573 14.8957 41.1217 14.8279 41.5214 14.7262L41.543 14.7206L41.5646 14.7262L41.6996 14.7488C42.1208 14.8279 42.5583 14.907 42.9849 14.9918V11.4663C42.9849 10.3251 42.3261 9.74316 41.0299 9.74316Z\"\n fill=\"#747583\"\n />\n <path\n d=\"M31.1529 13.7375L31.0773 13.7601L30.8073 13.8336C30.5535 13.9014 30.332 13.9409 30.1538 13.9409C29.738 13.9409 29.4895 13.7262 29.4895 13.359C29.4895 13.1217 29.5921 12.7206 30.2672 12.7206H31.1475L31.1529 13.7375ZM30.5373 9.74316C29.9864 9.74316 29.4301 9.84486 28.7334 10.0708L28.2798 10.2121L28.431 11.2855L28.8739 11.133C29.3383 10.9748 29.9162 10.8731 30.3482 10.8731C30.5427 10.8731 31.1367 10.8731 31.1367 11.5454V11.8392H30.3104C28.8036 11.8392 28.1016 12.342 28.1016 13.4211C28.1016 14.342 28.7442 14.8957 29.8298 14.8957C30.1646 14.8957 30.6291 14.8279 31.0287 14.7262L31.0503 14.7206L31.0719 14.7262L31.2015 14.7488C31.6282 14.8279 32.0602 14.907 32.4869 14.9974V11.472C32.4923 10.3194 31.8334 9.74316 30.5373 9.74316Z\"\n fill=\"#747583\"\n />\n <path\n d=\"M25.4701 9.7576C24.7842 9.7576 24.2172 9.99489 24.0065 10.0966L23.9525 10.1248L23.9039 10.0853C23.6123 9.86495 23.1856 9.75195 22.5916 9.75195C22.0677 9.75195 21.5762 9.83105 21.0416 9.99489C20.5825 10.1418 20.4043 10.3734 20.4043 10.8085V14.8367H21.8409V11.1135L21.9111 11.0909C22.2027 10.9892 22.3755 10.9723 22.543 10.9723C22.9588 10.9723 23.1694 11.2039 23.1694 11.6559V14.8423H24.5844V11.5938C24.5844 11.4017 24.5466 11.2887 24.5412 11.2661L24.4926 11.17L24.5898 11.1248C24.8058 11.0231 25.0435 10.9723 25.2919 10.9723C25.5781 10.9723 25.9184 11.0909 25.9184 11.6559V14.8423H27.3279V11.509C27.3279 10.3282 26.7231 9.7576 25.4701 9.7576Z\"\n fill=\"#747583\"\n />\n <path\n d=\"M40.5866 4.13559C40.3759 4.13559 40.0249 4.113 39.7495 4.0565L39.6684 4.03955V1.86441C39.6684 1.68362 39.636 1.57062 39.6306 1.55367L39.5874 1.46328L39.6793 1.42373C39.7009 1.41243 39.7225 1.40678 39.7495 1.39548L39.7657 1.38418C39.7981 1.37288 39.8305 1.36158 39.8629 1.35028C39.8791 1.34463 39.8899 1.33898 39.9007 1.33898C40.2193 1.24859 40.511 1.25989 40.6406 1.24859H40.646C41.5263 1.24859 41.6289 2.0678 41.6289 2.68362C41.6235 3.88136 41.0564 4.13559 40.5866 4.13559ZM40.5812 0C40.5704 0 40.5542 0 40.5434 0C39.7171 0 38.8692 0.237288 38.5667 0.700565C38.4047 0.926554 38.3129 1.20904 38.3075 1.54237V3.78531C38.3075 3.9774 38.2697 4.05085 38.2643 4.0678L38.2157 4.16384H35.6072V2.60452H35.6018C35.5694 0.960452 34.6404 0.0564972 33.2957 0.0564972H33.1391H31.9833C31.9293 0.457627 31.8861 0.740113 31.8321 1.14124H33.1391C33.8249 1.14124 34.1868 1.75141 34.1868 2.68927V4.25989L34.095 4.20904C34.0788 4.20339 33.9654 4.16384 33.7871 4.16384H31.5297C31.4865 4.46328 31.4325 4.85311 31.373 5.24294H38.3129C38.5505 5.19209 38.8259 5.14689 39.0636 5.10735C39.4146 5.28814 40.0681 5.38418 40.5164 5.38418C42.0231 5.38418 43.0007 4.32768 43.0007 2.70057C42.9953 1.0904 42.0501 0.0338983 40.5812 0Z\"\n fill=\"#747583\"\n />\n <path\n d=\"M28.4189 5.9087H28.4837C29.9905 5.9087 30.6925 5.38893 30.6925 4.10644C30.6925 3.18554 30.0499 2.45108 28.9697 2.45108H27.5818C27.1659 2.45108 26.9175 2.20249 26.9175 1.78441C26.9175 1.50192 27.0201 1.15164 27.7006 1.15164H30.7357C30.8006 0.739211 30.833 0.479324 30.8924 0.0668945H27.7384C26.2694 0.0668945 25.5295 0.710962 25.5295 1.78441C25.5295 2.84656 26.1722 3.40023 27.2523 3.40023H28.6403C29.0561 3.40023 29.3046 3.74486 29.3046 4.10644C29.3046 4.34373 29.202 4.83526 28.5269 4.83526H28.2947L23.8499 4.82396H23.0398C22.3539 4.82396 21.8733 4.41718 21.8733 3.47367V2.82396C21.8733 1.84091 22.2459 1.23074 23.0398 1.23074H24.3576C24.417 0.812657 24.4548 0.547121 24.5088 0.15164H22.867H22.7104C21.3656 0.15164 20.4367 1.09514 20.4043 2.73921V2.80136V3.47367C20.4367 5.11774 21.3656 5.90305 22.7104 5.90305H22.867H24.0227L26.4314 5.9087H27.868H28.4189Z\"\n fill=\"#747583\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_19158_27303\">\n <rect width=\"43\" height=\"15\" fill=\"white\" />\n </clipPath>\n </defs>\n </svg>\n </span>\n }\n </span>\n\n <strong class=\"result-overlay__amount\">\n {{\n row.value | exchange_round\n }}\n {{ currentCurrency()?.code }}\n </strong>\n </span>\n\n <!-- Loyalty breakdown sub-items -->\n @if (row.loyaltySubItems?.length) {\n <div class=\"result-overlay__loyalty-breakdown\">\n @for (subItem of row.loyaltySubItems; track $index) {\n <div class=\"result-overlay__loyalty-item\">\n <span class=\"result-overlay__loyalty-label\">{{\n subItem.label\n }}</span>\n <span class=\"result-overlay__loyalty-value\">\n {{\n subItem.value | exchange_round\n }}\n {{ currentCurrency()?.code }}\n </span>\n </div>\n }\n </div>\n }\n\n <span\n class=\"result-overlay__badge\"\n [class.result-overlay__badge--instant]=\"row.instant\"\n [class.result-overlay__badge--days]=\"!row.instant\"\n >\n {{ row.badgeKey }}\n </span>\n\n <!-- Loyalty note -->\n @if (row.hasLoyaltyNote && row.loyaltySubItems?.length) {\n <div class=\"result-overlay__loyalty-note\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M4.1582 21.1777C3.60482 21.1777 3.12956 21.0605 2.73242 20.8262C2.33529 20.5918 2.0293 20.2728 1.81445 19.8691C1.59961 19.472 1.49219 19.026 1.49219 18.5312C1.49219 18.056 1.61914 17.6003 1.87305 17.1641L9.45117 3.96094C9.69857 3.51823 10.0273 3.1862 10.4375 2.96484C10.8477 2.73698 11.2773 2.62305 11.7266 2.62305C12.1758 2.62305 12.6022 2.73698 13.0059 2.96484C13.416 3.1862 13.748 3.51823 14.002 3.96094L21.5801 17.1641C21.7038 17.3789 21.7982 17.6035 21.8633 17.8379C21.9284 18.0723 21.9609 18.3034 21.9609 18.5312C21.9609 19.026 21.8535 19.472 21.6387 19.8691C21.4238 20.2728 21.1178 20.5918 20.7207 20.8262C20.3236 21.0605 19.8483 21.1777 19.2949 21.1777H4.1582ZM4.16797 19.6445H19.2754C19.6139 19.6445 19.8809 19.5306 20.0762 19.3027C20.278 19.0814 20.3789 18.821 20.3789 18.5215C20.3789 18.3132 20.3268 18.1081 20.2227 17.9062L12.6543 4.70312C12.5501 4.52083 12.4134 4.39062 12.2441 4.3125C12.0814 4.22786 11.9089 4.18555 11.7266 4.18555C11.5443 4.18555 11.3685 4.22786 11.1992 4.3125C11.0299 4.39062 10.8932 4.52083 10.7891 4.70312L3.2207 17.8965C3.16862 18.0007 3.12956 18.1081 3.10352 18.2188C3.08398 18.3294 3.07422 18.4303 3.07422 18.5215C3.07422 18.821 3.17188 19.0814 3.36719 19.3027C3.5625 19.5306 3.82943 19.6445 4.16797 19.6445ZM11.7266 14.5859C11.2253 14.5859 10.9681 14.3288 10.9551 13.8145L10.8281 8.64844C10.8216 8.40104 10.8997 8.19596 11.0625 8.0332C11.2318 7.87044 11.4499 7.78906 11.7168 7.78906C11.9772 7.78906 12.1921 7.8737 12.3613 8.04297C12.5371 8.20573 12.6217 8.41081 12.6152 8.6582L12.4688 13.8145C12.4622 14.3288 12.2148 14.5859 11.7266 14.5859ZM11.7266 17.7598C11.4401 17.7598 11.1927 17.6621 10.9844 17.4668C10.776 17.265 10.6719 17.0241 10.6719 16.7441C10.6719 16.4642 10.776 16.2266 10.9844 16.0312C11.1927 15.8294 11.4401 15.7285 11.7266 15.7285C12.013 15.7285 12.2604 15.8262 12.4688 16.0215C12.6771 16.2168 12.7812 16.4577 12.7812 16.7441C12.7812 17.0306 12.6738 17.2715 12.459 17.4668C12.2507 17.6621 12.0065 17.7598 11.7266 17.7598Z\"\n fill=\"#0B54C2\"\n />\n </svg>\n <span>Loyalty points will be refunded instantly to your account</span>\n </div>\n }\n </span>\n </div>\n }\n\n <button\n class=\"btn btn--primary result-overlay__done\"\n type=\"button\"\n (click)=\"onDone()\"\n >\n {{ 'GOT IT!' }}\n </button>\n </div>\n</div>\n", styles: ["@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(30px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes scaleIn{0%{transform:scale(0)}to{transform:scale(1)}}.result-overlay{display:none;position:fixed;inset:0;z-index:99999999;align-items:center;justify-content:center;padding:24px;box-sizing:border-box}.result-overlay--visible{display:flex;animation:fadeIn .3s ease-out}.result-overlay :is(strong,span):has(>app-currency-code-icon){direction:ltr;display:inline-flex;align-items:center;gap:4px}.result-overlay__backdrop{position:absolute;inset:0;background:linear-gradient(135deg,#0009,#00000073);backdrop-filter:blur(4px);animation:fadeIn .3s ease-out}.result-overlay__modal{position:relative;width:100%;max-width:540px;max-height:90vh;overflow-y:auto;display:flex;flex-direction:column;gap:20px;padding:32px 28px;border-radius:24px;background:linear-gradient(180deg,#fff,#fafafa);box-shadow:0 8px 32px #0000001f,0 2px 8px #00000014;animation:slideUp .4s cubic-bezier(.16,1,.3,1)}.result-overlay__modal::-webkit-scrollbar{width:8px}.result-overlay__modal::-webkit-scrollbar-track{background:transparent;border-radius:10px;margin:8px 0}.result-overlay__modal::-webkit-scrollbar-thumb{background:#00000026;border-radius:10px}.result-overlay__modal::-webkit-scrollbar-thumb:hover{background:#00000040}.result-overlay__hero{display:flex;flex-direction:column;align-items:center;gap:16px;padding:8px 0 20px}.result-overlay__icon{width:120px;height:120px;border-radius:50%;display:flex;align-items:center;justify-content:center;position:relative;animation:scaleIn .5s cubic-bezier(.34,1.56,.64,1) .2s both}.result-overlay__icon--green:before{content:\"\";position:absolute;inset:-12px;border-radius:50%;background:radial-gradient(circle,#6de19726,#6de19700 70%);animation:scaleIn .6s cubic-bezier(.34,1.56,.64,1) .3s both}.result-overlay__icon svg{filter:drop-shadow(0 4px 12px rgba(109,225,151,.3))}.result-overlay__title{font-size:calc(24 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-bold);color:#1a1a1a;margin:0;text-align:center;letter-spacing:-.02em}.result-overlay__row{display:flex;align-items:flex-start;gap:14px;width:100%;padding:18px;border-radius:16px;background:#fff;border:1px solid rgba(0,0,0,.08);transition:all .2s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.result-overlay__row:before{content:\"\";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,#7c3aedcc,#10b981cc);transform:translate(-100%);transition:transform .3s ease}.result-overlay__row:hover{border-color:#7c3aed33;box-shadow:0 4px 12px #0000000d,0 0 0 1px #7c3aed0d;transform:translateY(-2px)}.result-overlay__row:hover:before{transform:translate(0)}.result-overlay__row--with-breakdown{padding:20px}.result-overlay__method-icon{flex-shrink:0;width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#f8f9fa,#e9ecef);border:1px solid rgba(0,0,0,.06);color:#1a1a1a;box-shadow:0 2px 4px #0000000a}.result-overlay__body{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:8px}.result-overlay__method-name{width:100%;display:flex;justify-content:space-between;align-items:center;font-size:calc(15 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);color:#1a1a1a}.result-overlay__method-block{display:inline-flex;align-items:center;font-weight:500;font-size:calc(15 * var(--almatar-font-size-ratio, 1) * 1px);color:#4a5568}.result-overlay__amount{display:inline-flex;align-items:center;gap:5px;font-size:calc(20 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-bold);color:#1a1a1a;font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:-.01em}.result-overlay__badge{font-size:calc(11 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-bold);text-transform:uppercase;letter-spacing:.05em;padding:6px 12px;border-radius:24px;transition:all .2s ease}.result-overlay__badge--instant{background:linear-gradient(135deg,#dcfce7,#bbf7d0);color:#15803c;border:1px solid rgba(21,128,60,.2);box-shadow:0 2px 4px #15803c1a}.result-overlay__badge--days{background:linear-gradient(135deg,#eff6ff,#dbeafe);color:#1e40af;border:1px solid rgba(30,64,175,.2);box-shadow:0 2px 4px #1e40af1a}.result-overlay__loyalty-breakdown{width:100%;display:flex;flex-direction:column;gap:10px;padding:12px;background:linear-gradient(135deg,#f9fafb,#f3f4f6);border-radius:12px;border:1px solid rgba(0,0,0,.05)}.result-overlay__loyalty-item{display:flex;justify-content:space-between;align-items:center;width:100%;padding:0 4px}.result-overlay__loyalty-label{font-size:calc(13 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);color:#6b7280}.result-overlay__loyalty-value{display:inline-flex;align-items:center;gap:4px;font-size:calc(14 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-semibold);color:#374151;font-variant-numeric:tabular-nums;white-space:nowrap}.result-overlay__loyalty-note{display:flex;align-items:flex-start;gap:10px;width:100%;padding:14px 16px;border-radius:14px;background:linear-gradient(135deg,#edf9ff,#e0f2fe);font-size:calc(13 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);color:#0b54c2;line-height:1.5;border:1.5px solid rgba(11,84,194,.3);box-shadow:0 2px 8px #0b54c214}.result-overlay__loyalty-note svg{flex-shrink:0;margin-top:1px;width:22px;height:22px;filter:drop-shadow(0 1px 2px rgba(11,84,194,.2))}.result-overlay__done{min-height:56px;width:100%;border-radius:16px;font-size:calc(16 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-bold);transition:all .3s cubic-bezier(.4,0,.2,1);border:none;letter-spacing:.01em}.result-overlay__done:hover{transform:translateY(-2px);box-shadow:0 8px 20px #7c3aed59}.result-overlay__done:active{transform:translateY(0);box-shadow:0 4px 12px #7c3aed40}.btn{padding:16px 24px;border-radius:14px;font-size:calc(15 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-semibold);cursor:pointer;border:none;position:relative;overflow:hidden;transition:all .3s cubic-bezier(.4,0,.2,1)}.btn:before{content:\"\";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:#fff3;transform:translate(-50%,-50%);transition:width .6s,height .6s}.btn:active:before{width:300px;height:300px}.btn--primary{background:linear-gradient(135deg,#7c3aed,#6d28d9);color:#fff;box-shadow:0 4px 16px #7c3aed40,0 2px 4px #7c3aed26}.btn--primary:hover{background:linear-gradient(135deg,#6d28d9,#5b21b6);transform:translateY(-2px);box-shadow:0 8px 20px #7c3aed59,0 4px 8px #7c3aed33;color:#fff}.btn--primary:active{transform:translateY(0);box-shadow:0 4px 12px #7c3aed40,0 2px 4px #7c3aed26}.mada-logo{margin-inline-start:12px;display:inline-flex;align-items:center;padding:4px 8px;background:#ffffffe6;border-radius:6px;border:1px solid rgba(0,0,0,.08);box-shadow:0 1px 3px #0000000f}\n"] }]
|
|
209
|
-
}] });
|
|
210
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1yZXN1bHQtb3ZlcmxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL2NvbXBvbmVudHMvaG90ZWwtY2FuY2VsL2NvbXBvbmVudHMvYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1yZXN1bHQtb3ZlcmxheS9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLXJlc3VsdC1vdmVybGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9ob3RlbC1jYW5jZWwvY29tcG9uZW50cy9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLXJlc3VsdC1vdmVybGF5L2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tcmVzdWx0LW92ZXJsYXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixVQUFVLEdBRVgsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtFQUErRSxDQUFDO0FBQzFILE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzVFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEMsT0FBTyxFQUFF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ZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIHNpZ25hbCxcbiAgRGVzdHJveVJlZixcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvdHJhbnNsYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDdXJyZW5jeUNvZGVJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2NvbXBvbmVudHMvY3VycmVuY3ktY29kZS1pY29uL2N1cnJlbmN5LWNvZGUtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRXhjaGFuZ2VQaXBlTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3BpcGVzL2V4Y2hhbmdlLnBpcGUnO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tICdAbmdyeC9zdG9yZSc7XG5pbXBvcnQgeyBnZXRDdXJyZW50Q3VycmVuY3kgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvc3RvcmUvc2VsZWN0b3JzL2N1cnJlbmN5LnNlbGVjdG9ycyc7XG5pbXBvcnQgeyBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3NlcnZpY2VzL3NoYXJlZC5zZXJ2aWNlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIFJlZnVuZFByZWZlcnJlZE1ldGhvZCxcbiAgUEFZTUVOVF9HQVRFV0FZX0xBQkVMUyxcbiAgUGF5bWVudEdhdGV3YXlDb2RlLFxufSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvaW50ZXJmYWNlcy9pLWZsaWdodC1yZWZ1bmQtZGV0YWlscyc7XG5pbXBvcnQgeyBJQXV0b0NhbmNlbGxhdGlvblByb2Nlc3NSZXNwb25zZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tZW5kcG9pbnRzLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIExveWFsdHlTdWJJdGVtIHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWZ1bmRSZXN1bHRSb3cge1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWx1ZTogbnVtYmVyO1xuICBpbnN0YW50OiBib29sZWFuO1xuICBiYWRnZUtleTogc3RyaW5nO1xuICBpc1dhbGxldD86IGJvb2xlYW47XG4gIGlzTWFkYT86IGJvb2xlYW47XG4gIGhhc0xveWFsdHlOb3RlPzogYm9vbGVhbjtcbiAgaXNJbnN0YWxsbWVudD86IGJvb2xlYW47XG4gIGxveWFsdHlTdWJJdGVtcz86IExveWFsdHlTdWJJdGVtW107XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tcmVzdWx0LW92ZXJsYXknLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEN1cnJlbmN5Q29kZUljb25Db21wb25lbnQsXG4gICAgRXhjaGFuZ2VQaXBlTW9kdWxlLFxuICBdLFxuICB0ZW1wbGF0ZVVybDpcbiAgICAnLi9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLXJlc3VsdC1vdmVybGF5LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbXG4gICAgJy4vYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1yZXN1bHQtb3ZlcmxheS5jb21wb25lbnQuc2NzcycsXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uUmVzdWx0T3ZlcmxheUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChUcmFuc2xhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IHN0b3JlID0gaW5qZWN0KFN0b3JlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzaGFyZWRTZXJ2aWNlID0gaW5qZWN0KFNoYXJlZFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgLy8gQ3VycmVuY3lcbiAgcmVhZG9ubHkgYmFzZUN1cnJlbmN5Q29kZSA9IHNpZ25hbCgnU0FSJyk7XG4gIHJlYWRvbmx5IGN1cnJlbnRDdXJyZW5jeSA9IHNpZ25hbDxhbnk+KG51bGwpO1xuXG4gIHJlYWRvbmx5IHZpc2libGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGN1cnJlbmN5T2JqID0gaW5wdXQ8YW55PihudWxsKTtcbiAgcmVhZG9ubHkgcmVmdW5kTWV0aG9kID0gaW5wdXQ8UmVmdW5kUHJlZmVycmVkTWV0aG9kPignd2FsbGV0Jyk7XG4gIHJlYWRvbmx5IGFwaVJlc3BvbnNlID0gaW5wdXQ8SUF1dG9DYW5jZWxsYXRpb25Qcm9jZXNzUmVzcG9uc2UgfCBudWxsPihudWxsKTtcblxuICByZWFkb25seSBkb25lID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0Q3VycmVuY3koKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEN1cnJlbmN5KCk6IHZvaWQge1xuICAgIHRoaXMuc3RvcmVcbiAgICAgIC5zZWxlY3QoZ2V0Q3VycmVudEN1cnJlbmN5KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGZpbHRlcigoY3VycmVuY3kpID0+ICEhY3VycmVuY3kpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKGN1cnJlbmN5KSA9PiB7XG4gICAgICAgIHRoaXMuY3VycmVudEN1cnJlbmN5LnNldChjdXJyZW5jeSk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuc2hhcmVkU2VydmljZVxuICAgICAgLmdldEJhc2VDdXJyZW5jeSgpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGN1cnJlbmN5OiB7IGNvZGU6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgIHRoaXMuYmFzZUN1cnJlbmN5Q29kZS5zZXQoY3VycmVuY3kuY29kZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHJlYWRvbmx5IGlzTmlsUmVmdW5kID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5hcGlSZXNwb25zZSgpO1xuICAgIGlmIChyZXNwb25zZT8uZGF0YT8ucmVmdW5kKSB7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5yZWZ1bmQuYW1vdW50ID09PSAwO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZGlzcGxheUN1cnJlbmN5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5hcGlSZXNwb25zZSgpO1xuICAgIGlmIChyZXNwb25zZT8uZGF0YT8ucmVmdW5kPy5jdXJyZW5jeSkge1xuICAgICAgcmV0dXJuIHsgY29kZTogcmVzcG9uc2UuZGF0YS5yZWZ1bmQuY3VycmVuY3kgfTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3VycmVuY3lPYmooKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcmVmdW5kUm93cyA9IGNvbXB1dGVkKCgpOiBSZWZ1bmRSZXN1bHRSb3dbXSA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSB0aGlzLmFwaVJlc3BvbnNlKCk7XG4gICAgaWYgKCFyZXNwb25zZT8uZGF0YT8ucmVmdW5kPy5icmVha2Rvd24pIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRSb3dzRnJvbUFwaVJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBidWlsZFJvd3NGcm9tQXBpUmVzcG9uc2UoXG4gICAgcmVzcG9uc2U6IElBdXRvQ2FuY2VsbGF0aW9uUHJvY2Vzc1Jlc3BvbnNlLFxuICApOiBSZWZ1bmRSZXN1bHRSb3dbXSB7XG4gICAgY29uc3Qgcm93czogUmVmdW5kUmVzdWx0Um93W10gPSBbXTtcbiAgICBjb25zdCBicmVha2Rvd24gPSByZXNwb25zZS5kYXRhLnJlZnVuZC5icmVha2Rvd247XG4gICAgY29uc3QgcHJlZmVycmVkTWV0aG9kID0gcmVzcG9uc2UuZGF0YS5wcmVmZXJyZWRQYXltZW50TWV0aG9kO1xuXG4gICAgLy8gQ29sbGVjdCBsb3lhbHR5IHByb2dyYW1zIGR5bmFtaWNhbGx5XG4gICAgY29uc3QgbG95YWx0eVByb2dyYW1zID0gdGhpcy5nZXRMb3lhbHR5UHJvZ3JhbXMoYnJlYWtkb3duKTtcbiAgICBjb25zdCBoYXNMb3lhbHR5UHJvZ3JhbXMgPSBsb3lhbHR5UHJvZ3JhbXMubGVuZ3RoID4gMDtcbiAgICBjb25zdCBsb3lhbHR5VG90YWwgPSBsb3lhbHR5UHJvZ3JhbXMucmVkdWNlKFxuICAgICAgKHN1bSwgaXRlbSkgPT4gc3VtICsgaXRlbS52YWx1ZSxcbiAgICAgIDAsXG4gICAgKTtcblxuICAgIC8vIFdhbGxldCByZWZ1bmQgKGNvbWJpbmVkIHdpdGggbG95YWx0eSBwcm9ncmFtcyBpZiBhbnkpXG4gICAgaWYgKGJyZWFrZG93bi53YWxsZXQgPiAwIHx8IGhhc0xveWFsdHlQcm9ncmFtcykge1xuICAgICAgY29uc3Qgd2FsbGV0VG90YWwgPSBicmVha2Rvd24ud2FsbGV0ICsgbG95YWx0eVRvdGFsO1xuICAgICAgY29uc3QgbG95YWx0eVN1Ykl0ZW1zOiBMb3lhbHR5U3ViSXRlbVtdID0gW107XG5cbiAgICAgIC8vIEFkZCB3YWxsZXQgcG9pbnRzIGFzIGZpcnN0IHN1Yi1pdGVtIGlmIHRoZXJlIGFyZSBsb3lhbHR5IHByb2dyYW1zXG4gICAgICBpZiAoaGFzTG95YWx0eVByb2dyYW1zICYmIGJyZWFrZG93bi53YWxsZXQgPiAwKSB7XG4gICAgICAgIGxveWFsdHlTdWJJdGVtcy5wdXNoKHtcbiAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAnbWFuYWdlLWJvb2tpbmcuc21hcnQtY2FuY2VsLnJlc3VsdC53YWxsZXQtcG9pbnRzLWxhYmVsJyxcbiAgICAgICAgICApLFxuICAgICAgICAgIHZhbHVlOiBicmVha2Rvd24ud2FsbGV0LFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIGFsbCBsb3lhbHR5IHByb2dyYW1zIGFzIHN1Yi1pdGVtc1xuICAgICAgbG95YWx0eVN1Ykl0ZW1zLnB1c2goLi4ubG95YWx0eVByb2dyYW1zKTtcblxuICAgICAgcm93cy5wdXNoKHtcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICdtYW5hZ2UtYm9va2luZy5zbWFydC1jYW5jZWwucmVzdWx0LnlvdXItd2FsbGV0JyxcbiAgICAgICAgKSxcbiAgICAgICAgdmFsdWU6IHdhbGxldFRvdGFsLFxuICAgICAgICBpbnN0YW50OiB0cnVlLFxuICAgICAgICBiYWRnZUtleTogJ1JlYWR5IE5vdycsXG4gICAgICAgIGlzV2FsbGV0OiB0cnVlLFxuICAgICAgICBoYXNMb3lhbHR5Tm90ZTogaGFzTG95YWx0eVByb2dyYW1zLFxuICAgICAgICBsb3lhbHR5U3ViSXRlbXM6XG4gICAgICAgICAgbG95YWx0eVN1Ykl0ZW1zLmxlbmd0aCA+IDEgPyBsb3lhbHR5U3ViSXRlbXMgOiB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBDYXJkIHJlZnVuZFxuICAgIGlmIChicmVha2Rvd24uY2FyZCA+IDApIHtcbiAgICAgIHJvd3MucHVzaCh7XG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAnbWFuYWdlLWJvb2tpbmcuc21hcnQtY2FuY2VsLnJlZnVuZC1tZXRob2Qub3JpZ2luYWwnLFxuICAgICAgICApLFxuICAgICAgICB2YWx1ZTogYnJlYWtkb3duLmNhcmQsXG4gICAgICAgIGluc3RhbnQ6IGZhbHNlLFxuICAgICAgICBiYWRnZUtleTogJzUtNyBidXNpbmVzcyBkYXlzJyxcbiAgICAgICAgaXNXYWxsZXQ6IGZhbHNlLFxuICAgICAgICBpc0luc3RhbGxtZW50OiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFRhYmJ5IHJlZnVuZFxuICAgIGlmIChicmVha2Rvd24udGFiYnkgPiAwKSB7XG4gICAgICByb3dzLnB1c2goe1xuICAgICAgICBsYWJlbDogdGhpcy5nZXRQYXltZW50TWV0aG9kTGFiZWwoUGF5bWVudEdhdGV3YXlDb2RlLlRhYmJ5KSB8fCAnVGFiYnknLFxuICAgICAgICB2YWx1ZTogYnJlYWtkb3duLnRhYmJ5LFxuICAgICAgICBpbnN0YW50OiBmYWxzZSxcbiAgICAgICAgYmFkZ2VLZXk6ICczLTUgYnVzaW5lc3MgZGF5cycsXG4gICAgICAgIGlzV2FsbGV0OiBmYWxzZSxcbiAgICAgICAgaXNJbnN0YWxsbWVudDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFRhbWFyYSByZWZ1bmRcbiAgICBpZiAoYnJlYWtkb3duLnRhbWFyYSA+IDApIHtcbiAgICAgIHJvd3MucHVzaCh7XG4gICAgICAgIGxhYmVsOlxuICAgICAgICAgIHRoaXMuZ2V0UGF5bWVudE1ldGhvZExhYmVsKFBheW1lbnRHYXRld2F5Q29kZS5UYW1hcmEpIHx8ICdUYW1hcmEnLFxuICAgICAgICB2YWx1ZTogYnJlYWtkb3duLnRhbWFyYSxcbiAgICAgICAgaW5zdGFudDogZmFsc2UsXG4gICAgICAgIGJhZGdlS2V5OiAnNy0xMCBidXNpbmVzcyBkYXlzJyxcbiAgICAgICAgaXNXYWxsZXQ6IGZhbHNlLFxuICAgICAgICBpc0luc3RhbGxtZW50OiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gSWYgbm8gYnJlYWtkb3duIHJvd3MgYnV0IHdlIGhhdmUgYSB0b3RhbCBhbW91bnQsIHNob3cgc2luZ2xlIHJvd1xuICAgIGlmIChyb3dzLmxlbmd0aCA9PT0gMCAmJiByZXNwb25zZS5kYXRhLnJlZnVuZC5hbW91bnQgPiAwKSB7XG4gICAgICBjb25zdCBpc1dhbGxldCA9IHByZWZlcnJlZE1ldGhvZCA9PT0gJ3dhbGxldCc7XG4gICAgICByb3dzLnB1c2goe1xuICAgICAgICBsYWJlbDogaXNXYWxsZXRcbiAgICAgICAgICA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAnbWFuYWdlLWJvb2tpbmcuc21hcnQtY2FuY2VsLnJlc3VsdC55b3VyLXdhbGxldCcsXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgJ21hbmFnZS1ib29raW5nLnNtYXJ0LWNhbmNlbC5yZWZ1bmQtbWV0aG9kLm9yaWdpbmFsJyxcbiAgICAgICAgICAgICksXG4gICAgICAgIHZhbHVlOiByZXNwb25zZS5kYXRhLnJlZnVuZC5hbW91bnQsXG4gICAgICAgIGluc3RhbnQ6IGlzV2FsbGV0LFxuICAgICAgICBiYWRnZUtleTogaXNXYWxsZXRcbiAgICAgICAgICA/ICdSZWFkeSBOb3cnXG4gICAgICAgICAgOiAnNS03IGJ1c2luZXNzIGRheXMnLFxuICAgICAgICBpc1dhbGxldCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByb3dzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb3lhbHR5UHJvZ3JhbXMoYnJlYWtkb3duOiB7XG4gICAgd2FsbGV0OiBudW1iZXI7XG4gICAgbW9rYWZhOiBudW1iZXI7XG4gICAgcWl0YWY6IG51bWJlcjtcbiAgICBjYXJkOiBudW1iZXI7XG4gICAgdGFiYnk6IG51bWJlcjtcbiAgICB0YW1hcmE6IG51bWJlcjtcbiAgfSk6IExveWFsdHlTdWJJdGVtW10ge1xuICAgIGNvbnN0IGxveWFsdHlQcm9ncmFtczogTG95YWx0eVN1Ykl0ZW1bXSA9IFtdO1xuXG4gICAgLy8gTW9rYWZhIChBbCBSYWpoaSkgcG9pbnRzXG4gICAgaWYgKGJyZWFrZG93bi5tb2thZmEgPiAwKSB7XG4gICAgICBsb3lhbHR5UHJvZ3JhbXMucHVzaCh7XG4gICAgICAgIGxhYmVsOiB0aGlzLmdldExveWFsdHlQcm9ncmFtTGFiZWwoXG4gICAgICAgICAgUGF5bWVudEdhdGV3YXlDb2RlLkFsUmFqaGlNb2thZmFhLFxuICAgICAgICAgIFwiTW9rYWZhJ2FcIixcbiAgICAgICAgKSxcbiAgICAgICAgdmFsdWU6IGJyZWFrZG93bi5tb2thZmEsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBRaXRhZiBwb2ludHNcbiAgICBpZiAoYnJlYWtkb3duLnFpdGFmID4gMCkge1xuICAgICAgbG95YWx0eVByb2dyYW1zLnB1c2goe1xuICAgICAgICBsYWJlbDogdGhpcy5nZXRMb3lhbHR5UHJvZ3JhbUxhYmVsKFBheW1lbnRHYXRld2F5Q29kZS5RaXRhZiwgJ1FpdGFmJyksXG4gICAgICAgIHZhbHVlOiBicmVha2Rvd24ucWl0YWYsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgbW9yZSBsb3lhbHR5IHByb2dyYW1zIGhlcmUgYXMgbmVlZGVkXG4gICAgLy8gRXhhbXBsZTogaWYgKGJyZWFrZG93bi5uZXdMb3lhbHR5ID4gMCkgeyAuLi4gfVxuXG4gICAgcmV0dXJuIGxveWFsdHlQcm9ncmFtcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG95YWx0eVByb2dyYW1MYWJlbChcbiAgICBjb2RlOiBQYXltZW50R2F0ZXdheUNvZGUsXG4gICAgZmFsbGJhY2tOYW1lOiBzdHJpbmcsXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgaXNBcmFiaWMgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmc/LnN0YXJ0c1dpdGgoJ2FyJyk7XG4gICAgY29uc3QgcG9pbnRzTGFiZWwgPSBpc0FyYWJpYyA/ICfZhtmC2KfYtycgOiAncG9pbnRzJztcbiAgICBjb25zdCBnYXRld2F5TGFiZWwgPSB0aGlzLmdldFBheW1lbnRNZXRob2RMYWJlbChjb2RlKTtcbiAgICBjb25zdCBwcm9ncmFtTmFtZSA9IGdhdGV3YXlMYWJlbCB8fCBmYWxsYmFja05hbWU7XG4gICAgcmV0dXJuIGAke3Byb2dyYW1OYW1lfSAke3BvaW50c0xhYmVsfWA7XG4gIH1cblxuICBwcml2YXRlIGdldFBheW1lbnRNZXRob2RMYWJlbChjb2RlOiBQYXltZW50R2F0ZXdheUNvZGUgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIGlmICghY29kZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjb25zdCBlbnRyeSA9IFBBWU1FTlRfR0FURVdBWV9MQUJFTFNbY29kZV07XG4gICAgaWYgKCFlbnRyeSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nPy5zdGFydHNXaXRoKCdhcicpXG4gICAgICA/IGVudHJ5LmFyXG4gICAgICA6IGVudHJ5LmVuO1xuICB9XG5cbiAgaXNXYWxsZXRSb3cocm93OiBSZWZ1bmRSZXN1bHRSb3cpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93LmlzV2FsbGV0ID09PSB0cnVlO1xuICB9XG5cbiAgZm10QW1vdW50KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIHJldHVybiBOdW1iZXIodmFsdWUgfHwgMCkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgfSk7XG4gIH1cblxuICBvbkRvbmUoKTogdm9pZCB7XG4gICAgdGhpcy5kb25lLmVtaXQoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJlc3VsdC1vdmVybGF5XCIgW2NsYXNzLnJlc3VsdC1vdmVybGF5LS12aXNpYmxlXT1cInZpc2libGUoKVwiPlxuICA8ZGl2IGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX2JhY2tkcm9wXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJyZXN1bHQtb3ZlcmxheV9fbW9kYWxcIj5cbiAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX2hlcm9cIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX2ljb24gcmVzdWx0LW92ZXJsYXlfX2ljb24tLWdyZWVuXCI+XG4gICAgICAgIDxzdmdcbiAgICAgICAgICB3aWR0aD1cIjExNFwiXG4gICAgICAgICAgaGVpZ2h0PVwiMTE0XCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDExNCAxMTRcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI1N1wiIGN5PVwiNTdcIiByPVwiNDJcIiBmaWxsPVwiIzZERTE5N1wiIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNNzEuNDE3IDQzLjU3NzRDNzMuMTY5IDQxLjgyNTQgNzYuMDA5NyA0MS44MjU0IDc3Ljc2MTcgNDMuNTc3NEM3OS41MTM0IDQ1LjMyOTQgNzkuNTEzNiA0OC4xNzAyIDc3Ljc2MTcgNDkuOTIyMUw1NS40MjQ4IDcyLjI1ODFDNTQuNTgzNSA3My4wOTkyIDUzLjQ0MjYgNzMuNTcxNSA1Mi4yNTI5IDczLjU3MTVDNTEuMDYzMiA3My41NzE1IDQ5LjkyMjQgNzMuMDk5MiA0OS4wODExIDcyLjI1ODFMMzYuMzE3NCA1OS40OTQ0QzM0LjU2NTQgNTcuNzQyNCAzNC41NjU0IDU0LjkwMTcgMzYuMzE3NCA1My4xNDk3QzM4LjA2OTQgNTEuMzk3OCA0MC45MTAyIDUxLjM5NzcgNDIuNjYyMSA1My4xNDk3TDUyLjA0MSA2Mi41Mjg2QzUyLjA5NzMgNjIuNTg0OCA1Mi4xNzM0IDYyLjYxNjUgNTIuMjUyOSA2Mi42MTY1QzUyLjMzMjUgNjIuNjE2NCA1Mi40MDg2IDYyLjU4NDggNTIuNDY0OCA2Mi41Mjg2TDcxLjQxNyA0My41Nzc0WlwiXG4gICAgICAgICAgICBmaWxsPVwidXJsKCNwYWludDBfbGluZWFyX2hvdGVsX3Jlc3VsdClcIlxuICAgICAgICAgICAgZmlsbC1vcGFjaXR5PVwiMC45XCJcbiAgICAgICAgICAgIHN0cm9rZT1cInVybCgjcGFpbnQxX2xpbmVhcl9ob3RlbF9yZXN1bHQpXCJcbiAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjAuNlwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50XG4gICAgICAgICAgICAgIGlkPVwicGFpbnQwX2xpbmVhcl9ob3RlbF9yZXN1bHRcIlxuICAgICAgICAgICAgICB4MT1cIjQxLjY4NDJcIlxuICAgICAgICAgICAgICB5MT1cIjU0LjEyOTFcIlxuICAgICAgICAgICAgICB4Mj1cIjExMS40ODZcIlxuICAgICAgICAgICAgICB5Mj1cIjYyLjM3ODRcIlxuICAgICAgICAgICAgICBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIndoaXRlXCIgc3RvcC1vcGFjaXR5PVwiMFwiIC8+XG4gICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50XG4gICAgICAgICAgICAgIGlkPVwicGFpbnQxX2xpbmVhcl9ob3RlbF9yZXN1bHRcIlxuICAgICAgICAgICAgICB4MT1cIjQyLjY4MDNcIlxuICAgICAgICAgICAgICB5MT1cIjUxLjM1MlwiXG4gICAgICAgICAgICAgIHgyPVwiNjEuMTE4NVwiXG4gICAgICAgICAgICAgIHkyPVwiNzkuMzY2MlwiXG4gICAgICAgICAgICAgIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwid2hpdGVcIiBzdG9wLW9wYWNpdHk9XCIwXCIgLz5cbiAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICAgICAgPC9kZWZzPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxoMyBjbGFzcz1cInJlc3VsdC1vdmVybGF5X190aXRsZVwiPlxuICAgICAgICB7eyBpc05pbFJlZnVuZCgpID8gJ0NhbmNlbGxhdGlvbiBDb25maXJtZWQnIDogJ1JlZnVuZCBDb25maXJtZWQnIH19XG4gICAgICA8L2gzPlxuICAgIDwvZGl2PlxuXG4gICAgQGZvciAocm93IG9mIHJlZnVuZFJvd3MoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX3Jvd1wiXG4gICAgICAgIFtjbGFzcy5yZXN1bHQtb3ZlcmxheV9fcm93LS13aXRoLWJyZWFrZG93bl09XCJcbiAgICAgICAgICByb3cubG95YWx0eVN1Ykl0ZW1zPy5sZW5ndGhcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPCEtLSBXYWxsZXQgSWNvbiAtLT5cbiAgICAgICAgQGlmIChpc1dhbGxldFJvdyhyb3cpKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXN1bHQtb3ZlcmxheV9fbWV0aG9kLWljb25cIj5cbiAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMiAyNFwiXG4gICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfd2FsbGV0X3Jlc3VsdClcIj5cbiAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgZD1cIk0yLjY3NjI3IDIwLjg4NTJDMS43NDg1NCAyMC44ODUyIDEuMDQ2NTUgMjAuNjUzMyAwLjU3MDMxMiAyMC4xODk0QzAuMTAwMjYgMTkuNzI1NiAtMC4xMzQ3NjYgMTkuMDM1OSAtMC4xMzQ3NjYgMTguMTIwNlY4LjUxODUyQy0wLjEzNDc2NiA3Ljc3MDE1IDAuMDI2MDQxNyA3LjE3NjQgMC4zNDc2NTYgNi43MzcyN0MwLjY3NTQ1NiA2LjI5ODE1IDEuMTg4OCA1Ljk3MzQ0IDEuODg3NyA1Ljc2MzE1TDEzLjc4MTIgMi4zMDI3QzE0LjQ1NTQgMi4xMTA5NyAxNS4wNTg0IDIuMDYxNDkgMTUuNTkwMyAyLjE1NDI3QzE2LjEyODQgMi4yNDcwNCAxNi41NDkgMi40OTQ0MyAxNi44NTIxIDIuODk2NDVDMTcuMTYxMyAzLjI5MjI5IDE3LjMxNTkgMy44NTUxMSAxNy4zMTU5IDQuNTg0OTNWNi4yNTQ4NUwxNS44MDM3IDYuMzg0NzNWNC40NTUwNUMxNS44MDM3IDQuMDQ2ODQgMTUuNjg5MyAzLjc2NTQzIDE1LjQ2MDQgMy42MTA4MUMxNS4yMzE2IDMuNDU2MTkgMTQuODk0NSAzLjQ0MzgyIDE0LjQ0OTIgMy41NzM3TDcuMjc3ODMgNS41NTkwNUM3LjE5MTI0IDUuNTc3NiA3LjE1MTA0IDUuNjE0NzEgNy4xNTcyMyA1LjY3MDM4QzcuMTYzNDEgNS43MTk4NiA3LjIwNjcxIDUuNzQ0NiA3LjI4NzExIDUuNzQ0NkgxNy41OTQyQzE4LjUyODIgNS43NDQ2IDE5LjIyNzEgNS45Nzk2MiAxOS42OTA5IDYuNDQ5NjhDMjAuMTYxIDYuOTEzNTQgMjAuMzk2IDcuNjAzMTYgMjAuMzk2IDguNTE4NTJWMTAuODU2NEgxOC44OTMxVjguNjAyMDJDMTguODkzMSA4LjE1NjcxIDE4Ljc3ODYgNy44MTk2MyAxOC41NDk4IDcuNTkwNzlDMTguMzIxIDcuMzYxOTUgMTcuOTkzMiA3LjI0NzUzIDE3LjU2NjQgNy4yNDc1M0gyLjY5NDgyQzIuMjY4MDcgNy4yNDc1MyAxLjk0MDI3IDcuMzYxOTUgMS43MTE0MyA3LjU5MDc5QzEuNDg4NzcgNy44MTk2MyAxLjM3NzQ0IDguMTU2NzEgMS4zNzc0NCA4LjYwMjAyVjE4LjAzNzFDMS4zNzc0NCAxOC40ODI0IDEuNDg4NzcgMTguODE2NCAxLjcxMTQzIDE5LjAzOUMxLjk0MDI3IDE5LjI2NzkgMi4yNjgwNyAxOS4zODIzIDIuNjk0ODIgMTkuMzgyM0gxNy41NjY0QzE3Ljk5MzIgMTkuMzgyMyAxOC4zMjEgMTkuMjY3OSAxOC41NDk4IDE5LjAzOUMxOC43Nzg2IDE4LjgxNjQgMTguODkzMSAxOC40ODI0IDE4Ljg5MzEgMTguMDM3MVYxNS40Mzk0SDIwLjM5NlYxOC4xMjA2QzIwLjM5NiAxOS4wMzU5IDIwLjE2MSAxOS43MjU2IDE5LjY5MDkgMjAuMTg5NEMxOS4yMjcxIDIwLjY1MzMgMTguNTI4MiAyMC44ODUyIDE3LjU5NDIgMjAuODg1MkgyLjY3NjI3Wk0xNi43Njg2IDE0LjIzMzRDMTYuNTA4OCAxNC4yMzM0IDE2LjI4NjEgMTQuMTQzNyAxNi4xMDA2IDEzLjk2NDNDMTUuOTIxMiAxMy43Nzg4IDE1LjgzMTUgMTMuNTU2MSAxNS44MzE1IDEzLjI5NjRDMTUuODMxNSAxMy4wMzY2IDE1LjkyMTIgMTIuODE3IDE2LjEwMDYgMTIuNjM3N0MxNi4yODYxIDEyLjQ1MjEgMTYuNTA4OCAxMi4zNTkzIDE2Ljc2ODYgMTIuMzU5M0MxNy4wMjgzIDEyLjM1OTMgMTcuMjQ3OSAxMi40NTIxIDE3LjQyNzIgMTIuNjM3N0MxNy42MTI4IDEyLjgxNyAxNy43MDU2IDEzLjAzNjYgMTcuNzA1NiAxMy4yOTY0QzE3LjcwNTYgMTMuNTU2MSAxNy42MTI4IDEzLjc3ODggMTcuNDI3MiAxMy45NjQzQzE3LjI0NzkgMTQuMTQzNyAxNy4wMjgzIDE0LjIzMzQgMTYuNzY4NiAxNC4yMzM0Wk0xNi42NzU4IDE2LjIxODdDMTUuNzQxOSAxNi4yMTg3IDE0Ljk4NzMgMTUuOTc3NSAxNC40MTIxIDE1LjQ5NTFDMTMuODM2OSAxNS4wMDY1IDEzLjU0OTMgMTQuMjc2NyAxMy41NDkzIDEzLjMwNTZDMTMuNTQ5MyAxMi4zMzQ2IDEzLjgzNjkgMTEuNjA3OSAxNC40MTIxIDExLjEyNTVDMTQuOTg3MyAxMC42NDMgMTUuNzQxOSAxMC40MDE4IDE2LjY3NTggMTAuNDAxOEgyMC4xMDg0QzIwLjY4OTggMTAuNDAxOCAyMS4xNDc1IDEwLjU4MTIgMjEuNDgxNCAxMC45Mzk5QzIxLjgyMTYgMTEuMjk4NiAyMS45OTE3IDExLjc0MzkgMjEuOTkxNyAxMi4yNzU4VjE0LjMzNTRDMjEuOTkxNyAxNC44NjczIDIxLjgyMTYgMTUuMzE1NyAyMS40ODE0IDE1LjY4MDZDMjEuMTQ3NSAxNi4wMzk0IDIwLjY4OTggMTYuMjE4NyAyMC4xMDg0IDE2LjIxODdIMTYuNjc1OFpNMTYuNzY4NiAxNC45NzU2SDE5Ljc4MzdDMjAuMTA1MyAxNC45NzU2IDIwLjM0NjUgMTQuODkyMSAyMC41MDczIDE0LjcyNTFDMjAuNjc0MyAxNC41NTE5IDIwLjc1NzggMTQuMzEzOCAyMC43NTc4IDE0LjAxMDdWMTIuNjAwNkMyMC43NTc4IDEyLjI5NzUgMjAuNjc0MyAxMi4wNjI1IDIwLjUwNzMgMTEuODk1NUMyMC4zNDY1IDExLjcyMjMgMjAuMTA1MyAxMS42MzU3IDE5Ljc4MzcgMTEuNjM1N0gxNi43Njg2QzE2LjExOTEgMTEuNjM1NyAxNS42MzY3IDExLjc4NDEgMTUuMzIxMyAxMi4wODFDMTUuMDEyIDEyLjM3NzkgMTQuODU3NCAxMi43ODYxIDE0Ljg1NzQgMTMuMzA1NkMxNC44NTc0IDEzLjgyNTIgMTUuMDEyIDE0LjIzMzQgMTUuMzIxMyAxNC41MzAyQzE1LjYzNjcgMTQuODI3MSAxNi4xMTkxIDE0Ljk3NTYgMTYuNzY4NiAxNC45NzU2WlwiXG4gICAgICAgICAgICAgICAgICBmaWxsPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfd2FsbGV0X3Jlc3VsdFwiPlxuICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIENhcmQgSWNvbiAtLT5cbiAgICAgICAgQGlmICghaXNXYWxsZXRSb3cocm93KSkge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX21ldGhvZC1pY29uXCI+XG4gICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgICAgICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9XCJNMi4yNSA4LjI1SDIxLjc1TTIuMjUgOUgyMS43NU01LjI1IDE0LjI1SDExLjI1TTUuMjUgMTYuNUg4LjI1TTQuNSAxOS41SDE5LjVDMjAuMDk2NyAxOS41IDIwLjY2OSAxOS4yNjI5IDIxLjA5MSAxOC44NDFDMjEuNTEyOSAxOC40MTkgMjEuNzUgMTcuODQ2NyAyMS43NSAxNy4yNVY2Ljc1QzIxLjc1IDYuMTUzMjYgMjEuNTEyOSA1LjU4MDk3IDIxLjA5MSA1LjE1OTAxQzIwLjY2OSA0LjczNzA1IDIwLjA5NjcgNC41IDE5LjUgNC41SDQuNUMzLjkwMzI2IDQuNSAzLjMzMDk3IDQuNzM3MDUgMi45MDkwMSA1LjE1OTAxQzIuNDg3MDUgNS41ODA5NyAyLjI1IDYuMTUzMjYgMi4yNSA2Ljc1VjE3LjI1QzIuMjUgMTcuODQ2NyAyLjQ4NzA1IDE4LjQxOSAyLjkwOTAxIDE4Ljg0MUMzLjMzMDk3IDE5LjI2MjkgMy45MDMyNiAxOS41IDQuNSAxOS41WlwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzFCMUExRlwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIH1cblxuICAgICAgICA8c3BhbiBjbGFzcz1cInJlc3VsdC1vdmVybGF5X19ib2R5XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXN1bHQtb3ZlcmxheV9fbWV0aG9kLW5hbWVcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX21ldGhvZC1ibG9ja1wiPlxuICAgICAgICAgICAgICB7eyByb3cubGFiZWwgfX1cblxuICAgICAgICAgICAgICBAaWYgKCFpc1dhbGxldFJvdyhyb3cpICYmICFyb3c/LmlzSW5zdGFsbG1lbnQpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hZGEtbG9nb1wiPlxuICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI0M1wiXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE1XCJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA0MyAxNVwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xOTE1OF8yNzMwMylcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xOC4xODk0IDguNjU1MjdIMFYxNC45OTQzSDE4LjE4OTRWOC42NTUyN1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM4NEI3NDBcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTguMTg5NCAwSDBWNi4zNDQ2M0gxOC4xODk0VjBaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMjU5QkQ2XCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTM2LjM3NzkgMTMuNzAzNEwzNi4yOTY5IDEzLjcyMDNDMzYuMDE2IDEzLjc3NjggMzUuOTEzNCAxMy43OTk0IDM1LjcwODIgMTMuNzk5NEMzNS4yMzMgMTMuNzk5NCAzNC42NzEzIDEzLjU0NTIgMzQuNjcxMyAxMi4zNDc1QzM0LjY3MTMgMTEuNzMxNiAzNC43Njg1IDEwLjkxMjQgMzUuNjU0MiAxMC45MTI0SDM1LjY1OTZDMzUuODEwOCAxMC45MjM3IDM1Ljk4MzYgMTAuOTQwNyAzNi4zMDc3IDExLjA0MjRMMzYuMzc3OSAxMS4wNjVWMTMuNzAzNFpNMzYuNTIzNyA3LjczMTY0TDM2LjM3NzkgNy43NTk4OVY5Ljk3NDU4TDM2LjI0ODMgOS45MzUwM0wzNi4yMTA1IDkuOTIzNzNDMzYuMDY0NyA5Ljg3ODUzIDM1LjcyOTggOS43NzY4NCAzNS40MDU4IDkuNzc2ODRDMzMuNjM0NCA5Ljc3Njg0IDMzLjI2MTcgMTEuMTc4IDMzLjI2MTcgMTIuMzUzMUMzMy4yNjE3IDEzLjk2MzMgMzQuMTI1OCAxNC44ODk4IDM1LjYzMjYgMTQuODg5OEMzNi4yNjk5IDE0Ljg4OTggMzYuNzM5NyAxNC44MjIgMzcuMjE1IDE0LjY1ODJDMzcuNjUyNCAxNC41MTEzIDM3LjgwOTEgMTQuMzAyMyAzNy44MDkxIDEzLjg1NTlWNy41QzM3LjM4NzggNy41NzkxIDM2Ljk1MDQgNy42NTgxOSAzNi41MjM3IDcuNzMxNjRaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNzQ3NTgzXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQxLjY1MSAxMy43Mzc1TDQxLjU3NTQgMTMuNzYwMUw0MS4zMDUzIDEzLjgzMzZDNDEuMDUxNSAxMy45MDE0IDQwLjgyNDcgMTMuOTQwOSA0MC42NTE5IDEzLjk0MDlDNDAuMjM2IDEzLjk0MDkgMzkuOTg3NiAxMy43MjYyIDM5Ljk4NzYgMTMuMzU5QzM5Ljk4NzYgMTMuMTIxNyA0MC4wOTAyIDEyLjcyMDYgNDAuNzcwNyAxMi43MjA2SDQxLjY1MVYxMy43Mzc1Wk00MS4wMjk5IDkuNzQzMTZDNDAuNDg0NCA5Ljc0MzE2IDM5LjkyMjggOS44NDQ4NiAzOS4yMjYxIDEwLjA3MDhMMzguNzcyNCAxMC4yMTIxTDM4LjkyMzYgMTEuMjg1NUwzOS4zNjY1IDExLjEzM0MzOS44MzEgMTAuOTc0OCA0MC40MDg4IDEwLjg3MzEgNDAuODQwOSAxMC44NzMxQzQxLjAzNTMgMTAuODczMSA0MS42Mjk0IDEwLjg3MzEgNDEuNjI5NCAxMS41NDU0VjExLjgzOTJINDAuODAzMUMzOS4yOTYzIDExLjgzOTIgMzguNTk5NiAxMi4zNDIgMzguNTk5NiAxMy40MjExQzM4LjU5OTYgMTQuMzQyIDM5LjI0MjMgMTQuODk1NyA0MC4zMjI0IDE0Ljg5NTdDNDAuNjU3MyAxNC44OTU3IDQxLjEyMTcgMTQuODI3OSA0MS41MjE0IDE0LjcyNjJMNDEuNTQzIDE0LjcyMDZMNDEuNTY0NiAxNC43MjYyTDQxLjY5OTYgMTQuNzQ4OEM0Mi4xMjA4IDE0LjgyNzkgNDIuNTU4MyAxNC45MDcgNDIuOTg0OSAxNC45OTE4VjExLjQ2NjNDNDIuOTg0OSAxMC4zMjUxIDQyLjMyNjEgOS43NDMxNiA0MS4wMjk5IDkuNzQzMTZaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNzQ3NTgzXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMxLjE1MjkgMTMuNzM3NUwzMS4wNzczIDEzLjc2MDFMMzAuODA3MyAxMy44MzM2QzMwLjU1MzUgMTMuOTAxNCAzMC4zMzIgMTMuOTQwOSAzMC4xNTM4IDEzLjk0MDlDMjkuNzM4IDEzLjk0MDkgMjkuNDg5NSAxMy43MjYyIDI5LjQ4OTUgMTMuMzU5QzI5LjQ4OTUgMTMuMTIxNyAyOS41OTIxIDEyLjcyMDYgMzAuMjY3MiAxMi43MjA2SDMxLjE0NzVMMzEuMTUyOSAxMy43Mzc1Wk0zMC41MzczIDkuNzQzMTZDMjkuOTg2NCA5Ljc0MzE2IDI5LjQzMDEgOS44NDQ4NiAyOC43MzM0IDEwLjA3MDhMMjguMjc5OCAxMC4yMTIxTDI4LjQzMSAxMS4yODU1TDI4Ljg3MzkgMTEuMTMzQzI5LjMzODMgMTAuOTc0OCAyOS45MTYyIDEwLjg3MzEgMzAuMzQ4MiAxMC44NzMxQzMwLjU0MjcgMTAuODczMSAzMS4xMzY3IDEwLjg3MzEgMzEuMTM2NyAxMS41NDU0VjExLjgzOTJIMzAuMzEwNEMyOC44MDM2IDExLjgzOTIgMjguMTAxNiAxMi4zNDIgMjguMTAxNiAxMy40MjExQzI4LjEwMTYgMTQuMzQyIDI4Ljc0NDIgMTQuODk1NyAyOS44Mjk4IDE0Ljg5NTdDMzAuMTY0NiAxNC44OTU3IDMwLjYyOTEgMTQuODI3OSAzMS4wMjg3IDE0LjcyNjJMMzEuMDUwMyAxNC43MjA2TDMxLjA3MTkgMTQuNzI2MkwzMS4yMDE1IDE0Ljc0ODhDMzEuNjI4MiAxNC44Mjc5IDMyLjA2MDIgMTQuOTA3IDMyLjQ4NjkgMTQuOTk3NFYxMS40NzJDMzIuNDkyMyAxMC4zMTk0IDMxLjgzMzQgOS43NDMxNiAzMC41MzczIDkuNzQzMTZaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNzQ3NTgzXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTI1LjQ3MDEgOS43NTc2QzI0Ljc4NDIgOS43NTc2IDI0LjIxNzIgOS45OTQ4OSAyNC4wMDY1IDEwLjA5NjZMMjMuOTUyNSAxMC4xMjQ4TDIzLjkwMzkgMTAuMDg1M0MyMy42MTIzIDkuODY0OTUgMjMuMTg1NiA5Ljc1MTk1IDIyLjU5MTYgOS43NTE5NUMyMi4wNjc3IDkuNzUxOTUgMjEuNTc2MiA5LjgzMTA1IDIxLjA0MTYgOS45OTQ4OUMyMC41ODI1IDEwLjE0MTggMjAuNDA0MyAxMC4zNzM0IDIwLjQwNDMgMTAuODA4NVYxNC44MzY3SDIxLjg0MDlWMTEuMTEzNUwyMS45MTExIDExLjA5MDlDMjIuMjAyNyAxMC45ODkyIDIyLjM3NTUgMTAuOTcyMyAyMi41NDMgMTAuOTcyM0MyMi45NTg4IDEwLjk3MjMgMjMuMTY5NCAxMS4yMDM5IDIzLjE2OTQgMTEuNjU1OVYxNC44NDIzSDI0LjU4NDRWMTEuNTkzOEMyNC41ODQ0IDExLjQwMTcgMjQuNTQ2NiAxMS4yODg3IDI0LjU0MTIgMTEuMjY2MUwyNC40OTI2IDExLjE3TDI0LjU4OTggMTEuMTI0OEMyNC44MDU4IDExLjAyMzEgMjUuMDQzNSAxMC45NzIzIDI1LjI5MTkgMTAuOTcyM0MyNS41NzgxIDEwLjk3MjMgMjUuOTE4NCAxMS4wOTA5IDI1LjkxODQgMTEuNjU1OVYxNC44NDIzSDI3LjMyNzlWMTEuNTA5QzI3LjMyNzkgMTAuMzI4MiAyNi43MjMxIDkuNzU3NiAyNS40NzAxIDkuNzU3NlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM3NDc1ODNcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNDAuNTg2NiA0LjEzNTU5QzQwLjM3NTkgNC4xMzU1OSA0MC4wMjQ5IDQuMTEzIDM5Ljc0OTUgNC4wNTY1TDM5LjY2ODQgNC4wMzk1NVYxLjg2NDQxQzM5LjY2ODQgMS42ODM2MiAzOS42MzYgMS41NzA2MiAzOS42MzA2IDEuNTUzNjdMMzkuNTg3NCAxLjQ2MzI4TDM5LjY3OTMgMS40MjM3M0MzOS43MDA5IDEuNDEyNDMgMzkuNzIyNSAxLjQwNjc4IDM5Ljc0OTUgMS4zOTU0OEwzOS43NjU3IDEuMzg0MThDMzkuNzk4MSAxLjM3Mjg4IDM5LjgzMDUgMS4zNjE1OCAzOS44NjI5IDEuMzUwMjhDMzkuODc5MSAxLjM0NDYzIDM5Ljg4OTkgMS4zMzg5OCAzOS45MDA3IDEuMzM4OThDNDAuMjE5MyAxLjI0ODU5IDQwLjUxMSAxLjI1OTg5IDQwLjY0MDYgMS4yNDg1OUg0MC42NDZDNDEuNTI2MyAxLjI0ODU5IDQxLjYyODkgMi4wNjc4IDQxLjYyODkgMi42ODM2MkM0MS42MjM1IDMuODgxMzYgNDEuMDU2NCA0LjEzNTU5IDQwLjU4NjYgNC4xMzU1OVpNNDAuNTgxMiAwQzQwLjU3MDQgMCA0MC41NTQyIDAgNDAuNTQzNCAwQzM5LjcxNzEgMCAzOC44NjkyIDAuMjM3Mjg4IDM4LjU2NjcgMC43MDA1NjVDMzguNDA0NyAwLjkyNjU1NCAzOC4zMTI5IDEuMjA5MDQgMzguMzA3NSAxLjU0MjM3VjMuNzg1MzFDMzguMzA3NSAzLjk3NzQgMzguMjY5NyA0LjA1MDg1IDM4LjI2NDMgNC4wNjc4TDM4LjIxNTcgNC4xNjM4NEgzNS42MDcyVjIuNjA0NTJIMzUuNjAxOEMzNS41Njk0IDAuOTYwNDUyIDM0LjY0MDQgMC4wNTY0OTcyIDMzLjI5NTcgMC4wNTY0OTcySDMzLjEzOTFIMzEuOTgzM0MzMS45MjkzIDAuNDU3NjI3IDMxLjg4NjEgMC43NDAxMTMgMzEuODMyMSAxLjE0MTI0SDMzLjEzOTFDMzMuODI0OSAxLjE0MTI0IDM0LjE4NjggMS43NTE0MSAzNC4xODY4IDIuNjg5MjdWNC4yNTk4OUwzNC4wOTUgNC4yMDkwNEMzNC4wNzg4IDQuMjAzMzkgMzMuOTY1NCA0LjE2Mzg0IDMzLjc4NzEgNC4xNjM4NEgzMS41Mjk3QzMxLjQ4NjUgNC40NjMyOCAzMS40MzI1IDQuODUzMTEgMzEuMzczIDUuMjQyOTRIMzguMzEyOUMzOC41NTA1IDUuMTkyMDkgMzguODI1OSA1LjE0Njg5IDM5LjA2MzYgNS4xMDczNUMzOS40MTQ2IDUuMjg4MTQgNDAuMDY4MSA1LjM4NDE4IDQwLjUxNjQgNS4zODQxOEM0Mi4wMjMxIDUuMzg0MTggNDMuMDAwNyA0LjMyNzY4IDQzLjAwMDcgMi43MDA1N0M0Mi45OTUzIDEuMDkwNCA0Mi4wNTAxIDAuMDMzODk4MyA0MC41ODEyIDBaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNzQ3NTgzXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTI4LjQxODkgNS45MDg3SDI4LjQ4MzdDMjkuOTkwNSA1LjkwODcgMzAuNjkyNSA1LjM4ODkzIDMwLjY5MjUgNC4xMDY0NEMzMC42OTI1IDMuMTg1NTQgMzAuMDQ5OSAyLjQ1MTA4IDI4Ljk2OTcgMi40NTEwOEgyNy41ODE4QzI3LjE2NTkgMi40NTEwOCAyNi45MTc1IDIuMjAyNDkgMjYuOTE3NSAxLjc4NDQxQzI2LjkxNzUgMS41MDE5MiAyNy4wMjAxIDEuMTUxNjQgMjcuNzAwNiAxLjE1MTY0SDMwLjczNTdDMzAuODAwNiAwLjczOTIxMSAzMC44MzMgMC40NzkzMjQgMzAuODkyNCAwLjA2Njg5NDVIMjcuNzM4NEMyNi4yNjk0IDAuMDY2ODk0NSAyNS41Mjk1IDAuNzEwOTYyIDI1LjUyOTUgMS43ODQ0MUMyNS41Mjk1IDIuODQ2NTYgMjYuMTcyMiAzLjQwMDIzIDI3LjI1MjMgMy40MDAyM0gyOC42NDAzQzI5LjA1NjEgMy40MDAyMyAyOS4zMDQ2IDMuNzQ0ODYgMjkuMzA0NiA0LjEwNjQ0QzI5LjMwNDYgNC4zNDM3MyAyOS4yMDIgNC44MzUyNiAyOC41MjY5IDQuODM1MjZIMjguMjk0N0wyMy44NDk5IDQuODIzOTZIMjMuMDM5OEMyMi4zNTM5IDQuODIzOTYgMjEuODczMyA0LjQxNzE4IDIxLjg3MzMgMy40NzM2N1YyLjgyMzk2QzIxLjg3MzMgMS44NDA5MSAyMi4yNDU5IDEuMjMwNzQgMjMuMDM5OCAxLjIzMDc0SDI0LjM1NzZDMjQuNDE3IDAuODEyNjU3IDI0LjQ1NDggMC41NDcxMjEgMjQuNTA4OCAwLjE1MTY0SDIyLjg2N0gyMi43MTA0QzIxLjM2NTYgMC4xNTE2NCAyMC40MzY3IDEuMDk1MTQgMjAuNDA0MyAyLjczOTIxVjIuODAxMzZWMy40NzM2N0MyMC40MzY3IDUuMTE3NzQgMjEuMzY1NiA1LjkwMzA1IDIyLjcxMDQgNS45MDMwNUgyMi44NjdIMjQuMDIyN0wyNi40MzE0IDUuOTA4N0gyNy44NjhIMjguNDE4OVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM3NDc1ODNcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTkxNThfMjczMDNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiNDNcIiBoZWlnaHQ9XCIxNVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJyZXN1bHQtb3ZlcmxheV9fYW1vdW50XCI+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgcm93LnZhbHVlIHwgZXhjaGFuZ2Vfcm91bmRcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAge3sgY3VycmVudEN1cnJlbmN5KCk/LmNvZGUgfX1cbiAgICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgIDwhLS0gTG95YWx0eSBicmVha2Rvd24gc3ViLWl0ZW1zIC0tPlxuICAgICAgICAgIEBpZiAocm93LmxveWFsdHlTdWJJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX2xveWFsdHktYnJlYWtkb3duXCI+XG4gICAgICAgICAgICAgIEBmb3IgKHN1Ykl0ZW0gb2Ygcm93LmxveWFsdHlTdWJJdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1vdmVybGF5X19sb3lhbHR5LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX2xveWFsdHktbGFiZWxcIj57e1xuICAgICAgICAgICAgICAgICAgICBzdWJJdGVtLmxhYmVsXG4gICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX2xveWFsdHktdmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICBzdWJJdGVtLnZhbHVlIHwgZXhjaGFuZ2Vfcm91bmRcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAge3sgY3VycmVudEN1cnJlbmN5KCk/LmNvZGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX2JhZGdlXCJcbiAgICAgICAgICAgIFtjbGFzcy5yZXN1bHQtb3ZlcmxheV9fYmFkZ2UtLWluc3RhbnRdPVwicm93Lmluc3RhbnRcIlxuICAgICAgICAgICAgW2NsYXNzLnJlc3VsdC1vdmVybGF5X19iYWRnZS0tZGF5c109XCIhcm93Lmluc3RhbnRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHJvdy5iYWRnZUtleSB9fVxuICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgIDwhLS0gTG95YWx0eSBub3RlIC0tPlxuICAgICAgICAgIEBpZiAocm93Lmhhc0xveWFsdHlOb3RlICYmIHJvdy5sb3lhbHR5U3ViSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1vdmVybGF5X19sb3lhbHR5LW5vdGVcIj5cbiAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgZD1cIk00LjE1ODIgMjEuMTc3N0MzLjYwNDgyIDIxLjE3NzcgMy4xMjk1NiAyMS4wNjA1IDIuNzMyNDIgMjAuODI2MkMyLjMzNTI5IDIwLjU5MTggMi4wMjkzIDIwLjI3MjggMS44MTQ0NSAxOS44NjkxQzEuNTk5NjEgMTkuNDcyIDEuNDkyMTkgMTkuMDI2IDEuNDkyMTkgMTguNTMxMkMxLjQ5MjE5IDE4LjA1NiAxLjYxOTE0IDE3LjYwMDMgMS44NzMwNSAxNy4xNjQxTDkuNDUxMTcgMy45NjA5NEM5LjY5ODU3IDMuNTE4MjMgMTAuMDI3MyAzLjE4NjIgMTAuNDM3NSAyLjk2NDg0QzEwLjg0NzcgMi43MzY5OCAxMS4yNzczIDIuNjIzMDUgMTEuNzI2NiAyLjYyMzA1QzEyLjE3NTggMi42MjMwNSAxMi42MDIyIDIuNzM2OTggMTMuMDA1OSAyLjk2NDg0QzEzLjQxNiAzLjE4NjIgMTMuNzQ4IDMuNTE4MjMgMTQuMDAyIDMuOTYwOTRMMjEuNTgwMSAxNy4xNjQxQzIxLjcwMzggMTcuMzc4OSAyMS43OTgyIDE3LjYwMzUgMjEuODYzMyAxNy44Mzc5QzIxLjkyODQgMTguMDcyMyAyMS45NjA5IDE4LjMwMzQgMjEuOTYwOSAxOC41MzEyQzIxLjk2MDkgMTkuMDI2IDIxLjg1MzUgMTkuNDcyIDIxLjYzODcgMTkuODY5MUMyMS40MjM4IDIwLjI3MjggMjEuMTE3OCAyMC41OTE4IDIwLjcyMDcgMjAuODI2MkMyMC4zMjM2IDIxLjA2MDUgMTkuODQ4MyAyMS4xNzc3IDE5LjI5NDkgMjEuMTc3N0g0LjE1ODJaTTQuMTY3OTcgMTkuNjQ0NUgxOS4yNzU0QzE5LjYxMzkgMTkuNjQ0NSAxOS44ODA5IDE5LjUzMDYgMjAuMDc2MiAxOS4zMDI3QzIwLjI3OCAxOS4wODE0IDIwLjM3ODkgMTguODIxIDIwLjM3ODkgMTguNTIxNUMyMC4zNzg5IDE4LjMxMzIgMjAuMzI2OCAxOC4xMDgxIDIwLjIyMjcgMTcuOTA2MkwxMi42NTQzIDQuNzAzMTJDMTIuNTUwMSA0LjUyMDgzIDEyLjQxMzQgNC4zOTA2MiAxMi4yNDQxIDQuMzEyNUMxMi4wODE0IDQuMjI3ODYgMTEuOTA4OSA0LjE4NTU1IDExLjcyNjYgNC4xODU1NUMxMS41NDQzIDQuMTg1NTUgMTEuMzY4NSA0LjIyNzg2IDExLjE5OTIgNC4zMTI1QzExLjAyOTkgNC4zOTA2MiAxMC44OTMyIDQuNTIwODMgMTAuNzg5MSA0LjcwMzEyTDMuMjIwNyAxNy44OTY1QzMuMTY4NjIgMTguMDAwNyAzLjEyOTU2IDE4LjEwODEgMy4xMDM1MiAxOC4yMTg4QzMuMDgzOTggMTguMzI5NCAzLjA3NDIyIDE4LjQzMDMgMy4wNzQyMiAxOC41MjE1QzMuMDc0MjIgMTguODIxIDMuMTcxODggMTkuMDgxNCAzLjM2NzE5IDE5LjMwMjdDMy41NjI1IDE5LjUzMDYgMy44Mjk0MyAxOS42NDQ1IDQuMTY3OTcgMTkuNjQ0NVpNMTEuNzI2NiAxNC41ODU5QzExLjIyNTMgMTQuNTg1OSAxMC45NjgxIDE0LjMyODggMTAuOTU1MSAxMy44MTQ1TDEwLjgyODEgOC42NDg0NEMxMC44MjE2IDguNDAxMDQgMTAuODk5NyA4LjE5NTk2IDExLjA2MjUgOC4wMzMyQzExLjIzMTggNy44NzA0NCAxMS40NDk5IDcuNzg5MDYgMTEuNzE2OCA3Ljc4OTA2QzExLjk3NzIgNy43ODkwNiAxMi4xOTIxIDcuODczNyAxMi4zNjEzIDguMDQyOTdDMTIuNTM3MSA4LjIwNTczIDEyLjYyMTcgOC40MTA4MSAxMi42MTUyIDguNjU4MkwxMi40Njg4IDEzLjgxNDVDMTIuNDYyMiAxNC4zMjg4IDEyLjIxNDggMTQuNTg1OSAxMS43MjY2IDE0LjU4NTlaTTExLjcyNjYgMTcuNzU5OEMxMS40NDAxIDE3Ljc1OTggMTEuMTkyNyAxNy42NjIxIDEwLjk4NDQgMTcuNDY2OEMxMC43NzYgMTcuMjY1IDEwLjY3MTkgMTcuMDI0MSAxMC42NzE5IDE2Ljc0NDFDMTAuNjcxOSAxNi40NjQyIDEwLjc3NiAxNi4yMjY2IDEwLjk4NDQgMTYuMDMxMkMxMS4xOTI3IDE1LjgyOTQgMTEuNDQwMSAxNS43Mjg1IDExLjcyNjYgMTUuNzI4NUMxMi4wMTMgMTUuNzI4NSAxMi4yNjA0IDE1LjgyNjIgMTIuNDY4OCAxNi4wMjE1QzEyLjY3NzEgMTYuMjE2OCAxMi43ODEyIDE2LjQ1NzcgMTIuNzgxMiAxNi43NDQxQzEyLjc4MTIgMTcuMDMwNiAxMi42NzM4IDE3LjI3MTUgMTIuNDU5IDE3LjQ2NjhDMTIuMjUwNyAxNy42NjIxIDEyLjAwNjUgMTcuNzU5OCAxMS43MjY2IDE3Ljc1OThaXCJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMEI1NEMyXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPHNwYW4+TG95YWx0eSBwb2ludHMgd2lsbCBiZSByZWZ1bmRlZCBpbnN0YW50bHkgdG8geW91ciBhY2NvdW50PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tLXByaW1hcnkgcmVzdWx0LW92ZXJsYXlfX2RvbmVcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwib25Eb25lKClcIlxuICAgID5cbiAgICAgIHt7ICdHT1QgSVQhJyB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
206
|
+
}], ctorParameters: () => [] });
|
|
207
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1yZXN1bHQtb3ZlcmxheS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1ib29raW5nLWRhc2hib2FyZC9zcmMvbGliL2NvbXBvbmVudHMvaG90ZWwtY2FuY2VsL2NvbXBvbmVudHMvYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1yZXN1bHQtb3ZlcmxheS9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLXJlc3VsdC1vdmVybGF5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9ob3RlbC1jYW5jZWwvY29tcG9uZW50cy9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLXJlc3VsdC1vdmVybGF5L2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tcmVzdWx0LW92ZXJsYXkuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsS0FBSyxFQUNMLE1BQU0sRUFDTixRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sRUFDTixVQUFVLEVBRVYsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNyRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwrRUFBK0UsQ0FBQztBQUMxSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFD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Q0FBQztRQUMzQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQztZQUN4RCxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDVixDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztJQUNmLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBb0I7UUFDOUIsT0FBTyxHQUFHLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQXlCO1FBQ2pDLE9BQU8sTUFBTSxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsU0FBUyxFQUFFO1lBQ2xELHFCQUFxQixFQUFFLENBQUM7WUFDeEIscUJBQXFCLEVBQUUsQ0FBQztTQUN6QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkIsQ0FBQzsrR0FwUFUsa0RBQWtEO21HQUFsRCxrREFBa0QsZ3JCQ3pEL0QsZzFpQkFzT0EseWdPRHhMSSxZQUFZLDhCQUVaLGtCQUFrQjs7NEZBU1Qsa0RBQWtEO2tCQWY5RCxTQUFTOytCQUNFLGdEQUFnRCxjQUM5QyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWix5QkFBeUI7d0JBQ3pCLGtCQUFrQjtxQkFDbkIsbUJBTWdCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBjb21wdXRlZCxcbiAgaW5qZWN0LFxuICBzaWduYWwsXG4gIERlc3Ryb3lSZWYsXG4gIE9uSW5pdCxcbiAgZWZmZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvdHJhbnNsYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDdXJyZW5jeUNvZGVJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL2NvbXBvbmVudHMvY3VycmVuY3ktY29kZS1pY29uL2N1cnJlbmN5LWNvZGUtaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRXhjaGFuZ2VQaXBlTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vLi4vc2hhcmVkL3BpcGVzL2V4Y2hhbmdlLnBpcGUnO1xuaW1wb3J0IHsgU2hhcmVkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zaGFyZWQuc2VydmljZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQge1xuICBSZWZ1bmRQcmVmZXJyZWRNZXRob2QsXG4gIFBBWU1FTlRfR0FURVdBWV9MQUJFTFMsXG4gIFBheW1lbnRHYXRld2F5Q29kZSxcbn0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL2ludGVyZmFjZXMvaS1mbGlnaHQtcmVmdW5kLWRldGFpbHMnO1xuaW1wb3J0IHsgSUF1dG9DYW5jZWxsYXRpb25Qcm9jZXNzUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLWVuZHBvaW50cy5zZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBMb3lhbHR5U3ViSXRlbSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVmdW5kUmVzdWx0Um93IHtcbiAgbGFiZWw6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbiAgaW5zdGFudDogYm9vbGVhbjtcbiAgYmFkZ2VLZXk6IHN0cmluZztcbiAgaXNXYWxsZXQ/OiBib29sZWFuO1xuICBpc01hZGE/OiBib29sZWFuO1xuICBoYXNMb3lhbHR5Tm90ZT86IGJvb2xlYW47XG4gIGlzSW5zdGFsbG1lbnQ/OiBib29sZWFuO1xuICBsb3lhbHR5U3ViSXRlbXM/OiBMb3lhbHR5U3ViSXRlbVtdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLXJlc3VsdC1vdmVybGF5JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBDdXJyZW5jeUNvZGVJY29uQ29tcG9uZW50LFxuICAgIEV4Y2hhbmdlUGlwZU1vZHVsZSxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6XG4gICAgJy4vYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1yZXN1bHQtb3ZlcmxheS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW1xuICAgICcuL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tcmVzdWx0LW92ZXJsYXkuY29tcG9uZW50LnNjc3MnLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvblJlc3VsdE92ZXJsYXlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzaGFyZWRTZXJ2aWNlID0gaW5qZWN0KFNoYXJlZFNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgLy8gQ3VycmVuY3lcbiAgcmVhZG9ubHkgYmFzZUN1cnJlbmN5Q29kZSA9IHNpZ25hbCgnU0FSJyk7XG4gIHJlYWRvbmx5IGN1cnJlbnRDdXJyZW5jeSA9IHNpZ25hbDxhbnk+KG51bGwpO1xuXG4gIHJlYWRvbmx5IHZpc2libGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGN1cnJlbmN5T2JqID0gaW5wdXQ8YW55PihudWxsKTtcbiAgcmVhZG9ubHkgcmVmdW5kTWV0aG9kID0gaW5wdXQ8UmVmdW5kUHJlZmVycmVkTWV0aG9kPignd2FsbGV0Jyk7XG4gIHJlYWRvbmx5IGFwaVJlc3BvbnNlID0gaW5wdXQ8SUF1dG9DYW5jZWxsYXRpb25Qcm9jZXNzUmVzcG9uc2UgfCBudWxsPihudWxsKTtcblxuICByZWFkb25seSBkb25lID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLy8gU3luYyBjdXJyZW5jeSBpbnB1dCB0byBsb2NhbCBzaWduYWxcbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgaW5wdXRDdXJyZW5jeSA9IHRoaXMuY3VycmVuY3lPYmooKTtcbiAgICAgIGlmIChpbnB1dEN1cnJlbmN5KSB7XG4gICAgICAgIHRoaXMuY3VycmVudEN1cnJlbmN5LnNldChpbnB1dEN1cnJlbmN5KTtcbiAgICAgIH1cbiAgICB9LCB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0Q3VycmVuY3koKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdEN1cnJlbmN5KCk6IHZvaWQge1xuICAgIHRoaXMuc2hhcmVkU2VydmljZVxuICAgICAgLmdldEJhc2VDdXJyZW5jeSgpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoKGN1cnJlbmN5OiB7IGNvZGU6IHN0cmluZyB9KSA9PiB7XG4gICAgICAgIHRoaXMuYmFzZUN1cnJlbmN5Q29kZS5zZXQoY3VycmVuY3kuY29kZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHJlYWRvbmx5IGlzTmlsUmVmdW5kID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5hcGlSZXNwb25zZSgpO1xuICAgIGlmIChyZXNwb25zZT8uZGF0YT8ucmVmdW5kKSB7XG4gICAgICByZXR1cm4gcmVzcG9uc2UuZGF0YS5yZWZ1bmQuYW1vdW50ID09PSAwO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZGlzcGxheUN1cnJlbmN5ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gdGhpcy5hcGlSZXNwb25zZSgpO1xuICAgIGlmIChyZXNwb25zZT8uZGF0YT8ucmVmdW5kPy5jdXJyZW5jeSkge1xuICAgICAgcmV0dXJuIHsgY29kZTogcmVzcG9uc2UuZGF0YS5yZWZ1bmQuY3VycmVuY3kgfTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuY3VycmVuY3lPYmooKTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgcmVmdW5kUm93cyA9IGNvbXB1dGVkKCgpOiBSZWZ1bmRSZXN1bHRSb3dbXSA9PiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSB0aGlzLmFwaVJlc3BvbnNlKCk7XG4gICAgaWYgKCFyZXNwb25zZT8uZGF0YT8ucmVmdW5kPy5icmVha2Rvd24pIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRSb3dzRnJvbUFwaVJlc3BvbnNlKHJlc3BvbnNlKTtcbiAgfSk7XG5cbiAgcHJpdmF0ZSBidWlsZFJvd3NGcm9tQXBpUmVzcG9uc2UoXG4gICAgcmVzcG9uc2U6IElBdXRvQ2FuY2VsbGF0aW9uUHJvY2Vzc1Jlc3BvbnNlLFxuICApOiBSZWZ1bmRSZXN1bHRSb3dbXSB7XG4gICAgY29uc3Qgcm93czogUmVmdW5kUmVzdWx0Um93W10gPSBbXTtcbiAgICBjb25zdCBicmVha2Rvd24gPSByZXNwb25zZS5kYXRhLnJlZnVuZC5icmVha2Rvd247XG4gICAgY29uc3QgcHJlZmVycmVkTWV0aG9kID0gcmVzcG9uc2UuZGF0YS5wcmVmZXJyZWRQYXltZW50TWV0aG9kO1xuXG4gICAgLy8gQ29sbGVjdCBsb3lhbHR5IHByb2dyYW1zIGR5bmFtaWNhbGx5XG4gICAgY29uc3QgbG95YWx0eVByb2dyYW1zID0gdGhpcy5nZXRMb3lhbHR5UHJvZ3JhbXMoYnJlYWtkb3duKTtcbiAgICBjb25zdCBoYXNMb3lhbHR5UHJvZ3JhbXMgPSBsb3lhbHR5UHJvZ3JhbXMubGVuZ3RoID4gMDtcbiAgICBjb25zdCBsb3lhbHR5VG90YWwgPSBsb3lhbHR5UHJvZ3JhbXMucmVkdWNlKFxuICAgICAgKHN1bSwgaXRlbSkgPT4gc3VtICsgaXRlbS52YWx1ZSxcbiAgICAgIDAsXG4gICAgKTtcblxuICAgIC8vIFdhbGxldCByZWZ1bmQgKGNvbWJpbmVkIHdpdGggbG95YWx0eSBwcm9ncmFtcyBpZiBhbnkpXG4gICAgaWYgKGJyZWFrZG93bi53YWxsZXQgPiAwIHx8IGhhc0xveWFsdHlQcm9ncmFtcykge1xuICAgICAgY29uc3Qgd2FsbGV0VG90YWwgPSBicmVha2Rvd24ud2FsbGV0ICsgbG95YWx0eVRvdGFsO1xuICAgICAgY29uc3QgbG95YWx0eVN1Ykl0ZW1zOiBMb3lhbHR5U3ViSXRlbVtdID0gW107XG5cbiAgICAgIC8vIEFkZCB3YWxsZXQgcG9pbnRzIGFzIGZpcnN0IHN1Yi1pdGVtIGlmIHRoZXJlIGFyZSBsb3lhbHR5IHByb2dyYW1zXG4gICAgICBpZiAoaGFzTG95YWx0eVByb2dyYW1zICYmIGJyZWFrZG93bi53YWxsZXQgPiAwKSB7XG4gICAgICAgIGxveWFsdHlTdWJJdGVtcy5wdXNoKHtcbiAgICAgICAgICBsYWJlbDogdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoXG4gICAgICAgICAgICAnbWFuYWdlLWJvb2tpbmcuc21hcnQtY2FuY2VsLnJlc3VsdC53YWxsZXQtcG9pbnRzLWxhYmVsJyxcbiAgICAgICAgICApLFxuICAgICAgICAgIHZhbHVlOiBicmVha2Rvd24ud2FsbGV0LFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIGFsbCBsb3lhbHR5IHByb2dyYW1zIGFzIHN1Yi1pdGVtc1xuICAgICAgbG95YWx0eVN1Ykl0ZW1zLnB1c2goLi4ubG95YWx0eVByb2dyYW1zKTtcblxuICAgICAgcm93cy5wdXNoKHtcbiAgICAgICAgbGFiZWw6IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICdtYW5hZ2UtYm9va2luZy5zbWFydC1jYW5jZWwucmVzdWx0LnlvdXItd2FsbGV0JyxcbiAgICAgICAgKSxcbiAgICAgICAgdmFsdWU6IHdhbGxldFRvdGFsLFxuICAgICAgICBpbnN0YW50OiB0cnVlLFxuICAgICAgICBiYWRnZUtleTogJ1JlYWR5IE5vdycsXG4gICAgICAgIGlzV2FsbGV0OiB0cnVlLFxuICAgICAgICBoYXNMb3lhbHR5Tm90ZTogaGFzTG95YWx0eVByb2dyYW1zLFxuICAgICAgICBsb3lhbHR5U3ViSXRlbXM6XG4gICAgICAgICAgbG95YWx0eVN1Ykl0ZW1zLmxlbmd0aCA+IDEgPyBsb3lhbHR5U3ViSXRlbXMgOiB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBDYXJkIHJlZnVuZFxuICAgIGlmIChicmVha2Rvd24uY2FyZCA+IDApIHtcbiAgICAgIHJvd3MucHVzaCh7XG4gICAgICAgIGxhYmVsOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAnbWFuYWdlLWJvb2tpbmcuc21hcnQtY2FuY2VsLnJlZnVuZC1tZXRob2Qub3JpZ2luYWwnLFxuICAgICAgICApLFxuICAgICAgICB2YWx1ZTogYnJlYWtkb3duLmNhcmQsXG4gICAgICAgIGluc3RhbnQ6IGZhbHNlLFxuICAgICAgICBiYWRnZUtleTogJzUtNyBidXNpbmVzcyBkYXlzJyxcbiAgICAgICAgaXNXYWxsZXQ6IGZhbHNlLFxuICAgICAgICBpc0luc3RhbGxtZW50OiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFRhYmJ5IHJlZnVuZFxuICAgIGlmIChicmVha2Rvd24udGFiYnkgPiAwKSB7XG4gICAgICByb3dzLnB1c2goe1xuICAgICAgICBsYWJlbDogdGhpcy5nZXRQYXltZW50TWV0aG9kTGFiZWwoUGF5bWVudEdhdGV3YXlDb2RlLlRhYmJ5KSB8fCAnVGFiYnknLFxuICAgICAgICB2YWx1ZTogYnJlYWtkb3duLnRhYmJ5LFxuICAgICAgICBpbnN0YW50OiBmYWxzZSxcbiAgICAgICAgYmFkZ2VLZXk6ICczLTUgYnVzaW5lc3MgZGF5cycsXG4gICAgICAgIGlzV2FsbGV0OiBmYWxzZSxcbiAgICAgICAgaXNJbnN0YWxsbWVudDogdHJ1ZSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFRhbWFyYSByZWZ1bmRcbiAgICBpZiAoYnJlYWtkb3duLnRhbWFyYSA+IDApIHtcbiAgICAgIHJvd3MucHVzaCh7XG4gICAgICAgIGxhYmVsOlxuICAgICAgICAgIHRoaXMuZ2V0UGF5bWVudE1ldGhvZExhYmVsKFBheW1lbnRHYXRld2F5Q29kZS5UYW1hcmEpIHx8ICdUYW1hcmEnLFxuICAgICAgICB2YWx1ZTogYnJlYWtkb3duLnRhbWFyYSxcbiAgICAgICAgaW5zdGFudDogZmFsc2UsXG4gICAgICAgIGJhZGdlS2V5OiAnNy0xMCBidXNpbmVzcyBkYXlzJyxcbiAgICAgICAgaXNXYWxsZXQ6IGZhbHNlLFxuICAgICAgICBpc0luc3RhbGxtZW50OiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gSWYgbm8gYnJlYWtkb3duIHJvd3MgYnV0IHdlIGhhdmUgYSB0b3RhbCBhbW91bnQsIHNob3cgc2luZ2xlIHJvd1xuICAgIGlmIChyb3dzLmxlbmd0aCA9PT0gMCAmJiByZXNwb25zZS5kYXRhLnJlZnVuZC5hbW91bnQgPiAwKSB7XG4gICAgICBjb25zdCBpc1dhbGxldCA9IHByZWZlcnJlZE1ldGhvZCA9PT0gJ3dhbGxldCc7XG4gICAgICByb3dzLnB1c2goe1xuICAgICAgICBsYWJlbDogaXNXYWxsZXRcbiAgICAgICAgICA/IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICAgICAnbWFuYWdlLWJvb2tpbmcuc21hcnQtY2FuY2VsLnJlc3VsdC55b3VyLXdhbGxldCcsXG4gICAgICAgICAgICApXG4gICAgICAgICAgOiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAgICAgJ21hbmFnZS1ib29raW5nLnNtYXJ0LWNhbmNlbC5yZWZ1bmQtbWV0aG9kLm9yaWdpbmFsJyxcbiAgICAgICAgICAgICksXG4gICAgICAgIHZhbHVlOiByZXNwb25zZS5kYXRhLnJlZnVuZC5hbW91bnQsXG4gICAgICAgIGluc3RhbnQ6IGlzV2FsbGV0LFxuICAgICAgICBiYWRnZUtleTogaXNXYWxsZXRcbiAgICAgICAgICA/ICdSZWFkeSBOb3cnXG4gICAgICAgICAgOiAnNS03IGJ1c2luZXNzIGRheXMnLFxuICAgICAgICBpc1dhbGxldCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiByb3dzO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb3lhbHR5UHJvZ3JhbXMoYnJlYWtkb3duOiB7XG4gICAgd2FsbGV0OiBudW1iZXI7XG4gICAgbW9rYWZhOiBudW1iZXI7XG4gICAgcWl0YWY6IG51bWJlcjtcbiAgICBjYXJkOiBudW1iZXI7XG4gICAgdGFiYnk6IG51bWJlcjtcbiAgICB0YW1hcmE6IG51bWJlcjtcbiAgfSk6IExveWFsdHlTdWJJdGVtW10ge1xuICAgIGNvbnN0IGxveWFsdHlQcm9ncmFtczogTG95YWx0eVN1Ykl0ZW1bXSA9IFtdO1xuXG4gICAgLy8gTW9rYWZhIChBbCBSYWpoaSkgcG9pbnRzXG4gICAgaWYgKGJyZWFrZG93bi5tb2thZmEgPiAwKSB7XG4gICAgICBsb3lhbHR5UHJvZ3JhbXMucHVzaCh7XG4gICAgICAgIGxhYmVsOiB0aGlzLmdldExveWFsdHlQcm9ncmFtTGFiZWwoXG4gICAgICAgICAgUGF5bWVudEdhdGV3YXlDb2RlLkFsUmFqaGlNb2thZmFhLFxuICAgICAgICAgIFwiTW9rYWZhJ2FcIixcbiAgICAgICAgKSxcbiAgICAgICAgdmFsdWU6IGJyZWFrZG93bi5tb2thZmEsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBRaXRhZiBwb2ludHNcbiAgICBpZiAoYnJlYWtkb3duLnFpdGFmID4gMCkge1xuICAgICAgbG95YWx0eVByb2dyYW1zLnB1c2goe1xuICAgICAgICBsYWJlbDogdGhpcy5nZXRMb3lhbHR5UHJvZ3JhbUxhYmVsKFBheW1lbnRHYXRld2F5Q29kZS5RaXRhZiwgJ1FpdGFmJyksXG4gICAgICAgIHZhbHVlOiBicmVha2Rvd24ucWl0YWYsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBBZGQgbW9yZSBsb3lhbHR5IHByb2dyYW1zIGhlcmUgYXMgbmVlZGVkXG4gICAgLy8gRXhhbXBsZTogaWYgKGJyZWFrZG93bi5uZXdMb3lhbHR5ID4gMCkgeyAuLi4gfVxuXG4gICAgcmV0dXJuIGxveWFsdHlQcm9ncmFtcztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG95YWx0eVByb2dyYW1MYWJlbChcbiAgICBjb2RlOiBQYXltZW50R2F0ZXdheUNvZGUsXG4gICAgZmFsbGJhY2tOYW1lOiBzdHJpbmcsXG4gICk6IHN0cmluZyB7XG4gICAgY29uc3QgaXNBcmFiaWMgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmc/LnN0YXJ0c1dpdGgoJ2FyJyk7XG4gICAgY29uc3QgcG9pbnRzTGFiZWwgPSBpc0FyYWJpYyA/ICfZhtmC2KfYtycgOiAncG9pbnRzJztcbiAgICBjb25zdCBnYXRld2F5TGFiZWwgPSB0aGlzLmdldFBheW1lbnRNZXRob2RMYWJlbChjb2RlKTtcbiAgICBjb25zdCBwcm9ncmFtTmFtZSA9IGdhdGV3YXlMYWJlbCB8fCBmYWxsYmFja05hbWU7XG4gICAgcmV0dXJuIGAke3Byb2dyYW1OYW1lfSAke3BvaW50c0xhYmVsfWA7XG4gIH1cblxuICBwcml2YXRlIGdldFBheW1lbnRNZXRob2RMYWJlbChjb2RlOiBQYXltZW50R2F0ZXdheUNvZGUgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIGlmICghY29kZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBjb25zdCBlbnRyeSA9IFBBWU1FTlRfR0FURVdBWV9MQUJFTFNbY29kZV07XG4gICAgaWYgKCFlbnRyeSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTZXJ2aWNlLmN1cnJlbnRMYW5nPy5zdGFydHNXaXRoKCdhcicpXG4gICAgICA/IGVudHJ5LmFyXG4gICAgICA6IGVudHJ5LmVuO1xuICB9XG5cbiAgaXNXYWxsZXRSb3cocm93OiBSZWZ1bmRSZXN1bHRSb3cpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcm93LmlzV2FsbGV0ID09PSB0cnVlO1xuICB9XG5cbiAgZm10QW1vdW50KHZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIHJldHVybiBOdW1iZXIodmFsdWUgfHwgMCkudG9Mb2NhbGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgfSk7XG4gIH1cblxuICBvbkRvbmUoKTogdm9pZCB7XG4gICAgdGhpcy5kb25lLmVtaXQoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInJlc3VsdC1vdmVybGF5XCIgW2NsYXNzLnJlc3VsdC1vdmVybGF5LS12aXNpYmxlXT1cInZpc2libGUoKVwiPlxuICA8ZGl2IGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX2JhY2tkcm9wXCI+PC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJyZXN1bHQtb3ZlcmxheV9fbW9kYWxcIj5cbiAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX2hlcm9cIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX2ljb24gcmVzdWx0LW92ZXJsYXlfX2ljb24tLWdyZWVuXCI+XG4gICAgICAgIDxzdmdcbiAgICAgICAgICB3aWR0aD1cIjExNFwiXG4gICAgICAgICAgaGVpZ2h0PVwiMTE0XCJcbiAgICAgICAgICB2aWV3Qm94PVwiMCAwIDExNCAxMTRcIlxuICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjaXJjbGUgY3g9XCI1N1wiIGN5PVwiNTdcIiByPVwiNDJcIiBmaWxsPVwiIzZERTE5N1wiIC8+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNNzEuNDE3IDQzLjU3NzRDNzMuMTY5IDQxLjgyNTQgNzYuMDA5NyA0MS44MjU0IDc3Ljc2MTcgNDMuNTc3NEM3OS41MTM0IDQ1LjMyOTQgNzkuNTEzNiA0OC4xNzAyIDc3Ljc2MTcgNDkuOTIyMUw1NS40MjQ4IDcyLjI1ODFDNTQuNTgzNSA3My4wOTkyIDUzLjQ0MjYgNzMuNTcxNSA1Mi4yNTI5IDczLjU3MTVDNTEuMDYzMiA3My41NzE1IDQ5LjkyMjQgNzMuMDk5MiA0OS4wODExIDcyLjI1ODFMMzYuMzE3NCA1OS40OTQ0QzM0LjU2NTQgNTcuNzQyNCAzNC41NjU0IDU0LjkwMTcgMzYuMzE3NCA1My4xNDk3QzM4LjA2OTQgNTEuMzk3OCA0MC45MTAyIDUxLjM5NzcgNDIuNjYyMSA1My4xNDk3TDUyLjA0MSA2Mi41Mjg2QzUyLjA5NzMgNjIuNTg0OCA1Mi4xNzM0IDYyLjYxNjUgNTIuMjUyOSA2Mi42MTY1QzUyLjMzMjUgNjIuNjE2NCA1Mi40MDg2IDYyLjU4NDggNTIuNDY0OCA2Mi41Mjg2TDcxLjQxNyA0My41Nzc0WlwiXG4gICAgICAgICAgICBmaWxsPVwidXJsKCNwYWludDBfbGluZWFyX2hvdGVsX3Jlc3VsdClcIlxuICAgICAgICAgICAgZmlsbC1vcGFjaXR5PVwiMC45XCJcbiAgICAgICAgICAgIHN0cm9rZT1cInVybCgjcGFpbnQxX2xpbmVhcl9ob3RlbF9yZXN1bHQpXCJcbiAgICAgICAgICAgIHN0cm9rZS13aWR0aD1cIjAuNlwiXG4gICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkZWZzPlxuICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50XG4gICAgICAgICAgICAgIGlkPVwicGFpbnQwX2xpbmVhcl9ob3RlbF9yZXN1bHRcIlxuICAgICAgICAgICAgICB4MT1cIjQxLjY4NDJcIlxuICAgICAgICAgICAgICB5MT1cIjU0LjEyOTFcIlxuICAgICAgICAgICAgICB4Mj1cIjExMS40ODZcIlxuICAgICAgICAgICAgICB5Mj1cIjYyLjM3ODRcIlxuICAgICAgICAgICAgICBncmFkaWVudFVuaXRzPVwidXNlclNwYWNlT25Vc2VcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPVwid2hpdGVcIiAvPlxuICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9XCIxXCIgc3RvcC1jb2xvcj1cIndoaXRlXCIgc3RvcC1vcGFjaXR5PVwiMFwiIC8+XG4gICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PlxuICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50XG4gICAgICAgICAgICAgIGlkPVwicGFpbnQxX2xpbmVhcl9ob3RlbF9yZXN1bHRcIlxuICAgICAgICAgICAgICB4MT1cIjQyLjY4MDNcIlxuICAgICAgICAgICAgICB5MT1cIjUxLjM1MlwiXG4gICAgICAgICAgICAgIHgyPVwiNjEuMTE4NVwiXG4gICAgICAgICAgICAgIHkyPVwiNzkuMzY2MlwiXG4gICAgICAgICAgICAgIGdyYWRpZW50VW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgIDxzdG9wIG9mZnNldD1cIjFcIiBzdG9wLWNvbG9yPVwid2hpdGVcIiBzdG9wLW9wYWNpdHk9XCIwXCIgLz5cbiAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICAgICAgPC9kZWZzPlxuICAgICAgICA8L3N2Zz5cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxoMyBjbGFzcz1cInJlc3VsdC1vdmVybGF5X190aXRsZVwiPlxuICAgICAgICB7eyBpc05pbFJlZnVuZCgpID8gJ0NhbmNlbGxhdGlvbiBDb25maXJtZWQnIDogJ1JlZnVuZCBDb25maXJtZWQnIH19XG4gICAgICA8L2gzPlxuICAgIDwvZGl2PlxuXG4gICAgQGZvciAocm93IG9mIHJlZnVuZFJvd3MoKTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX3Jvd1wiXG4gICAgICAgIFtjbGFzcy5yZXN1bHQtb3ZlcmxheV9fcm93LS13aXRoLWJyZWFrZG93bl09XCJcbiAgICAgICAgICByb3cubG95YWx0eVN1Ykl0ZW1zPy5sZW5ndGhcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPCEtLSBXYWxsZXQgSWNvbiAtLT5cbiAgICAgICAgQGlmIChpc1dhbGxldFJvdyhyb3cpKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXN1bHQtb3ZlcmxheV9fbWV0aG9kLWljb25cIj5cbiAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyMiAyNFwiXG4gICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxnIGNsaXAtcGF0aD1cInVybCgjY2xpcDBfd2FsbGV0X3Jlc3VsdClcIj5cbiAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgZD1cIk0yLjY3NjI3IDIwLjg4NTJDMS43NDg1NCAyMC44ODUyIDEuMDQ2NTUgMjAuNjUzMyAwLjU3MDMxMiAyMC4xODk0QzAuMTAwMjYgMTkuNzI1NiAtMC4xMzQ3NjYgMTkuMDM1OSAtMC4xMzQ3NjYgMTguMTIwNlY4LjUxODUyQy0wLjEzNDc2NiA3Ljc3MDE1IDAuMDI2MDQxNyA3LjE3NjQgMC4zNDc2NTYgNi43MzcyN0MwLjY3NTQ1NiA2LjI5ODE1IDEuMTg4OCA1Ljk3MzQ0IDEuODg3NyA1Ljc2MzE1TDEzLjc4MTIgMi4zMDI3QzE0LjQ1NTQgMi4xMTA5NyAxNS4wNTg0IDIuMDYxNDkgMTUuNTkwMyAyLjE1NDI3QzE2LjEyODQgMi4yNDcwNCAxNi41NDkgMi40OTQ0MyAxNi44NTIxIDIuODk2NDVDMTcuMTYxMyAzLjI5MjI5IDE3LjMxNTkgMy44NTUxMSAxNy4zMTU5IDQuNTg0OTNWNi4yNTQ4NUwxNS44MDM3IDYuMzg0NzNWNC40NTUwNUMxNS44MDM3IDQuMDQ2ODQgMTUuNjg5MyAzLjc2NTQzIDE1LjQ2MDQgMy42MTA4MUMxNS4yMzE2IDMuNDU2MTkgMTQuODk0NSAzLjQ0MzgyIDE0LjQ0OTIgMy41NzM3TDcuMjc3ODMgNS41NTkwNUM3LjE5MTI0IDUuNTc3NiA3LjE1MTA0IDUuNjE0NzEgNy4xNTcyMyA1LjY3MDM4QzcuMTYzNDEgNS43MTk4NiA3LjIwNjcxIDUuNzQ0NiA3LjI4NzExIDUuNzQ0NkgxNy41OTQyQzE4LjUyODIgNS43NDQ2IDE5LjIyNzEgNS45Nzk2MiAxOS42OTA5IDYuNDQ5NjhDMjAuMTYxIDYuOTEzNTQgMjAuMzk2IDcuNjAzMTYgMjAuMzk2IDguNTE4NTJWMTAuODU2NEgxOC44OTMxVjguNjAyMDJDMTguODkzMSA4LjE1NjcxIDE4Ljc3ODYgNy44MTk2MyAxOC41NDk4IDcuNTkwNzlDMTguMzIxIDcuMzYxOTUgMTcuOTkzMiA3LjI0NzUzIDE3LjU2NjQgNy4yNDc1M0gyLjY5NDgyQzIuMjY4MDcgNy4yNDc1MyAxLjk0MDI3IDcuMzYxOTUgMS43MTE0MyA3LjU5MDc5QzEuNDg4NzcgNy44MTk2MyAxLjM3NzQ0IDguMTU2NzEgMS4zNzc0NCA4LjYwMjAyVjE4LjAzNzFDMS4zNzc0NCAxOC40ODI0IDEuNDg4NzcgMTguODE2NCAxLjcxMTQzIDE5LjAzOUMxLjk0MDI3IDE5LjI2NzkgMi4yNjgwNyAxOS4zODIzIDIuNjk0ODIgMTkuMzgyM0gxNy41NjY0QzE3Ljk5MzIgMTkuMzgyMyAxOC4zMjEgMTkuMjY3OSAxOC41NDk4IDE5LjAzOUMxOC43Nzg2IDE4LjgxNjQgMTguODkzMSAxOC40ODI0IDE4Ljg5MzEgMTguMDM3MVYxNS40Mzk0SDIwLjM5NlYxOC4xMjA2QzIwLjM5NiAxOS4wMzU5IDIwLjE2MSAxOS43MjU2IDE5LjY5MDkgMjAuMTg5NEMxOS4yMjcxIDIwLjY1MzMgMTguNTI4MiAyMC44ODUyIDE3LjU5NDIgMjAuODg1MkgyLjY3NjI3Wk0xNi43Njg2IDE0LjIzMzRDMTYuNTA4OCAxNC4yMzM0IDE2LjI4NjEgMTQuMTQzNyAxNi4xMDA2IDEzLjk2NDNDMTUuOTIxMiAxMy43Nzg4IDE1LjgzMTUgMTMuNTU2MSAxNS44MzE1IDEzLjI5NjRDMTUuODMxNSAxMy4wMzY2IDE1LjkyMTIgMTIuODE3IDE2LjEwMDYgMTIuNjM3N0MxNi4yODYxIDEyLjQ1MjEgMTYuNTA4OCAxMi4zNTkzIDE2Ljc2ODYgMTIuMzU5M0MxNy4wMjgzIDEyLjM1OTMgMTcuMjQ3OSAxMi40NTIxIDE3LjQyNzIgMTIuNjM3N0MxNy42MTI4IDEyLjgxNyAxNy43MDU2IDEzLjAzNjYgMTcuNzA1NiAxMy4yOTY0QzE3LjcwNTYgMTMuNTU2MSAxNy42MTI4IDEzLjc3ODggMTcuNDI3MiAxMy45NjQzQzE3LjI0NzkgMTQuMTQzNyAxNy4wMjgzIDE0LjIzMzQgMTYuNzY4NiAxNC4yMzM0Wk0xNi42NzU4IDE2LjIxODdDMTUuNzQxOSAxNi4yMTg3IDE0Ljk4NzMgMTUuOTc3NSAxNC40MTIxIDE1LjQ5NTFDMTMuODM2OSAxNS4wMDY1IDEzLjU0OTMgMTQuMjc2NyAxMy41NDkzIDEzLjMwNTZDMTMuNTQ5MyAxMi4zMzQ2IDEzLjgzNjkgMTEuNjA3OSAxNC40MTIxIDExLjEyNTVDMTQuOTg3MyAxMC42NDMgMTUuNzQxOSAxMC40MDE4IDE2LjY3NTggMTAuNDAxOEgyMC4xMDg0QzIwLjY4OTggMTAuNDAxOCAyMS4xNDc1IDEwLjU4MTIgMjEuNDgxNCAxMC45Mzk5QzIxLjgyMTYgMTEuMjk4NiAyMS45OTE3IDExLjc0MzkgMjEuOTkxNyAxMi4yNzU4VjE0LjMzNTRDMjEuOTkxNyAxNC44NjczIDIxLjgyMTYgMTUuMzE1NyAyMS40ODE0IDE1LjY4MDZDMjEuMTQ3NSAxNi4wMzk0IDIwLjY4OTggMTYuMjE4NyAyMC4xMDg0IDE2LjIxODdIMTYuNjc1OFpNMTYuNzY4NiAxNC45NzU2SDE5Ljc4MzdDMjAuMTA1MyAxNC45NzU2IDIwLjM0NjUgMTQuODkyMSAyMC41MDczIDE0LjcyNTFDMjAuNjc0MyAxNC41NTE5IDIwLjc1NzggMTQuMzEzOCAyMC43NTc4IDE0LjAxMDdWMTIuNjAwNkMyMC43NTc4IDEyLjI5NzUgMjAuNjc0MyAxMi4wNjI1IDIwLjUwNzMgMTEuODk1NUMyMC4zNDY1IDExLjcyMjMgMjAuMTA1MyAxMS42MzU3IDE5Ljc4MzcgMTEuNjM1N0gxNi43Njg2QzE2LjExOTEgMTEuNjM1NyAxNS42MzY3IDExLjc4NDEgMTUuMzIxMyAxMi4wODFDMTUuMDEyIDEyLjM3NzkgMTQuODU3NCAxMi43ODYxIDE0Ljg1NzQgMTMuMzA1NkMxNC44NTc0IDEzLjgyNTIgMTUuMDEyIDE0LjIzMzQgMTUuMzIxMyAxNC41MzAyQzE1LjYzNjcgMTQuODI3MSAxNi4xMTkxIDE0Ljk3NTYgMTYuNzY4NiAxNC45NzU2WlwiXG4gICAgICAgICAgICAgICAgICBmaWxsPVwiYmxhY2tcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfd2FsbGV0X3Jlc3VsdFwiPlxuICAgICAgICAgICAgICAgICAgPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIndoaXRlXCIgLz5cbiAgICAgICAgICAgICAgICA8L2NsaXBQYXRoPlxuICAgICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIENhcmQgSWNvbiAtLT5cbiAgICAgICAgQGlmICghaXNXYWxsZXRSb3cocm93KSkge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX21ldGhvZC1pY29uXCI+XG4gICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgICAgICAgICBoZWlnaHQ9XCIyNFwiXG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgIGQ9XCJNMi4yNSA4LjI1SDIxLjc1TTIuMjUgOUgyMS43NU01LjI1IDE0LjI1SDExLjI1TTUuMjUgMTYuNUg4LjI1TTQuNSAxOS41SDE5LjVDMjAuMDk2NyAxOS41IDIwLjY2OSAxOS4yNjI5IDIxLjA5MSAxOC44NDFDMjEuNTEyOSAxOC40MTkgMjEuNzUgMTcuODQ2NyAyMS43NSAxNy4yNVY2Ljc1QzIxLjc1IDYuMTUzMjYgMjEuNTEyOSA1LjU4MDk3IDIxLjA5MSA1LjE1OTAxQzIwLjY2OSA0LjczNzA1IDIwLjA5NjcgNC41IDE5LjUgNC41SDQuNUMzLjkwMzI2IDQuNSAzLjMzMDk3IDQuNzM3MDUgMi45MDkwMSA1LjE1OTAxQzIuNDg3MDUgNS41ODA5NyAyLjI1IDYuMTUzMjYgMi4yNSA2Ljc1VjE3LjI1QzIuMjUgMTcuODQ2NyAyLjQ4NzA1IDE4LjQxOSAyLjkwOTAxIDE4Ljg0MUMzLjMzMDk3IDE5LjI2MjkgMy45MDMyNiAxOS41IDQuNSAxOS41WlwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzFCMUExRlwiXG4gICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIH1cblxuICAgICAgICA8c3BhbiBjbGFzcz1cInJlc3VsdC1vdmVybGF5X19ib2R5XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXN1bHQtb3ZlcmxheV9fbWV0aG9kLW5hbWVcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX21ldGhvZC1ibG9ja1wiPlxuICAgICAgICAgICAgICB7eyByb3cubGFiZWwgfX1cblxuICAgICAgICAgICAgICBAaWYgKCFpc1dhbGxldFJvdyhyb3cpICYmICFyb3c/LmlzSW5zdGFsbG1lbnQpIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hZGEtbG9nb1wiPlxuICAgICAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg9XCI0M1wiXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjE1XCJcbiAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCA0MyAxNVwiXG4gICAgICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGcgY2xpcC1wYXRoPVwidXJsKCNjbGlwMF8xOTE1OF8yNzMwMylcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xOC4xODk0IDguNjU1MjdIMFYxNC45OTQzSDE4LjE4OTRWOC42NTUyN1pcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM4NEI3NDBcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNMTguMTg5NCAwSDBWNi4zNDQ2M0gxOC4xODk0VjBaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMjU5QkQ2XCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTM2LjM3NzkgMTMuNzAzNEwzNi4yOTY5IDEzLjcyMDNDMzYuMDE2IDEzLjc3NjggMzUuOTEzNCAxMy43OTk0IDM1LjcwODIgMTMuNzk5NEMzNS4yMzMgMTMuNzk5NCAzNC42NzEzIDEzLjU0NTIgMzQuNjcxMyAxMi4zNDc1QzM0LjY3MTMgMTEuNzMxNiAzNC43Njg1IDEwLjkxMjQgMzUuNjU0MiAxMC45MTI0SDM1LjY1OTZDMzUuODEwOCAxMC45MjM3IDM1Ljk4MzYgMTAuOTQwNyAzNi4zMDc3IDExLjA0MjRMMzYuMzc3OSAxMS4wNjVWMTMuNzAzNFpNMzYuNTIzNyA3LjczMTY0TDM2LjM3NzkgNy43NTk4OVY5Ljk3NDU4TDM2LjI0ODMgOS45MzUwM0wzNi4yMTA1IDkuOTIzNzNDMzYuMDY0NyA5Ljg3ODUzIDM1LjcyOTggOS43NzY4NCAzNS40MDU4IDkuNzc2ODRDMzMuNjM0NCA5Ljc3Njg0IDMzLjI2MTcgMTEuMTc4IDMzLjI2MTcgMTIuMzUzMUMzMy4yNjE3IDEzLjk2MzMgMzQuMTI1OCAxNC44ODk4IDM1LjYzMjYgMTQuODg5OEMzNi4yNjk5IDE0Ljg4OTggMzYuNzM5NyAxNC44MjIgMzcuMjE1IDE0LjY1ODJDMzcuNjUyNCAxNC41MTEzIDM3LjgwOTEgMTQuMzAyMyAzNy44MDkxIDEzLjg1NTlWNy41QzM3LjM4NzggNy41NzkxIDM2Ljk1MDQgNy42NTgxOSAzNi41MjM3IDcuNzMxNjRaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNzQ3NTgzXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTQxLjY1MSAxMy43Mzc1TDQxLjU3NTQgMTMuNzYwMUw0MS4zMDUzIDEzLjgzMzZDNDEuMDUxNSAxMy45MDE0IDQwLjgyNDcgMTMuOTQwOSA0MC42NTE5IDEzLjk0MDlDNDAuMjM2IDEzLjk0MDkgMzkuOTg3NiAxMy43MjYyIDM5Ljk4NzYgMTMuMzU5QzM5Ljk4NzYgMTMuMTIxNyA0MC4wOTAyIDEyLjcyMDYgNDAuNzcwNyAxMi43MjA2SDQxLjY1MVYxMy43Mzc1Wk00MS4wMjk5IDkuNzQzMTZDNDAuNDg0NCA5Ljc0MzE2IDM5LjkyMjggOS44NDQ4NiAzOS4yMjYxIDEwLjA3MDhMMzguNzcyNCAxMC4yMTIxTDM4LjkyMzYgMTEuMjg1NUwzOS4zNjY1IDExLjEzM0MzOS44MzEgMTAuOTc0OCA0MC40MDg4IDEwLjg3MzEgNDAuODQwOSAxMC44NzMxQzQxLjAzNTMgMTAuODczMSA0MS42Mjk0IDEwLjg3MzEgNDEuNjI5NCAxMS41NDU0VjExLjgzOTJINDAuODAzMUMzOS4yOTYzIDExLjgzOTIgMzguNTk5NiAxMi4zNDIgMzguNTk5NiAxMy40MjExQzM4LjU5OTYgMTQuMzQyIDM5LjI0MjMgMTQuODk1NyA0MC4zMjI0IDE0Ljg5NTdDNDAuNjU3MyAxNC44OTU3IDQxLjEyMTcgMTQuODI3OSA0MS41MjE0IDE0LjcyNjJMNDEuNTQzIDE0LjcyMDZMNDEuNTY0NiAxNC43MjYyTDQxLjY5OTYgMTQuNzQ4OEM0Mi4xMjA4IDE0LjgyNzkgNDIuNTU4MyAxNC45MDcgNDIuOTg0OSAxNC45OTE4VjExLjQ2NjNDNDIuOTg0OSAxMC4zMjUxIDQyLjMyNjEgOS43NDMxNiA0MS4wMjk5IDkuNzQzMTZaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNzQ3NTgzXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTMxLjE1MjkgMTMuNzM3NUwzMS4wNzczIDEzLjc2MDFMMzAuODA3MyAxMy44MzM2QzMwLjU1MzUgMTMuOTAxNCAzMC4zMzIgMTMuOTQwOSAzMC4xNTM4IDEzLjk0MDlDMjkuNzM4IDEzLjk0MDkgMjkuNDg5NSAxMy43MjYyIDI5LjQ4OTUgMTMuMzU5QzI5LjQ4OTUgMTMuMTIxNyAyOS41OTIxIDEyLjcyMDYgMzAuMjY3MiAxMi43MjA2SDMxLjE0NzVMMzEuMTUyOSAxMy43Mzc1Wk0zMC41MzczIDkuNzQzMTZDMjkuOTg2NCA5Ljc0MzE2IDI5LjQzMDEgOS44NDQ4NiAyOC43MzM0IDEwLjA3MDhMMjguMjc5OCAxMC4yMTIxTDI4LjQzMSAxMS4yODU1TDI4Ljg3MzkgMTEuMTMzQzI5LjMzODMgMTAuOTc0OCAyOS45MTYyIDEwLjg3MzEgMzAuMzQ4MiAxMC44NzMxQzMwLjU0MjcgMTAuODczMSAzMS4xMzY3IDEwLjg3MzEgMzEuMTM2NyAxMS41NDU0VjExLjgzOTJIMzAuMzEwNEMyOC44MDM2IDExLjgzOTIgMjguMTAxNiAxMi4zNDIgMjguMTAxNiAxMy40MjExQzI4LjEwMTYgMTQuMzQyIDI4Ljc0NDIgMTQuODk1NyAyOS44Mjk4IDE0Ljg5NTdDMzAuMTY0NiAxNC44OTU3IDMwLjYyOTEgMTQuODI3OSAzMS4wMjg3IDE0LjcyNjJMMzEuMDUwMyAxNC43MjA2TDMxLjA3MTkgMTQuNzI2MkwzMS4yMDE1IDE0Ljc0ODhDMzEuNjI4MiAxNC44Mjc5IDMyLjA2MDIgMTQuOTA3IDMyLjQ4NjkgMTQuOTk3NFYxMS40NzJDMzIuNDkyMyAxMC4zMTk0IDMxLjgzMzQgOS43NDMxNiAzMC41MzczIDkuNzQzMTZaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNzQ3NTgzXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTI1LjQ3MDEgOS43NTc2QzI0Ljc4NDIgOS43NTc2IDI0LjIxNzIgOS45OTQ4OSAyNC4wMDY1IDEwLjA5NjZMMjMuOTUyNSAxMC4xMjQ4TDIzLjkwMzkgMTAuMDg1M0MyMy42MTIzIDkuODY0OTUgMjMuMTg1NiA5Ljc1MTk1IDIyLjU5MTYgOS43NTE5NUMyMi4wNjc3IDkuNzUxOTUgMjEuNTc2MiA5LjgzMTA1IDIxLjA0MTYgOS45OTQ4OUMyMC41ODI1IDEwLjE0MTggMjAuNDA0MyAxMC4zNzM0IDIwLjQwNDMgMTAuODA4NVYxNC44MzY3SDIxLjg0MDlWMTEuMTEzNUwyMS45MTExIDExLjA5MDlDMjIuMjAyNyAxMC45ODkyIDIyLjM3NTUgMTAuOTcyMyAyMi41NDMgMTAuOTcyM0MyMi45NTg4IDEwLjk3MjMgMjMuMTY5NCAxMS4yMDM5IDIzLjE2OTQgMTEuNjU1OVYxNC44NDIzSDI0LjU4NDRWMTEuNTkzOEMyNC41ODQ0IDExLjQwMTcgMjQuNTQ2NiAxMS4yODg3IDI0LjU0MTIgMTEuMjY2MUwyNC40OTI2IDExLjE3TDI0LjU4OTggMTEuMTI0OEMyNC44MDU4IDExLjAyMzEgMjUuMDQzNSAxMC45NzIzIDI1LjI5MTkgMTAuOTcyM0MyNS41NzgxIDEwLjk3MjMgMjUuOTE4NCAxMS4wOTA5IDI1LjkxODQgMTEuNjU1OVYxNC44NDIzSDI3LjMyNzlWMTEuNTA5QzI3LjMyNzkgMTAuMzI4MiAyNi43MjMxIDkuNzU3NiAyNS40NzAxIDkuNzU3NlpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM3NDc1ODNcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNNDAuNTg2NiA0LjEzNTU5QzQwLjM3NTkgNC4xMzU1OSA0MC4wMjQ5IDQuMTEzIDM5Ljc0OTUgNC4wNTY1TDM5LjY2ODQgNC4wMzk1NVYxLjg2NDQxQzM5LjY2ODQgMS42ODM2MiAzOS42MzYgMS41NzA2MiAzOS42MzA2IDEuNTUzNjdMMzkuNTg3NCAxLjQ2MzI4TDM5LjY3OTMgMS40MjM3M0MzOS43MDA5IDEuNDEyNDMgMzkuNzIyNSAxLjQwNjc4IDM5Ljc0OTUgMS4zOTU0OEwzOS43NjU3IDEuMzg0MThDMzkuNzk4MSAxLjM3Mjg4IDM5LjgzMDUgMS4zNjE1OCAzOS44NjI5IDEuMzUwMjhDMzkuODc5MSAxLjM0NDYzIDM5Ljg4OTkgMS4zMzg5OCAzOS45MDA3IDEuMzM4OThDNDAuMjE5MyAxLjI0ODU5IDQwLjUxMSAxLjI1OTg5IDQwLjY0MDYgMS4yNDg1OUg0MC42NDZDNDEuNTI2MyAxLjI0ODU5IDQxLjYyODkgMi4wNjc4IDQxLjYyODkgMi42ODM2MkM0MS42MjM1IDMuODgxMzYgNDEuMDU2NCA0LjEzNTU5IDQwLjU4NjYgNC4xMzU1OVpNNDAuNTgxMiAwQzQwLjU3MDQgMCA0MC41NTQyIDAgNDAuNTQzNCAwQzM5LjcxNzEgMCAzOC44NjkyIDAuMjM3Mjg4IDM4LjU2NjcgMC43MDA1NjVDMzguNDA0NyAwLjkyNjU1NCAzOC4zMTI5IDEuMjA5MDQgMzguMzA3NSAxLjU0MjM3VjMuNzg1MzFDMzguMzA3NSAzLjk3NzQgMzguMjY5NyA0LjA1MDg1IDM4LjI2NDMgNC4wNjc4TDM4LjIxNTcgNC4xNjM4NEgzNS42MDcyVjIuNjA0NTJIMzUuNjAxOEMzNS41Njk0IDAuOTYwNDUyIDM0LjY0MDQgMC4wNTY0OTcyIDMzLjI5NTcgMC4wNTY0OTcySDMzLjEzOTFIMzEuOTgzM0MzMS45MjkzIDAuNDU3NjI3IDMxLjg4NjEgMC43NDAxMTMgMzEuODMyMSAxLjE0MTI0SDMzLjEzOTFDMzMuODI0OSAxLjE0MTI0IDM0LjE4NjggMS43NTE0MSAzNC4xODY4IDIuNjg5MjdWNC4yNTk4OUwzNC4wOTUgNC4yMDkwNEMzNC4wNzg4IDQuMjAzMzkgMzMuOTY1NCA0LjE2Mzg0IDMzLjc4NzEgNC4xNjM4NEgzMS41Mjk3QzMxLjQ4NjUgNC40NjMyOCAzMS40MzI1IDQuODUzMTEgMzEuMzczIDUuMjQyOTRIMzguMzEyOUMzOC41NTA1IDUuMTkyMDkgMzguODI1OSA1LjE0Njg5IDM5LjA2MzYgNS4xMDczNUMzOS40MTQ2IDUuMjg4MTQgNDAuMDY4MSA1LjM4NDE4IDQwLjUxNjQgNS4zODQxOEM0Mi4wMjMxIDUuMzg0MTggNDMuMDAwNyA0LjMyNzY4IDQzLjAwMDcgMi43MDA1N0M0Mi45OTUzIDEuMDkwNCA0Mi4wNTAxIDAuMDMzODk4MyA0MC41ODEyIDBaXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9XCIjNzQ3NTgzXCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTI4LjQxODkgNS45MDg3SDI4LjQ4MzdDMjkuOTkwNSA1LjkwODcgMzAuNjkyNSA1LjM4ODkzIDMwLjY5MjUgNC4xMDY0NEMzMC42OTI1IDMuMTg1NTQgMzAuMDQ5OSAyLjQ1MTA4IDI4Ljk2OTcgMi40NTEwOEgyNy41ODE4QzI3LjE2NTkgMi40NTEwOCAyNi45MTc1IDIuMjAyNDkgMjYuOTE3NSAxLjc4NDQxQzI2LjkxNzUgMS41MDE5MiAyNy4wMjAxIDEuMTUxNjQgMjcuNzAwNiAxLjE1MTY0SDMwLjczNTdDMzAuODAwNiAwLjczOTIxMSAzMC44MzMgMC40NzkzMjQgMzAuODkyNCAwLjA2Njg5NDVIMjcuNzM4NEMyNi4yNjk0IDAuMDY2ODk0NSAyNS41Mjk1IDAuNzEwOTYyIDI1LjUyOTUgMS43ODQ0MUMyNS41Mjk1IDIuODQ2NTYgMjYuMTcyMiAzLjQwMDIzIDI3LjI1MjMgMy40MDAyM0gyOC42NDAzQzI5LjA1NjEgMy40MDAyMyAyOS4zMDQ2IDMuNzQ0ODYgMjkuMzA0NiA0LjEwNjQ0QzI5LjMwNDYgNC4zNDM3MyAyOS4yMDIgNC44MzUyNiAyOC41MjY5IDQuODM1MjZIMjguMjk0N0wyMy44NDk5IDQuODIzOTZIMjMuMDM5OEMyMi4zNTM5IDQuODIzOTYgMjEuODczMyA0LjQxNzE4IDIxLjg3MzMgMy40NzM2N1YyLjgyMzk2QzIxLjg3MzMgMS44NDA5MSAyMi4yNDU5IDEuMjMwNzQgMjMuMDM5OCAxLjIzMDc0SDI0LjM1NzZDMjQuNDE3IDAuODEyNjU3IDI0LjQ1NDggMC41NDcxMjEgMjQuNTA4OCAwLjE1MTY0SDIyLjg2N0gyMi43MTA0QzIxLjM2NTYgMC4xNTE2NCAyMC40MzY3IDEuMDk1MTQgMjAuNDA0MyAyLjczOTIxVjIuODAxMzZWMy40NzM2N0MyMC40MzY3IDUuMTE3NzQgMjEuMzY1NiA1LjkwMzA1IDIyLjcxMDQgNS45MDMwNUgyMi44NjdIMjQuMDIyN0wyNi40MzE0IDUuOTA4N0gyNy44NjhIMjguNDE4OVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cIiM3NDc1ODNcIlxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZz5cbiAgICAgICAgICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgICAgICAgICAgPGNsaXBQYXRoIGlkPVwiY2xpcDBfMTkxNThfMjczMDNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHdpZHRoPVwiNDNcIiBoZWlnaHQ9XCIxNVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9jbGlwUGF0aD5cbiAgICAgICAgICAgICAgICAgICAgPC9kZWZzPlxuICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJyZXN1bHQtb3ZlcmxheV9fYW1vdW50XCI+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgcm93LnZhbHVlIHwgZXhjaGFuZ2Vfcm91bmRcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAge3sgY3VycmVudEN1cnJlbmN5KCk/LmNvZGUgfX1cbiAgICAgICAgICAgIDwvc3Ryb25nPlxuICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgIDwhLS0gTG95YWx0eSBicmVha2Rvd24gc3ViLWl0ZW1zIC0tPlxuICAgICAgICAgIEBpZiAocm93LmxveWFsdHlTdWJJdGVtcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX2xveWFsdHktYnJlYWtkb3duXCI+XG4gICAgICAgICAgICAgIEBmb3IgKHN1Ykl0ZW0gb2Ygcm93LmxveWFsdHlTdWJJdGVtczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1vdmVybGF5X19sb3lhbHR5LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX2xveWFsdHktbGFiZWxcIj57e1xuICAgICAgICAgICAgICAgICAgICBzdWJJdGVtLmxhYmVsXG4gICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX2xveWFsdHktdmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAgICAgICBzdWJJdGVtLnZhbHVlIHwgZXhjaGFuZ2Vfcm91bmRcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAge3sgY3VycmVudEN1cnJlbmN5KCk/LmNvZGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzPVwicmVzdWx0LW92ZXJsYXlfX2JhZGdlXCJcbiAgICAgICAgICAgIFtjbGFzcy5yZXN1bHQtb3ZlcmxheV9fYmFkZ2UtLWluc3RhbnRdPVwicm93Lmluc3RhbnRcIlxuICAgICAgICAgICAgW2NsYXNzLnJlc3VsdC1vdmVybGF5X19iYWRnZS0tZGF5c109XCIhcm93Lmluc3RhbnRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IHJvdy5iYWRnZUtleSB9fVxuICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgIDwhLS0gTG95YWx0eSBub3RlIC0tPlxuICAgICAgICAgIEBpZiAocm93Lmhhc0xveWFsdHlOb3RlICYmIHJvdy5sb3lhbHR5U3ViSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1vdmVybGF5X19sb3lhbHR5LW5vdGVcIj5cbiAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgZD1cIk00LjE1ODIgMjEuMTc3N0MzLjYwNDgyIDIxLjE3NzcgMy4xMjk1NiAyMS4wNjA1IDIuNzMyNDIgMjAuODI2MkMyLjMzNTI5IDIwLjU5MTggMi4wMjkzIDIwLjI3MjggMS44MTQ0NSAxOS44NjkxQzEuNTk5NjEgMTkuNDcyIDEuNDkyMTkgMTkuMDI2IDEuNDkyMTkgMTguNTMxMkMxLjQ5MjE5IDE4LjA1NiAxLjYxOTE0IDE3LjYwMDMgMS44NzMwNSAxNy4xNjQxTDkuNDUxMTcgMy45NjA5NEM5LjY5ODU3IDMuNTE4MjMgMTAuMDI3MyAzLjE4NjIgMTAuNDM3NSAyLjk2NDg0QzEwLjg0NzcgMi43MzY5OCAxMS4yNzczIDIuNjIzMDUgMTEuNzI2NiAyLjYyMzA1QzEyLjE3NTggMi42MjMwNSAxMi42MDIyIDIuNzM2OTggMTMuMDA1OSAyLjk2NDg0QzEzLjQxNiAzLjE4NjIgMTMuNzQ4IDMuNTE4MjMgMTQuMDAyIDMuOTYwOTRMMjEuNTgwMSAxNy4xNjQxQzIxLjcwMzggMTcuMzc4OSAyMS43OTgyIDE3LjYwMzUgMjEuODYzMyAxNy44Mzc5QzIxLjkyODQgMTguMDcyMyAyMS45NjA5IDE4LjMwMzQgMjEuOTYwOSAxOC41MzEyQzIxLjk2MDkgMTkuMDI2IDIxLjg1MzUgMTkuNDcyIDIxLjYzODcgMTkuODY5MUMyMS40MjM4IDIwLjI3MjggMjEuMTE3OCAyMC41OTE4IDIwLjcyMDcgMjAuODI2MkMyMC4zMjM2IDIxLjA2MDUgMTkuODQ4MyAyMS4xNzc3IDE5LjI5NDkgMjEuMTc3N0g0LjE1ODJaTTQuMTY3OTcgMTkuNjQ0NUgxOS4yNzU0QzE5LjYxMzkgMTkuNjQ0NSAxOS44ODA5IDE5LjUzMDYgMjAuMDc2MiAxOS4zMDI3QzIwLjI3OCAxOS4wODE0IDIwLjM3ODkgMTguODIxIDIwLjM3ODkgMTguNTIxNUMyMC4zNzg5IDE4LjMxMzIgMjAuMzI2OCAxOC4xMDgxIDIwLjIyMjcgMTcuOTA2MkwxMi42NTQzIDQuNzAzMTJDMTIuNTUwMSA0LjUyMDgzIDEyLjQxMzQgNC4zOTA2MiAxMi4yNDQxIDQuMzEyNUMxMi4wODE0IDQuMjI3ODYgMTEuOTA4OSA0LjE4NTU1IDExLjcyNjYgNC4xODU1NUMxMS41NDQzIDQuMTg1NTUgMTEuMzY4NSA0LjIyNzg2IDExLjE5OTIgNC4zMTI1QzExLjAyOTkgNC4zOTA2MiAxMC44OTMyIDQuNTIwODMgMTAuNzg5MSA0LjcwMzEyTDMuMjIwNyAxNy44OTY1QzMuMTY4NjIgMTguMDAwNyAzLjEyOTU2IDE4LjEwODEgMy4xMDM1MiAxOC4yMTg4QzMuMDgzOTggMTguMzI5NCAzLjA3NDIyIDE4LjQzMDMgMy4wNzQyMiAxOC41MjE1QzMuMDc0MjIgMTguODIxIDMuMTcxODggMTkuMDgxNCAzLjM2NzE5IDE5LjMwMjdDMy41NjI1IDE5LjUzMDYgMy44Mjk0MyAxOS42NDQ1IDQuMTY3OTcgMTkuNjQ0NVpNMTEuNzI2NiAxNC41ODU5QzExLjIyNTMgMTQuNTg1OSAxMC45NjgxIDE0LjMyODggMTAuOTU1MSAxMy44MTQ1TDEwLjgyODEgOC42NDg0NEMxMC44MjE2IDguNDAxMDQgMTAuODk5NyA4LjE5NTk2IDExLjA2MjUgOC4wMzMyQzExLjIzMTggNy44NzA0NCAxMS40NDk5IDcuNzg5MDYgMTEuNzE2OCA3Ljc4OTA2QzExLjk3NzIgNy43ODkwNiAxMi4xOTIxIDcuODczNyAxMi4zNjEzIDguMDQyOTdDMTIuNTM3MSA4LjIwNTczIDEyLjYyMTcgOC40MTA4MSAxMi42MTUyIDguNjU4MkwxMi40Njg4IDEzLjgxNDVDMTIuNDYyMiAxNC4zMjg4IDEyLjIxNDggMTQuNTg1OSAxMS43MjY2IDE0LjU4NTlaTTExLjcyNjYgMTcuNzU5OEMxMS40NDAxIDE3Ljc1OTggMTEuMTkyNyAxNy42NjIxIDEwLjk4NDQgMTcuNDY2OEMxMC43NzYgMTcuMjY1IDEwLjY3MTkgMTcuMDI0MSAxMC42NzE5IDE2Ljc0NDFDMTAuNjcxOSAxNi40NjQyIDEwLjc3NiAxNi4yMjY2IDEwLjk4NDQgMTYuMDMxMkMxMS4xOTI3IDE1LjgyOTQgMTEuNDQwMSAxNS43Mjg1IDExLjcyNjYgMTUuNzI4NUMxMi4wMTMgMTUuNzI4NSAxMi4yNjA0IDE1LjgyNjIgMTIuNDY4OCAxNi4wMjE1QzEyLjY3NzEgMTYuMjE2OCAxMi43ODEyIDE2LjQ1NzcgMTIuNzgxMiAxNi43NDQxQzEyLjc4MTIgMTcuMDMwNiAxMi42NzM4IDE3LjI3MTUgMTIuNDU5IDE3LjQ2NjhDMTIuMjUwNyAxNy42NjIxIDEyLjAwNjUgMTcuNzU5OCAxMS43MjY2IDE3Ljc1OThaXCJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMEI1NEMyXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgPHNwYW4+TG95YWx0eSBwb2ludHMgd2lsbCBiZSByZWZ1bmRlZCBpbnN0YW50bHkgdG8geW91ciBhY2NvdW50PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8YnV0dG9uXG4gICAgICBjbGFzcz1cImJ0biBidG4tLXByaW1hcnkgcmVzdWx0LW92ZXJsYXlfX2RvbmVcIlxuICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwib25Eb25lKClcIlxuICAgID5cbiAgICAgIHt7ICdHT1QgSVQhJyB9fVxuICAgIDwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|