@almatar/smart-booking-dashboard 0.0.2-alpha.6 → 0.0.2-alpha.8

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.
Files changed (36) hide show
  1. package/esm2022/lib/components/booking-input/booking-input.component.mjs +16 -4
  2. package/esm2022/lib/components/flight-itinerary-card/flight-itinerary-card.component.mjs +3 -3
  3. package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-result-overlay/almatar-hotel-auto-cancellation-result-overlay.component.mjs +16 -19
  4. package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/almatar-hotel-auto-cancellation-select-rooms.component.mjs +3 -3
  5. package/esm2022/lib/components/hotel-cancel/components/almatar-hotel-auto-cancellation-select-rooms/components/almatar-hotel-auto-cancellation-non-refundable-room/almatar-hotel-auto-cancellation-non-refundable-room.component.mjs +4 -3
  6. package/esm2022/lib/components/reissue-dialog/reissue-dialog.component.mjs +3 -3
  7. package/esm2022/lib/components/reissue-dialog/steps/reissue-date-step/reissue-date-step.component.mjs +2 -2
  8. package/esm2022/lib/components/reissue-dialog/steps/reissue-legs-step/reissue-legs-step.component.mjs +3 -3
  9. package/esm2022/lib/components/reissue-dialog/steps/reissue-notice/reissue-notice.component.mjs +2 -2
  10. package/esm2022/lib/components/reissue-dialog/steps/reissue-route-step/reissue-route-step.component.mjs +3 -3
  11. package/esm2022/lib/components/reissue-dialog/steps/reissue-service-step/reissue-service-step.component.mjs +2 -2
  12. package/esm2022/lib/components/reissue-dialog/steps/reissue-upgrade-confirm-step/reissue-upgrade-confirm-step.component.mjs +3 -3
  13. package/esm2022/lib/components/reissue-dialog/steps/reissue-upgrade-step/reissue-upgrade-step.component.mjs +3 -5
  14. package/esm2022/lib/config/dashboard.config.mjs +6 -1
  15. package/esm2022/lib/pages/smart-booking-dashboard/smart-booking-dashboard.component.mjs +8 -3
  16. package/esm2022/lib/services/booking.service.mjs +3 -3
  17. package/esm2022/lib/services/brand.service.mjs +29 -0
  18. package/esm2022/lib/services/reissue.service.mjs +3 -3
  19. package/esm2022/lib/shared/services/api.service.mjs +3 -3
  20. package/esm2022/lib/shared/services/sbd-http.mjs +27 -0
  21. package/esm2022/public-api.mjs +2 -1
  22. package/fesm2022/almatar-smart-booking-dashboard.mjs +117 -51
  23. package/fesm2022/almatar-smart-booking-dashboard.mjs.map +1 -1
  24. package/lib/components/action-dialog/action-dialog.component.d.ts +1 -1
  25. package/lib/components/booking-input/booking-input.component.d.ts +7 -1
  26. package/lib/components/cancel-dialog/cancel-dialog.component.d.ts +4 -4
  27. package/lib/components/hotel-cancel/almatar-hotel-auto-cancellation.component.d.ts +1 -1
  28. package/lib/components/hotel-cancel/components/hotel-content/hotel-content.component.d.ts +1 -1
  29. package/lib/components/reissue-dialog/steps/reissue-notice/reissue-notice.component.d.ts +1 -1
  30. package/lib/components/result-panel/result-panel.component.d.ts +1 -1
  31. package/lib/config/dashboard.config.d.ts +12 -0
  32. package/lib/pages/smart-booking-dashboard/smart-booking-dashboard.component.d.ts +3 -1
  33. package/lib/services/brand.service.d.ts +14 -0
  34. package/lib/shared/services/sbd-http.d.ts +8 -0
  35. package/package.json +1 -1
  36. package/public-api.d.ts +2 -1
@@ -75,7 +75,7 @@ export class AlmatarHotelAutoCancellationSelectRoomsComponent {
75
75
  };
76
76
  }
77
77
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlmatarHotelAutoCancellationSelectRoomsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
78
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AlmatarHotelAutoCancellationSelectRoomsComponent, isStandalone: true, selector: "almatar-hotel-auto-cancellation-select-rooms", inputs: { packages: { classPropertyName: "packages", publicName: "packages", isSignal: true, isRequired: true, transformFunction: null }, hotelInfo: { classPropertyName: "hotelInfo", publicName: "hotelInfo", isSignal: true, isRequired: true, transformFunction: null }, bookingId: { classPropertyName: "bookingId", publicName: "bookingId", isSignal: true, isRequired: false, transformFunction: null }, hotelId: { classPropertyName: "hotelId", publicName: "hotelId", isSignal: true, isRequired: false, transformFunction: null }, currencyCode: { classPropertyName: "currencyCode", publicName: "currencyCode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { continueToCancel: "continueToCancel", closeModal: "closeModal", nonRefundableSubmitSuccess: "nonRefundableSubmitSuccess", chatWithAgent: "chatWithAgent" }, ngImport: i0, template: "<div class=\"select-rooms\">\n <div class=\"select-rooms__content\">\n @if (hotelInfo(); as hotel) {\n <div class=\"hotel-info-card\">\n <h3 class=\"hotel-info-card__name\">{{ hotel.hotelName }}</h3>\n\n <div class=\"hotel-info-card__content\">\n @if (hotel.hotelImage) {\n <div class=\"hotel-info-card__image\">\n <img [src]=\"hotel.hotelImage\" [alt]=\"hotel.hotelName\" />\n </div>\n }\n\n <div class=\"hotel-info-card__dates\">\n <div class=\"date-box\">\n <span class=\"date-box__label\">CHECK-IN</span>\n <span class=\"date-box__day\">{{\n formatDate(hotel.checkIn).day\n }}</span>\n <span class=\"date-box__month\">{{\n formatDate(hotel.checkIn).month\n }}</span>\n <span class=\"date-box__day-name\">{{\n formatDate(hotel.checkIn).dayName\n }}</span>\n <span class=\"date-box__time\"\n >From\n {{ hotel?.checkInTime }}</span\n >\n </div>\n\n <div class=\"date-box\">\n <span class=\"date-box__label\">CHECK-OUT</span>\n <span class=\"date-box__day\">{{\n formatDate(hotel.checkOut).day\n }}</span>\n <span class=\"date-box__month\">{{\n formatDate(hotel.checkOut).month\n }}</span>\n <span class=\"date-box__day-name\">{{\n formatDate(hotel.checkOut).dayName\n }}</span>\n <span class=\"date-box__time\"\n >Until\n {{ hotel?.checkOutTime }}</span\n >\n </div>\n </div>\n\n <div class=\"hotel-info-card__stats\">\n <div class=\"stat-box\">\n <span class=\"stat-box__label\">Rooms</span>\n <span class=\"stat-box__value\">{{ totalRoomsCount() }}</span>\n </div>\n <div class=\"stat-box\">\n <span class=\"stat-box__label\">NIGHTS</span>\n <span class=\"stat-box__value\">{{ hotel.nights }}</span>\n </div>\n </div>\n </div>\n </div>\n }\n\n <div class=\"select-rooms__notice select-rooms__notice--default\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n />\n <path\n d=\"M12 11v5.5M12 8v.01\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n />\n </svg>\n <span>\n Some rooms in each package, share one booking reference, so they will be cancelled together.</span\n >\n </div>\n\n <div class=\"rooms-list\">\n @for (package of displayPackages(); track $index) {\n @if (!package.manualRefundRequest && !package.isCancelled) {\n <almatar-hotel-auto-cancellation-refundable-room\n [package]=\"package\"\n [hideCheckbox]=\"isSinglePackage()\"\n (togglePackage)=\"togglePackage($event)\"\n />\n } @else {\n <almatar-hotel-auto-cancellation-non-refundable-room\n [package]=\"package\"\n [allPackages]=\"displayPackages()\"\n [hotelInfo]=\"hotelInfo()\"\n [hotelId]=\"hotelId()\"\n [currencyCode]=\"currencyCode()\"\n [allPackagesNonRefundable]=\"allPackagesNonRefundable()\"\n (closeModal)=\"onClose()\"\n (nonRefundableSubmitSuccess)=\"onNonRefundableSubmitSuccess($event)\"\n />\n }\n }\n </div>\n\n @if (allPackagesNonRefundable()) {\n <div class=\"select-rooms__notice select-rooms__notice--warning\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <!-- warning triangle icon -->\n <path\n d=\"M12 9v4M12 17h.01M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <span>Sorry, we couldn't process your refund right now. Please chat with our Customer Service team for help.</span>\n </div>\n }\n </div>\n\n <div class=\"select-rooms__footer\">\n @if (allPackagesNonRefundable()) {\n <button\n class=\"main_btn main_btn--chat-with-us\"\n type=\"button\"\n (click)=\"onChatWithAgent()\"\n >\n Chat with customer service\n </button>\n } @else {\n @if (!hasSelectedPackages()) {\n <p class=\"select-rooms__hint\">\n Select at least one room to continue\n </p>\n }\n <button\n class=\"main_btn\"\n type=\"button\"\n [disabled]=\"!hasSelectedPackages()\"\n (click)=\"onContinue()\"\n >\n Continue to cancel\n </button>\n }\n </div>\n</div>\n", styles: [".select-rooms{display:flex;flex-direction:column;height:100%;background-color:#fff}.select-rooms__header{padding:16px;border-bottom:1px solid var(--almatar-neutral-border-default)}.select-rooms__notice{display:flex;align-items:center;gap:8px;padding:12px;border-radius:8px;font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:400;margin:12px 0}.select-rooms__notice svg{flex-shrink:0;width:18px;height:18px;margin-top:1px}.select-rooms__notice--info{background:var(--almatar-info-surface, #eaf2ff);border:1px solid var(--almatar-info-border, #b9d6ff);color:var(--almatar-info-text, #1a56db);border-radius:12px}.select-rooms__notice--info svg{color:var(--almatar-info-icon, #1a56db)}.select-rooms__notice--default{background:#f7f7f8;border:1px solid rgb(217,217,222);color:#1b1a1f;border-radius:12px}.select-rooms__notice--default svg{color:#1b1a1f}.select-rooms__notice--warning{background:#faedcc;border:1px solid rgb(137,99,42);color:#89632a;border-radius:12px}.select-rooms__notice--warning svg{color:#89632a}.select-rooms__title{font-size:calc(18 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-semibold);color:var(--almatar-neutral-text-primary-static);margin-bottom:4px}.select-rooms__subtitle{font-size:calc(14 * var(--almatar-font-size-ratio, 1) * 1px);color:var(--almatar-neutral-text-secondary-static)}.select-rooms__content{flex:1;overflow-y:auto;padding:12px}.select-rooms__footer{padding:16px;background:var(--almatar-neutral-surface-card);border-top:1px solid rgb(217,217,222)}.select-rooms__hint{text-align:center;font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);color:var(--almatar-neutral-text-secondary-static);margin-bottom:12px}.hotel-info-card{background:var(--almatar-neutral-surface-card);border-radius:12px;padding:12px;margin-bottom:12px;border:1px solid rgb(217,217,222)}.hotel-info-card__name{font-size:calc(18 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);color:var(--almatar-neutral-text-primary-static);margin-bottom:12px}.hotel-info-card__content{display:flex;align-items:stretch;gap:0}.hotel-info-card__image{width:120px;overflow:hidden;flex-shrink:0;padding-inline-end:12px;border-inline-end:1px solid rgb(217,217,222)}.hotel-info-card__image img{border-radius:5px;width:100%;height:100%;object-fit:cover;max-height:100px}.hotel-info-card__dates{display:flex;flex:1;border-inline-start:1px solid var(--almatar-neutral-border-default)}.hotel-info-card__stats{display:flex;flex-direction:column;justify-content:center;border-inline-start:1px solid var(--almatar-neutral-border-default);padding-inline-start:12px;margin-inline-start:0;min-width:70px}.date-box{display:flex;flex-direction:column;align-items:center;text-align:center;flex:1;padding:0 12px;border-inline-end:1px solid rgb(217,217,222);gap:4px}.date-box__label{font-size:calc(10 * var(--almatar-font-size-ratio, 1) * 1px);color:var(--almatar-neutral-text-secondary-static);text-transform:uppercase;letter-spacing:.5px}.date-box__day{font-size:calc(18 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);color:#491d95;line-height:1.2}.date-box__month{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-regular);color:var(--almatar-neutral-text-primary-static)}.date-box__day-name{font-size:calc(10 * var(--almatar-font-size-ratio, 1) * 1px);color:#747583}.date-box__time{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-regular);color:var(--almatar-neutral-text-primary-static)}.stat-box{display:flex;flex-direction:column;align-items:center;text-align:center;padding:4px 0;border-bottom:1px solid rgb(217,217,222)}.stat-box:last-child{border-bottom:none}.stat-box__label{font-size:calc(11 * var(--almatar-font-size-ratio, 1) * 1px);color:var(--almatar-neutral-text-secondary-static);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.stat-box__value{font-size:calc(18 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);color:var(--almatar-neutral-text-primary-static);line-height:1.3;color:#491d95}.rooms-list{display:flex;flex-direction:column;gap:12px}.main_btn{font-weight:var(--almatar-font-weight-medium);padding:17.5px;border-radius:6px;display:block;width:100%}.main_btn:disabled{opacity:.5;cursor:not-allowed}.main_btn--chat-with-us{background-color:#fff;border:1px solid rgb(217,217,222);color:#1b1a1f}button[disabled],input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{background-color:#747583;color:#b8b9c1;border-radius:12px}.info-banner{display:flex;gap:8px;border:1px solid rgb(11,84,194);border-radius:12px;padding:14px;align-items:flex-start;transition:all .3s cubic-bezier(.4,0,.2,1)}.info-banner__icon{color:#0b54c2;flex-shrink:0;width:20px;height:20px}.info-banner__content{flex:1}.info-banner__text{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);color:#0b54c2;margin:0 0 4px;font-weight:var(--almatar-font-weight-regular);line-height:16px}.info-banner__subtext{font-size:calc(14 * var(--almatar-font-size-ratio, 1) * 1px);color:#1b1a1f;margin:0;line-height:1.4}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AlmatarHotelAutoCancellationRefundableRoomComponent, selector: "almatar-hotel-auto-cancellation-refundable-room", inputs: ["package", "hideCheckbox"], outputs: ["togglePackage"] }, { kind: "component", type: AlmatarHotelAutoCancellationNonRefundableRoomComponent, selector: "almatar-hotel-auto-cancellation-non-refundable-room", inputs: ["package", "allPackages", "hotelInfo", "hotelId", "currencyCode", "allPackagesNonRefundable"], outputs: ["closeModal", "nonRefundableSubmitSuccess"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
78
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AlmatarHotelAutoCancellationSelectRoomsComponent, isStandalone: true, selector: "almatar-hotel-auto-cancellation-select-rooms", inputs: { packages: { classPropertyName: "packages", publicName: "packages", isSignal: true, isRequired: true, transformFunction: null }, hotelInfo: { classPropertyName: "hotelInfo", publicName: "hotelInfo", isSignal: true, isRequired: true, transformFunction: null }, bookingId: { classPropertyName: "bookingId", publicName: "bookingId", isSignal: true, isRequired: false, transformFunction: null }, hotelId: { classPropertyName: "hotelId", publicName: "hotelId", isSignal: true, isRequired: false, transformFunction: null }, currencyCode: { classPropertyName: "currencyCode", publicName: "currencyCode", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { continueToCancel: "continueToCancel", closeModal: "closeModal", nonRefundableSubmitSuccess: "nonRefundableSubmitSuccess", chatWithAgent: "chatWithAgent" }, ngImport: i0, template: "<div class=\"select-rooms\">\n <div class=\"select-rooms__content\">\n @if (hotelInfo(); as hotel) {\n <div class=\"hotel-info-card\">\n <h3 class=\"hotel-info-card__name\">{{ hotel.hotelName }}</h3>\n\n <div class=\"hotel-info-card__content\">\n @if (hotel.hotelImage) {\n <div class=\"hotel-info-card__image\">\n <img [src]=\"hotel.hotelImage\" [alt]=\"hotel.hotelName\" />\n </div>\n }\n\n <div class=\"hotel-info-card__dates\">\n <div class=\"date-box\">\n <span class=\"date-box__label\">CHECK-IN</span>\n <span class=\"date-box__day\">{{\n formatDate(hotel.checkIn).day\n }}</span>\n <span class=\"date-box__month\">{{\n formatDate(hotel.checkIn).month\n }}</span>\n <span class=\"date-box__day-name\">{{\n formatDate(hotel.checkIn).dayName\n }}</span>\n <span class=\"date-box__time\"\n >From\n {{ hotel?.checkInTime }}</span\n >\n </div>\n\n <div class=\"date-box\">\n <span class=\"date-box__label\">CHECK-OUT</span>\n <span class=\"date-box__day\">{{\n formatDate(hotel.checkOut).day\n }}</span>\n <span class=\"date-box__month\">{{\n formatDate(hotel.checkOut).month\n }}</span>\n <span class=\"date-box__day-name\">{{\n formatDate(hotel.checkOut).dayName\n }}</span>\n <span class=\"date-box__time\"\n >Until\n {{ hotel?.checkOutTime }}</span\n >\n </div>\n </div>\n\n <div class=\"hotel-info-card__stats\">\n <div class=\"stat-box\">\n <span class=\"stat-box__label\">Rooms</span>\n <span class=\"stat-box__value\">{{ totalRoomsCount() }}</span>\n </div>\n <div class=\"stat-box\">\n <span class=\"stat-box__label\">NIGHTS</span>\n <span class=\"stat-box__value\">{{ hotel.nights }}</span>\n </div>\n </div>\n </div>\n </div>\n }\n\n <div class=\"select-rooms__notice select-rooms__notice--default\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n />\n <path\n d=\"M12 11v5.5M12 8v.01\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n />\n </svg>\n <span>\n Some rooms in each package, share one booking reference, so they will be cancelled together.</span\n >\n </div>\n\n <div class=\"rooms-list\">\n @for (package of displayPackages(); track $index) {\n @if (!package.manualRefundRequest && !package.isCancelled) {\n <almatar-hotel-auto-cancellation-refundable-room\n [package]=\"package\"\n [hideCheckbox]=\"isSinglePackage()\"\n (togglePackage)=\"togglePackage($event)\"\n />\n } @else {\n <almatar-hotel-auto-cancellation-non-refundable-room\n [package]=\"package\"\n [allPackages]=\"displayPackages()\"\n [hotelInfo]=\"hotelInfo()\"\n [hotelId]=\"hotelId()\"\n [currencyCode]=\"currencyCode()\"\n [allPackagesNonRefundable]=\"allPackagesNonRefundable()\"\n (closeModal)=\"onClose()\"\n (nonRefundableSubmitSuccess)=\"onNonRefundableSubmitSuccess($event)\"\n />\n }\n }\n </div>\n\n @if (allPackagesNonRefundable()) {\n <div class=\"select-rooms__notice select-rooms__notice--warning\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <!-- warning triangle icon -->\n <path\n d=\"M12 9v4M12 17h.01M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <span>Sorry, we couldn't process your refund right now. Please chat with our Customer Service team for help.</span>\n </div>\n }\n </div>\n\n <div class=\"select-rooms__footer\">\n @if (allPackagesNonRefundable()) {\n \n } @else {\n @if (!hasSelectedPackages()) {\n <p class=\"select-rooms__hint\">\n Select at least one room to continue\n </p>\n }\n <button\n class=\"main_btn\"\n type=\"button\"\n [disabled]=\"!hasSelectedPackages()\"\n (click)=\"onContinue()\"\n >\n Continue to cancel\n </button>\n }\n </div>\n</div>\n", styles: [".select-rooms{display:flex;flex-direction:column;height:100%;background-color:#fff}.select-rooms__header{padding:16px;border-bottom:1px solid var(--almatar-neutral-border-default)}.select-rooms__notice{display:flex;align-items:center;gap:8px;padding:12px;border-radius:8px;font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:400;margin:12px 0}.select-rooms__notice svg{flex-shrink:0;width:18px;height:18px;margin-top:1px}.select-rooms__notice--info{background:var(--almatar-info-surface, #eaf2ff);border:1px solid var(--almatar-info-border, #b9d6ff);color:var(--almatar-info-text, #1a56db);border-radius:12px}.select-rooms__notice--info svg{color:var(--almatar-info-icon, #1a56db)}.select-rooms__notice--default{background:#f7f7f8;border:1px solid rgb(217,217,222);color:#1b1a1f;border-radius:12px}.select-rooms__notice--default svg{color:#1b1a1f}.select-rooms__notice--warning{background:#faedcc;border:1px solid rgb(137,99,42);color:#89632a;border-radius:12px}.select-rooms__notice--warning svg{color:#89632a}.select-rooms__title{font-size:calc(18 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-semibold);color:var(--almatar-neutral-text-primary-static);margin-bottom:4px}.select-rooms__subtitle{font-size:calc(14 * var(--almatar-font-size-ratio, 1) * 1px);color:var(--almatar-neutral-text-secondary-static)}.select-rooms__content{flex:1;overflow-y:auto;padding:12px}.select-rooms__footer{padding:16px;background:var(--almatar-neutral-surface-card);border-top:1px solid rgb(217,217,222)}.select-rooms__hint{text-align:center;font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);color:var(--almatar-neutral-text-secondary-static);margin-bottom:12px}.hotel-info-card{background:var(--almatar-neutral-surface-card);border-radius:12px;padding:12px;margin-bottom:12px;border:1px solid rgb(217,217,222)}.hotel-info-card__name{font-size:calc(18 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);color:var(--almatar-neutral-text-primary-static);margin-bottom:12px}.hotel-info-card__content{display:flex;align-items:stretch;gap:0}.hotel-info-card__image{width:120px;overflow:hidden;flex-shrink:0;padding-inline-end:12px;border-inline-end:1px solid rgb(217,217,222)}.hotel-info-card__image img{border-radius:5px;width:100%;height:100%;object-fit:cover;max-height:100px}.hotel-info-card__dates{display:flex;flex:1;border-inline-start:1px solid var(--almatar-neutral-border-default)}.hotel-info-card__stats{display:flex;flex-direction:column;justify-content:center;border-inline-start:1px solid var(--almatar-neutral-border-default);padding-inline-start:12px;margin-inline-start:0;min-width:70px}.date-box{display:flex;flex-direction:column;align-items:center;text-align:center;flex:1;padding:0 12px;border-inline-end:1px solid rgb(217,217,222);gap:4px}.date-box__label{font-size:calc(10 * var(--almatar-font-size-ratio, 1) * 1px);color:var(--almatar-neutral-text-secondary-static);text-transform:uppercase;letter-spacing:.5px}.date-box__day{font-size:calc(18 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);color:#491d95;line-height:1.2}.date-box__month{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-regular);color:var(--almatar-neutral-text-primary-static)}.date-box__day-name{font-size:calc(10 * var(--almatar-font-size-ratio, 1) * 1px);color:#747583}.date-box__time{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-regular);color:var(--almatar-neutral-text-primary-static)}.stat-box{display:flex;flex-direction:column;align-items:center;text-align:center;padding:4px 0;border-bottom:1px solid rgb(217,217,222)}.stat-box:last-child{border-bottom:none}.stat-box__label{font-size:calc(11 * var(--almatar-font-size-ratio, 1) * 1px);color:var(--almatar-neutral-text-secondary-static);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.stat-box__value{font-size:calc(18 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);color:var(--almatar-neutral-text-primary-static);line-height:1.3;color:#491d95}.rooms-list{display:flex;flex-direction:column;gap:12px}.main_btn{font-weight:var(--almatar-font-weight-medium);padding:17.5px;border-radius:6px;display:block;width:100%}.main_btn:disabled{opacity:.5;cursor:not-allowed}.main_btn--chat-with-us{background-color:#fff;border:1px solid rgb(217,217,222);color:#1b1a1f}button[disabled],input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{background-color:#747583;color:#b8b9c1;border-radius:12px}.info-banner{display:flex;gap:8px;border:1px solid rgb(11,84,194);border-radius:12px;padding:14px;align-items:flex-start;transition:all .3s cubic-bezier(.4,0,.2,1)}.info-banner__icon{color:#0b54c2;flex-shrink:0;width:20px;height:20px}.info-banner__content{flex:1}.info-banner__text{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);color:#0b54c2;margin:0 0 4px;font-weight:var(--almatar-font-weight-regular);line-height:16px}.info-banner__subtext{font-size:calc(14 * var(--almatar-font-size-ratio, 1) * 1px);color:#1b1a1f;margin:0;line-height:1.4}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: AlmatarHotelAutoCancellationRefundableRoomComponent, selector: "almatar-hotel-auto-cancellation-refundable-room", inputs: ["package", "hideCheckbox"], outputs: ["togglePackage"] }, { kind: "component", type: AlmatarHotelAutoCancellationNonRefundableRoomComponent, selector: "almatar-hotel-auto-cancellation-non-refundable-room", inputs: ["package", "allPackages", "hotelInfo", "hotelId", "currencyCode", "allPackagesNonRefundable"], outputs: ["closeModal", "nonRefundableSubmitSuccess"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
79
79
  }
80
80
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AlmatarHotelAutoCancellationSelectRoomsComponent, decorators: [{
81
81
  type: Component,
@@ -83,6 +83,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
83
83
  CommonModule,
84
84
  AlmatarHotelAutoCancellationRefundableRoomComponent,
85
85
  AlmatarHotelAutoCancellationNonRefundableRoomComponent,
86
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"select-rooms\">\n <div class=\"select-rooms__content\">\n @if (hotelInfo(); as hotel) {\n <div class=\"hotel-info-card\">\n <h3 class=\"hotel-info-card__name\">{{ hotel.hotelName }}</h3>\n\n <div class=\"hotel-info-card__content\">\n @if (hotel.hotelImage) {\n <div class=\"hotel-info-card__image\">\n <img [src]=\"hotel.hotelImage\" [alt]=\"hotel.hotelName\" />\n </div>\n }\n\n <div class=\"hotel-info-card__dates\">\n <div class=\"date-box\">\n <span class=\"date-box__label\">CHECK-IN</span>\n <span class=\"date-box__day\">{{\n formatDate(hotel.checkIn).day\n }}</span>\n <span class=\"date-box__month\">{{\n formatDate(hotel.checkIn).month\n }}</span>\n <span class=\"date-box__day-name\">{{\n formatDate(hotel.checkIn).dayName\n }}</span>\n <span class=\"date-box__time\"\n >From\n {{ hotel?.checkInTime }}</span\n >\n </div>\n\n <div class=\"date-box\">\n <span class=\"date-box__label\">CHECK-OUT</span>\n <span class=\"date-box__day\">{{\n formatDate(hotel.checkOut).day\n }}</span>\n <span class=\"date-box__month\">{{\n formatDate(hotel.checkOut).month\n }}</span>\n <span class=\"date-box__day-name\">{{\n formatDate(hotel.checkOut).dayName\n }}</span>\n <span class=\"date-box__time\"\n >Until\n {{ hotel?.checkOutTime }}</span\n >\n </div>\n </div>\n\n <div class=\"hotel-info-card__stats\">\n <div class=\"stat-box\">\n <span class=\"stat-box__label\">Rooms</span>\n <span class=\"stat-box__value\">{{ totalRoomsCount() }}</span>\n </div>\n <div class=\"stat-box\">\n <span class=\"stat-box__label\">NIGHTS</span>\n <span class=\"stat-box__value\">{{ hotel.nights }}</span>\n </div>\n </div>\n </div>\n </div>\n }\n\n <div class=\"select-rooms__notice select-rooms__notice--default\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n />\n <path\n d=\"M12 11v5.5M12 8v.01\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n />\n </svg>\n <span>\n Some rooms in each package, share one booking reference, so they will be cancelled together.</span\n >\n </div>\n\n <div class=\"rooms-list\">\n @for (package of displayPackages(); track $index) {\n @if (!package.manualRefundRequest && !package.isCancelled) {\n <almatar-hotel-auto-cancellation-refundable-room\n [package]=\"package\"\n [hideCheckbox]=\"isSinglePackage()\"\n (togglePackage)=\"togglePackage($event)\"\n />\n } @else {\n <almatar-hotel-auto-cancellation-non-refundable-room\n [package]=\"package\"\n [allPackages]=\"displayPackages()\"\n [hotelInfo]=\"hotelInfo()\"\n [hotelId]=\"hotelId()\"\n [currencyCode]=\"currencyCode()\"\n [allPackagesNonRefundable]=\"allPackagesNonRefundable()\"\n (closeModal)=\"onClose()\"\n (nonRefundableSubmitSuccess)=\"onNonRefundableSubmitSuccess($event)\"\n />\n }\n }\n </div>\n\n @if (allPackagesNonRefundable()) {\n <div class=\"select-rooms__notice select-rooms__notice--warning\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <!-- warning triangle icon -->\n <path\n d=\"M12 9v4M12 17h.01M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <span>Sorry, we couldn't process your refund right now. Please chat with our Customer Service team for help.</span>\n </div>\n }\n </div>\n\n <div class=\"select-rooms__footer\">\n @if (allPackagesNonRefundable()) {\n <button\n class=\"main_btn main_btn--chat-with-us\"\n type=\"button\"\n (click)=\"onChatWithAgent()\"\n >\n Chat with customer service\n </button>\n } @else {\n @if (!hasSelectedPackages()) {\n <p class=\"select-rooms__hint\">\n Select at least one room to continue\n </p>\n }\n <button\n class=\"main_btn\"\n type=\"button\"\n [disabled]=\"!hasSelectedPackages()\"\n (click)=\"onContinue()\"\n >\n Continue to cancel\n </button>\n }\n </div>\n</div>\n", styles: [".select-rooms{display:flex;flex-direction:column;height:100%;background-color:#fff}.select-rooms__header{padding:16px;border-bottom:1px solid var(--almatar-neutral-border-default)}.select-rooms__notice{display:flex;align-items:center;gap:8px;padding:12px;border-radius:8px;font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:400;margin:12px 0}.select-rooms__notice svg{flex-shrink:0;width:18px;height:18px;margin-top:1px}.select-rooms__notice--info{background:var(--almatar-info-surface, #eaf2ff);border:1px solid var(--almatar-info-border, #b9d6ff);color:var(--almatar-info-text, #1a56db);border-radius:12px}.select-rooms__notice--info svg{color:var(--almatar-info-icon, #1a56db)}.select-rooms__notice--default{background:#f7f7f8;border:1px solid rgb(217,217,222);color:#1b1a1f;border-radius:12px}.select-rooms__notice--default svg{color:#1b1a1f}.select-rooms__notice--warning{background:#faedcc;border:1px solid rgb(137,99,42);color:#89632a;border-radius:12px}.select-rooms__notice--warning svg{color:#89632a}.select-rooms__title{font-size:calc(18 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-semibold);color:var(--almatar-neutral-text-primary-static);margin-bottom:4px}.select-rooms__subtitle{font-size:calc(14 * var(--almatar-font-size-ratio, 1) * 1px);color:var(--almatar-neutral-text-secondary-static)}.select-rooms__content{flex:1;overflow-y:auto;padding:12px}.select-rooms__footer{padding:16px;background:var(--almatar-neutral-surface-card);border-top:1px solid rgb(217,217,222)}.select-rooms__hint{text-align:center;font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);color:var(--almatar-neutral-text-secondary-static);margin-bottom:12px}.hotel-info-card{background:var(--almatar-neutral-surface-card);border-radius:12px;padding:12px;margin-bottom:12px;border:1px solid rgb(217,217,222)}.hotel-info-card__name{font-size:calc(18 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);color:var(--almatar-neutral-text-primary-static);margin-bottom:12px}.hotel-info-card__content{display:flex;align-items:stretch;gap:0}.hotel-info-card__image{width:120px;overflow:hidden;flex-shrink:0;padding-inline-end:12px;border-inline-end:1px solid rgb(217,217,222)}.hotel-info-card__image img{border-radius:5px;width:100%;height:100%;object-fit:cover;max-height:100px}.hotel-info-card__dates{display:flex;flex:1;border-inline-start:1px solid var(--almatar-neutral-border-default)}.hotel-info-card__stats{display:flex;flex-direction:column;justify-content:center;border-inline-start:1px solid var(--almatar-neutral-border-default);padding-inline-start:12px;margin-inline-start:0;min-width:70px}.date-box{display:flex;flex-direction:column;align-items:center;text-align:center;flex:1;padding:0 12px;border-inline-end:1px solid rgb(217,217,222);gap:4px}.date-box__label{font-size:calc(10 * var(--almatar-font-size-ratio, 1) * 1px);color:var(--almatar-neutral-text-secondary-static);text-transform:uppercase;letter-spacing:.5px}.date-box__day{font-size:calc(18 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);color:#491d95;line-height:1.2}.date-box__month{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-regular);color:var(--almatar-neutral-text-primary-static)}.date-box__day-name{font-size:calc(10 * var(--almatar-font-size-ratio, 1) * 1px);color:#747583}.date-box__time{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-regular);color:var(--almatar-neutral-text-primary-static)}.stat-box{display:flex;flex-direction:column;align-items:center;text-align:center;padding:4px 0;border-bottom:1px solid rgb(217,217,222)}.stat-box:last-child{border-bottom:none}.stat-box__label{font-size:calc(11 * var(--almatar-font-size-ratio, 1) * 1px);color:var(--almatar-neutral-text-secondary-static);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.stat-box__value{font-size:calc(18 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);color:var(--almatar-neutral-text-primary-static);line-height:1.3;color:#491d95}.rooms-list{display:flex;flex-direction:column;gap:12px}.main_btn{font-weight:var(--almatar-font-weight-medium);padding:17.5px;border-radius:6px;display:block;width:100%}.main_btn:disabled{opacity:.5;cursor:not-allowed}.main_btn--chat-with-us{background-color:#fff;border:1px solid rgb(217,217,222);color:#1b1a1f}button[disabled],input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{background-color:#747583;color:#b8b9c1;border-radius:12px}.info-banner{display:flex;gap:8px;border:1px solid rgb(11,84,194);border-radius:12px;padding:14px;align-items:flex-start;transition:all .3s cubic-bezier(.4,0,.2,1)}.info-banner__icon{color:#0b54c2;flex-shrink:0;width:20px;height:20px}.info-banner__content{flex:1}.info-banner__text{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);color:#0b54c2;margin:0 0 4px;font-weight:var(--almatar-font-weight-regular);line-height:16px}.info-banner__subtext{font-size:calc(14 * var(--almatar-font-size-ratio, 1) * 1px);color:#1b1a1f;margin:0;line-height:1.4}\n"] }]
86
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"select-rooms\">\n <div class=\"select-rooms__content\">\n @if (hotelInfo(); as hotel) {\n <div class=\"hotel-info-card\">\n <h3 class=\"hotel-info-card__name\">{{ hotel.hotelName }}</h3>\n\n <div class=\"hotel-info-card__content\">\n @if (hotel.hotelImage) {\n <div class=\"hotel-info-card__image\">\n <img [src]=\"hotel.hotelImage\" [alt]=\"hotel.hotelName\" />\n </div>\n }\n\n <div class=\"hotel-info-card__dates\">\n <div class=\"date-box\">\n <span class=\"date-box__label\">CHECK-IN</span>\n <span class=\"date-box__day\">{{\n formatDate(hotel.checkIn).day\n }}</span>\n <span class=\"date-box__month\">{{\n formatDate(hotel.checkIn).month\n }}</span>\n <span class=\"date-box__day-name\">{{\n formatDate(hotel.checkIn).dayName\n }}</span>\n <span class=\"date-box__time\"\n >From\n {{ hotel?.checkInTime }}</span\n >\n </div>\n\n <div class=\"date-box\">\n <span class=\"date-box__label\">CHECK-OUT</span>\n <span class=\"date-box__day\">{{\n formatDate(hotel.checkOut).day\n }}</span>\n <span class=\"date-box__month\">{{\n formatDate(hotel.checkOut).month\n }}</span>\n <span class=\"date-box__day-name\">{{\n formatDate(hotel.checkOut).dayName\n }}</span>\n <span class=\"date-box__time\"\n >Until\n {{ hotel?.checkOutTime }}</span\n >\n </div>\n </div>\n\n <div class=\"hotel-info-card__stats\">\n <div class=\"stat-box\">\n <span class=\"stat-box__label\">Rooms</span>\n <span class=\"stat-box__value\">{{ totalRoomsCount() }}</span>\n </div>\n <div class=\"stat-box\">\n <span class=\"stat-box__label\">NIGHTS</span>\n <span class=\"stat-box__value\">{{ hotel.nights }}</span>\n </div>\n </div>\n </div>\n </div>\n }\n\n <div class=\"select-rooms__notice select-rooms__notice--default\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <circle\n cx=\"12\"\n cy=\"12\"\n r=\"9\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n />\n <path\n d=\"M12 11v5.5M12 8v.01\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n />\n </svg>\n <span>\n Some rooms in each package, share one booking reference, so they will be cancelled together.</span\n >\n </div>\n\n <div class=\"rooms-list\">\n @for (package of displayPackages(); track $index) {\n @if (!package.manualRefundRequest && !package.isCancelled) {\n <almatar-hotel-auto-cancellation-refundable-room\n [package]=\"package\"\n [hideCheckbox]=\"isSinglePackage()\"\n (togglePackage)=\"togglePackage($event)\"\n />\n } @else {\n <almatar-hotel-auto-cancellation-non-refundable-room\n [package]=\"package\"\n [allPackages]=\"displayPackages()\"\n [hotelInfo]=\"hotelInfo()\"\n [hotelId]=\"hotelId()\"\n [currencyCode]=\"currencyCode()\"\n [allPackagesNonRefundable]=\"allPackagesNonRefundable()\"\n (closeModal)=\"onClose()\"\n (nonRefundableSubmitSuccess)=\"onNonRefundableSubmitSuccess($event)\"\n />\n }\n }\n </div>\n\n @if (allPackagesNonRefundable()) {\n <div class=\"select-rooms__notice select-rooms__notice--warning\">\n <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\">\n <!-- warning triangle icon -->\n <path\n d=\"M12 9v4M12 17h.01M10.29 3.86L1.82 18a2 2 0 001.71 3h16.94a2 2 0 001.71-3L13.71 3.86a2 2 0 00-3.42 0z\"\n stroke=\"currentColor\"\n stroke-width=\"1.6\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n <span>Sorry, we couldn't process your refund right now. Please chat with our Customer Service team for help.</span>\n </div>\n }\n </div>\n\n <div class=\"select-rooms__footer\">\n @if (allPackagesNonRefundable()) {\n \n } @else {\n @if (!hasSelectedPackages()) {\n <p class=\"select-rooms__hint\">\n Select at least one room to continue\n </p>\n }\n <button\n class=\"main_btn\"\n type=\"button\"\n [disabled]=\"!hasSelectedPackages()\"\n (click)=\"onContinue()\"\n >\n Continue to cancel\n </button>\n }\n </div>\n</div>\n", styles: [".select-rooms{display:flex;flex-direction:column;height:100%;background-color:#fff}.select-rooms__header{padding:16px;border-bottom:1px solid var(--almatar-neutral-border-default)}.select-rooms__notice{display:flex;align-items:center;gap:8px;padding:12px;border-radius:8px;font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:400;margin:12px 0}.select-rooms__notice svg{flex-shrink:0;width:18px;height:18px;margin-top:1px}.select-rooms__notice--info{background:var(--almatar-info-surface, #eaf2ff);border:1px solid var(--almatar-info-border, #b9d6ff);color:var(--almatar-info-text, #1a56db);border-radius:12px}.select-rooms__notice--info svg{color:var(--almatar-info-icon, #1a56db)}.select-rooms__notice--default{background:#f7f7f8;border:1px solid rgb(217,217,222);color:#1b1a1f;border-radius:12px}.select-rooms__notice--default svg{color:#1b1a1f}.select-rooms__notice--warning{background:#faedcc;border:1px solid rgb(137,99,42);color:#89632a;border-radius:12px}.select-rooms__notice--warning svg{color:#89632a}.select-rooms__title{font-size:calc(18 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-semibold);color:var(--almatar-neutral-text-primary-static);margin-bottom:4px}.select-rooms__subtitle{font-size:calc(14 * var(--almatar-font-size-ratio, 1) * 1px);color:var(--almatar-neutral-text-secondary-static)}.select-rooms__content{flex:1;overflow-y:auto;padding:12px}.select-rooms__footer{padding:16px;background:var(--almatar-neutral-surface-card);border-top:1px solid rgb(217,217,222)}.select-rooms__hint{text-align:center;font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);color:var(--almatar-neutral-text-secondary-static);margin-bottom:12px}.hotel-info-card{background:var(--almatar-neutral-surface-card);border-radius:12px;padding:12px;margin-bottom:12px;border:1px solid rgb(217,217,222)}.hotel-info-card__name{font-size:calc(18 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);color:var(--almatar-neutral-text-primary-static);margin-bottom:12px}.hotel-info-card__content{display:flex;align-items:stretch;gap:0}.hotel-info-card__image{width:120px;overflow:hidden;flex-shrink:0;padding-inline-end:12px;border-inline-end:1px solid rgb(217,217,222)}.hotel-info-card__image img{border-radius:5px;width:100%;height:100%;object-fit:cover;max-height:100px}.hotel-info-card__dates{display:flex;flex:1;border-inline-start:1px solid var(--almatar-neutral-border-default)}.hotel-info-card__stats{display:flex;flex-direction:column;justify-content:center;border-inline-start:1px solid var(--almatar-neutral-border-default);padding-inline-start:12px;margin-inline-start:0;min-width:70px}.date-box{display:flex;flex-direction:column;align-items:center;text-align:center;flex:1;padding:0 12px;border-inline-end:1px solid rgb(217,217,222);gap:4px}.date-box__label{font-size:calc(10 * var(--almatar-font-size-ratio, 1) * 1px);color:var(--almatar-neutral-text-secondary-static);text-transform:uppercase;letter-spacing:.5px}.date-box__day{font-size:calc(18 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);color:#491d95;line-height:1.2}.date-box__month{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-regular);color:var(--almatar-neutral-text-primary-static)}.date-box__day-name{font-size:calc(10 * var(--almatar-font-size-ratio, 1) * 1px);color:#747583}.date-box__time{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-regular);color:var(--almatar-neutral-text-primary-static)}.stat-box{display:flex;flex-direction:column;align-items:center;text-align:center;padding:4px 0;border-bottom:1px solid rgb(217,217,222)}.stat-box:last-child{border-bottom:none}.stat-box__label{font-size:calc(11 * var(--almatar-font-size-ratio, 1) * 1px);color:var(--almatar-neutral-text-secondary-static);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.stat-box__value{font-size:calc(18 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);color:var(--almatar-neutral-text-primary-static);line-height:1.3;color:#491d95}.rooms-list{display:flex;flex-direction:column;gap:12px}.main_btn{font-weight:var(--almatar-font-weight-medium);padding:17.5px;border-radius:6px;display:block;width:100%}.main_btn:disabled{opacity:.5;cursor:not-allowed}.main_btn--chat-with-us{background-color:#fff;border:1px solid rgb(217,217,222);color:#1b1a1f}button[disabled],input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{background-color:#747583;color:#b8b9c1;border-radius:12px}.info-banner{display:flex;gap:8px;border:1px solid rgb(11,84,194);border-radius:12px;padding:14px;align-items:flex-start;transition:all .3s cubic-bezier(.4,0,.2,1)}.info-banner__icon{color:#0b54c2;flex-shrink:0;width:20px;height:20px}.info-banner__content{flex:1}.info-banner__text{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);color:#0b54c2;margin:0 0 4px;font-weight:var(--almatar-font-weight-regular);line-height:16px}.info-banner__subtext{font-size:calc(14 * var(--almatar-font-size-ratio, 1) * 1px);color:#1b1a1f;margin:0;line-height:1.4}\n"] }]
87
87
  }], ctorParameters: () => [] });
88
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1zZWxlY3Qtcm9vbXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYm9va2luZy1kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL2hvdGVsLWNhbmNlbC9jb21wb25lbnRzL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tc2VsZWN0LXJvb21zL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tc2VsZWN0LXJvb21zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9ob3RlbC1jYW5jZWwvY29tcG9uZW50cy9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLXNlbGVjdC1yb29tcy9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLXNlbGVjdC1yb29tcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHVCQUF1QixFQUN2QixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUUzRSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFLNUIsT0FBTyxFQUFFLG1EQUFtRCxFQUFFLE1BQU0sd0hBQXdILENBQUM7QUFDN0wsT0FBTyxFQUFFLHNEQUFzRCxFQUFFLE1BQU0sZ0lBQWdJLENBQUM7QUFDeE0sT0FBTyxFQUFFLDRDQUE0QyxFQUFF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QUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELDRCQUE0QixDQUFDLFdBQW1CO1FBQzlDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFTO1FBTWxCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDakQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVwQyxPQUFPO1lBQ0wsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDYixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDdkIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDZCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDMUIsQ0FBQztJQUNKLENBQUM7K0dBcEhVLGdEQUFnRDttR0FBaEQsZ0RBQWdELDY2QkNwQzdELDRsS0FzSkEsNHBLRDFISSxZQUFZLCtCQUNaLG1EQUFtRCw2SkFDbkQsc0RBQXNEOzs0RkFNN0MsZ0RBQWdEO2tCQVo1RCxTQUFTOytCQUNFLDhDQUE4QyxjQUM1QyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtREFBbUQ7d0JBQ25ELHNEQUFzRDtxQkFDdkQsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBEZXN0cm95UmVmLFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIGVmZmVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU2hhcmVkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zaGFyZWQuc2VydmljZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge1xuICBJQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvblBhY2thZ2UsXG4gIElBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uSG90ZWxJbmZvLFxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2ktYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvblJlZnVuZGFibGVSb29tQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tcmVmdW5kYWJsZS1yb29tL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tcmVmdW5kYWJsZS1yb29tLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uTm9uUmVmdW5kYWJsZVJvb21Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1ub24tcmVmdW5kYWJsZS1yb29tL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tbm9uLXJlZnVuZGFibGUtcm9vbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvbkVuZHBvaW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLWVuZHBvaW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IEFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1zZWxlY3Qtcm9vbXMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25SZWZ1bmRhYmxlUm9vbUNvbXBvbmVudCxcbiAgICBBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uTm9uUmVmdW5kYWJsZVJvb21Db21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLXNlbGVjdC1yb29tcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tc2VsZWN0LXJvb21zLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uU2VsZWN0Um9vbXNDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IHNoYXJlZFNlcnZpY2UgPSBpbmplY3QoU2hhcmVkU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW5kcG9pbnRzU2VydmljZSA9IGluamVjdChcbiAgICBBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uRW5kcG9pbnRzU2VydmljZSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGF1dG9DYW5jZWxsYXRpb25TZXJ2aWNlID0gaW5qZWN0KFxuICAgIEFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25TZXJ2aWNlLFxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICByZWFkb25seSBwYWNrYWdlcyA9IGlucHV0LnJlcXVpcmVkPElBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uUGFja2FnZVtdPigpO1xuICByZWFkb25seSBpc0xvYWRpbmdSZWZ1bmQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgLy8gZ2V0IG9ubHkgdW4gY2FuY2VsbGVkIHBhY2thZ2VzXG4gICAgICAgIGNvbnN0IHBhY2thZ2VzTGlzdCA9IHRoaXMucGFja2FnZXMoKS5maWx0ZXIoXG4gICAgICAgICAgKHBrZzogYW55KSA9PiAhcGtnPy5pc0NhbmNlbGxlZCxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHBhY2thZ2VzTGlzdC5sZW5ndGggPT09IDEgJiYgIXBhY2thZ2VzTGlzdFswXS5pc1NlbGVjdGVkKSB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRQYWNrYWdlID0geyAuLi5wYWNrYWdlc0xpc3RbMF0sIGlzU2VsZWN0ZWQ6IHRydWUgfTtcbiAgICAgICAgICB0aGlzLmxvY2FsUGFja2FnZXMuc2V0KFtzZWxlY3RlZFBhY2thZ2VdKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgICApO1xuICB9XG5cbiAgcmVhZG9ubHkgaG90ZWxJbmZvID1cbiAgICBpbnB1dC5yZXF1aXJlZDxJQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvbkhvdGVsSW5mbyB8IG51bGw+KCk7XG5cbiAgcmVhZG9ubHkgYm9va2luZ0lkID0gaW5wdXQ8c3RyaW5nIHwgbnVtYmVyPignJyk7XG5cbiAgcmVhZG9ubHkgaG90ZWxJZCA9IGlucHV0PHN0cmluZyB8IG51bWJlcj4oJycpO1xuXG4gIHJlYWRvbmx5IGNvbnRpbnVlVG9DYW5jZWwgPSBvdXRwdXQ8SUFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25QYWNrYWdlW10+KCk7XG4gIHJlYWRvbmx5IGNsb3NlTW9kYWwgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgbm9uUmVmdW5kYWJsZVN1Ym1pdFN1Y2Nlc3MgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBjaGF0V2l0aEFnZW50ID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgY3VycmVuY3lDb2RlID0gaW5wdXQ8c3RyaW5nPignU0FSJyk7XG5cbiAgcmVhZG9ubHkgbG9jYWxQYWNrYWdlcyA9IHNpZ25hbDxJQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvblBhY2thZ2VbXT4oW10pO1xuXG4gIHJlYWRvbmx5IGRpc3BsYXlQYWNrYWdlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBsb2NhbCA9IHRoaXMubG9jYWxQYWNrYWdlcygpO1xuICAgIHJldHVybiBsb2NhbC5sZW5ndGggPiAwID8gbG9jYWwgOiB0aGlzLnBhY2thZ2VzKCk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkUGFja2FnZXNDb3VudCA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMuZGlzcGxheVBhY2thZ2VzKCkuZmlsdGVyKChwa2cpID0+IHBrZy5pc1NlbGVjdGVkKS5sZW5ndGgsXG4gICk7XG5cbiAgcmVhZG9ubHkgaGFzU2VsZWN0ZWRQYWNrYWdlcyA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMuc2VsZWN0ZWRQYWNrYWdlc0NvdW50KCkgPiAwLFxuICApO1xuXG4gIHJlYWRvbmx5IGlzU2luZ2xlUGFja2FnZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGFja2FnZXMoKS5sZW5ndGggPT09IDEpO1xuXG4gIHJlYWRvbmx5IHRvdGFsUm9vbXNDb3VudCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5wYWNrYWdlcygpLnJlZHVjZSgoYWNjLCBwa2cpID0+IGFjYyArIChwa2cucm9vbXM/Lmxlbmd0aCB8fCAwKSwgMCksXG4gICk7XG5cbiAgcmVhZG9ubHkgYWxsUGFja2FnZXNOb25SZWZ1bmRhYmxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnBhY2thZ2VzKCkuZXZlcnkoKHBrZykgPT4gIXBrZy5pc1JlZnVuZGFibGUgJiYgIXBrZy5pc0NhbmNlbGxlZCksXG4gICk7XG5cbiAgdG9nZ2xlUGFja2FnZShwYWNrYWdlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRQYWNrYWdlcyA9IHRoaXMuZGlzcGxheVBhY2thZ2VzKCk7XG4gICAgY29uc3QgdXBkYXRlZFBhY2thZ2VzID0gY3VycmVudFBhY2thZ2VzLm1hcCgocGtnKSA9PlxuICAgICAgcGtnLnBhY2thZ2VJZCA9PT0gcGFja2FnZUlkXG4gICAgICAgID8geyAuLi5wa2csIGlzU2VsZWN0ZWQ6ICFwa2cuaXNTZWxlY3RlZCB9XG4gICAgICAgIDogcGtnLFxuICAgICk7XG4gICAgdGhpcy5sb2NhbFBhY2thZ2VzLnNldCh1cGRhdGVkUGFja2FnZXMpO1xuICB9XG5cbiAgb25Db250aW51ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYXNTZWxlY3RlZFBhY2thZ2VzKCkpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkUGFja2FnZXMgPSB0aGlzLmRpc3BsYXlQYWNrYWdlcygpLmZpbHRlcihcbiAgICAgICAgKHBrZykgPT4gcGtnLmlzU2VsZWN0ZWQgJiYgIXBrZy5pc0NhbmNlbGxlZCxcbiAgICAgICk7XG4gICAgICB0aGlzLmNvbnRpbnVlVG9DYW5jZWwuZW1pdChzZWxlY3RlZFBhY2thZ2VzKTtcbiAgICB9XG4gIH1cblxuICBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VNb2RhbC5lbWl0KCk7XG4gIH1cblxuICBvbkNoYXRXaXRoQWdlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGF0V2l0aEFnZW50LmVtaXQoKTtcbiAgfVxuXG4gIG9uTm9uUmVmdW5kYWJsZVN1Ym1pdFN1Y2Nlc3MocGFja2FnZU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubm9uUmVmdW5kYWJsZVN1Ym1pdFN1Y2Nlc3MuZW1pdChwYWNrYWdlTmFtZSk7XG4gIH1cblxuICBmb3JtYXREYXRlKGRhdGU6IGFueSk6IHtcbiAgICBkYXk6IG51bWJlcjtcbiAgICBtb250aDogc3RyaW5nO1xuICAgIHllYXI6IG51bWJlcjtcbiAgICBkYXlOYW1lOiBzdHJpbmc7XG4gIH0ge1xuICAgIGNvbnN0IGxhbmcgPSB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0QXBwTGFuZ3VhZ2UoKTtcbiAgICBjb25zdCBtID0gbW9tZW50KGRhdGUpLmxvY2FsZShsYW5nKTtcblxuICAgIHJldHVybiB7XG4gICAgICBkYXk6IG0uZGF0ZSgpLFxuICAgICAgbW9udGg6IG0uZm9ybWF0KCdNTU1NJyksXG4gICAgICB5ZWFyOiBtLnllYXIoKSxcbiAgICAgIGRheU5hbWU6IG0uZm9ybWF0KCdkZGRkJyksXG4gICAgfTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNlbGVjdC1yb29tc1wiPlxuICA8ZGl2IGNsYXNzPVwic2VsZWN0LXJvb21zX19jb250ZW50XCI+XG4gICAgQGlmIChob3RlbEluZm8oKTsgYXMgaG90ZWwpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJob3RlbC1pbmZvLWNhcmRcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwiaG90ZWwtaW5mby1jYXJkX19uYW1lXCI+e3sgaG90ZWwuaG90ZWxOYW1lIH19PC9oMz5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiaG90ZWwtaW5mby1jYXJkX19jb250ZW50XCI+XG4gICAgICAgICAgQGlmIChob3RlbC5ob3RlbEltYWdlKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaG90ZWwtaW5mby1jYXJkX19pbWFnZVwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaG90ZWwuaG90ZWxJbWFnZVwiIFthbHRdPVwiaG90ZWwuaG90ZWxOYW1lXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3RlbC1pbmZvLWNhcmRfX2RhdGVzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1ib3hcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLWJveF9fbGFiZWxcIj5DSEVDSy1JTjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLWJveF9fZGF5XCI+e3tcbiAgICAgICAgICAgICAgICBmb3JtYXREYXRlKGhvdGVsLmNoZWNrSW4pLmRheVxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLWJveF9fbW9udGhcIj57e1xuICAgICAgICAgICAgICAgIGZvcm1hdERhdGUoaG90ZWwuY2hlY2tJbikubW9udGhcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS1ib3hfX2RheS1uYW1lXCI+e3tcbiAgICAgICAgICAgICAgICBmb3JtYXREYXRlKGhvdGVsLmNoZWNrSW4pLmRheU5hbWVcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS1ib3hfX3RpbWVcIlxuICAgICAgICAgICAgICAgID5Gcm9tXG4gICAgICAgICAgICAgICAge3sgaG90ZWw/LmNoZWNrSW5UaW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1ib3hcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLWJveF9fbGFiZWxcIj5DSEVDSy1PVVQ8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS1ib3hfX2RheVwiPnt7XG4gICAgICAgICAgICAgICAgZm9ybWF0RGF0ZShob3RlbC5jaGVja091dCkuZGF5XG4gICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGUtYm94X19tb250aFwiPnt7XG4gICAgICAgICAgICAgICAgZm9ybWF0RGF0ZShob3RlbC5jaGVja091dCkubW9udGhcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS1ib3hfX2RheS1uYW1lXCI+e3tcbiAgICAgICAgICAgICAgICBmb3JtYXREYXRlKGhvdGVsLmNoZWNrT3V0KS5kYXlOYW1lXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGUtYm94X190aW1lXCJcbiAgICAgICAgICAgICAgICA+VW50aWxcbiAgICAgICAgICAgICAgICB7eyBob3RlbD8uY2hlY2tPdXRUaW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhvdGVsLWluZm8tY2FyZF9fc3RhdHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0LWJveFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXQtYm94X19sYWJlbFwiPlJvb21zPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXQtYm94X192YWx1ZVwiPnt7IHRvdGFsUm9vbXNDb3VudCgpIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdC1ib3hcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGF0LWJveF9fbGFiZWxcIj5OSUdIVFM8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RhdC1ib3hfX3ZhbHVlXCI+e3sgaG90ZWwubmlnaHRzIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPGRpdiBjbGFzcz1cInNlbGVjdC1yb29tc19fbm90aWNlIHNlbGVjdC1yb29tc19fbm90aWNlLS1kZWZhdWx0XCI+XG4gICAgICA8c3ZnIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgY3g9XCIxMlwiXG4gICAgICAgICAgY3k9XCIxMlwiXG4gICAgICAgICAgcj1cIjlcIlxuICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS42XCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTEyIDExdjUuNU0xMiA4di4wMVwiXG4gICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjZcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgICA8c3Bhbj5cbiAgICAgICAgU29tZSByb29tcyBpbiBlYWNoIHBhY2thZ2UsIHNoYXJlIG9uZSBib29raW5nIHJlZmVyZW5jZSwgc28gdGhleSB3aWxsIGJlIGNhbmNlbGxlZCB0b2dldGhlci48L3NwYW5cbiAgICAgID5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJyb29tcy1saXN0XCI+XG4gICAgICBAZm9yIChwYWNrYWdlIG9mIGRpc3BsYXlQYWNrYWdlcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgQGlmICghcGFja2FnZS5tYW51YWxSZWZ1bmRSZXF1ZXN0ICYmICFwYWNrYWdlLmlzQ2FuY2VsbGVkKSB7XG4gICAgICAgICAgPGFsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tcmVmdW5kYWJsZS1yb29tXG4gICAgICAgICAgICBbcGFja2FnZV09XCJwYWNrYWdlXCJcbiAgICAgICAgICAgIFtoaWRlQ2hlY2tib3hdPVwiaXNTaW5nbGVQYWNrYWdlKClcIlxuICAgICAgICAgICAgKHRvZ2dsZVBhY2thZ2UpPVwidG9nZ2xlUGFja2FnZSgkZXZlbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8YWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1ub24tcmVmdW5kYWJsZS1yb29tXG4gICAgICAgICAgICBbcGFja2FnZV09XCJwYWNrYWdlXCJcbiAgICAgICAgICAgIFthbGxQYWNrYWdlc109XCJkaXNwbGF5UGFja2FnZXMoKVwiXG4gICAgICAgICAgICBbaG90ZWxJbmZvXT1cImhvdGVsSW5mbygpXCJcbiAgICAgICAgICAgIFtob3RlbElkXT1cImhvdGVsSWQoKVwiXG4gICAgICAgICAgICBbY3VycmVuY3lDb2RlXT1cImN1cnJlbmN5Q29kZSgpXCJcbiAgICAgICAgICAgIFthbGxQYWNrYWdlc05vblJlZnVuZGFibGVdPVwiYWxsUGFja2FnZXNOb25SZWZ1bmRhYmxlKClcIlxuICAgICAgICAgICAgKGNsb3NlTW9kYWwpPVwib25DbG9zZSgpXCJcbiAgICAgICAgICAgIChub25SZWZ1bmRhYmxlU3VibWl0U3VjY2Vzcyk9XCJvbk5vblJlZnVuZGFibGVTdWJtaXRTdWNjZXNzKCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIEBpZiAoYWxsUGFja2FnZXNOb25SZWZ1bmRhYmxlKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtcm9vbXNfX25vdGljZSBzZWxlY3Qtcm9vbXNfX25vdGljZS0td2FybmluZ1wiPlxuICAgICAgICA8c3ZnIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgIDwhLS0gd2FybmluZyB0cmlhbmdsZSBpY29uIC0tPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTEyIDl2NE0xMiAxN2guMDFNMTAuMjkgMy44NkwxLjgyIDE4YTIgMiAwIDAwMS43MSAzaDE2Ljk0YTIgMiAwIDAwMS43MS0zTDEzLjcxIDMuODZhMiAyIDAgMDAtMy40MiAwelwiXG4gICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS42XCJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgICA8c3Bhbj5Tb3JyeSwgd2UgY291bGRuJ3QgcHJvY2VzcyB5b3VyIHJlZnVuZCByaWdodCBub3cuIFBsZWFzZSBjaGF0IHdpdGggb3VyIEN1c3RvbWVyIFNlcnZpY2UgdGVhbSBmb3IgaGVscC48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJzZWxlY3Qtcm9vbXNfX2Zvb3RlclwiPlxuICAgIEBpZiAoYWxsUGFja2FnZXNOb25SZWZ1bmRhYmxlKCkpIHtcbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJtYWluX2J0biBtYWluX2J0bi0tY2hhdC13aXRoLXVzXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgIChjbGljayk9XCJvbkNoYXRXaXRoQWdlbnQoKVwiXG4gICAgICA+XG4gICAgICAgIENoYXQgd2l0aCBjdXN0b21lciBzZXJ2aWNlXG4gICAgICA8L2J1dHRvbj5cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpZiAoIWhhc1NlbGVjdGVkUGFja2FnZXMoKSkge1xuICAgICAgICA8cCBjbGFzcz1cInNlbGVjdC1yb29tc19faGludFwiPlxuICAgICAgICAgIFNlbGVjdCBhdCBsZWFzdCBvbmUgcm9vbSB0byBjb250aW51ZVxuICAgICAgICA8L3A+XG4gICAgICB9XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwibWFpbl9idG5cIlxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2Rpc2FibGVkXT1cIiFoYXNTZWxlY3RlZFBhY2thZ2VzKClcIlxuICAgICAgICAoY2xpY2spPVwib25Db250aW51ZSgpXCJcbiAgICAgID5cbiAgICAgICAgQ29udGludWUgdG8gY2FuY2VsXG4gICAgICA8L2J1dHRvbj5cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1zZWxlY3Qtcm9vbXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYm9va2luZy1kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL2hvdGVsLWNhbmNlbC9jb21wb25lbnRzL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tc2VsZWN0LXJvb21zL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tc2VsZWN0LXJvb21zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9ob3RlbC1jYW5jZWwvY29tcG9uZW50cy9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLXNlbGVjdC1yb29tcy9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLXNlbGVjdC1yb29tcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHVCQUF1QixFQUN2QixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixNQUFNLEVBQ04sUUFBUSxFQUNSLE1BQU0sRUFDTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUUzRSxPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFLNUIsT0FBTyxFQUFFLG1EQUFtRCxFQUFFLE1BQU0sd0hBQXdILENBQUM7QUFDN0wsT0FBTyxFQUFFLHNEQUFzRCxFQUFFLE1BQU0sZ0lBQWdJLENBQUM7QUFDeE0sT0FBTyxFQUFFLDRDQUE0QyxFQUFF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QUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELDRCQUE0QixDQUFDLFdBQW1CO1FBQzlDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFTO1FBTWxCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDakQsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVwQyxPQUFPO1lBQ0wsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDYixLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDdkIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUU7WUFDZCxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDMUIsQ0FBQztJQUNKLENBQUM7K0dBcEhVLGdEQUFnRDttR0FBaEQsZ0RBQWdELDY2QkNwQzdELG82SkFnSkEsNHBLRHBISSxZQUFZLCtCQUNaLG1EQUFtRCw2SkFDbkQsc0RBQXNEOzs0RkFNN0MsZ0RBQWdEO2tCQVo1RCxTQUFTOytCQUNFLDhDQUE4QyxjQUM1QyxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixtREFBbUQ7d0JBQ25ELHNEQUFzRDtxQkFDdkQsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBEZXN0cm95UmVmLFxuICBpbnB1dCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxuICBpbmplY3QsXG4gIGVmZmVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU2hhcmVkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zaGFyZWQuc2VydmljZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQge1xuICBJQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvblBhY2thZ2UsXG4gIElBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uSG90ZWxJbmZvLFxufSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL2ktYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvblJlZnVuZGFibGVSb29tQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tcmVmdW5kYWJsZS1yb29tL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tcmVmdW5kYWJsZS1yb29tLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uTm9uUmVmdW5kYWJsZVJvb21Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1ub24tcmVmdW5kYWJsZS1yb29tL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tbm9uLXJlZnVuZGFibGUtcm9vbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvbkVuZHBvaW50c1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLWVuZHBvaW50cy5zZXJ2aWNlJztcbmltcG9ydCB7IEFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1zZWxlY3Qtcm9vbXMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25SZWZ1bmRhYmxlUm9vbUNvbXBvbmVudCxcbiAgICBBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uTm9uUmVmdW5kYWJsZVJvb21Db21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLXNlbGVjdC1yb29tcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tc2VsZWN0LXJvb21zLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uU2VsZWN0Um9vbXNDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IHNoYXJlZFNlcnZpY2UgPSBpbmplY3QoU2hhcmVkU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW5kcG9pbnRzU2VydmljZSA9IGluamVjdChcbiAgICBBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uRW5kcG9pbnRzU2VydmljZSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGF1dG9DYW5jZWxsYXRpb25TZXJ2aWNlID0gaW5qZWN0KFxuICAgIEFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25TZXJ2aWNlLFxuICApO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICByZWFkb25seSBwYWNrYWdlcyA9IGlucHV0LnJlcXVpcmVkPElBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uUGFja2FnZVtdPigpO1xuICByZWFkb25seSBpc0xvYWRpbmdSZWZ1bmQgPSBzaWduYWwoZmFsc2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgLy8gZ2V0IG9ubHkgdW4gY2FuY2VsbGVkIHBhY2thZ2VzXG4gICAgICAgIGNvbnN0IHBhY2thZ2VzTGlzdCA9IHRoaXMucGFja2FnZXMoKS5maWx0ZXIoXG4gICAgICAgICAgKHBrZzogYW55KSA9PiAhcGtnPy5pc0NhbmNlbGxlZCxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKHBhY2thZ2VzTGlzdC5sZW5ndGggPT09IDEgJiYgIXBhY2thZ2VzTGlzdFswXS5pc1NlbGVjdGVkKSB7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRQYWNrYWdlID0geyAuLi5wYWNrYWdlc0xpc3RbMF0sIGlzU2VsZWN0ZWQ6IHRydWUgfTtcbiAgICAgICAgICB0aGlzLmxvY2FsUGFja2FnZXMuc2V0KFtzZWxlY3RlZFBhY2thZ2VdKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgICApO1xuICB9XG5cbiAgcmVhZG9ubHkgaG90ZWxJbmZvID1cbiAgICBpbnB1dC5yZXF1aXJlZDxJQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvbkhvdGVsSW5mbyB8IG51bGw+KCk7XG5cbiAgcmVhZG9ubHkgYm9va2luZ0lkID0gaW5wdXQ8c3RyaW5nIHwgbnVtYmVyPignJyk7XG5cbiAgcmVhZG9ubHkgaG90ZWxJZCA9IGlucHV0PHN0cmluZyB8IG51bWJlcj4oJycpO1xuXG4gIHJlYWRvbmx5IGNvbnRpbnVlVG9DYW5jZWwgPSBvdXRwdXQ8SUFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25QYWNrYWdlW10+KCk7XG4gIHJlYWRvbmx5IGNsb3NlTW9kYWwgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgbm9uUmVmdW5kYWJsZVN1Ym1pdFN1Y2Nlc3MgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBjaGF0V2l0aEFnZW50ID0gb3V0cHV0PHZvaWQ+KCk7XG5cbiAgcmVhZG9ubHkgY3VycmVuY3lDb2RlID0gaW5wdXQ8c3RyaW5nPignU0FSJyk7XG5cbiAgcmVhZG9ubHkgbG9jYWxQYWNrYWdlcyA9IHNpZ25hbDxJQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvblBhY2thZ2VbXT4oW10pO1xuXG4gIHJlYWRvbmx5IGRpc3BsYXlQYWNrYWdlcyA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBsb2NhbCA9IHRoaXMubG9jYWxQYWNrYWdlcygpO1xuICAgIHJldHVybiBsb2NhbC5sZW5ndGggPiAwID8gbG9jYWwgOiB0aGlzLnBhY2thZ2VzKCk7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkUGFja2FnZXNDb3VudCA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMuZGlzcGxheVBhY2thZ2VzKCkuZmlsdGVyKChwa2cpID0+IHBrZy5pc1NlbGVjdGVkKS5sZW5ndGgsXG4gICk7XG5cbiAgcmVhZG9ubHkgaGFzU2VsZWN0ZWRQYWNrYWdlcyA9IGNvbXB1dGVkKFxuICAgICgpID0+IHRoaXMuc2VsZWN0ZWRQYWNrYWdlc0NvdW50KCkgPiAwLFxuICApO1xuXG4gIHJlYWRvbmx5IGlzU2luZ2xlUGFja2FnZSA9IGNvbXB1dGVkKCgpID0+IHRoaXMucGFja2FnZXMoKS5sZW5ndGggPT09IDEpO1xuXG4gIHJlYWRvbmx5IHRvdGFsUm9vbXNDb3VudCA9IGNvbXB1dGVkKCgpID0+XG4gICAgdGhpcy5wYWNrYWdlcygpLnJlZHVjZSgoYWNjLCBwa2cpID0+IGFjYyArIChwa2cucm9vbXM/Lmxlbmd0aCB8fCAwKSwgMCksXG4gICk7XG5cbiAgcmVhZG9ubHkgYWxsUGFja2FnZXNOb25SZWZ1bmRhYmxlID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLnBhY2thZ2VzKCkuZXZlcnkoKHBrZykgPT4gIXBrZy5pc1JlZnVuZGFibGUgJiYgIXBrZy5pc0NhbmNlbGxlZCksXG4gICk7XG5cbiAgdG9nZ2xlUGFja2FnZShwYWNrYWdlSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRQYWNrYWdlcyA9IHRoaXMuZGlzcGxheVBhY2thZ2VzKCk7XG4gICAgY29uc3QgdXBkYXRlZFBhY2thZ2VzID0gY3VycmVudFBhY2thZ2VzLm1hcCgocGtnKSA9PlxuICAgICAgcGtnLnBhY2thZ2VJZCA9PT0gcGFja2FnZUlkXG4gICAgICAgID8geyAuLi5wa2csIGlzU2VsZWN0ZWQ6ICFwa2cuaXNTZWxlY3RlZCB9XG4gICAgICAgIDogcGtnLFxuICAgICk7XG4gICAgdGhpcy5sb2NhbFBhY2thZ2VzLnNldCh1cGRhdGVkUGFja2FnZXMpO1xuICB9XG5cbiAgb25Db250aW51ZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5oYXNTZWxlY3RlZFBhY2thZ2VzKCkpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkUGFja2FnZXMgPSB0aGlzLmRpc3BsYXlQYWNrYWdlcygpLmZpbHRlcihcbiAgICAgICAgKHBrZykgPT4gcGtnLmlzU2VsZWN0ZWQgJiYgIXBrZy5pc0NhbmNlbGxlZCxcbiAgICAgICk7XG4gICAgICB0aGlzLmNvbnRpbnVlVG9DYW5jZWwuZW1pdChzZWxlY3RlZFBhY2thZ2VzKTtcbiAgICB9XG4gIH1cblxuICBvbkNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuY2xvc2VNb2RhbC5lbWl0KCk7XG4gIH1cblxuICBvbkNoYXRXaXRoQWdlbnQoKTogdm9pZCB7XG4gICAgdGhpcy5jaGF0V2l0aEFnZW50LmVtaXQoKTtcbiAgfVxuXG4gIG9uTm9uUmVmdW5kYWJsZVN1Ym1pdFN1Y2Nlc3MocGFja2FnZU5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMubm9uUmVmdW5kYWJsZVN1Ym1pdFN1Y2Nlc3MuZW1pdChwYWNrYWdlTmFtZSk7XG4gIH1cblxuICBmb3JtYXREYXRlKGRhdGU6IGFueSk6IHtcbiAgICBkYXk6IG51bWJlcjtcbiAgICBtb250aDogc3RyaW5nO1xuICAgIHllYXI6IG51bWJlcjtcbiAgICBkYXlOYW1lOiBzdHJpbmc7XG4gIH0ge1xuICAgIGNvbnN0IGxhbmcgPSB0aGlzLnNoYXJlZFNlcnZpY2UuZ2V0QXBwTGFuZ3VhZ2UoKTtcbiAgICBjb25zdCBtID0gbW9tZW50KGRhdGUpLmxvY2FsZShsYW5nKTtcblxuICAgIHJldHVybiB7XG4gICAgICBkYXk6IG0uZGF0ZSgpLFxuICAgICAgbW9udGg6IG0uZm9ybWF0KCdNTU1NJyksXG4gICAgICB5ZWFyOiBtLnllYXIoKSxcbiAgICAgIGRheU5hbWU6IG0uZm9ybWF0KCdkZGRkJyksXG4gICAgfTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInNlbGVjdC1yb29tc1wiPlxuICA8ZGl2IGNsYXNzPVwic2VsZWN0LXJvb21zX19jb250ZW50XCI+XG4gICAgQGlmIChob3RlbEluZm8oKTsgYXMgaG90ZWwpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJob3RlbC1pbmZvLWNhcmRcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwiaG90ZWwtaW5mby1jYXJkX19uYW1lXCI+e3sgaG90ZWwuaG90ZWxOYW1lIH19PC9oMz5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiaG90ZWwtaW5mby1jYXJkX19jb250ZW50XCI+XG4gICAgICAgICAgQGlmIChob3RlbC5ob3RlbEltYWdlKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaG90ZWwtaW5mby1jYXJkX19pbWFnZVwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiaG90ZWwuaG90ZWxJbWFnZVwiIFthbHRdPVwiaG90ZWwuaG90ZWxOYW1lXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJob3RlbC1pbmZvLWNhcmRfX2RhdGVzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1ib3hcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLWJveF9fbGFiZWxcIj5DSEVDSy1JTjwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLWJveF9fZGF5XCI+e3tcbiAgICAgICAgICAgICAgICBmb3JtYXREYXRlKGhvdGVsLmNoZWNrSW4pLmRheVxuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLWJveF9fbW9udGhcIj57e1xuICAgICAgICAgICAgICAgIGZvcm1hdERhdGUoaG90ZWwuY2hlY2tJbikubW9udGhcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS1ib3hfX2RheS1uYW1lXCI+e3tcbiAgICAgICAgICAgICAgICBmb3JtYXREYXRlKGhvdGVsLmNoZWNrSW4pLmRheU5hbWVcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS1ib3hfX3RpbWVcIlxuICAgICAgICAgICAgICAgID5Gcm9tXG4gICAgICAgICAgICAgICAge3sgaG90ZWw/LmNoZWNrSW5UaW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGF0ZS1ib3hcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkYXRlLWJveF9fbGFiZWxcIj5DSEVDSy1PVVQ8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS1ib3hfX2RheVwiPnt7XG4gICAgICAgICAgICAgICAgZm9ybWF0RGF0ZShob3RlbC5jaGVja091dCkuZGF5XG4gICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGUtYm94X19tb250aFwiPnt7XG4gICAgICAgICAgICAgICAgZm9ybWF0RGF0ZShob3RlbC5jaGVja091dCkubW9udGhcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZGF0ZS1ib3hfX2RheS1uYW1lXCI+e3tcbiAgICAgICAgICAgICAgICBmb3JtYXREYXRlKGhvdGVsLmNoZWNrT3V0KS5kYXlOYW1lXG4gICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRhdGUtYm94X190aW1lXCJcbiAgICAgICAgICAgICAgICA+VW50aWxcbiAgICAgICAgICAgICAgICB7eyBob3RlbD8uY2hlY2tPdXRUaW1lIH19PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImhvdGVsLWluZm8tY2FyZF9fc3RhdHNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0LWJveFwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXQtYm94X19sYWJlbFwiPlJvb21zPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0YXQtYm94X192YWx1ZVwiPnt7IHRvdGFsUm9vbXNDb3VudCgpIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RhdC1ib3hcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdGF0LWJveF9fbGFiZWxcIj5OSUdIVFM8L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RhdC1ib3hfX3ZhbHVlXCI+e3sgaG90ZWwubmlnaHRzIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgPGRpdiBjbGFzcz1cInNlbGVjdC1yb29tc19fbm90aWNlIHNlbGVjdC1yb29tc19fbm90aWNlLS1kZWZhdWx0XCI+XG4gICAgICA8c3ZnIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICA8Y2lyY2xlXG4gICAgICAgICAgY3g9XCIxMlwiXG4gICAgICAgICAgY3k9XCIxMlwiXG4gICAgICAgICAgcj1cIjlcIlxuICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS42XCJcbiAgICAgICAgLz5cbiAgICAgICAgPHBhdGhcbiAgICAgICAgICBkPVwiTTEyIDExdjUuNU0xMiA4di4wMVwiXG4gICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICBzdHJva2Utd2lkdGg9XCIxLjZcIlxuICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAvPlxuICAgICAgPC9zdmc+XG4gICAgICA8c3Bhbj5cbiAgICAgICAgU29tZSByb29tcyBpbiBlYWNoIHBhY2thZ2UsIHNoYXJlIG9uZSBib29raW5nIHJlZmVyZW5jZSwgc28gdGhleSB3aWxsIGJlIGNhbmNlbGxlZCB0b2dldGhlci48L3NwYW5cbiAgICAgID5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJyb29tcy1saXN0XCI+XG4gICAgICBAZm9yIChwYWNrYWdlIG9mIGRpc3BsYXlQYWNrYWdlcygpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgQGlmICghcGFja2FnZS5tYW51YWxSZWZ1bmRSZXF1ZXN0ICYmICFwYWNrYWdlLmlzQ2FuY2VsbGVkKSB7XG4gICAgICAgICAgPGFsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tcmVmdW5kYWJsZS1yb29tXG4gICAgICAgICAgICBbcGFja2FnZV09XCJwYWNrYWdlXCJcbiAgICAgICAgICAgIFtoaWRlQ2hlY2tib3hdPVwiaXNTaW5nbGVQYWNrYWdlKClcIlxuICAgICAgICAgICAgKHRvZ2dsZVBhY2thZ2UpPVwidG9nZ2xlUGFja2FnZSgkZXZlbnQpXCJcbiAgICAgICAgICAvPlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8YWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1ub24tcmVmdW5kYWJsZS1yb29tXG4gICAgICAgICAgICBbcGFja2FnZV09XCJwYWNrYWdlXCJcbiAgICAgICAgICAgIFthbGxQYWNrYWdlc109XCJkaXNwbGF5UGFja2FnZXMoKVwiXG4gICAgICAgICAgICBbaG90ZWxJbmZvXT1cImhvdGVsSW5mbygpXCJcbiAgICAgICAgICAgIFtob3RlbElkXT1cImhvdGVsSWQoKVwiXG4gICAgICAgICAgICBbY3VycmVuY3lDb2RlXT1cImN1cnJlbmN5Q29kZSgpXCJcbiAgICAgICAgICAgIFthbGxQYWNrYWdlc05vblJlZnVuZGFibGVdPVwiYWxsUGFja2FnZXNOb25SZWZ1bmRhYmxlKClcIlxuICAgICAgICAgICAgKGNsb3NlTW9kYWwpPVwib25DbG9zZSgpXCJcbiAgICAgICAgICAgIChub25SZWZ1bmRhYmxlU3VibWl0U3VjY2Vzcyk9XCJvbk5vblJlZnVuZGFibGVTdWJtaXRTdWNjZXNzKCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIEBpZiAoYWxsUGFja2FnZXNOb25SZWZ1bmRhYmxlKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Qtcm9vbXNfX25vdGljZSBzZWxlY3Qtcm9vbXNfX25vdGljZS0td2FybmluZ1wiPlxuICAgICAgICA8c3ZnIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgIDwhLS0gd2FybmluZyB0cmlhbmdsZSBpY29uIC0tPlxuICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICBkPVwiTTEyIDl2NE0xMiAxN2guMDFNMTAuMjkgMy44NkwxLjgyIDE4YTIgMiAwIDAwMS43MSAzaDE2Ljk0YTIgMiAwIDAwMS43MS0zTDEzLjcxIDMuODZhMiAyIDAgMDAtMy40MiAwelwiXG4gICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPVwiMS42XCJcbiAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgICA8c3Bhbj5Tb3JyeSwgd2UgY291bGRuJ3QgcHJvY2VzcyB5b3VyIHJlZnVuZCByaWdodCBub3cuIFBsZWFzZSBjaGF0IHdpdGggb3VyIEN1c3RvbWVyIFNlcnZpY2UgdGVhbSBmb3IgaGVscC48L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJzZWxlY3Qtcm9vbXNfX2Zvb3RlclwiPlxuICAgIEBpZiAoYWxsUGFja2FnZXNOb25SZWZ1bmRhYmxlKCkpIHtcbiAgICAgIFxuICAgIH0gQGVsc2Uge1xuICAgICAgQGlmICghaGFzU2VsZWN0ZWRQYWNrYWdlcygpKSB7XG4gICAgICAgIDxwIGNsYXNzPVwic2VsZWN0LXJvb21zX19oaW50XCI+XG4gICAgICAgICAgU2VsZWN0IGF0IGxlYXN0IG9uZSByb29tIHRvIGNvbnRpbnVlXG4gICAgICAgIDwvcD5cbiAgICAgIH1cbiAgICAgIDxidXR0b25cbiAgICAgICAgY2xhc3M9XCJtYWluX2J0blwiXG4gICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWhhc1NlbGVjdGVkUGFja2FnZXMoKVwiXG4gICAgICAgIChjbGljayk9XCJvbkNvbnRpbnVlKClcIlxuICAgICAgPlxuICAgICAgICBDb250aW51ZSB0byBjYW5jZWxcbiAgICAgIDwvYnV0dG9uPlxuICAgIH1cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -1,17 +1,18 @@
1
1
  import { Component, ChangeDetectionStrategy, input, output, signal, inject, DestroyRef, computed, } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { TranslationService } from '../../../../../../shared/services/translation.service';
4
- import { HttpClient, HttpEventType, HttpRequest } from '@angular/common/http';
4
+ import { HttpEventType, HttpRequest } from '@angular/common/http';
5
5
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
6
6
  import { AlmatarIconModule } from '../../../../../../shared/modules/almatar-icon/almatar-icon.module';
7
7
  import { AlmatarHotelAutoCancellationEndpointsEnum } from '../../../../enums/almatar-hotel-auto-cancellation-endpoints.enum';
8
8
  import { AlmatarHotelAutoCancellationEndpointsService } from '../../../../services/almatar-hotel-auto-cancellation-endpoints.service';
9
9
  import { DialogService } from 'primeng/dynamicdialog';
10
+ import { SBD_HTTP } from '../../../../../../shared/services/sbd-http';
10
11
  import * as i0 from "@angular/core";
11
12
  import * as i1 from "../../../../../../shared/modules/almatar-icon/almatar-icon.module";
12
13
  export class AlmatarHotelAutoCancellationNonRefundableRoomComponent {
13
14
  constructor() {
14
- this.http = inject(HttpClient);
15
+ this.http = inject(SBD_HTTP);
15
16
  this.destroyRef = inject(DestroyRef);
16
17
  this.endpointsService = inject(AlmatarHotelAutoCancellationEndpointsService);
17
18
  this.translateService = inject(TranslationService);
@@ -239,4 +240,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
239
240
  type: Component,
240
241
  args: [{ selector: 'almatar-hotel-auto-cancellation-non-refundable-room', standalone: true, imports: [CommonModule, AlmatarIconModule], providers: [DialogService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"package-item package-item--non-refundable\"\n>\n <div class=\"package-item__header\">\n <div class=\"package-item__content\">\n <div class=\"package-item__info\">\n <h4 class=\"package-item__name\">{{ package().packageName }}</h4>\n @if (package().boardBasis) {\n <span class=\"package-item__board-basis\">{{\n package().boardBasis\n }}</span>\n }\n </div>\n\n @if (package()?.isCancelled) {\n <span\n class=\"package-item__refund-badge package-item__refund-badge--cancelled\"\n >\n PREVIOUS CANCELLATION\n </span>\n } @else {\n <span\n class=\"package-item__refund-badge package-item__refund-badge--non-refundable\"\n >\n NON-REFUNDABLE\n </span>\n }\n </div>\n </div>\n\n @if (groupedRooms().length) {\n <div class=\"package-item__rooms\">\n @for (group of groupedRooms(); track i; let i = $index) {\n <div class=\"package-item__room\">\n <h5 class=\"package-item__room-name\">\n @if (group.count > 1) {\n {{ group.count }}x\n @if (group.bedTypeOrRoomType) {\n {{ group.bedTypeOrRoomType }}\n }\n } @else {\n Room\n {{ i + 1 }}\n @if (group.bedTypeOrRoomType) {\n <span class=\"package-item__separator\">\u2022</span>\n {{ group.bedTypeOrRoomType }}\n }\n }\n </h5>\n @if (group.roomBasis) {\n <span class=\"package-item__room-basis\">{{\n group.roomBasis\n }}</span>\n }\n </div>\n }\n </div>\n }\n\n @if (!package()?.isCancelled && !allPackagesNonRefundable()) {\n <div class=\"package-item__non-refundable-content\">\n <div class=\"info-message\">\n <almatar-icon [name]=\"'exclamation-circle'\"> </almatar-icon>\n <p\n class=\"info-message__text\"\n (click)=\"$event.preventDefault(); onOpenCancellationPolicy()\"\n [innerHTML]=\"\n 'We can\\'t process automatic cancellation with this room. Check the <a class=&quot;info-message__link&quot;>cancellation policy</a> for details'\n \"\n ></p>\n </div>\n\n @if (uploadSuccess()) {\n <div class=\"upload-success\">\n <span class=\"upload-success__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=\"M13.4697 8.20112C13.7626 7.90822 14.2373 7.90822 14.5302 8.20112C14.8231 8.49401 14.8231 8.96877 14.5302 9.26166L7.53022 16.2617C7.23732 16.5546 6.76256 16.5546 6.46967 16.2617L3.46967 13.2617C3.17678 12.9688 3.17678 12.494 3.46967 12.2011C3.74427 11.9265 4.17899 11.909 4.47358 12.1494L4.53022 12.2011L6.99994 14.6708L13.4697 8.20112Z\"\n fill=\"#1B1A1F\"\n />\n <path\n d=\"M19.4697 8.20112C19.7626 7.90822 20.2373 7.90822 20.5302 8.20112C20.8231 8.49401 20.8231 8.96877 20.5302 9.26166L13.5302 16.2617C13.2639 16.5279 12.8415 16.5556 12.5429 16.3261L11.5429 15.5576L11.4843 15.5078C11.2079 15.2468 11.1686 14.8137 11.4052 14.5058C11.6418 14.198 12.0703 14.1245 12.3935 14.3242L12.457 14.3681L12.9345 14.7353L19.4697 8.20112Z\"\n fill=\"#1B1A1F\"\n />\n </svg>\n </span>\n <div class=\"upload-success__info\">\n <p class=\"upload-success__filename\">{{ filePicked()?.name }}</p>\n <p class=\"upload-success__meta\">\n {{ formatFileSize(filePicked()?.size) }} \u2022\n Uploaded\n </p>\n </div>\n <input\n type=\"file\"\n #fileInput\n (change)=\"onFileSelected($event)\"\n style=\"display: none\"\n accept=\".pdf,.jpg,.jpeg,.png,.doc,.docx\"\n />\n <button\n type=\"button\"\n class=\"upload-success__change-btn\"\n (click)=\"fileInput.click()\"\n >\n Change\n </button>\n </div>\n } @else {\n <div class=\"upload-section\">\n <almatar-icon [name]=\"'arrow-up-on-square'\"></almatar-icon>\n <div style=\"flex: 1\">\n <h5 class=\"upload-section__title\">\n Upload a document to support your request\n </h5>\n <p class=\"upload-section__subtitle\">\n Required to submit and track your request\n </p>\n @if (filePicked() && !uploadSuccess()) {\n <p class=\"upload-section__filename\">\n {{ filePicked()?.name }}\n </p>\n }\n @if (isUploading()) {\n <div class=\"upload-progress\">\n <div class=\"upload-progress__bar\">\n <div\n class=\"upload-progress__fill\"\n [style.width.%]=\"uploadProgress()\"\n ></div>\n </div>\n <span class=\"upload-progress__text\"\n >{{ uploadProgress() }}%</span\n >\n </div>\n }\n </div>\n <input\n type=\"file\"\n #fileInput\n (change)=\"onFileSelected($event)\"\n style=\"display: none\"\n accept=\".pdf,.jpg,.jpeg,.png,.doc,.docx\"\n />\n <button\n type=\"button\"\n class=\"upload-section__button\"\n [disabled]=\"isUploading()\"\n (click)=\"fileInput.click()\"\n >\n Upload file\n </button>\n </div>\n }\n\n @if (submitError()) {\n <div class=\"submit-result submit-result--error\">\n <almatar-icon [name]=\"'exclamation-circle'\"></almatar-icon>\n <p class=\"submit-result__text\">{{ submitError() }}</p>\n <button\n type=\"button\"\n class=\"submit-result__retry-btn\"\n (click)=\"onRetry()\"\n >\n Try Again\n </button>\n </div>\n } @else if (!submitSuccess()) {\n <button\n type=\"button\"\n class=\"submit-request-btn\"\n [disabled]=\"!uploadSuccess() || isSubmitting()\"\n (click)=\"onSubmitRequest()\"\n >\n @if (isSubmitting()) {\n Submitting...\n } @else {\n Submit my request\n }\n </button>\n }\n </div>\n }\n</div>\n", styles: [".package-item{display:flex;flex-direction:column;gap:12px;padding:12px;background:#fff;border:1px solid rgb(217,217,222);border-radius:16px;transition:border-color .2s ease,background-color .2s ease}.package-item--non-refundable{cursor:default}.package-item__header{display:flex;align-items:flex-start;gap:8px;width:100%}.package-item__content{flex:1;display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.package-item__info{display:flex;flex-direction:column;gap:4px}.package-item__name{font-size:calc(14 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);color:#1b1a1f;margin:0}.package-item__board-basis{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);color:#747583}.package-item__refund-badge{font-size:calc(10 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);text-transform:uppercase;padding:6px 8px;flex-shrink:0;border-radius:999px}.package-item__refund-badge--refundable{color:#15803c;background:#f0fdf5}.package-item__refund-badge--non-refundable{color:#6b7280;background:#f3f4f6}.package-item__refund-badge--cancelled{color:#6b7280;background:#f3f4f6;border:1px solid #d1d5db}.package-item__rooms{display:flex;flex-direction:column;gap:8px}.package-item__room{display:flex;flex-direction:column;gap:4px;padding:12px;border-radius:16px;border:1px solid rgb(217,217,222)}.package-item__room-name{font-size:calc(14 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);color:#1b1a1f;display:flex;align-items:center;gap:0;margin:0}.package-item__separator{margin:0 4px;color:#1f2937;font-weight:var(--almatar-font-weight-regular)}.package-item__room-basis{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);color:#747583}.package-item__non-refundable-content{display:flex;flex-direction:column;gap:8px;width:100%}.info-message{display:flex;gap:8px;padding:12px;background:#f7f7f8;border:1px solid rgb(217,217,222);border-radius:12px;align-items:center}.info-message__icon{flex-shrink:0;width:24px;height:24px;color:#1b1a1f}.info-message__text{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);color:#1b1a1f;line-height:15.6px;margin:0;cursor:pointer}.info-message__text ::ng-deep a{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);color:#1b1a1f;text-decoration:underline;cursor:pointer}.info-message__text ::ng-deep a:focus,.info-message__text ::ng-deep a:hover{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);color:#1b1a1f;text-decoration:underline!important;cursor:pointer}.info-message__link{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);color:#1b1a1f;text-decoration:underline;cursor:pointer}.info-message__link:focus,.info-message__link:hover{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);color:#1b1a1f;text-decoration:underline;cursor:pointer}.upload-success{display:flex;align-items:center;gap:12px;padding:12px;border:1px dashed rgb(217,217,222);border-radius:12px;background:#fff}.upload-success__icon{flex-shrink:0;display:flex;align-items:center;justify-content:center}.upload-success__info{flex:1;min-width:0}.upload-success__filename{font-size:calc(14 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-regular);color:#1b1a1f;margin:0 0 2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upload-success__meta{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);color:#747583;margin:0}.upload-success__change-btn{flex-shrink:0;padding:8px 14px;background:#fff;border:1.5px solid rgb(217,217,222);border-radius:8px;color:#7c3aed;font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);cursor:pointer;transition:all .2s ease;white-space:nowrap}.upload-success__change-btn:hover:not(:disabled){background:#7c3aed;color:#fff}.upload-success__change-btn:disabled{opacity:.5;cursor:not-allowed}.upload-section{display:flex;align-items:center;gap:12px;padding:12px;border:1px dashed rgb(217,217,222);border-radius:12px;background:#fff}.upload-section__icon{flex-shrink:0;width:24px;height:24px;color:#1b1a1f}.upload-section__title{font-size:calc(14 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-regular);color:#1b1a1f;margin:0 0 2px}.upload-section__subtitle{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);color:#747583;margin:0;line-height:1.4}.upload-section__button{flex-shrink:0;padding:8px 14px;background:#fff;border:1.5px solid rgb(217,217,222);border-radius:8px;color:#7c3aed;font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);cursor:pointer;transition:all .2s ease;white-space:nowrap}.upload-section__button:hover:not(:disabled){background:#7c3aed;color:#fff}.upload-section__button:disabled{opacity:.5;cursor:not-allowed}.upload-section__filename{font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);color:#747583;margin:8px 0 0;font-weight:var(--almatar-font-weight-medium)}.upload-progress{display:flex;align-items:center;gap:8px;margin-top:8px}.upload-progress__bar{flex:1;height:6px;background:#e5e7eb;border-radius:3px;overflow:hidden}.upload-progress__fill{height:100%;background:#7c3aed;border-radius:3px;transition:width .2s ease}.upload-progress__text{font-size:calc(11 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);color:#7c3aed;min-width:36px;text-align:right}.submit-request-btn{width:100%;padding:8px 0;background:#f7f7f8;border:none;border-radius:12px;color:#7c3aed;cursor:pointer;font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-semibold);transition:all .2s ease;letter-spacing:.2px}.submit-request-btn:disabled{background:#f7f7f8;color:#b8b9c1;cursor:not-allowed}.submit-request-btn:disabled:hover{background:#f7f7f8;color:#b8b9c1}.submit-request-btn:hover{background:#f7f7f8;color:#7c3aed}.submit-result{display:flex;align-items:center;gap:8px;padding:12px;border-radius:12px}.submit-result--error{background:#fef2f2;border:1px solid rgba(220,38,38,.2);flex-wrap:wrap}.submit-result--error almatar-icon{color:#dc2626}.submit-result__text{flex:1;font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);margin:0;line-height:1.4;color:#dc2626}.submit-result__retry-btn{width:100%;margin-top:8px;padding:8px 16px;background:#dc2626;border:none;border-radius:8px;color:#fff;font-size:calc(12 * var(--almatar-font-size-ratio, 1) * 1px);font-weight:var(--almatar-font-weight-medium);cursor:pointer;transition:all .2s ease}.submit-result__retry-btn:hover{background:#b91c1c}\n"] }]
241
242
  }] });
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1ub24tcmVmdW5kYWJsZS1yb29tLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9ob3RlbC1jYW5jZWwvY29tcG9uZW50cy9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLXNlbGVjdC1yb29tcy9jb21wb25lbnRzL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tbm9uLXJlZnVuZGFibGUtcm9vbS9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLW5vbi1yZWZ1bmRhYmxlLXJvb20uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYm9va2luZy1kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL2hvdGVsLWNhbmNlbC9jb21wb25lbnRzL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tc2VsZWN0LXJvb21zL2NvbXBvbmVudHMvYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1ub24tcmVmdW5kYWJsZS1yb29tL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tbm9uLXJlZnVuZGFibGUtcm9vbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sVUFBVSxFQUVWLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdURBQXVELENBQUM7QUFDM0YsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFNaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDdEcsT0FBTyxFQUFFLHlDQUF5QyxFQUFFLE1BQU0sa0VBQWtFLENBQUM7QUFDN0gsT0FBTyxFQUFFLDRDQUE0QyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDdEksT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7QUFzQnRELE1BQU0sT0FBTyxzREFBc0Q7SUFabkU7UUFhbUIsU0FBSSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUMxQixlQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLHFCQUFnQixHQUFHLE1BQU0sQ0FDeEMsNENBQTRDLENBQzdDLENBQUM7UUFFZSxxQkFBZ0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM5QyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUU5QyxZQUFPLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBd0MsQ0FBQztRQUNqRSxnQkFBVyxHQUFHLEtBQUssQ0FBeUMsRUFBRSxDQUFDLENBQUM7UUFDaEUsY0FBUyxHQUFHLEtBQUssQ0FDeEIsSUFBSSxDQUNMLENBQUM7UUFFRiwrQkFBK0I7UUFDL0IsZ0NBQWdDO1FBQ2hDLE1BQU07UUFFRyxZQUFPLEdBQUcsS0FBSyxDQUFrQixFQUFFLENBQUMsQ0FBQztRQUNyQyxpQkFBWSxHQUFHLEtBQUssQ0FBUyxLQUFLLENBQUMsQ0FBQztRQUNwQyw2QkFBd0IsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFFekMsaUNBQTRCLEdBQUcsSUFBSSxDQUFDO1FBRTVDLGVBQVUsR0FBRyxNQUFNLEVBQVEsQ0FBQztRQUM1QiwrQkFBMEIsR0FBRyxNQUFNLEVBQVUsQ0FBQztRQUU5QyxpQkFBWSxHQUFHLE1BQU0sQ0FBYyxJQUFJLENBQUMsQ0FBQztRQUN6QyxvQkFBZSxHQUFHLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFDOUMsZUFBVSxHQUFHLE1BQU0sQ0FBYyxJQUFJLENBQUMsQ0FBQztRQUN2QyxrQkFBYSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN2QyxtQkFBYyxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztRQUNuQyxnQkFBVyxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNyQyxpQkFBWSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN0QyxrQkFBYSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUN2QyxnQkFBVyxHQUFHLE1BQU0sQ0FBZ0IsSUFBSSxDQUFDLENBQUM7UUFFMUMsaUJBQVksR0FBRyxRQUFRLENBQXdCLEdBQUcsRUFBRTtZQUMzRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMxQyxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBK0IsQ0FBQztZQUV4RCxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUN6QixpRUFBaUU7Z0JBQ2pFLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxFQUFFLFFBQVEsQ0FBQztnQkFDekMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7Z0JBQ3ZDLE1BQU0sR0FBRyxHQUFHLEdBQUcsaUJBQWlCLE1BQU0sU0FBUyxFQUFFLENBQUM7Z0JBRWxELElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO29CQUN0QixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBRSxDQUFDO29CQUNqQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ2QsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7cUJBQU0sQ0FBQztvQkFDTixRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRTt3QkFDaEIsR0FBRzt3QkFDSCxpQkFBaUI7d0JBQ2pCLFNBQVM7d0JBQ1QsS0FBSyxFQUFFLENBQUM7d0JBQ1IsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDO3FCQUNkLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztZQUVELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUN2QyxDQUFDLENBQUMsQ0FBQztLQTJNSjtJQXpNQyxjQUFjLENBQUMsS0FBWTtRQUN6QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztRQUMvQyxJQUFJLEtBQUssQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUMsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDO0lBRU8sVUFBVSxDQUFDLElBQVU7UUFDM0IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFL0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUNoQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUU5QixNQUFNLEdBQUcsR0FBRyxJQUFJLFdBQVcsQ0FDekIsTUFBTSxFQUNOLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxlQUFlLENBQ25DLHlDQUF5QyxDQUFDLGdCQUFnQixDQUMzRCxFQUNELFFBQVEsRUFDUjtZQUNFLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLFlBQVksRUFBRSxNQUFNO1NBQ3JCLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxJQUFJO2FBQ04sT0FBTyxDQUE0QixHQUFHLENBQUM7YUFDdkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QyxTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssYUFBYSxDQUFDLGNBQWMsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQy9ELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDaEUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3BDLENBQUM7cUJBQU0sSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztvQkFDakQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQzdCLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUM1QixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzVCLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLENBQUMsQ0FBQztnQkFDMUQsQ0FBQztZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMxQixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqQyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUU5QixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFFdEIsSUFBSSxDQUFDLGdCQUFnQjthQUNsQixnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxRQUFRLENBQUM7YUFDekUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUN6QyxTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUNULElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM3QixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLDBCQUEwQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDbkUsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxJQUFJLDBCQUEwQixDQUFDLENBQUM7WUFDckUsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUV6Qyx3RUFBd0U7UUFDeEUsTUFBTSxjQUFjLEdBQ2xCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFFeEUsMERBQTBEO1FBQzFELE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2xELG9GQUFvRjtZQUNwRixNQUFNLHVCQUF1QixHQUFHLENBQUMsR0FBRyxDQUFDLG9CQUFvQixJQUFJLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FDbEUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ1gsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRO2dCQUN6QixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07Z0JBQ3JCLGVBQWUsRUFBRSxZQUFZO2dCQUM3QixVQUFVLEVBQUUsTUFBTSxDQUFDLFlBQVk7Z0JBQy9CLGlCQUFpQixFQUNmLE1BQU0sQ0FBQyxXQUFXLEtBQUssY0FBYztvQkFDbkMsQ0FBQyxDQUFDLGNBQWM7b0JBQ2hCLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxLQUFLLFlBQVk7d0JBQ2pDLE1BQU0sQ0FBQyxXQUFXLEtBQUssUUFBUTt3QkFDakMsQ0FBQyxDQUFDLGlCQUFpQjt3QkFDbkIsQ0FBQyxDQUFDLGFBQWE7YUFDdEIsQ0FBQyxDQUNILENBQUM7WUFFRixvQ0FBb0M7WUFDcEMsSUFBSSx1QkFBdUIsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ3pDLHVCQUF1QixDQUFDLElBQUksQ0FBQztvQkFDM0IsUUFBUSxFQUFFLGFBQWEsRUFBRSxPQUFPO29CQUNoQyxNQUFNLEVBQUUsYUFBYSxFQUFFLFFBQVE7b0JBQy9CLGVBQWUsRUFBRSxZQUFZO29CQUM3QixVQUFVLEVBQUUsR0FBRyxDQUFDLGVBQWUsSUFBSSxDQUFDO29CQUNwQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLGFBQWE7aUJBQ25FLENBQUMsQ0FBQztZQUNMLENBQUM7WUFFRCw4Q0FBOEM7WUFDOUMsTUFBTSxPQUFPLEdBQ1YsR0FBVyxFQUFFLDJCQUEyQjtnQkFDeEMsR0FBVyxFQUFFLDJCQUEyQixDQUFDO1lBQzVDLE9BQU87Z0JBQ0wsR0FBRyxHQUFHO2dCQUNOLG9CQUFvQixFQUFFLHVCQUF1QjtnQkFDN0MsWUFBWSxFQUFFLEdBQUcsQ0FBQyxZQUFZLElBQUksR0FBRyxDQUFDLGFBQWEsSUFBSSxLQUFLO2dCQUM1RCxlQUFlLEVBQUUsR0FBRyxDQUFDLGVBQWU7Z0JBQ3BDLFFBQVEsRUFBRSxZQUFZO2dCQUN0QixVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVU7Z0JBQzFCLGNBQWMsRUFBRSxPQUFPO2dCQUN2QiwyQkFBMkIsRUFBRSxPQUFPO2FBQ3JDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sUUFBUSxHQUFHO1lBQ2YsUUFBUSxFQUFFLGdCQUFnQjtZQUMxQixRQUFRLEVBQUUsYUFBYSxFQUFFLE9BQU87WUFDaEMsU0FBUyxFQUFFLGFBQWEsRUFBRSxPQUFPO1lBQ2pDLE1BQU0sRUFBRSxhQUFhLEVBQUUsUUFBUTtZQUMvQixPQUFPLEVBQUUsYUFBYSxFQUFFLFFBQVE7WUFDaEMsY0FBYyxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUU7U0FDL0IsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQztRQUNsQixNQUFNLFVBQVUsR0FDZCxJQUFJLEtBQUssSUFBSTtZQUNYLENBQUMsQ0FBQyxzQ0FBc0M7WUFDeEMsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDO1FBRTVDLDZEQUE2RDtRQUM3RCxxTUFBcU07UUFDck0sZ0RBQWdEO1FBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQzFDLDJCQUEyQixDQUM1QixDQUFDO1FBQ0YsT0FBTyxDQUFDLElBQUksQ0FBQyxnRkFBZ0YsQ0FBQyxDQUFDO1FBQy9GLDhEQUE4RDtRQUM5RCxZQUFZO1FBQ1osWUFBWTtRQUNaLGdCQUFnQjtRQUNoQiw0QkFBNEI7UUFDNUIsNEJBQTRCO1FBQzVCLGdDQUFnQztRQUNoQyxTQUFTO1FBQ1Qsa0JBQWtCO1FBQ2xCLHNCQUFzQjtRQUN0Qiw2Q0FBNkM7UUFDN0MsNkJBQTZCO1FBQzdCLFNBQVM7UUFDVCxPQUFPO1FBQ1AsOENBQThDO1FBQzlDLHdDQUF3QztRQUN4Qyx1QkFBdUI7UUFDdkIsd0JBQXdCO1FBQ3hCLGdEQUFnRDtRQUNoRCxNQUFNO1FBQ1IsSUFBSTtRQUNOLElBQUk7SUFDTixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQXlCO1FBQ3RDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELElBQUksS0FBSyxHQUFHLElBQUksRUFBRSxDQUFDO1lBQ2pCLE9BQU8sR0FBRyxLQUFLLElBQUksQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDO1lBQ3hCLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzFDLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNwRCxDQUFDOytHQTNRVSxzREFBc0Q7bUdBQXRELHNEQUFzRCxzaENBUnRELENBQUMsYUFBYSxDQUFDLDBCQ3JDNUIsdzZOQThMQSwyaU5EMUpZLFlBQVksOEJBQUUsaUJBQWlCOzs0RkFTOUIsc0RBQXNEO2tCQVpsRSxTQUFTOytCQUNFLHFEQUFxRCxjQUNuRCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsYUFDL0IsQ0FBQyxhQUFhLENBQUMsbUJBTVQsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgaW5qZWN0LFxuICBEZXN0cm95UmVmLFxuICBlZmZlY3QsXG4gIGNvbXB1dGVkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvdHJhbnNsYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXZlbnRUeXBlLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7XG4gIElBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uUGFja2FnZSxcbiAgSUFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25Ib3RlbEluZm8sXG4gIElBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uUGFja2FnZVJvb20sXG59IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvaS1hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBbG1hdGFySWNvbk1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3NoYXJlZC9tb2R1bGVzL2FsbWF0YXItaWNvbi9hbG1hdGFyLWljb24ubW9kdWxlJztcbmltcG9ydCB7IEFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25FbmRwb2ludHNFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW51bXMvYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1lbmRwb2ludHMuZW51bSc7XG5pbXBvcnQgeyBBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uRW5kcG9pbnRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tZW5kcG9pbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5cbmludGVyZmFjZSBJR3JvdXBlZFBhY2thZ2VSb29tIHtcbiAga2V5OiBzdHJpbmc7XG4gIGJlZFR5cGVPclJvb21UeXBlOiBzdHJpbmc7XG4gIHJvb21CYXNpczogc3RyaW5nO1xuICBjb3VudDogbnVtYmVyO1xuICByb29tczogSUFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25QYWNrYWdlUm9vbVtdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLW5vbi1yZWZ1bmRhYmxlLXJvb20nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBbG1hdGFySWNvbk1vZHVsZV0sXG4gIHByb3ZpZGVyczogW0RpYWxvZ1NlcnZpY2VdLFxuICB0ZW1wbGF0ZVVybDpcbiAgICAnLi9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLW5vbi1yZWZ1bmRhYmxlLXJvb20uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtcbiAgICAnLi9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLW5vbi1yZWZ1bmRhYmxlLXJvb20uY29tcG9uZW50LnNjc3MnLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvbk5vblJlZnVuZGFibGVSb29tQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgZW5kcG9pbnRzU2VydmljZSA9IGluamVjdChcbiAgICBBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uRW5kcG9pbnRzU2VydmljZSxcbiAgKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHRyYW5zbGF0ZVNlcnZpY2UgPSBpbmplY3QoVHJhbnNsYXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2dTZXJ2aWNlID0gaW5qZWN0KERpYWxvZ1NlcnZpY2UpO1xuXG4gIHJlYWRvbmx5IHBhY2thZ2UgPSBpbnB1dC5yZXF1aXJlZDxJQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvblBhY2thZ2U+KCk7XG4gIHJlYWRvbmx5IGFsbFBhY2thZ2VzID0gaW5wdXQ8SUFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25QYWNrYWdlW10+KFtdKTtcbiAgcmVhZG9ubHkgaG90ZWxJbmZvID0gaW5wdXQ8SUFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25Ib3RlbEluZm8gfCBudWxsPihcbiAgICBudWxsLFxuICApO1xuXG4gIC8vIGNvbnN0cnVjdG9yKCl7ZWZmZWN0KCgpID0+IHtcbiAgLy8gICBjb25zb2xlLmxvZyh0aGlzLnBhY2thZ2UoKSlcbiAgLy8gfSl9XG5cbiAgcmVhZG9ubHkgaG90ZWxJZCA9IGlucHV0PHN0cmluZyB8IG51bWJlcj4oJycpO1xuICByZWFkb25seSBjdXJyZW5jeUNvZGUgPSBpbnB1dDxzdHJpbmc+KCdTQVInKTtcbiAgcmVhZG9ubHkgYWxsUGFja2FnZXNOb25SZWZ1bmRhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlTG9jYWxDYW5jZWxsYXRpb25Qb2xpY2llcyA9IHRydWU7XG5cbiAgcmVhZG9ubHkgY2xvc2VNb2RhbCA9IG91dHB1dDx2b2lkPigpO1xuICByZWFkb25seSBub25SZWZ1bmRhYmxlU3VibWl0U3VjY2VzcyA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgcmVhZG9ubHkgdXBsb2FkZWRGaWxlID0gc2lnbmFsPEZpbGUgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgdXBsb2FkZWRGaWxlVXJsID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBmaWxlUGlja2VkID0gc2lnbmFsPEZpbGUgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgdXBsb2FkU3VjY2VzcyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHVwbG9hZFByb2dyZXNzID0gc2lnbmFsPG51bWJlcj4oMCk7XG4gIHJlYWRvbmx5IGlzVXBsb2FkaW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgaXNTdWJtaXR0aW5nID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgc3VibWl0U3VjY2VzcyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHN1Ym1pdEVycm9yID0gc2lnbmFsPHN0cmluZyB8IG51bGw+KG51bGwpO1xuXG4gIHJlYWRvbmx5IGdyb3VwZWRSb29tcyA9IGNvbXB1dGVkPElHcm91cGVkUGFja2FnZVJvb21bXT4oKCkgPT4ge1xuICAgIGNvbnN0IHJvb21zID0gdGhpcy5wYWNrYWdlKCk/LnJvb21zIHx8IFtdO1xuICAgIGNvbnN0IGdyb3VwTWFwID0gbmV3IE1hcDxzdHJpbmcsIElHcm91cGVkUGFja2FnZVJvb20+KCk7XG5cbiAgICBmb3IgKGNvbnN0IHJvb20gb2Ygcm9vbXMpIHtcbiAgICAgIC8vIGNvbnN0IGJlZFR5cGVPclJvb21UeXBlID0gcm9vbS5iZWRUeXBlIHx8IHJvb20ucm9vbVR5cGUgfHwgJyc7XG4gICAgICBjb25zdCBiZWRUeXBlT3JSb29tVHlwZSA9IHJvb20/LnJvb21OYW1lO1xuICAgICAgY29uc3Qgcm9vbUJhc2lzID0gcm9vbS5yb29tQmFzaXMgfHwgJyc7XG4gICAgICBjb25zdCBrZXkgPSBgJHtiZWRUeXBlT3JSb29tVHlwZX18fHwke3Jvb21CYXNpc31gO1xuXG4gICAgICBpZiAoZ3JvdXBNYXAuaGFzKGtleSkpIHtcbiAgICAgICAgY29uc3QgZ3JvdXAgPSBncm91cE1hcC5nZXQoa2V5KSE7XG4gICAgICAgIGdyb3VwLmNvdW50Kys7XG4gICAgICAgIGdyb3VwLnJvb21zLnB1c2gocm9vbSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBncm91cE1hcC5zZXQoa2V5LCB7XG4gICAgICAgICAga2V5LFxuICAgICAgICAgIGJlZFR5cGVPclJvb21UeXBlLFxuICAgICAgICAgIHJvb21CYXNpcyxcbiAgICAgICAgICBjb3VudDogMSxcbiAgICAgICAgICByb29tczogW3Jvb21dLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gQXJyYXkuZnJvbShncm91cE1hcC52YWx1ZXMoKSk7XG4gIH0pO1xuXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKGlucHV0LmZpbGVzICYmIGlucHV0LmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbGUgPSBpbnB1dC5maWxlc1swXTtcbiAgICAgIHRoaXMuZmlsZVBpY2tlZC5zZXQoZmlsZSk7XG4gICAgICB0aGlzLnVwbG9hZEZpbGUoZmlsZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGxvYWRGaWxlKGZpbGU6IEZpbGUpOiB2b2lkIHtcbiAgICB0aGlzLmlzVXBsb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLnVwbG9hZFByb2dyZXNzLnNldCgwKTtcbiAgICB0aGlzLnVwbG9hZFN1Y2Nlc3Muc2V0KGZhbHNlKTtcbiAgICB0aGlzLnVwbG9hZGVkRmlsZVVybC5zZXQobnVsbCk7XG5cbiAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUpO1xuXG4gICAgY29uc3QgcmVxID0gbmV3IEh0dHBSZXF1ZXN0KFxuICAgICAgJ1BPU1QnLFxuICAgICAgdGhpcy5lbmRwb2ludHNTZXJ2aWNlLnJlc29sdmVFbmRwb2ludChcbiAgICAgICAgQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvbkVuZHBvaW50c0VudW0udXBsb2FkQXR0YWNobWVudCxcbiAgICAgICksXG4gICAgICBmb3JtRGF0YSxcbiAgICAgIHtcbiAgICAgICAgcmVwb3J0UHJvZ3Jlc3M6IHRydWUsXG4gICAgICAgIHJlc3BvbnNlVHlwZTogJ2pzb24nLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy5odHRwXG4gICAgICAucmVxdWVzdDx7IGRhdGE6IHsgdXJsOiBzdHJpbmcgfSB9PihyZXEpXG4gICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoZXZlbnQpID0+IHtcbiAgICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5VcGxvYWRQcm9ncmVzcyAmJiBldmVudC50b3RhbCkge1xuICAgICAgICAgICAgY29uc3QgcHJvZ3Jlc3MgPSBNYXRoLnJvdW5kKCgxMDAgKiBldmVudC5sb2FkZWQpIC8gZXZlbnQudG90YWwpO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRQcm9ncmVzcy5zZXQocHJvZ3Jlc3MpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQudHlwZSA9PT0gSHR0cEV2ZW50VHlwZS5SZXNwb25zZSkge1xuICAgICAgICAgICAgdGhpcy51cGxvYWRQcm9ncmVzcy5zZXQoMTAwKTtcbiAgICAgICAgICAgIHRoaXMuaXNVcGxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkU3VjY2Vzcy5zZXQodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZS5zZXQoZmlsZSk7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZVVybC5zZXQoZXZlbnQuYm9keT8uZGF0YT8udXJsID8/IG51bGwpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzVXBsb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy51cGxvYWRQcm9ncmVzcy5zZXQoMCk7XG4gICAgICAgICAgdGhpcy51cGxvYWRTdWNjZXNzLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5maWxlUGlja2VkLnNldChudWxsKTtcbiAgICAgICAgICB0aGlzLnVwbG9hZGVkRmlsZVVybC5zZXQobnVsbCk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIG9uU3VibWl0UmVxdWVzdCgpOiB2b2lkIHtcbiAgICBjb25zdCB1cmwgPSB0aGlzLnVwbG9hZGVkRmlsZVVybCgpO1xuICAgIGlmICghdXJsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc1N1Ym1pdHRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMuc3VibWl0RXJyb3Iuc2V0KG51bGwpO1xuICAgIHRoaXMuc3VibWl0U3VjY2Vzcy5zZXQoZmFsc2UpO1xuXG4gICAgY29uc3QgbGFuZ3VhZ2UgPSAnZW4nO1xuXG4gICAgdGhpcy5lbmRwb2ludHNTZXJ2aWNlXG4gICAgICAucHJvY2Vzc05vblJlZnVuZGFibGVDYW5jZWxsYXRpb24odGhpcy5wYWNrYWdlKCkucGFja2FnZUlkLCB1cmwsIGxhbmd1YWdlKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5zdWJtaXRTdWNjZXNzLnNldCh0cnVlKTtcbiAgICAgICAgICB0aGlzLm5vblJlZnVuZGFibGVTdWJtaXRTdWNjZXNzLmVtaXQodGhpcy5wYWNrYWdlKCkucGFja2FnZU5hbWUpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1N1Ym1pdHRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLnN1Ym1pdEVycm9yLnNldChlcnJvcj8ubWVzc2FnZSB8fCAnRmFpbGVkIHRvIHN1Ym1pdCByZXF1ZXN0Jyk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIG9uUmV0cnkoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJtaXRFcnJvci5zZXQobnVsbCk7XG4gICAgdGhpcy5vblN1Ym1pdFJlcXVlc3QoKTtcbiAgfVxuXG4gIG9uT3BlbkNhbmNlbGxhdGlvblBvbGljeSgpOiB2b2lkIHtcbiAgICBjb25zdCBob3RlbEluZm9EYXRhID0gdGhpcy5ob3RlbEluZm8oKTtcbiAgICBjb25zdCBjdXJyZW5jeUNvZGUgPSB0aGlzLmN1cnJlbmN5Q29kZSgpO1xuXG4gICAgLy8gVXNlIGFsbCBwYWNrYWdlcyBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG8gY3VycmVudCBwYWNrYWdlXG4gICAgY29uc3QgcGFja2FnZXNUb1Nob3cgPVxuICAgICAgdGhpcy5hbGxQYWNrYWdlcygpLmxlbmd0aCA+IDAgPyB0aGlzLmFsbFBhY2thZ2VzKCkgOiBbdGhpcy5wYWNrYWdlKCldO1xuXG4gICAgLy8gVHJhbnNmb3JtIGFsbCBwYWNrYWdlcyB3aXRoIHRoZWlyIGNhbmNlbGxhdGlvbiBwb2xpY2llc1xuICAgIGNvbnN0IHBhY2thZ2VzRm9yUG9wdXAgPSBwYWNrYWdlc1RvU2hvdy5tYXAoKHBrZykgPT4ge1xuICAgICAgLy8gVHJhbnNmb3JtIGNhbmNlbGxhdGlvbiBwb2xpY2llcyB0byB0aGUgZm9ybWF0IGV4cGVjdGVkIGJ5IG1hcENhbmNlbGxhdGlvblBvbGljaWVzXG4gICAgICBjb25zdCByYXdDYW5jZWxsYXRpb25Qb2xpY2llcyA9IChwa2cuY2FuY2VsbGF0aW9uUG9saWNpZXMgfHwgW10pLm1hcChcbiAgICAgICAgKHBvbGljeSkgPT4gKHtcbiAgICAgICAgICBkYXRlRnJvbTogcG9saWN5LmZyb21EYXRlLFxuICAgICAgICAgIGRhdGVUbzogcG9saWN5LnRvRGF0ZSxcbiAgICAgICAgICBjdXJyZW5jeUlzb0NvZGU6IGN1cnJlbmN5Q29kZSxcbiAgICAgICAgICBmaW5hbFByaWNlOiBwb2xpY3kucGVuYWx0eVZhbHVlLFxuICAgICAgICAgIHJlZnVuZGFiaWxpdHlUeXBlOlxuICAgICAgICAgICAgcG9saWN5LnBlbmFsdHlUeXBlID09PSAnRnVsbFJlZnVuZGVkJ1xuICAgICAgICAgICAgICA/ICdGdWxsUmVmdW5kZWQnXG4gICAgICAgICAgICAgIDogcG9saWN5LnBlbmFsdHlUeXBlID09PSAnUGVyY2VudGFnZScgfHxcbiAgICAgICAgICAgICAgICAgIHBvbGljeS5wZW5hbHR5VHlwZSA9PT0gJ0Ftb3VudCdcbiAgICAgICAgICAgICAgICA/ICdQYXJ0aWFsUmVmdW5kZWQnXG4gICAgICAgICAgICAgICAgOiAnTm9uUmVmdW5kZWQnLFxuICAgICAgICB9KSxcbiAgICAgICk7XG5cbiAgICAgIC8vIEVuc3VyZSBhdCBsZWFzdCBvbmUgcG9saWN5IGV4aXN0c1xuICAgICAgaWYgKHJhd0NhbmNlbGxhdGlvblBvbGljaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByYXdDYW5jZWxsYXRpb25Qb2xpY2llcy5wdXNoKHtcbiAgICAgICAgICBkYXRlRnJvbTogaG90ZWxJbmZvRGF0YT8uY2hlY2tJbixcbiAgICAgICAgICBkYXRlVG86IGhvdGVsSW5mb0RhdGE/LmNoZWNrT3V0LFxuICAgICAgICAgIGN1cnJlbmN5SXNvQ29kZTogY3VycmVuY3lDb2RlLFxuICAgICAgICAgIGZpbmFsUHJpY2U6IHBrZy5jYW5jZWxsYXRpb25GZWUgfHwgMCxcbiAgICAgICAgICByZWZ1bmRhYmlsaXR5VHlwZTogcGtnLmlzUmVmdW5kYWJsZSA/ICdSZWZ1bmRhYmxlJyA6ICdOb25SZWZ1bmRlZCcsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICAvLyBCdWlsZCBwYWNrYWdlIGRhdGEgd2l0aCBhbGwgcmVxdWlyZWQgZmllbGRzXG4gICAgICBjb25zdCByZW1hcmtzID1cbiAgICAgICAgKHBrZyBhcyBhbnkpPy5jYW5jZWxsYXRpb25Qb2xpY2llc1JlbWFya3MgPz9cbiAgICAgICAgKHBrZyBhcyBhbnkpPy5DYW5jZWxsYXRpb25Qb2xpY2llc1JlbWFya3M7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wa2csXG4gICAgICAgIGNhbmNlbGxhdGlvblBvbGljaWVzOiByYXdDYW5jZWxsYXRpb25Qb2xpY2llcyxcbiAgICAgICAgaXNSZWZ1bmRhYmxlOiBwa2cuaXNSZWZ1bmRhYmxlID8/IHBrZy5yZWZ1bmRhYmlsaXR5ID8/IGZhbHNlLFxuICAgICAgICByZWZ1bmRhYmxlVW50aWw6IHBrZy5yZWZ1bmRhYmxlVW50aWwsXG4gICAgICAgIGN1cnJlbmN5OiBjdXJyZW5jeUNvZGUsXG4gICAgICAgIGZpbmFsUHJpY2U6IHBrZy5yb29tQW1vdW50LFxuICAgICAgICBib29raW5nUmVtYXJrczogcmVtYXJrcyxcbiAgICAgICAgY2FuY2VsbGF0aW9uUG9saWNpZXNSZW1hcmtzOiByZW1hcmtzLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIGNvbnN0IGNhcnRJbmZvID0ge1xuICAgICAgcGFja2FnZXM6IHBhY2thZ2VzRm9yUG9wdXAsXG4gICAgICBmcm9tRGF0ZTogaG90ZWxJbmZvRGF0YT8uY2hlY2tJbixcbiAgICAgIGRhdGVfZnJvbTogaG90ZWxJbmZvRGF0YT8uY2hlY2tJbixcbiAgICAgIHRvRGF0ZTogaG90ZWxJbmZvRGF0YT8uY2hlY2tPdXQsXG4gICAgICBkYXRlX3RvOiBob3RlbEluZm9EYXRhPy5jaGVja091dCxcbiAgICAgIGFsbXRhYXJIb3RlbElkOiB0aGlzLmhvdGVsSWQoKSxcbiAgICB9O1xuXG4gICAgY29uc3QgbGFuZyA9ICdlbic7XG4gICAgY29uc3QgZm9ybWF0RGF0ZSA9XG4gICAgICBsYW5nID09PSAnZW4nXG4gICAgICAgID8gJ2RkZGQgRG8gb2YgTU1NTSBZWVlZIC0gaGg6bW0gQSBbR01UXSdcbiAgICAgICAgOiAnZGRkZCAsIEREIE1NTU0gWVlZWSAtIGhoOm1tIEEgW0dNVF0nO1xuXG4gICAgLy8gVE9ETzogRml4IGltcG9ydCBwYXRoIGZvciBDYW5jZWxsYXRpb25Qb2xpY3lQb3B1cENvbXBvbmVudFxuICAgIC8vIGltcG9ydCgnbGlicy9mZWF0dXJlcy9zcmMvbGliL2ZlYXR1cmVzL2hvdGVscy9zaGFyZWQvbW9kdWxlcy9ob3RlbC1ib29raW5nLWluZm9ybWF0aW9uL2NvbXBvbmVudHMvYm9va2luZy1zdW1tYXJ5L2NvbXBvbmVudHMvY2FuY2VsbGF0aW9uLXBvbGljeS1wb3B1cC9jYW5jZWxsYXRpb24tcG9saWN5LnBvcHVwLmNvbXBvbmVudCcpLnRoZW4oXG4gICAgLy8gICAoeyBDYW5jZWxsYXRpb25Qb2xpY3lQb3B1cENvbXBvbmVudCB9KSA9PiB7XG4gICAgICAgIGNvbnN0IGhlYWRlciA9IHRoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KFxuICAgICAgICAgICdIT1RFTC5jYW5jZWxsYXRpb24tcG9saWN5JyxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc29sZS53YXJuKCdDYW5jZWxsYXRpb25Qb2xpY3lQb3B1cENvbXBvbmVudCBub3QgYXZhaWxhYmxlIC0gaW1wb3J0IHBhdGggbmVlZHMgdG8gYmUgZml4ZWQnKTtcbiAgICAgICAgLy8gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2FuY2VsbGF0aW9uUG9saWN5UG9wdXBDb21wb25lbnQsIHtcbiAgICAgICAgLy8gICBoZWFkZXIsXG4gICAgICAgIC8vICAgZGF0YToge1xuICAgICAgICAvLyAgICAgY2FydEluZm8sXG4gICAgICAgIC8vICAgICBjdXJyZW50Q3VycmVuY3lPYmo6IHtcbiAgICAgICAgLy8gICAgICAgY29kZTogY3VycmVuY3lDb2RlLFxuICAgICAgICAvLyAgICAgICBjdXJyZW5jeTogY3VycmVuY3lDb2RlLFxuICAgICAgICAvLyAgICAgfSxcbiAgICAgICAgLy8gICAgIGZvcm1hdERhdGUsXG4gICAgICAgIC8vICAgICBob3RlbERldGFpbHM6IHtcbiAgICAgICAgLy8gICAgICAgaG90ZWxOYW1lOiBob3RlbEluZm9EYXRhPy5ob3RlbE5hbWUsXG4gICAgICAgIC8vICAgICAgIHBheW1lbnRPcHRpb246IG51bGwsXG4gICAgICAgIC8vICAgICB9LFxuICAgICAgICAvLyAgIH0sXG4gICAgICAgIC8vICAgc3R5bGVDbGFzczogJ2NhbmNlbGxhdGlvbi1wb2xpY3ktZGlhbG9nJyxcbiAgICAgICAgLy8gICBjb250ZW50U3R5bGU6IHsgb3ZlcmZsb3c6ICdhdXRvJyB9LFxuICAgICAgICAvLyAgIGJhc2VaSW5kZXg6IDEwMDAwLFxuICAgICAgICAvLyAgIG1heGltaXphYmxlOiBmYWxzZSxcbiAgICAgICAgLy8gICBzdHlsZTogeyB3aWR0aDogJzYwMHB4JywgbWF4V2lkdGg6ICc5MCUnIH0sXG4gICAgICAgIC8vIH0pO1xuICAgICAgLy99LFxuICAgIC8vKTtcbiAgfVxuXG4gIGZvcm1hdEZpbGVTaXplKGJ5dGVzOiBudW1iZXIgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIGlmICghYnl0ZXMpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgaWYgKGJ5dGVzIDwgMTAyNCkge1xuICAgICAgcmV0dXJuIGAke2J5dGVzfSBCYDtcbiAgICB9XG4gICAgaWYgKGJ5dGVzIDwgMTAyNCAqIDEwMjQpIHtcbiAgICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKGJ5dGVzIC8gMTAyNCl9IEtCYDtcbiAgICB9XG4gICAgcmV0dXJuIGAkeyhieXRlcyAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMSl9IE1CYDtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInBhY2thZ2UtaXRlbSBwYWNrYWdlLWl0ZW0tLW5vbi1yZWZ1bmRhYmxlXCJcbj5cbiAgPGRpdiBjbGFzcz1cInBhY2thZ2UtaXRlbV9faGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cInBhY2thZ2UtaXRlbV9fY29udGVudFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBhY2thZ2UtaXRlbV9faW5mb1wiPlxuICAgICAgICA8aDQgY2xhc3M9XCJwYWNrYWdlLWl0ZW1fX25hbWVcIj57eyBwYWNrYWdlKCkucGFja2FnZU5hbWUgfX08L2g0PlxuICAgICAgICBAaWYgKHBhY2thZ2UoKS5ib2FyZEJhc2lzKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWNrYWdlLWl0ZW1fX2JvYXJkLWJhc2lzXCI+e3tcbiAgICAgICAgICAgIHBhY2thZ2UoKS5ib2FyZEJhc2lzXG4gICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuXG4gICAgICBAaWYgKHBhY2thZ2UoKT8uaXNDYW5jZWxsZWQpIHtcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInBhY2thZ2UtaXRlbV9fcmVmdW5kLWJhZGdlIHBhY2thZ2UtaXRlbV9fcmVmdW5kLWJhZGdlLS1jYW5jZWxsZWRcIlxuICAgICAgICA+XG4gICAgICAgICAgUFJFVklPVVMgQ0FOQ0VMTEFUSU9OXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwicGFja2FnZS1pdGVtX19yZWZ1bmQtYmFkZ2UgcGFja2FnZS1pdGVtX19yZWZ1bmQtYmFkZ2UtLW5vbi1yZWZ1bmRhYmxlXCJcbiAgICAgICAgPlxuICAgICAgICAgIE5PTi1SRUZVTkRBQkxFXG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgICBAaWYgKGdyb3VwZWRSb29tcygpLmxlbmd0aCkge1xuICAgICAgPGRpdiBjbGFzcz1cInBhY2thZ2UtaXRlbV9fcm9vbXNcIj5cbiAgICAgICAgQGZvciAoZ3JvdXAgb2YgZ3JvdXBlZFJvb21zKCk7IHRyYWNrIGk7IGxldCBpID0gJGluZGV4KSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBhY2thZ2UtaXRlbV9fcm9vbVwiPlxuICAgICAgICAgICAgPGg1IGNsYXNzPVwicGFja2FnZS1pdGVtX19yb29tLW5hbWVcIj5cbiAgICAgICAgICAgICAgQGlmIChncm91cC5jb3VudCA+IDEpIHtcbiAgICAgICAgICAgICAgICB7eyBncm91cC5jb3VudCB9fXhcbiAgICAgICAgICAgICAgICBAaWYgKGdyb3VwLmJlZFR5cGVPclJvb21UeXBlKSB7XG4gICAgICAgICAgICAgICAgICB7eyBncm91cC5iZWRUeXBlT3JSb29tVHlwZSB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAgUm9vbVxuICAgICAgICAgICAgICAgIHt7IGkgKyAxIH19XG4gICAgICAgICAgICAgICAgQGlmIChncm91cC5iZWRUeXBlT3JSb29tVHlwZSkge1xuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWNrYWdlLWl0ZW1fX3NlcGFyYXRvclwiPuKAojwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIHt7IGdyb3VwLmJlZFR5cGVPclJvb21UeXBlIH19XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2g1PlxuICAgICAgICAgICAgQGlmIChncm91cC5yb29tQmFzaXMpIHtcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwYWNrYWdlLWl0ZW1fX3Jvb20tYmFzaXNcIj57e1xuICAgICAgICAgICAgICAgIGdyb3VwLnJvb21CYXNpc1xuICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuXG4gICAgQGlmICghcGFja2FnZSgpPy5pc0NhbmNlbGxlZCAmJiAhYWxsUGFja2FnZXNOb25SZWZ1bmRhYmxlKCkpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJwYWNrYWdlLWl0ZW1fX25vbi1yZWZ1bmRhYmxlLWNvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImluZm8tbWVzc2FnZVwiPlxuICAgICAgICAgIDxhbG1hdGFyLWljb24gW25hbWVdPVwiJ2V4Y2xhbWF0aW9uLWNpcmNsZSdcIj4gPC9hbG1hdGFyLWljb24+XG4gICAgICAgICAgPHBcbiAgICAgICAgICAgIGNsYXNzPVwiaW5mby1tZXNzYWdlX190ZXh0XCJcbiAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQucHJldmVudERlZmF1bHQoKTsgb25PcGVuQ2FuY2VsbGF0aW9uUG9saWN5KClcIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJcbiAgICAgICAgICAgICAgJ1dlIGNhblxcJ3QgcHJvY2VzcyBhdXRvbWF0aWMgY2FuY2VsbGF0aW9uIHdpdGggdGhpcyByb29tLiBDaGVjayB0aGUgPGEgY2xhc3M9JnF1b3Q7aW5mby1tZXNzYWdlX19saW5rJnF1b3Q7PmNhbmNlbGxhdGlvbiBwb2xpY3k8L2E+IGZvciBkZXRhaWxzJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9wPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKHVwbG9hZFN1Y2Nlc3MoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtc3VjY2Vzc1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cGxvYWQtc3VjY2Vzc19faWNvblwiPlxuICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgd2lkdGg9XCIyNFwiXG4gICAgICAgICAgICAgICAgaGVpZ2h0PVwiMjRcIlxuICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICBkPVwiTTEzLjQ2OTcgOC4yMDExMkMxMy43NjI2IDcuOTA4MjIgMTQuMjM3MyA3LjkwODIyIDE0LjUzMDIgOC4yMDExMkMxNC44MjMxIDguNDk0MDEgMTQuODIzMSA4Ljk2ODc3IDE0LjUzMDIgOS4yNjE2Nkw3LjUzMDIyIDE2LjI2MTdDNy4yMzczMiAxNi41NTQ2IDYuNzYyNTYgMTYuNTU0NiA2LjQ2OTY3IDE2LjI2MTdMMy40Njk2NyAxMy4yNjE3QzMuMTc2NzggMTIuOTY4OCAzLjE3Njc4IDEyLjQ5NCAzLjQ2OTY3IDEyLjIwMTFDMy43NDQyNyAxMS45MjY1IDQuMTc4OTkgMTEuOTA5IDQuNDczNTggMTIuMTQ5NEw0LjUzMDIyIDEyLjIwMTFMNi45OTk5NCAxNC42NzA4TDEzLjQ2OTcgOC4yMDExMlpcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxQjFBMUZcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgIGQ9XCJNMTkuNDY5NyA4LjIwMTEyQzE5Ljc2MjYgNy45MDgyMiAyMC4yMzczIDcuOTA4MjIgMjAuNTMwMiA4LjIwMTEyQzIwLjgyMzEgOC40OTQwMSAyMC44MjMxIDguOTY4NzcgMjAuNTMwMiA5LjI2MTY2TDEzLjUzMDIgMTYuMjYxN0MxMy4yNjM5IDE2LjUyNzkgMTIuODQxNSAxNi41NTU2IDEyLjU0MjkgMTYuMzI2MUwxMS41NDI5IDE1LjU1NzZMMTEuNDg0MyAxNS41MDc4QzExLjIwNzkgMTUuMjQ2OCAxMS4xNjg2IDE0LjgxMzcgMTEuNDA1MiAxNC41MDU4QzExLjY0MTggMTQuMTk4IDEyLjA3MDMgMTQuMTI0NSAxMi4zOTM1IDE0LjMyNDJMMTIuNDU3IDE0LjM2ODFMMTIuOTM0NSAxNC43MzUzTDE5LjQ2OTcgOC4yMDExMlpcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIiMxQjFBMUZcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInVwbG9hZC1zdWNjZXNzX19pbmZvXCI+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwidXBsb2FkLXN1Y2Nlc3NfX2ZpbGVuYW1lXCI+e3sgZmlsZVBpY2tlZCgpPy5uYW1lIH19PC9wPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cInVwbG9hZC1zdWNjZXNzX19tZXRhXCI+XG4gICAgICAgICAgICAgICAge3sgZm9ybWF0RmlsZVNpemUoZmlsZVBpY2tlZCgpPy5zaXplKSB9fSDigKJcbiAgICAgICAgICAgICAgICBVcGxvYWRlZFxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgICNmaWxlSW5wdXRcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBub25lXCJcbiAgICAgICAgICAgICAgYWNjZXB0PVwiLnBkZiwuanBnLC5qcGVnLC5wbmcsLmRvYywuZG9jeFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ1cGxvYWQtc3VjY2Vzc19fY2hhbmdlLWJ0blwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIENoYW5nZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtc2VjdGlvblwiPlxuICAgICAgICAgICAgPGFsbWF0YXItaWNvbiBbbmFtZV09XCInYXJyb3ctdXAtb24tc3F1YXJlJ1wiPjwvYWxtYXRhci1pY29uPlxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImZsZXg6IDFcIj5cbiAgICAgICAgICAgICAgPGg1IGNsYXNzPVwidXBsb2FkLXNlY3Rpb25fX3RpdGxlXCI+XG4gICAgICAgICAgICAgICAgVXBsb2FkIGEgZG9jdW1lbnQgdG8gc3VwcG9ydCB5b3VyIHJlcXVlc3RcbiAgICAgICAgICAgICAgPC9oNT5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ1cGxvYWQtc2VjdGlvbl9fc3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgICBSZXF1aXJlZCB0byBzdWJtaXQgYW5kIHRyYWNrIHlvdXIgcmVxdWVzdFxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgIEBpZiAoZmlsZVBpY2tlZCgpICYmICF1cGxvYWRTdWNjZXNzKCkpIHtcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInVwbG9hZC1zZWN0aW9uX19maWxlbmFtZVwiPlxuICAgICAgICAgICAgICAgICAge3sgZmlsZVBpY2tlZCgpPy5uYW1lIH19XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIEBpZiAoaXNVcGxvYWRpbmcoKSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtcHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtcHJvZ3Jlc3NfX2JhclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1cGxvYWQtcHJvZ3Jlc3NfX2ZpbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aC4lXT1cInVwbG9hZFByb2dyZXNzKClcIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXBsb2FkLXByb2dyZXNzX190ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgPnt7IHVwbG9hZFByb2dyZXNzKCkgfX0lPC9zcGFuXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgI2ZpbGVJbnB1dFxuICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIlxuICAgICAgICAgICAgICBhY2NlcHQ9XCIucGRmLC5qcGcsLmpwZWcsLnBuZywuZG9jLC5kb2N4XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cInVwbG9hZC1zZWN0aW9uX19idXR0b25cIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNVcGxvYWRpbmcoKVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJmaWxlSW5wdXQuY2xpY2soKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFVwbG9hZCBmaWxlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoc3VibWl0RXJyb3IoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdWJtaXQtcmVzdWx0IHN1Ym1pdC1yZXN1bHQtLWVycm9yXCI+XG4gICAgICAgICAgICA8YWxtYXRhci1pY29uIFtuYW1lXT1cIidleGNsYW1hdGlvbi1jaXJjbGUnXCI+PC9hbG1hdGFyLWljb24+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInN1Ym1pdC1yZXN1bHRfX3RleHRcIj57eyBzdWJtaXRFcnJvcigpIH19PC9wPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdWJtaXQtcmVzdWx0X19yZXRyeS1idG5cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25SZXRyeSgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgVHJ5IEFnYWluXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSBpZiAoIXN1Ym1pdFN1Y2Nlc3MoKSkge1xuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3M9XCJzdWJtaXQtcmVxdWVzdC1idG5cIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiF1cGxvYWRTdWNjZXNzKCkgfHwgaXNTdWJtaXR0aW5nKClcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uU3VibWl0UmVxdWVzdCgpXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBAaWYgKGlzU3VibWl0dGluZygpKSB7XG4gICAgICAgICAgICAgIFN1Ym1pdHRpbmcuLi5cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICBTdWJtaXQgbXkgcmVxdWVzdFxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG48L2Rpdj5cbiJdfQ==
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1ub24tcmVmdW5kYWJsZS1yb29tLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LWJvb2tpbmctZGFzaGJvYXJkL3NyYy9saWIvY29tcG9uZW50cy9ob3RlbC1jYW5jZWwvY29tcG9uZW50cy9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLXNlbGVjdC1yb29tcy9jb21wb25lbnRzL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tbm9uLXJlZnVuZGFibGUtcm9vbS9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLW5vbi1yZWZ1bmRhYmxlLXJvb20uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtYm9va2luZy1kYXNoYm9hcmQvc3JjL2xpYi9jb21wb25lbnRzL2hvdGVsLWNhbmNlbC9jb21wb25lbnRzL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tc2VsZWN0LXJvb21zL2NvbXBvbmVudHMvYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1ub24tcmVmdW5kYWJsZS1yb29tL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tbm9uLXJlZnVuZGFibGUtcm9vbS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULHVCQUF1QixFQUN2QixLQUFLLEVBQ0wsTUFBTSxFQUNOLE1BQU0sRUFDTixNQUFNLEVBQ04sVUFBVSxFQUVWLFFBQVEsR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdURBQXVELENB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STtRQUNOLElBQUk7SUFDTixDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQXlCO1FBQ3RDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUNELElBQUksS0FBSyxHQUFHLElBQUksRUFBRSxDQUFDO1lBQ2pCLE9BQU8sR0FBRyxLQUFLLElBQUksQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxLQUFLLEdBQUcsSUFBSSxHQUFHLElBQUksRUFBRSxDQUFDO1lBQ3hCLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQzFDLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNwRCxDQUFDOytHQTNRVSxzREFBc0Q7bUdBQXRELHNEQUFzRCxzaENBUnRELENBQUMsYUFBYSxDQUFDLDBCQ3RDNUIsdzZOQThMQSwyaU5EekpZLFlBQVksOEJBQUUsaUJBQWlCOzs0RkFTOUIsc0RBQXNEO2tCQVpsRSxTQUFTOytCQUNFLHFEQUFxRCxjQUNuRCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsaUJBQWlCLENBQUMsYUFDL0IsQ0FBQyxhQUFhLENBQUMsbUJBTVQsdUJBQXVCLENBQUMsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIGlucHV0LFxuICBvdXRwdXQsXG4gIHNpZ25hbCxcbiAgaW5qZWN0LFxuICBEZXN0cm95UmVmLFxuICBlZmZlY3QsXG4gIGNvbXB1dGVkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvdHJhbnNsYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBIdHRwRXZlbnRUeXBlLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7XG4gIElBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uUGFja2FnZSxcbiAgSUFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25Ib3RlbEluZm8sXG4gIElBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uUGFja2FnZVJvb20sXG59IGZyb20gJy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvaS1hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBBbG1hdGFySWNvbk1vZHVsZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3NoYXJlZC9tb2R1bGVzL2FsbWF0YXItaWNvbi9hbG1hdGFyLWljb24ubW9kdWxlJztcbmltcG9ydCB7IEFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25FbmRwb2ludHNFbnVtIH0gZnJvbSAnLi4vLi4vLi4vLi4vZW51bXMvYWxtYXRhci1ob3RlbC1hdXRvLWNhbmNlbGxhdGlvbi1lbmRwb2ludHMuZW51bSc7XG5pbXBvcnQgeyBBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uRW5kcG9pbnRzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL2FsbWF0YXItaG90ZWwtYXV0by1jYW5jZWxsYXRpb24tZW5kcG9pbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSB9IGZyb20gJ3ByaW1lbmcvZHluYW1pY2RpYWxvZyc7XG5pbXBvcnQgeyBTQkRfSFRUUCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3NoYXJlZC9zZXJ2aWNlcy9zYmQtaHR0cCc7XG5cbmludGVyZmFjZSBJR3JvdXBlZFBhY2thZ2VSb29tIHtcbiAga2V5OiBzdHJpbmc7XG4gIGJlZFR5cGVPclJvb21UeXBlOiBzdHJpbmc7XG4gIHJvb21CYXNpczogc3RyaW5nO1xuICBjb3VudDogbnVtYmVyO1xuICByb29tczogSUFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25QYWNrYWdlUm9vbVtdO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLW5vbi1yZWZ1bmRhYmxlLXJvb20nLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBBbG1hdGFySWNvbk1vZHVsZV0sXG4gIHByb3ZpZGVyczogW0RpYWxvZ1NlcnZpY2VdLFxuICB0ZW1wbGF0ZVVybDpcbiAgICAnLi9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLW5vbi1yZWZ1bmRhYmxlLXJvb20uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFtcbiAgICAnLi9hbG1hdGFyLWhvdGVsLWF1dG8tY2FuY2VsbGF0aW9uLW5vbi1yZWZ1bmRhYmxlLXJvb20uY29tcG9uZW50LnNjc3MnLFxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvbk5vblJlZnVuZGFibGVSb29tQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KFNCRF9IVFRQKTtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IGVuZHBvaW50c1NlcnZpY2UgPSBpbmplY3QoXG4gICAgQWxtYXRhckhvdGVsQXV0b0NhbmNlbGxhdGlvbkVuZHBvaW50c1NlcnZpY2UsXG4gICk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSB0cmFuc2xhdGVTZXJ2aWNlID0gaW5qZWN0KFRyYW5zbGF0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGlhbG9nU2VydmljZSA9IGluamVjdChEaWFsb2dTZXJ2aWNlKTtcblxuICByZWFkb25seSBwYWNrYWdlID0gaW5wdXQucmVxdWlyZWQ8SUFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25QYWNrYWdlPigpO1xuICByZWFkb25seSBhbGxQYWNrYWdlcyA9IGlucHV0PElBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uUGFja2FnZVtdPihbXSk7XG4gIHJlYWRvbmx5IGhvdGVsSW5mbyA9IGlucHV0PElBbG1hdGFySG90ZWxBdXRvQ2FuY2VsbGF0aW9uSG90ZWxJbmZvIHwgbnVsbD4oXG4gICAgbnVsbCxcbiAgKTtcblxuICAvLyBjb25zdHJ1Y3Rvcigpe2VmZmVjdCgoKSA9PiB7XG4gIC8vICAgY29uc29sZS5sb2codGhpcy5wYWNrYWdlKCkpXG4gIC8vIH0pfVxuXG4gIHJlYWRvbmx5IGhvdGVsSWQgPSBpbnB1dDxzdHJpbmcgfCBudW1iZXI+KCcnKTtcbiAgcmVhZG9ubHkgY3VycmVuY3lDb2RlID0gaW5wdXQ8c3RyaW5nPignU0FSJyk7XG4gIHJlYWRvbmx5IGFsbFBhY2thZ2VzTm9uUmVmdW5kYWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHVzZUxvY2FsQ2FuY2VsbGF0aW9uUG9saWNpZXMgPSB0cnVlO1xuXG4gIHJlYWRvbmx5IGNsb3NlTW9kYWwgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgbm9uUmVmdW5kYWJsZVN1Ym1pdFN1Y2Nlc3MgPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gIHJlYWRvbmx5IHVwbG9hZGVkRmlsZSA9IHNpZ25hbDxGaWxlIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IHVwbG9hZGVkRmlsZVVybCA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgZmlsZVBpY2tlZCA9IHNpZ25hbDxGaWxlIHwgbnVsbD4obnVsbCk7XG4gIHJlYWRvbmx5IHVwbG9hZFN1Y2Nlc3MgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSB1cGxvYWRQcm9ncmVzcyA9IHNpZ25hbDxudW1iZXI+KDApO1xuICByZWFkb25seSBpc1VwbG9hZGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGlzU3VibWl0dGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHN1Ym1pdFN1Y2Nlc3MgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzdWJtaXRFcnJvciA9IHNpZ25hbDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICByZWFkb25seSBncm91cGVkUm9vbXMgPSBjb21wdXRlZDxJR3JvdXBlZFBhY2thZ2VSb29tW10+KCgpID0+IHtcbiAgICBjb25zdCByb29tcyA9IHRoaXMucGFja2FnZSgpPy5yb29tcyB8fCBbXTtcbiAgICBjb25zdCBncm91cE1hcCA9IG5ldyBNYXA8c3RyaW5nLCBJR3JvdXBlZFBhY2thZ2VSb29tPigpO1xuXG4gICAgZm9yIChjb25zdCByb29tIG9mIHJvb21zKSB7XG4gICAgICAvLyBjb25zdCBiZWRUeXBlT3JSb29tVHlwZSA9IHJvb20uYmVkVHlwZSB8fCByb29tLnJvb21UeXBlIHx8ICcnO1xuICAgICAgY29uc3QgYmVkVHlwZU9yUm9vbVR5cGUgPSByb29tPy5yb29tTmFtZTtcbiAgICAgIGNvbnN0IHJvb21CYXNpcyA9IHJvb20ucm9vbUJhc2lzIHx8ICcnO1xuICAgICAgY29uc3Qga2V5ID0gYCR7YmVkVHlwZU9yUm9vbVR5cGV9fHx8JHtyb29tQmFzaXN9YDtcblxuICAgICAgaWYgKGdyb3VwTWFwLmhhcyhrZXkpKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwID0gZ3JvdXBNYXAuZ2V0KGtleSkhO1xuICAgICAgICBncm91cC5jb3VudCsrO1xuICAgICAgICBncm91cC5yb29tcy5wdXNoKHJvb20pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZ3JvdXBNYXAuc2V0KGtleSwge1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICBiZWRUeXBlT3JSb29tVHlwZSxcbiAgICAgICAgICByb29tQmFzaXMsXG4gICAgICAgICAgY291bnQ6IDEsXG4gICAgICAgICAgcm9vbXM6IFtyb29tXSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIEFycmF5LmZyb20oZ3JvdXBNYXAudmFsdWVzKCkpO1xuICB9KTtcblxuICBvbkZpbGVTZWxlY3RlZChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGlmIChpbnB1dC5maWxlcyAmJiBpbnB1dC5maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXNbMF07XG4gICAgICB0aGlzLmZpbGVQaWNrZWQuc2V0KGZpbGUpO1xuICAgICAgdGhpcy51cGxvYWRGaWxlKGZpbGUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBsb2FkRmlsZShmaWxlOiBGaWxlKTogdm9pZCB7XG4gICAgdGhpcy5pc1VwbG9hZGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy51cGxvYWRQcm9ncmVzcy5zZXQoMCk7XG4gICAgdGhpcy51cGxvYWRTdWNjZXNzLnNldChmYWxzZSk7XG4gICAgdGhpcy51cGxvYWRlZEZpbGVVcmwuc2V0KG51bGwpO1xuXG4gICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcbiAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGUnLCBmaWxlKTtcblxuICAgIGNvbnN0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdChcbiAgICAgICdQT1NUJyxcbiAgICAgIHRoaXMuZW5kcG9pbnRzU2VydmljZS5yZXNvbHZlRW5kcG9pbnQoXG4gICAgICAgIEFsbWF0YXJIb3RlbEF1dG9DYW5jZWxsYXRpb25FbmRwb2ludHNFbnVtLnVwbG9hZEF0dGFjaG1lbnQsXG4gICAgICApLFxuICAgICAgZm9ybURhdGEsXG4gICAgICB7XG4gICAgICAgIHJlcG9ydFByb2dyZXNzOiB0cnVlLFxuICAgICAgICByZXNwb25zZVR5cGU6ICdqc29uJyxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHRoaXMuaHR0cFxuICAgICAgLnJlcXVlc3Q8eyBkYXRhOiB7IHVybDogc3RyaW5nIH0gfT4ocmVxKVxuICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKGV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3MgJiYgZXZlbnQudG90YWwpIHtcbiAgICAgICAgICAgIGNvbnN0IHByb2dyZXNzID0gTWF0aC5yb3VuZCgoMTAwICogZXZlbnQubG9hZGVkKSAvIGV2ZW50LnRvdGFsKTtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3Muc2V0KHByb2dyZXNzKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LnR5cGUgPT09IEh0dHBFdmVudFR5cGUuUmVzcG9uc2UpIHtcbiAgICAgICAgICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3Muc2V0KDEwMCk7XG4gICAgICAgICAgICB0aGlzLmlzVXBsb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLnVwbG9hZFN1Y2Nlc3Muc2V0KHRydWUpO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGUuc2V0KGZpbGUpO1xuICAgICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVVcmwuc2V0KGV2ZW50LmJvZHk/LmRhdGE/LnVybCA/PyBudWxsKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5pc1VwbG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMudXBsb2FkUHJvZ3Jlc3Muc2V0KDApO1xuICAgICAgICAgIHRoaXMudXBsb2FkU3VjY2Vzcy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMuZmlsZVBpY2tlZC5zZXQobnVsbCk7XG4gICAgICAgICAgdGhpcy51cGxvYWRlZEZpbGVVcmwuc2V0KG51bGwpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICBvblN1Ym1pdFJlcXVlc3QoKTogdm9pZCB7XG4gICAgY29uc3QgdXJsID0gdGhpcy51cGxvYWRlZEZpbGVVcmwoKTtcbiAgICBpZiAoIXVybCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNTdWJtaXR0aW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLnN1Ym1pdEVycm9yLnNldChudWxsKTtcbiAgICB0aGlzLnN1Ym1pdFN1Y2Nlc3Muc2V0KGZhbHNlKTtcblxuICAgIGNvbnN0IGxhbmd1YWdlID0gJ2VuJztcblxuICAgIHRoaXMuZW5kcG9pbnRzU2VydmljZVxuICAgICAgLnByb2Nlc3NOb25SZWZ1bmRhYmxlQ2FuY2VsbGF0aW9uKHRoaXMucGFja2FnZSgpLnBhY2thZ2VJZCwgdXJsLCBsYW5ndWFnZSlcbiAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLmlzU3VibWl0dGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMuc3VibWl0U3VjY2Vzcy5zZXQodHJ1ZSk7XG4gICAgICAgICAgdGhpcy5ub25SZWZ1bmRhYmxlU3VibWl0U3VjY2Vzcy5lbWl0KHRoaXMucGFja2FnZSgpLnBhY2thZ2VOYW1lKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMuaXNTdWJtaXR0aW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5zdWJtaXRFcnJvci5zZXQoZXJyb3I/Lm1lc3NhZ2UgfHwgJ0ZhaWxlZCB0byBzdWJtaXQgcmVxdWVzdCcpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICBvblJldHJ5KCk6IHZvaWQge1xuICAgIHRoaXMuc3VibWl0RXJyb3Iuc2V0KG51bGwpO1xuICAgIHRoaXMub25TdWJtaXRSZXF1ZXN0KCk7XG4gIH1cblxuICBvbk9wZW5DYW5jZWxsYXRpb25Qb2xpY3koKTogdm9pZCB7XG4gICAgY29uc3QgaG90ZWxJbmZvRGF0YSA9IHRoaXMuaG90ZWxJbmZvKCk7XG4gICAgY29uc3QgY3VycmVuY3lDb2RlID0gdGhpcy5jdXJyZW5jeUNvZGUoKTtcblxuICAgIC8vIFVzZSBhbGwgcGFja2FnZXMgaWYgYXZhaWxhYmxlLCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvIGN1cnJlbnQgcGFja2FnZVxuICAgIGNvbnN0IHBhY2thZ2VzVG9TaG93ID1cbiAgICAgIHRoaXMuYWxsUGFja2FnZXMoKS5sZW5ndGggPiAwID8gdGhpcy5hbGxQYWNrYWdlcygpIDogW3RoaXMucGFja2FnZSgpXTtcblxuICAgIC8vIFRyYW5zZm9ybSBhbGwgcGFja2FnZXMgd2l0aCB0aGVpciBjYW5jZWxsYXRpb24gcG9saWNpZXNcbiAgICBjb25zdCBwYWNrYWdlc0ZvclBvcHVwID0gcGFja2FnZXNUb1Nob3cubWFwKChwa2cpID0+IHtcbiAgICAgIC8vIFRyYW5zZm9ybSBjYW5jZWxsYXRpb24gcG9saWNpZXMgdG8gdGhlIGZvcm1hdCBleHBlY3RlZCBieSBtYXBDYW5jZWxsYXRpb25Qb2xpY2llc1xuICAgICAgY29uc3QgcmF3Q2FuY2VsbGF0aW9uUG9saWNpZXMgPSAocGtnLmNhbmNlbGxhdGlvblBvbGljaWVzIHx8IFtdKS5tYXAoXG4gICAgICAgIChwb2xpY3kpID0+ICh7XG4gICAgICAgICAgZGF0ZUZyb206IHBvbGljeS5mcm9tRGF0ZSxcbiAgICAgICAgICBkYXRlVG86IHBvbGljeS50b0RhdGUsXG4gICAgICAgICAgY3VycmVuY3lJc29Db2RlOiBjdXJyZW5jeUNvZGUsXG4gICAgICAgICAgZmluYWxQcmljZTogcG9saWN5LnBlbmFsdHlWYWx1ZSxcbiAgICAgICAgICByZWZ1bmRhYmlsaXR5VHlwZTpcbiAgICAgICAgICAgIHBvbGljeS5wZW5hbHR5VHlwZSA9PT0gJ0Z1bGxSZWZ1bmRlZCdcbiAgICAgICAgICAgICAgPyAnRnVsbFJlZnVuZGVkJ1xuICAgICAgICAgICAgICA6IHBvbGljeS5wZW5hbHR5VHlwZSA9PT0gJ1BlcmNlbnRhZ2UnIHx8XG4gICAgICAgICAgICAgICAgICBwb2xpY3kucGVuYWx0eVR5cGUgPT09ICdBbW91bnQnXG4gICAgICAgICAgICAgICAgPyAnUGFydGlhbFJlZnVuZGVkJ1xuICAgICAgICAgICAgICAgIDogJ05vblJlZnVuZGVkJyxcbiAgICAgICAgfSksXG4gICAgICApO1xuXG4gICAgICAvLyBFbnN1cmUgYXQgbGVhc3Qgb25lIHBvbGljeSBleGlzdHNcbiAgICAgIGlmIChyYXdDYW5jZWxsYXRpb25Qb2xpY2llcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmF3Q2FuY2VsbGF0aW9uUG9saWNpZXMucHVzaCh7XG4gICAgICAgICAgZGF0ZUZyb206IGhvdGVsSW5mb0RhdGE/LmNoZWNrSW4sXG4gICAgICAgICAgZGF0ZVRvOiBob3RlbEluZm9EYXRhPy5jaGVja091dCxcbiAgICAgICAgICBjdXJyZW5jeUlzb0NvZGU6IGN1cnJlbmN5Q29kZSxcbiAgICAgICAgICBmaW5hbFByaWNlOiBwa2cuY2FuY2VsbGF0aW9uRmVlIHx8IDAsXG4gICAgICAgICAgcmVmdW5kYWJpbGl0eVR5cGU6IHBrZy5pc1JlZnVuZGFibGUgPyAnUmVmdW5kYWJsZScgOiAnTm9uUmVmdW5kZWQnLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgLy8gQnVpbGQgcGFja2FnZSBkYXRhIHdpdGggYWxsIHJlcXVpcmVkIGZpZWxkc1xuICAgICAgY29uc3QgcmVtYXJrcyA9XG4gICAgICAgIChwa2cgYXMgYW55KT8uY2FuY2VsbGF0aW9uUG9saWNpZXNSZW1hcmtzID8/XG4gICAgICAgIChwa2cgYXMgYW55KT8uQ2FuY2VsbGF0aW9uUG9saWNpZXNSZW1hcmtzO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucGtnLFxuICAgICAgICBjYW5jZWxsYXRpb25Qb2xpY2llczogcmF3Q2FuY2VsbGF0aW9uUG9saWNpZXMsXG4gICAgICAgIGlzUmVmdW5kYWJsZTogcGtnLmlzUmVmdW5kYWJsZSA/PyBwa2cucmVmdW5kYWJpbGl0eSA/PyBmYWxzZSxcbiAgICAgICAgcmVmdW5kYWJsZVVudGlsOiBwa2cucmVmdW5kYWJsZVVudGlsLFxuICAgICAgICBjdXJyZW5jeTogY3VycmVuY3lDb2RlLFxuICAgICAgICBmaW5hbFByaWNlOiBwa2cucm9vbUFtb3VudCxcbiAgICAgICAgYm9va2luZ1JlbWFya3M6IHJlbWFya3MsXG4gICAgICAgIGNhbmNlbGxhdGlvblBvbGljaWVzUmVtYXJrczogcmVtYXJrcyxcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICBjb25zdCBjYXJ0SW5mbyA9IHtcbiAgICAgIHBhY2thZ2VzOiBwYWNrYWdlc0ZvclBvcHVwLFxuICAgICAgZnJvbURhdGU6IGhvdGVsSW5mb0RhdGE/LmNoZWNrSW4sXG4gICAgICBkYXRlX2Zyb206IGhvdGVsSW5mb0RhdGE/LmNoZWNrSW4sXG4gICAgICB0b0RhdGU6IGhvdGVsSW5mb0RhdGE/LmNoZWNrT3V0LFxuICAgICAgZGF0ZV90bzogaG90ZWxJbmZvRGF0YT8uY2hlY2tPdXQsXG4gICAgICBhbG10YWFySG90ZWxJZDogdGhpcy5ob3RlbElkKCksXG4gICAgfTtcblxuICAgIGNvbnN0IGxhbmcgPSAnZW4nO1xuICAgIGNvbnN0IGZvcm1hdERhdGUgPVxuICAgICAgbGFuZyA9PT0gJ2VuJ1xuICAgICAgICA/ICdkZGRkIERvIG9mIE1NTU0gWVlZWSAtIGhoOm1tIEEgW0dNVF0nXG4gICAgICAgIDogJ2RkZGQgLCBERCBNTU1NIFlZWVkgLSBoaDptbSBBIFtHTVRdJztcblxuICAgIC8vIFRPRE86IEZpeCBpbXBvcnQgcGF0aCBmb3IgQ2FuY2VsbGF0aW9uUG9saWN5UG9wdXBDb21wb25lbnRcbiAgICAvLyBpbXBvcnQoJ2xpYnMvZmVhdHVyZXMvc3JjL2xpYi9mZWF0dXJlcy9ob3RlbHMvc2hhcmVkL21vZHVsZXMvaG90ZWwtYm9va2luZy1pbmZvcm1hdGlvbi9jb21wb25lbnRzL2Jvb2tpbmctc3VtbWFyeS9jb21wb25lbnRzL2NhbmNlbGxhdGlvbi1wb2xpY3ktcG9wdXAvY2FuY2VsbGF0aW9uLXBvbGljeS5wb3B1cC5jb21wb25lbnQnKS50aGVuKFxuICAgIC8vICAgKHsgQ2FuY2VsbGF0aW9uUG9saWN5UG9wdXBDb21wb25lbnQgfSkgPT4ge1xuICAgICAgICBjb25zdCBoZWFkZXIgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudChcbiAgICAgICAgICAnSE9URUwuY2FuY2VsbGF0aW9uLXBvbGljeScsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnNvbGUud2FybignQ2FuY2VsbGF0aW9uUG9saWN5UG9wdXBDb21wb25lbnQgbm90IGF2YWlsYWJsZSAtIGltcG9ydCBwYXRoIG5lZWRzIHRvIGJlIGZpeGVkJyk7XG4gICAgICAgIC8vIHRoaXMuZGlhbG9nU2VydmljZS5vcGVuKENhbmNlbGxhdGlvblBvbGljeVBvcHVwQ29tcG9uZW50LCB7XG4gICAgICAgIC8vICAgaGVhZGVyLFxuICAgICAgICAvLyAgIGRhdGE6IHtcbiAgICAgICAgLy8gICAgIGNhcnRJbmZvLFxuICAgICAgICAvLyAgICAgY3VycmVudEN1cnJlbmN5T2JqOiB7XG4gICAgICAgIC8vICAgICAgIGNvZGU6IGN1cnJlbmN5Q29kZSxcbiAgICAgICAgLy8gICAgICAgY3VycmVuY3k6IGN1cnJlbmN5Q29kZSxcbiAgICAgICAgLy8gICAgIH0sXG4gICAgICAgIC8vICAgICBmb3JtYXREYXRlLFxuICAgICAgICAvLyAgICAgaG90ZWxEZXRhaWxzOiB7XG4gICAgICAgIC8vICAgICAgIGhvdGVsTmFtZTogaG90ZWxJbmZvRGF0YT8uaG90ZWxOYW1lLFxuICAgICAgICAvLyAgICAgICBwYXltZW50T3B0aW9uOiBudWxsLFxuICAgICAgICAvLyAgICAgfSxcbiAgICAgICAgLy8gICB9LFxuICAgICAgICAvLyAgIHN0eWxlQ2xhc3M6ICdjYW5jZWxsYXRpb24tcG9saWN5LWRpYWxvZycsXG4gICAgICAgIC8vICAgY29udGVudFN0eWxlOiB7IG92ZXJmbG93OiAnYXV0bycgfSxcbiAgICAgICAgLy8gICBiYXNlWkluZGV4OiAxMDAwMCxcbiAgICAgICAgLy8gICBtYXhpbWl6YWJsZTogZmFsc2UsXG4gICAgICAgIC8vICAgc3R5bGU6IHsgd2lkdGg6ICc2MDBweCcsIG1heFdpZHRoOiAnOTAlJyB9LFxuICAgICAgICAvLyB9KTtcbiAgICAgIC8vfSxcbiAgICAvLyk7XG4gIH1cblxuICBmb3JtYXRGaWxlU2l6ZShieXRlczogbnVtYmVyIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgICBpZiAoIWJ5dGVzKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmIChieXRlcyA8IDEwMjQpIHtcbiAgICAgIHJldHVybiBgJHtieXRlc30gQmA7XG4gICAgfVxuICAgIGlmIChieXRlcyA8IDEwMjQgKiAxMDI0KSB7XG4gICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZChieXRlcyAvIDEwMjQpfSBLQmA7XG4gICAgfVxuICAgIHJldHVybiBgJHsoYnl0ZXMgLyAoMTAyNCAqIDEwMjQpKS50b0ZpeGVkKDEpfSBNQmA7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJwYWNrYWdlLWl0ZW0gcGFja2FnZS1pdGVtLS1ub24tcmVmdW5kYWJsZVwiXG4+XG4gIDxkaXYgY2xhc3M9XCJwYWNrYWdlLWl0ZW1fX2hlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJwYWNrYWdlLWl0ZW1fX2NvbnRlbnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwYWNrYWdlLWl0ZW1fX2luZm9cIj5cbiAgICAgICAgPGg0IGNsYXNzPVwicGFja2FnZS1pdGVtX19uYW1lXCI+e3sgcGFja2FnZSgpLnBhY2thZ2VOYW1lIH19PC9oND5cbiAgICAgICAgQGlmIChwYWNrYWdlKCkuYm9hcmRCYXNpcykge1xuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFja2FnZS1pdGVtX19ib2FyZC1iYXNpc1wiPnt7XG4gICAgICAgICAgICBwYWNrYWdlKCkuYm9hcmRCYXNpc1xuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmIChwYWNrYWdlKCk/LmlzQ2FuY2VsbGVkKSB7XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3M9XCJwYWNrYWdlLWl0ZW1fX3JlZnVuZC1iYWRnZSBwYWNrYWdlLWl0ZW1fX3JlZnVuZC1iYWRnZS0tY2FuY2VsbGVkXCJcbiAgICAgICAgPlxuICAgICAgICAgIFBSRVZJT1VTIENBTkNFTExBVElPTlxuICAgICAgICA8L3NwYW4+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzcz1cInBhY2thZ2UtaXRlbV9fcmVmdW5kLWJhZGdlIHBhY2thZ2UtaXRlbV9fcmVmdW5kLWJhZGdlLS1ub24tcmVmdW5kYWJsZVwiXG4gICAgICAgID5cbiAgICAgICAgICBOT04tUkVGVU5EQUJMRVxuICAgICAgICA8L3NwYW4+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gICAgQGlmIChncm91cGVkUm9vbXMoKS5sZW5ndGgpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJwYWNrYWdlLWl0ZW1fX3Jvb21zXCI+XG4gICAgICAgIEBmb3IgKGdyb3VwIG9mIGdyb3VwZWRSb29tcygpOyB0cmFjayBpOyBsZXQgaSA9ICRpbmRleCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYWNrYWdlLWl0ZW1fX3Jvb21cIj5cbiAgICAgICAgICAgIDxoNSBjbGFzcz1cInBhY2thZ2UtaXRlbV9fcm9vbS1uYW1lXCI+XG4gICAgICAgICAgICAgIEBpZiAoZ3JvdXAuY291bnQgPiAxKSB7XG4gICAgICAgICAgICAgICAge3sgZ3JvdXAuY291bnQgfX14XG4gICAgICAgICAgICAgICAgQGlmIChncm91cC5iZWRUeXBlT3JSb29tVHlwZSkge1xuICAgICAgICAgICAgICAgICAge3sgZ3JvdXAuYmVkVHlwZU9yUm9vbVR5cGUgfX1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIFJvb21cbiAgICAgICAgICAgICAgICB7eyBpICsgMSB9fVxuICAgICAgICAgICAgICAgIEBpZiAoZ3JvdXAuYmVkVHlwZU9yUm9vbVR5cGUpIHtcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFja2FnZS1pdGVtX19zZXBhcmF0b3JcIj7igKI8L3NwYW4+XG4gICAgICAgICAgICAgICAgICB7eyBncm91cC5iZWRUeXBlT3JSb29tVHlwZSB9fVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9oNT5cbiAgICAgICAgICAgIEBpZiAoZ3JvdXAucm9vbUJhc2lzKSB7XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGFja2FnZS1pdGVtX19yb29tLWJhc2lzXCI+e3tcbiAgICAgICAgICAgICAgICBncm91cC5yb29tQmFzaXNcbiAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAoIXBhY2thZ2UoKT8uaXNDYW5jZWxsZWQgJiYgIWFsbFBhY2thZ2VzTm9uUmVmdW5kYWJsZSgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwicGFja2FnZS1pdGVtX19ub24tcmVmdW5kYWJsZS1jb250ZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbmZvLW1lc3NhZ2VcIj5cbiAgICAgICAgICA8YWxtYXRhci1pY29uIFtuYW1lXT1cIidleGNsYW1hdGlvbi1jaXJjbGUnXCI+IDwvYWxtYXRhci1pY29uPlxuICAgICAgICAgIDxwXG4gICAgICAgICAgICBjbGFzcz1cImluZm8tbWVzc2FnZV9fdGV4dFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IG9uT3BlbkNhbmNlbGxhdGlvblBvbGljeSgpXCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiXG4gICAgICAgICAgICAgICdXZSBjYW5cXCd0IHByb2Nlc3MgYXV0b21hdGljIGNhbmNlbGxhdGlvbiB3aXRoIHRoaXMgcm9vbS4gQ2hlY2sgdGhlIDxhIGNsYXNzPSZxdW90O2luZm8tbWVzc2FnZV9fbGluayZxdW90Oz5jYW5jZWxsYXRpb24gcG9saWN5PC9hPiBmb3IgZGV0YWlscydcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPjwvcD5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmICh1cGxvYWRTdWNjZXNzKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLXN1Y2Nlc3NcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXBsb2FkLXN1Y2Nlc3NfX2ljb25cIj5cbiAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgIHdpZHRoPVwiMjRcIlxuICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0XCJcbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgZD1cIk0xMy40Njk3IDguMjAxMTJDMTMuNzYyNiA3LjkwODIyIDE0LjIzNzMgNy45MDgyMiAxNC41MzAyIDguMjAxMTJDMTQuODIzMSA4LjQ5NDAxIDE0LjgyMzEgOC45Njg3NyAxNC41MzAyIDkuMjYxNjZMNy41MzAyMiAxNi4yNjE3QzcuMjM3MzIgMTYuNTU0NiA2Ljc2MjU2IDE2LjU1NDYgNi40Njk2NyAxNi4yNjE3TDMuNDY5NjcgMTMuMjYxN0MzLjE3Njc4IDEyLjk2ODggMy4xNzY3OCAxMi40OTQgMy40Njk2NyAxMi4yMDExQzMuNzQ0MjcgMTEuOTI2NSA0LjE3ODk5IDExLjkwOSA0LjQ3MzU4IDEyLjE0OTRMNC41MzAyMiAxMi4yMDExTDYuOTk5OTQgMTQuNjcwOEwxMy40Njk3IDguMjAxMTJaXCJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMUIxQTFGXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICBkPVwiTTE5LjQ2OTcgOC4yMDExMkMxOS43NjI2IDcuOTA4MjIgMjAuMjM3MyA3LjkwODIyIDIwLjUzMDIgOC4yMDExMkMyMC44MjMxIDguNDk0MDEgMjAuODIzMSA4Ljk2ODc3IDIwLjUzMDIgOS4yNjE2NkwxMy41MzAyIDE2LjI2MTdDMTMuMjYzOSAxNi41Mjc5IDEyLjg0MTUgMTYuNTU1NiAxMi41NDI5IDE2LjMyNjFMMTEuNTQyOSAxNS41NTc2TDExLjQ4NDMgMTUuNTA3OEMxMS4yMDc5IDE1LjI0NjggMTEuMTY4NiAxNC44MTM3IDExLjQwNTIgMTQuNTA1OEMxMS42NDE4IDE0LjE5OCAxMi4wNzAzIDE0LjEyNDUgMTIuMzkzNSAxNC4zMjQyTDEyLjQ1NyAxNC4zNjgxTDEyLjkzNDUgMTQuNzM1M0wxOS40Njk3IDguMjAxMTJaXCJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCIjMUIxQTFGXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1cGxvYWQtc3VjY2Vzc19faW5mb1wiPlxuICAgICAgICAgICAgICA8cCBjbGFzcz1cInVwbG9hZC1zdWNjZXNzX19maWxlbmFtZVwiPnt7IGZpbGVQaWNrZWQoKT8ubmFtZSB9fTwvcD5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ1cGxvYWQtc3VjY2Vzc19fbWV0YVwiPlxuICAgICAgICAgICAgICAgIHt7IGZvcm1hdEZpbGVTaXplKGZpbGVQaWNrZWQoKT8uc2l6ZSkgfX0g4oCiXG4gICAgICAgICAgICAgICAgVXBsb2FkZWRcbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICAjZmlsZUlucHV0XG4gICAgICAgICAgICAgIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiXG4gICAgICAgICAgICAgIGFjY2VwdD1cIi5wZGYsLmpwZywuanBlZywucG5nLC5kb2MsLmRvY3hcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwidXBsb2FkLXN1Y2Nlc3NfX2NoYW5nZS1idG5cIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBDaGFuZ2VcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLXNlY3Rpb25cIj5cbiAgICAgICAgICAgIDxhbG1hdGFyLWljb24gW25hbWVdPVwiJ2Fycm93LXVwLW9uLXNxdWFyZSdcIj48L2FsbWF0YXItaWNvbj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4OiAxXCI+XG4gICAgICAgICAgICAgIDxoNSBjbGFzcz1cInVwbG9hZC1zZWN0aW9uX190aXRsZVwiPlxuICAgICAgICAgICAgICAgIFVwbG9hZCBhIGRvY3VtZW50IHRvIHN1cHBvcnQgeW91ciByZXF1ZXN0XG4gICAgICAgICAgICAgIDwvaDU+XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwidXBsb2FkLXNlY3Rpb25fX3N1YnRpdGxlXCI+XG4gICAgICAgICAgICAgICAgUmVxdWlyZWQgdG8gc3VibWl0IGFuZCB0cmFjayB5b3VyIHJlcXVlc3RcbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICBAaWYgKGZpbGVQaWNrZWQoKSAmJiAhdXBsb2FkU3VjY2VzcygpKSB7XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ1cGxvYWQtc2VjdGlvbl9fZmlsZW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGZpbGVQaWNrZWQoKT8ubmFtZSB9fVxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBAaWYgKGlzVXBsb2FkaW5nKCkpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLXByb2dyZXNzXCI+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkLXByb2dyZXNzX19iYXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidXBsb2FkLXByb2dyZXNzX19maWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUud2lkdGguJV09XCJ1cGxvYWRQcm9ncmVzcygpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVwbG9hZC1wcm9ncmVzc19fdGV4dFwiXG4gICAgICAgICAgICAgICAgICAgID57eyB1cGxvYWRQcm9ncmVzcygpIH19JTwvc3BhblxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgICAgICNmaWxlSW5wdXRcbiAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgc3R5bGU9XCJkaXNwbGF5OiBub25lXCJcbiAgICAgICAgICAgICAgYWNjZXB0PVwiLnBkZiwuanBnLC5qcGVnLC5wbmcsLmRvYywuZG9jeFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ1cGxvYWQtc2VjdGlvbl9fYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzVXBsb2FkaW5nKClcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZmlsZUlucHV0LmNsaWNrKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBVcGxvYWQgZmlsZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHN1Ym1pdEVycm9yKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3VibWl0LXJlc3VsdCBzdWJtaXQtcmVzdWx0LS1lcnJvclwiPlxuICAgICAgICAgICAgPGFsbWF0YXItaWNvbiBbbmFtZV09XCInZXhjbGFtYXRpb24tY2lyY2xlJ1wiPjwvYWxtYXRhci1pY29uPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJzdWJtaXQtcmVzdWx0X190ZXh0XCI+e3sgc3VibWl0RXJyb3IoKSB9fTwvcD5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwic3VibWl0LXJlc3VsdF9fcmV0cnktYnRuXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uUmV0cnkoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIFRyeSBBZ2FpblxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2UgaWYgKCFzdWJtaXRTdWNjZXNzKCkpIHtcbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzPVwic3VibWl0LXJlcXVlc3QtYnRuXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhdXBsb2FkU3VjY2VzcygpIHx8IGlzU3VibWl0dGluZygpXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvblN1Ym1pdFJlcXVlc3QoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChpc1N1Ym1pdHRpbmcoKSkge1xuICAgICAgICAgICAgICBTdWJtaXR0aW5nLi4uXG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgU3VibWl0IG15IHJlcXVlc3RcbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuPC9kaXY+XG4iXX0=