@design-system-rte/angular 1.2.1-rc5 → 1.3.0

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.
@@ -39,10 +39,10 @@ export class ModalComponent {
39
39
  this.closeModal.emit();
40
40
  }
41
41
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
42
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.14", type: ModalComponent, isStandalone: true, selector: "rte-modal", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconAppearance: { classPropertyName: "iconAppearance", publicName: "iconAppearance", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, secondaryButtonLabel: { classPropertyName: "secondaryButtonLabel", publicName: "secondaryButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "ariaDescribedby", isSignal: true, isRequired: false, transformFunction: null }, primaryButton: { classPropertyName: "primaryButton", publicName: "primaryButton", isSignal: true, isRequired: false, transformFunction: null }, secondaryButton: { classPropertyName: "secondaryButton", publicName: "secondaryButton", isSignal: true, isRequired: false, transformFunction: null }, customContent: { classPropertyName: "customContent", publicName: "customContent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closeModal: "closeModal" }, viewQueries: [{ propertyName: "elementRef", first: true, predicate: ["modal"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"rte-modal-wrapper\">\n <div class=\"rte-modal-backdrop\" [attr.data-open]=\"isOpen()\"></div>\n <dialog\n #modal\n class=\"rte-modal-container\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"id() + '-modal-title'\"\n [attr.aria-describedby]=\"description() ? id() + '-modal-desc' : ariaDescribedby()\"\n [attr.data-size]=\"size()\"\n [attr.data-open]=\"isOpen()\"\n >\n <div class=\"rte-modal-header\">\n <div class=\"rte-modal-header-text\">\n <rte-icon *ngIf=\"icon()\" [name]=\"icon() ?? ''\" [size]=\"iconSize()\" [appearance]=\"iconAppearance()\" />\n <h2 class=\"rte-modal-title\" [id]=\"id() + '-modal-title'\">\n {{ title() }}\n </h2>\n <rte-icon-button\n data-testid=\"modal-close-button\"\n name=\"close\"\n size=\"l\"\n class=\"close-icon\"\n variant=\"neutral\"\n [ariaLabel]=\"'Close modal ' + id()\"\n (clickEvent)=\"onClose()\"\n />\n </div>\n <rte-divider />\n </div>\n <div *ngIf=\"description()\" class=\"rte-modal-content\">\n <p class=\"rte-modal-content-description\" [id]=\"id() + '-modal-desc'\">\n {{ description() }}\n </p>\n <ng-container [ngTemplateOutlet]=\"customContent()\"></ng-container>\n </div>\n <div class=\"rte-modal-footer\">\n <ng-container [ngTemplateOutlet]=\"secondaryButton()\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"primaryButton()\"></ng-container>\n </div>\n </dialog>\n</div>\n", styles: [".rte-modal-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;opacity:0;background-color:#201f1f80;transition:opacity .15s ease-out}.rte-modal-backdrop[data-open=true]{opacity:1}.rte-modal-container{box-shadow:0 4px 8px 0 var(--elevation-shadow-key),0 0 2px 0 var(--elevation-shadow-ambient);background:linear-gradient(0deg,var(--elevation-surface-shadow-3) 0%,var(--elevation-surface-shadow-3) 100%);border:none;box-sizing:border-box;position:absolute;max-height:90vh;top:50%;transform:translateY(-50%) scale(.98);display:flex;width:496px;padding:24px;flex-direction:column;align-items:flex-start;gap:24px;background-color:var(--background-default);border-radius:8px;opacity:0;transition:opacity .15s ease-in,transform .15s ease-in}.rte-modal-container[data-open=true]{opacity:1;transform:translateY(-50%) scale(1)}.rte-modal-container[data-size=s]{width:656px}.rte-modal-container[data-size=m]{width:936px}.rte-modal-container[data-size=l]{width:1168px;border-radius:12px}.rte-modal-container[data-size=xl]{width:1328px;border-radius:16px}.rte-modal-container .rte-modal-header{display:flex;flex-direction:column;gap:8px;width:100%;flex:0 0 auto}.rte-modal-container .rte-modal-header .rte-modal-header-text{display:flex;flex-direction:row;align-items:center;gap:8px}.rte-modal-container .rte-modal-header .rte-modal-header-text .rte-modal-title{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Nunito;font-weight:600;font-size:24px;line-height:32px;letter-spacing:-.5px;margin:0;overflow:hidden;color:var(--content-primary);text-overflow:ellipsis;flex:1 1 0}.rte-modal-container .rte-modal-content{display:flex;padding:1px;flex-direction:column;align-items:flex-start;gap:16px;color:var(--content-secondary);width:100%;overflow:auto}.rte-modal-container .rte-modal-content .rte-modal-content-description{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Arial;font-weight:400;font-size:14px;line-height:20px;letter-spacing:0px;margin:0;color:var(--content-secondary)}.rte-modal-container .rte-modal-footer{display:flex;padding:0;justify-content:flex-end;align-items:center;gap:24px;align-self:stretch;flex:0 0 auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconButtonComponent, selector: "rte-icon-button", inputs: ["disabled", "name", "size", "variant", "type", "appearance", "compactSpacing", "ariaLabel", "ariaLabelledBy", "badgeCount", "badgeContent", "badgeType", "badgeIcon", "customStyle"], outputs: ["clickEvent"] }, { kind: "component", type: IconComponent, selector: "rte-icon", inputs: ["name", "size", "color", "classes", "appearance"] }, { kind: "component", type: DividerComponent, selector: "rte-divider", inputs: ["orientation", "thickness", "appearance", "endPoint"] }] }); }
42
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.14", type: ModalComponent, isStandalone: true, selector: "rte-modal", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconAppearance: { classPropertyName: "iconAppearance", publicName: "iconAppearance", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, secondaryButtonLabel: { classPropertyName: "secondaryButtonLabel", publicName: "secondaryButtonLabel", isSignal: true, isRequired: false, transformFunction: null }, isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "ariaDescribedby", isSignal: true, isRequired: false, transformFunction: null }, primaryButton: { classPropertyName: "primaryButton", publicName: "primaryButton", isSignal: true, isRequired: false, transformFunction: null }, secondaryButton: { classPropertyName: "secondaryButton", publicName: "secondaryButton", isSignal: true, isRequired: false, transformFunction: null }, customContent: { classPropertyName: "customContent", publicName: "customContent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closeModal: "closeModal" }, viewQueries: [{ propertyName: "elementRef", first: true, predicate: ["modal"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"rte-modal-wrapper\">\n <div class=\"rte-modal-backdrop\" [attr.data-open]=\"isOpen()\"></div>\n <dialog\n #modal\n class=\"rte-modal-container\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"id() + '-modal-title'\"\n [attr.aria-describedby]=\"description() ? id() + '-modal-desc' : ariaDescribedby()\"\n [attr.data-size]=\"size()\"\n [attr.data-open]=\"isOpen()\"\n >\n <div class=\"rte-modal-header\">\n <div class=\"rte-modal-header-text\">\n <rte-icon *ngIf=\"icon()\" [name]=\"icon() ?? ''\" [size]=\"iconSize()\" [appearance]=\"iconAppearance()\" />\n <h2 class=\"rte-modal-title\" [id]=\"id() + '-modal-title'\">\n {{ title() }}\n </h2>\n <rte-icon-button\n data-testid=\"modal-close-button\"\n name=\"close\"\n size=\"l\"\n class=\"close-icon\"\n variant=\"neutral\"\n [ariaLabel]=\"'Close modal ' + id()\"\n (clickEvent)=\"onClose()\"\n />\n </div>\n <rte-divider />\n </div>\n <div *ngIf=\"description()\" class=\"rte-modal-content\">\n <p class=\"rte-modal-content-description\" [id]=\"id() + '-modal-desc'\">\n {{ description() }}\n </p>\n <ng-container [ngTemplateOutlet]=\"customContent()\"></ng-container>\n </div>\n <div class=\"rte-modal-footer\">\n <ng-container [ngTemplateOutlet]=\"secondaryButton()\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"primaryButton()\"></ng-container>\n </div>\n </dialog>\n</div>\n", styles: [".rte-modal-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;opacity:0;background-color:#201f1f80;transition:opacity .15s ease-out}.rte-modal-backdrop[data-open=true]{opacity:1}.rte-modal-container{box-shadow:0 4px 8px 0 var(--elevation-shadow-key),0 0 2px 0 var(--elevation-shadow-ambient);background:linear-gradient(0deg,var(--elevation-surface-shadow-3) 0%,var(--elevation-surface-shadow-3) 100%);border:none;box-sizing:border-box;position:absolute;max-height:90vh;top:50%;transform:translateY(-50%) scale(.98);display:flex;width:496px;padding:24px;flex-direction:column;align-items:flex-start;gap:24px;background-color:var(--background-default);border-radius:8px;opacity:0;transition:opacity .15s ease-in,transform .15s ease-in;margin:auto}.rte-modal-container[data-open=true]{opacity:1;transform:translateY(-50%) scale(1)}.rte-modal-container[data-size=s]{width:656px}.rte-modal-container[data-size=m]{width:936px}.rte-modal-container[data-size=l]{width:1168px;border-radius:12px}.rte-modal-container[data-size=xl]{width:1328px;border-radius:16px}.rte-modal-container .rte-modal-header{display:flex;flex-direction:column;gap:8px;width:100%;flex:0 0 auto}.rte-modal-container .rte-modal-header .rte-modal-header-text{display:flex;flex-direction:row;align-items:center;gap:8px}.rte-modal-container .rte-modal-header .rte-modal-header-text .rte-modal-title{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Nunito;font-weight:600;font-size:24px;line-height:32px;letter-spacing:-.5px;margin:0;overflow:hidden;color:var(--content-primary);text-overflow:ellipsis;flex:1 1 0}.rte-modal-container .rte-modal-content{display:flex;padding:1px;flex-direction:column;align-items:flex-start;gap:16px;color:var(--content-secondary);width:100%;overflow:auto}.rte-modal-container .rte-modal-content .rte-modal-content-description{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Arial;font-weight:400;font-size:14px;line-height:20px;letter-spacing:0px;margin:0;color:var(--content-secondary)}.rte-modal-container .rte-modal-footer{display:flex;padding:0;justify-content:flex-end;align-items:center;gap:24px;align-self:stretch;flex:0 0 auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconButtonComponent, selector: "rte-icon-button", inputs: ["disabled", "name", "size", "variant", "type", "appearance", "compactSpacing", "ariaLabel", "ariaLabelledBy", "badgeCount", "badgeContent", "badgeType", "badgeIcon", "customStyle"], outputs: ["clickEvent"] }, { kind: "component", type: IconComponent, selector: "rte-icon", inputs: ["name", "size", "color", "classes", "appearance"] }, { kind: "component", type: DividerComponent, selector: "rte-divider", inputs: ["orientation", "thickness", "appearance", "endPoint"] }] }); }
43
43
  }
44
44
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ModalComponent, decorators: [{
45
45
  type: Component,
46
- args: [{ selector: "rte-modal", imports: [CommonModule, IconButtonComponent, IconComponent, DividerComponent], standalone: true, template: "<div class=\"rte-modal-wrapper\">\n <div class=\"rte-modal-backdrop\" [attr.data-open]=\"isOpen()\"></div>\n <dialog\n #modal\n class=\"rte-modal-container\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"id() + '-modal-title'\"\n [attr.aria-describedby]=\"description() ? id() + '-modal-desc' : ariaDescribedby()\"\n [attr.data-size]=\"size()\"\n [attr.data-open]=\"isOpen()\"\n >\n <div class=\"rte-modal-header\">\n <div class=\"rte-modal-header-text\">\n <rte-icon *ngIf=\"icon()\" [name]=\"icon() ?? ''\" [size]=\"iconSize()\" [appearance]=\"iconAppearance()\" />\n <h2 class=\"rte-modal-title\" [id]=\"id() + '-modal-title'\">\n {{ title() }}\n </h2>\n <rte-icon-button\n data-testid=\"modal-close-button\"\n name=\"close\"\n size=\"l\"\n class=\"close-icon\"\n variant=\"neutral\"\n [ariaLabel]=\"'Close modal ' + id()\"\n (clickEvent)=\"onClose()\"\n />\n </div>\n <rte-divider />\n </div>\n <div *ngIf=\"description()\" class=\"rte-modal-content\">\n <p class=\"rte-modal-content-description\" [id]=\"id() + '-modal-desc'\">\n {{ description() }}\n </p>\n <ng-container [ngTemplateOutlet]=\"customContent()\"></ng-container>\n </div>\n <div class=\"rte-modal-footer\">\n <ng-container [ngTemplateOutlet]=\"secondaryButton()\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"primaryButton()\"></ng-container>\n </div>\n </dialog>\n</div>\n", styles: [".rte-modal-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;opacity:0;background-color:#201f1f80;transition:opacity .15s ease-out}.rte-modal-backdrop[data-open=true]{opacity:1}.rte-modal-container{box-shadow:0 4px 8px 0 var(--elevation-shadow-key),0 0 2px 0 var(--elevation-shadow-ambient);background:linear-gradient(0deg,var(--elevation-surface-shadow-3) 0%,var(--elevation-surface-shadow-3) 100%);border:none;box-sizing:border-box;position:absolute;max-height:90vh;top:50%;transform:translateY(-50%) scale(.98);display:flex;width:496px;padding:24px;flex-direction:column;align-items:flex-start;gap:24px;background-color:var(--background-default);border-radius:8px;opacity:0;transition:opacity .15s ease-in,transform .15s ease-in}.rte-modal-container[data-open=true]{opacity:1;transform:translateY(-50%) scale(1)}.rte-modal-container[data-size=s]{width:656px}.rte-modal-container[data-size=m]{width:936px}.rte-modal-container[data-size=l]{width:1168px;border-radius:12px}.rte-modal-container[data-size=xl]{width:1328px;border-radius:16px}.rte-modal-container .rte-modal-header{display:flex;flex-direction:column;gap:8px;width:100%;flex:0 0 auto}.rte-modal-container .rte-modal-header .rte-modal-header-text{display:flex;flex-direction:row;align-items:center;gap:8px}.rte-modal-container .rte-modal-header .rte-modal-header-text .rte-modal-title{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Nunito;font-weight:600;font-size:24px;line-height:32px;letter-spacing:-.5px;margin:0;overflow:hidden;color:var(--content-primary);text-overflow:ellipsis;flex:1 1 0}.rte-modal-container .rte-modal-content{display:flex;padding:1px;flex-direction:column;align-items:flex-start;gap:16px;color:var(--content-secondary);width:100%;overflow:auto}.rte-modal-container .rte-modal-content .rte-modal-content-description{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Arial;font-weight:400;font-size:14px;line-height:20px;letter-spacing:0px;margin:0;color:var(--content-secondary)}.rte-modal-container .rte-modal-footer{display:flex;padding:0;justify-content:flex-end;align-items:center;gap:24px;align-self:stretch;flex:0 0 auto}\n"] }]
46
+ args: [{ selector: "rte-modal", imports: [CommonModule, IconButtonComponent, IconComponent, DividerComponent], standalone: true, template: "<div class=\"rte-modal-wrapper\">\n <div class=\"rte-modal-backdrop\" [attr.data-open]=\"isOpen()\"></div>\n <dialog\n #modal\n class=\"rte-modal-container\"\n [attr.aria-modal]=\"true\"\n [attr.aria-labelledby]=\"id() + '-modal-title'\"\n [attr.aria-describedby]=\"description() ? id() + '-modal-desc' : ariaDescribedby()\"\n [attr.data-size]=\"size()\"\n [attr.data-open]=\"isOpen()\"\n >\n <div class=\"rte-modal-header\">\n <div class=\"rte-modal-header-text\">\n <rte-icon *ngIf=\"icon()\" [name]=\"icon() ?? ''\" [size]=\"iconSize()\" [appearance]=\"iconAppearance()\" />\n <h2 class=\"rte-modal-title\" [id]=\"id() + '-modal-title'\">\n {{ title() }}\n </h2>\n <rte-icon-button\n data-testid=\"modal-close-button\"\n name=\"close\"\n size=\"l\"\n class=\"close-icon\"\n variant=\"neutral\"\n [ariaLabel]=\"'Close modal ' + id()\"\n (clickEvent)=\"onClose()\"\n />\n </div>\n <rte-divider />\n </div>\n <div *ngIf=\"description()\" class=\"rte-modal-content\">\n <p class=\"rte-modal-content-description\" [id]=\"id() + '-modal-desc'\">\n {{ description() }}\n </p>\n <ng-container [ngTemplateOutlet]=\"customContent()\"></ng-container>\n </div>\n <div class=\"rte-modal-footer\">\n <ng-container [ngTemplateOutlet]=\"secondaryButton()\"></ng-container>\n <ng-container [ngTemplateOutlet]=\"primaryButton()\"></ng-container>\n </div>\n </dialog>\n</div>\n", styles: [".rte-modal-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;opacity:0;background-color:#201f1f80;transition:opacity .15s ease-out}.rte-modal-backdrop[data-open=true]{opacity:1}.rte-modal-container{box-shadow:0 4px 8px 0 var(--elevation-shadow-key),0 0 2px 0 var(--elevation-shadow-ambient);background:linear-gradient(0deg,var(--elevation-surface-shadow-3) 0%,var(--elevation-surface-shadow-3) 100%);border:none;box-sizing:border-box;position:absolute;max-height:90vh;top:50%;transform:translateY(-50%) scale(.98);display:flex;width:496px;padding:24px;flex-direction:column;align-items:flex-start;gap:24px;background-color:var(--background-default);border-radius:8px;opacity:0;transition:opacity .15s ease-in,transform .15s ease-in;margin:auto}.rte-modal-container[data-open=true]{opacity:1;transform:translateY(-50%) scale(1)}.rte-modal-container[data-size=s]{width:656px}.rte-modal-container[data-size=m]{width:936px}.rte-modal-container[data-size=l]{width:1168px;border-radius:12px}.rte-modal-container[data-size=xl]{width:1328px;border-radius:16px}.rte-modal-container .rte-modal-header{display:flex;flex-direction:column;gap:8px;width:100%;flex:0 0 auto}.rte-modal-container .rte-modal-header .rte-modal-header-text{display:flex;flex-direction:row;align-items:center;gap:8px}.rte-modal-container .rte-modal-header .rte-modal-header-text .rte-modal-title{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Nunito;font-weight:600;font-size:24px;line-height:32px;letter-spacing:-.5px;margin:0;overflow:hidden;color:var(--content-primary);text-overflow:ellipsis;flex:1 1 0}.rte-modal-container .rte-modal-content{display:flex;padding:1px;flex-direction:column;align-items:flex-start;gap:16px;color:var(--content-secondary);width:100%;overflow:auto}.rte-modal-container .rte-modal-content .rte-modal-content-description{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Arial;font-weight:400;font-size:14px;line-height:20px;letter-spacing:0px;margin:0;color:var(--content-secondary)}.rte-modal-container .rte-modal-footer{display:flex;padding:0;justify-content:flex-end;align-items:center;gap:24px;align-self:stretch;flex:0 0 auto}\n"] }]
47
47
  }], ctorParameters: () => [] });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtcnRlLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtcnRlLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUdMLFNBQVMsRUFFVCxNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFFbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7QUFTM0UsTUFBTSxPQUFPLGNBQWM7SUFtQnpCO1FBbEJTLE9BQUUsR0FBRyxLQUFLLEVBQXNCLENBQUM7UUFDakMsU0FBSSxHQUFHLEtBQUssRUFBc0IsQ0FBQztRQUNuQyxtQkFBYyxHQUFHLEtBQUssQ0FBd0IsVUFBVSxDQUFDLENBQUM7UUFDMUQsVUFBSyxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ3hCLGdCQUFXLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDOUIseUJBQW9CLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDdkMsV0FBTSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUMvQixTQUFJLEdBQUcsS0FBSyxDQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLG9CQUFlLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQztRQUV2RCxrQkFBYSxHQUFHLEtBQUssQ0FBc0MsSUFBSSxDQUFDLENBQUM7UUFDakUsb0JBQWUsR0FBRyxLQUFLLENBQXNDLElBQUksQ0FBQyxDQUFDO1FBQ25FLGtCQUFhLEdBQUcsS0FBSyxDQUE4QixJQUFJLENBQUMsQ0FBQztRQUVqRCxlQUFVLEdBQUcsU0FBUyxDQUE2QixPQUFPLENBQUMsQ0FBQztRQUVyRSxjQUFTLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFJcEMsZUFBVSxHQUFHLE1BQU0sRUFBUSxDQUFDO1FBRTVCLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFKNUIsQ0FBQztJQU1oQixlQUFlO1FBQ2IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLGFBQWEsQ0FBQztRQUNoRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQzsrR0F0Q1UsY0FBYzttR0FBZCxjQUFjLHUwREM3QjNCLHdoREF5Q0EsbXNFRGpCWSxZQUFZLDBTQUFFLG1CQUFtQixvUkFBRSxhQUFhLGlIQUFFLGdCQUFnQjs7NEZBS2pFLGNBQWM7a0JBUDFCLFNBQVM7K0JBQ0UsV0FBVyxXQUNaLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQyxjQUNqRSxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBpbnB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIE9uRGVzdHJveSxcbiAgdmlld0NoaWxkLFxuICBBZnRlclZpZXdJbml0LFxuICBvdXRwdXQsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU2l6ZSB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZS9jb21wb25lbnRzL2NvbW1vbi9jb21tb24tdHlwZXNcIjtcbmltcG9ydCB7IEljb25TaXplIH0gZnJvbSBcIkBkZXNpZ24tc3lzdGVtLXJ0ZS9jb3JlL2NvbXBvbmVudHMvaWNvbi9pY29uLmNvbnN0YW50c1wiO1xuXG5pbXBvcnQgeyBGb2N1c1RyYXBTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2ZvY3VzLXRyYXAuc2VydmljZVwiO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSBcIi4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEaXZpZGVyQ29tcG9uZW50IH0gZnJvbSBcIi4uL2RpdmlkZXIvZGl2aWRlci5jb21wb25lbnRcIjtcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tIFwiLi4vaWNvbi9pY29uLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgSWNvbkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gXCIuLi9pY29uLWJ1dHRvbi9pY29uLWJ1dHRvbi5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInJ0ZS1tb2RhbFwiLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJY29uQnV0dG9uQ29tcG9uZW50LCBJY29uQ29tcG9uZW50LCBEaXZpZGVyQ29tcG9uZW50XSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6IFwiLi9tb2RhbC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybDogXCIuL21vZGFsLmNvbXBvbmVudC5zY3NzXCIsXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgaWQgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGljb24gPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGljb25BcHBlYXJhbmNlID0gaW5wdXQ8XCJvdXRsaW5lZFwiIHwgXCJmaWxsZWRcIj4oXCJvdXRsaW5lZFwiKTtcbiAgcmVhZG9ubHkgdGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBzZWNvbmRhcnlCdXR0b25MYWJlbCA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgaXNPcGVuID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzaXplID0gaW5wdXQ8U2l6ZT4oXCJtXCIpO1xuICByZWFkb25seSBhcmlhRGVzY3JpYmVkYnkgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcmVhZG9ubHkgcHJpbWFyeUJ1dHRvbiA9IGlucHV0PFRlbXBsYXRlUmVmPEJ1dHRvbkNvbXBvbmVudD4gfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgc2Vjb25kYXJ5QnV0dG9uID0gaW5wdXQ8VGVtcGxhdGVSZWY8QnV0dG9uQ29tcG9uZW50PiB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBjdXN0b21Db250ZW50ID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KFwibW9kYWxcIik7XG5cbiAgcHJpdmF0ZSBmb2N1c1RyYXAgPSBpbmplY3QoRm9jdXNUcmFwU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHJlYWRvbmx5IGNsb3NlTW9kYWwgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICByZWFkb25seSBpY29uU2l6ZSA9IHNpZ25hbChJY29uU2l6ZVtcInhsXCJdKTtcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc3QgbmF0aXZlID0gdGhpcy5lbGVtZW50UmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKG5hdGl2ZSkge1xuICAgICAgdGhpcy5mb2N1c1RyYXAuYWN0aXZhdGUobmF0aXZlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmZvY3VzVHJhcC5kZWFjdGl2YXRlKCk7XG4gIH1cblxuICBvbkNsb3NlKCkge1xuICAgIHRoaXMuY2xvc2VNb2RhbC5lbWl0KCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJydGUtbW9kYWwtd3JhcHBlclwiPlxuICA8ZGl2IGNsYXNzPVwicnRlLW1vZGFsLWJhY2tkcm9wXCIgW2F0dHIuZGF0YS1vcGVuXT1cImlzT3BlbigpXCI+PC9kaXY+XG4gIDxkaWFsb2dcbiAgICAjbW9kYWxcbiAgICBjbGFzcz1cInJ0ZS1tb2RhbC1jb250YWluZXJcIlxuICAgIFthdHRyLmFyaWEtbW9kYWxdPVwidHJ1ZVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImlkKCkgKyAnLW1vZGFsLXRpdGxlJ1wiXG4gICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJkZXNjcmlwdGlvbigpID8gaWQoKSArICctbW9kYWwtZGVzYycgOiBhcmlhRGVzY3JpYmVkYnkoKVwiXG4gICAgW2F0dHIuZGF0YS1zaXplXT1cInNpemUoKVwiXG4gICAgW2F0dHIuZGF0YS1vcGVuXT1cImlzT3BlbigpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJydGUtbW9kYWwtaGVhZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicnRlLW1vZGFsLWhlYWRlci10ZXh0XCI+XG4gICAgICAgIDxydGUtaWNvbiAqbmdJZj1cImljb24oKVwiIFtuYW1lXT1cImljb24oKSA/PyAnJ1wiIFtzaXplXT1cImljb25TaXplKClcIiBbYXBwZWFyYW5jZV09XCJpY29uQXBwZWFyYW5jZSgpXCIgLz5cbiAgICAgICAgPGgyIGNsYXNzPVwicnRlLW1vZGFsLXRpdGxlXCIgW2lkXT1cImlkKCkgKyAnLW1vZGFsLXRpdGxlJ1wiPlxuICAgICAgICAgIHt7IHRpdGxlKCkgfX1cbiAgICAgICAgPC9oMj5cbiAgICAgICAgPHJ0ZS1pY29uLWJ1dHRvblxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwibW9kYWwtY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgICBuYW1lPVwiY2xvc2VcIlxuICAgICAgICAgIHNpemU9XCJsXCJcbiAgICAgICAgICBjbGFzcz1cImNsb3NlLWljb25cIlxuICAgICAgICAgIHZhcmlhbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICBbYXJpYUxhYmVsXT1cIidDbG9zZSBtb2RhbCAnICsgaWQoKVwiXG4gICAgICAgICAgKGNsaWNrRXZlbnQpPVwib25DbG9zZSgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPHJ0ZS1kaXZpZGVyIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImRlc2NyaXB0aW9uKClcIiBjbGFzcz1cInJ0ZS1tb2RhbC1jb250ZW50XCI+XG4gICAgICA8cCBjbGFzcz1cInJ0ZS1tb2RhbC1jb250ZW50LWRlc2NyaXB0aW9uXCIgW2lkXT1cImlkKCkgKyAnLW1vZGFsLWRlc2MnXCI+XG4gICAgICAgIHt7IGRlc2NyaXB0aW9uKCkgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tQ29udGVudCgpXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJ0ZS1tb2RhbC1mb290ZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2Vjb25kYXJ5QnV0dG9uKClcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicHJpbWFyeUJ1dHRvbigpXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGlhbG9nPlxuPC9kaXY+XG4iXX0=
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtcnRlLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtcnRlLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvbW9kYWwvbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUdMLFNBQVMsRUFFVCxNQUFNLEVBQ04sTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0RBQXdELENBQUM7QUFFbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFFckUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7QUFTM0UsTUFBTSxPQUFPLGNBQWM7SUFtQnpCO1FBbEJTLE9BQUUsR0FBRyxLQUFLLEVBQXNCLENBQUM7UUFDakMsU0FBSSxHQUFHLEtBQUssRUFBc0IsQ0FBQztRQUNuQyxtQkFBYyxHQUFHLEtBQUssQ0FBd0IsVUFBVSxDQUFDLENBQUM7UUFDMUQsVUFBSyxHQUFHLEtBQUssRUFBVSxDQUFDO1FBQ3hCLGdCQUFXLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDOUIseUJBQW9CLEdBQUcsS0FBSyxFQUFVLENBQUM7UUFDdkMsV0FBTSxHQUFHLEtBQUssQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUMvQixTQUFJLEdBQUcsS0FBSyxDQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ3hCLG9CQUFlLEdBQUcsS0FBSyxDQUFxQixTQUFTLENBQUMsQ0FBQztRQUV2RCxrQkFBYSxHQUFHLEtBQUssQ0FBc0MsSUFBSSxDQUFDLENBQUM7UUFDakUsb0JBQWUsR0FBRyxLQUFLLENBQXNDLElBQUksQ0FBQyxDQUFDO1FBQ25FLGtCQUFhLEdBQUcsS0FBSyxDQUE4QixJQUFJLENBQUMsQ0FBQztRQUVqRCxlQUFVLEdBQUcsU0FBUyxDQUE2QixPQUFPLENBQUMsQ0FBQztRQUVyRSxjQUFTLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFJcEMsZUFBVSxHQUFHLE1BQU0sRUFBUSxDQUFDO1FBRTVCLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFKNUIsQ0FBQztJQU1oQixlQUFlO1FBQ2IsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLGFBQWEsQ0FBQztRQUNoRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEMsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQzsrR0F0Q1UsY0FBYzttR0FBZCxjQUFjLHUwREM3QjNCLHdoREF5Q0EsK3NFRGpCWSxZQUFZLDBTQUFFLG1CQUFtQixvUkFBRSxhQUFhLGlIQUFFLGdCQUFnQjs7NEZBS2pFLGNBQWM7a0JBUDFCLFNBQVM7K0JBQ0UsV0FBVyxXQUNaLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLGFBQWEsRUFBRSxnQkFBZ0IsQ0FBQyxjQUNqRSxJQUFJIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBpbnB1dCxcbiAgVGVtcGxhdGVSZWYsXG4gIE9uRGVzdHJveSxcbiAgdmlld0NoaWxkLFxuICBBZnRlclZpZXdJbml0LFxuICBvdXRwdXQsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgU2l6ZSB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZS9jb21wb25lbnRzL2NvbW1vbi9jb21tb24tdHlwZXNcIjtcbmltcG9ydCB7IEljb25TaXplIH0gZnJvbSBcIkBkZXNpZ24tc3lzdGVtLXJ0ZS9jb3JlL2NvbXBvbmVudHMvaWNvbi9pY29uLmNvbnN0YW50c1wiO1xuXG5pbXBvcnQgeyBGb2N1c1RyYXBTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL2ZvY3VzLXRyYXAuc2VydmljZVwiO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSBcIi4uL2J1dHRvbi9idXR0b24uY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEaXZpZGVyQ29tcG9uZW50IH0gZnJvbSBcIi4uL2RpdmlkZXIvZGl2aWRlci5jb21wb25lbnRcIjtcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tIFwiLi4vaWNvbi9pY29uLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgSWNvbkJ1dHRvbkNvbXBvbmVudCB9IGZyb20gXCIuLi9pY29uLWJ1dHRvbi9pY29uLWJ1dHRvbi5jb21wb25lbnRcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInJ0ZS1tb2RhbFwiLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJY29uQnV0dG9uQ29tcG9uZW50LCBJY29uQ29tcG9uZW50LCBEaXZpZGVyQ29tcG9uZW50XSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgdGVtcGxhdGVVcmw6IFwiLi9tb2RhbC5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybDogXCIuL21vZGFsLmNvbXBvbmVudC5zY3NzXCIsXG59KVxuZXhwb3J0IGNsYXNzIE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgcmVhZG9ubHkgaWQgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGljb24gPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IGljb25BcHBlYXJhbmNlID0gaW5wdXQ8XCJvdXRsaW5lZFwiIHwgXCJmaWxsZWRcIj4oXCJvdXRsaW5lZFwiKTtcbiAgcmVhZG9ubHkgdGl0bGUgPSBpbnB1dDxzdHJpbmc+KCk7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBzZWNvbmRhcnlCdXR0b25MYWJlbCA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgaXNPcGVuID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBzaXplID0gaW5wdXQ8U2l6ZT4oXCJtXCIpO1xuICByZWFkb25seSBhcmlhRGVzY3JpYmVkYnkgPSBpbnB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcmVhZG9ubHkgcHJpbWFyeUJ1dHRvbiA9IGlucHV0PFRlbXBsYXRlUmVmPEJ1dHRvbkNvbXBvbmVudD4gfCBudWxsPihudWxsKTtcbiAgcmVhZG9ubHkgc2Vjb25kYXJ5QnV0dG9uID0gaW5wdXQ8VGVtcGxhdGVSZWY8QnV0dG9uQ29tcG9uZW50PiB8IG51bGw+KG51bGwpO1xuICByZWFkb25seSBjdXN0b21Db250ZW50ID0gaW5wdXQ8VGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsPihudWxsKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGVsZW1lbnRSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4+KFwibW9kYWxcIik7XG5cbiAgcHJpdmF0ZSBmb2N1c1RyYXAgPSBpbmplY3QoRm9jdXNUcmFwU2VydmljZSk7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHJlYWRvbmx5IGNsb3NlTW9kYWwgPSBvdXRwdXQ8dm9pZD4oKTtcblxuICByZWFkb25seSBpY29uU2l6ZSA9IHNpZ25hbChJY29uU2l6ZVtcInhsXCJdKTtcblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgY29uc3QgbmF0aXZlID0gdGhpcy5lbGVtZW50UmVmKCk/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgaWYgKG5hdGl2ZSkge1xuICAgICAgdGhpcy5mb2N1c1RyYXAuYWN0aXZhdGUobmF0aXZlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmZvY3VzVHJhcC5kZWFjdGl2YXRlKCk7XG4gIH1cblxuICBvbkNsb3NlKCkge1xuICAgIHRoaXMuY2xvc2VNb2RhbC5lbWl0KCk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJydGUtbW9kYWwtd3JhcHBlclwiPlxuICA8ZGl2IGNsYXNzPVwicnRlLW1vZGFsLWJhY2tkcm9wXCIgW2F0dHIuZGF0YS1vcGVuXT1cImlzT3BlbigpXCI+PC9kaXY+XG4gIDxkaWFsb2dcbiAgICAjbW9kYWxcbiAgICBjbGFzcz1cInJ0ZS1tb2RhbC1jb250YWluZXJcIlxuICAgIFthdHRyLmFyaWEtbW9kYWxdPVwidHJ1ZVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImlkKCkgKyAnLW1vZGFsLXRpdGxlJ1wiXG4gICAgW2F0dHIuYXJpYS1kZXNjcmliZWRieV09XCJkZXNjcmlwdGlvbigpID8gaWQoKSArICctbW9kYWwtZGVzYycgOiBhcmlhRGVzY3JpYmVkYnkoKVwiXG4gICAgW2F0dHIuZGF0YS1zaXplXT1cInNpemUoKVwiXG4gICAgW2F0dHIuZGF0YS1vcGVuXT1cImlzT3BlbigpXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJydGUtbW9kYWwtaGVhZGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicnRlLW1vZGFsLWhlYWRlci10ZXh0XCI+XG4gICAgICAgIDxydGUtaWNvbiAqbmdJZj1cImljb24oKVwiIFtuYW1lXT1cImljb24oKSA/PyAnJ1wiIFtzaXplXT1cImljb25TaXplKClcIiBbYXBwZWFyYW5jZV09XCJpY29uQXBwZWFyYW5jZSgpXCIgLz5cbiAgICAgICAgPGgyIGNsYXNzPVwicnRlLW1vZGFsLXRpdGxlXCIgW2lkXT1cImlkKCkgKyAnLW1vZGFsLXRpdGxlJ1wiPlxuICAgICAgICAgIHt7IHRpdGxlKCkgfX1cbiAgICAgICAgPC9oMj5cbiAgICAgICAgPHJ0ZS1pY29uLWJ1dHRvblxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwibW9kYWwtY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgICBuYW1lPVwiY2xvc2VcIlxuICAgICAgICAgIHNpemU9XCJsXCJcbiAgICAgICAgICBjbGFzcz1cImNsb3NlLWljb25cIlxuICAgICAgICAgIHZhcmlhbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICBbYXJpYUxhYmVsXT1cIidDbG9zZSBtb2RhbCAnICsgaWQoKVwiXG4gICAgICAgICAgKGNsaWNrRXZlbnQpPVwib25DbG9zZSgpXCJcbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgICAgPHJ0ZS1kaXZpZGVyIC8+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cImRlc2NyaXB0aW9uKClcIiBjbGFzcz1cInJ0ZS1tb2RhbC1jb250ZW50XCI+XG4gICAgICA8cCBjbGFzcz1cInJ0ZS1tb2RhbC1jb250ZW50LWRlc2NyaXB0aW9uXCIgW2lkXT1cImlkKCkgKyAnLW1vZGFsLWRlc2MnXCI+XG4gICAgICAgIHt7IGRlc2NyaXB0aW9uKCkgfX1cbiAgICAgIDwvcD5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tQ29udGVudCgpXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInJ0ZS1tb2RhbC1mb290ZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwic2Vjb25kYXJ5QnV0dG9uKClcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwicHJpbWFyeUJ1dHRvbigpXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGlhbG9nPlxuPC9kaXY+XG4iXX0=
@@ -93,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
93
93
  type: Component,
94
94
  args: [{ selector: "rte-side-nav", imports: [CommonModule, BaseSideNavComponent, DividerComponent, NavItemComponent, NavMenuComponent], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: "<rte-base-side-nav [size]=\"size()\" [collapsed]=\"isCollapsed()\" [appearance]=\"appearance()\">\n <div side-nav-header>\n <div class=\"side-nav-header-container\">\n <div class=\"side-nav-header {{ appearance() }}\" [ngClass]=\"{ collapsed: isCollapsed() }\">\n @if (headerConfig()?.link) {\n <a\n class=\"side-nav-header-title-container\"\n [href]=\"headerConfig()!.link!\"\n [attr.aria-label]=\"headerConfig()?.ariaLabel\"\n (click)=\"handleHeaderClick()\"\n >\n <div class=\"side-nav-header-title\">\n <div class=\"side-nav-header-identifier\">{{ headerConfig()?.identifier }}</div>\n @if (!isCollapsed()) {\n <h1 [ngClass]=\"{ hidden: !shouldShowTitle() }\">{{ headerConfig()?.title }}</h1>\n }\n </div>\n </a>\n } @else if (headerConfig()?.onClick) {\n <div\n class=\"side-nav-header-title-container\"\n tabindex=\"0\"\n role=\"button\"\n [attr.aria-label]=\"headerConfig()?.ariaLabel\"\n (click)=\"handleHeaderClick()\"\n (keydown)=\"handleHeaderKeyDown($event)\"\n >\n <div class=\"side-nav-header-title\">\n <div class=\"side-nav-header-identifier\">{{ headerConfig()?.identifier }}</div>\n @if (!isCollapsed()) {\n <h1 [ngClass]=\"{ hidden: !shouldShowTitle() }\">{{ headerConfig()?.title }}</h1>\n }\n </div>\n </div>\n } @else {\n <div class=\"side-nav-header-title-container\">\n <div class=\"side-nav-header-title\">\n <div class=\"side-nav-header-identifier\">{{ headerConfig()?.identifier }}</div>\n @if (!isCollapsed()) {\n <h1 [ngClass]=\"{ hidden: !shouldShowTitle() }\">{{ headerConfig()?.title }}</h1>\n }\n </div>\n </div>\n }\n <div class=\"side-nav-header-version\" [ngClass]=\"{ hidden: !shouldShowTitle() }\">\n <span>{{ headerConfig()?.version }}</span>\n </div>\n </div>\n <rte-divider [appearance]=\"dividerAppearance()\" />\n </div>\n </div>\n <div side-nav-body>\n <div class=\"side-nav-body\">\n <ul>\n @for (item of items(); track item.label) {\n @if (hasNestedItems(item)) {\n <rte-nav-menu\n [id]=\"item.id\"\n [label]=\"item.label\"\n [icon]=\"item.icon\"\n [showIcon]=\"item.showIcon ?? true\"\n [collapsed]=\"isCollapsed()\"\n [link]=\"item.link\"\n [open]=\"item.open\"\n [items]=\"item.items || []\"\n [appearance]=\"appearance()\"\n [badge]=\"item.badge\"\n [showDivider]=\"item.showDivider!\"\n (openChange)=\"handleMenuOpenChange($event)\"\n />\n } @else {\n <li>\n <rte-nav-item\n [id]=\"item.id\"\n [label]=\"item.label\"\n [icon]=\"item.icon\"\n [showIcon]=\"item.showIcon ?? true\"\n [collapsed]=\"isCollapsed()\"\n [link]=\"item.link\"\n [appearance]=\"appearance()\"\n [active]=\"item.active ?? false\"\n [badge]=\"item.badge\"\n (itemClick)=\"handleItemClick(item.id || item.label)\"\n ></rte-nav-item>\n </li>\n @if (item.showDivider) {\n <rte-divider [appearance]=\"dividerAppearance()\" />\n }\n }\n }\n </ul>\n </div>\n </div>\n @if (footerItems()?.length || collapsible()) {\n <div side-nav-footer>\n <div class=\"side-nav-footer-container\">\n @if (footerItems()?.length) {\n <div class=\"side-nav-footer-items\">\n <ul>\n @for (item of footerItems()!; track item.id || item.label) {\n @if (hasNestedItems(item)) {\n <rte-nav-menu\n [id]=\"item.id\"\n [label]=\"item.label\"\n [icon]=\"item.icon\"\n [showIcon]=\"item.showIcon ?? true\"\n [collapsed]=\"isCollapsed()\"\n [link]=\"item.link\"\n [open]=\"item.open\"\n [items]=\"item.items || []\"\n [appearance]=\"appearance()\"\n [badge]=\"item.badge\"\n [showDivider]=\"item.showDivider!\"\n (openChange)=\"handleFooterMenuOpenChange($event)\"\n />\n } @else {\n <li>\n <rte-nav-item\n [id]=\"item.id\"\n [label]=\"item.label\"\n [icon]=\"item.icon\"\n [showIcon]=\"item.showIcon ?? true\"\n [collapsed]=\"isCollapsed()\"\n [link]=\"item.link\"\n [appearance]=\"appearance()\"\n [active]=\"item.active ?? false\"\n [badge]=\"item.badge\"\n (itemClick)=\"handleFooterItemClick(item.id || item.label)\"\n ></rte-nav-item>\n </li>\n @if (item.showDivider) {\n <rte-divider [appearance]=\"dividerAppearance()\" />\n }\n }\n }\n </ul>\n </div>\n }\n <rte-divider [appearance]=\"dividerAppearance()\" />\n @if (collapsible()) {\n <div class=\"side-nav-footer\">\n <div class=\"collapsible-section\">\n <ul>\n <li>\n <rte-nav-item\n [label]=\"isCollapsed() ? 'Ouvrir le menu' : 'R\u00E9duire le menu'\"\n [icon]=\"collapseIcon()\"\n [collapsed]=\"isCollapsed()\"\n [appearance]=\"appearance()\"\n (itemClick)=\"handleCollapseClick()\"\n />\n </li>\n </ul>\n </div>\n </div>\n }\n </div>\n </div>\n }\n <div side-nav-content>\n <ng-content select=\"[content]\"></ng-content>\n </div>\n</rte-base-side-nav>\n", styles: [".side-nav-header-container{display:flex;padding:4px;flex-direction:column;justify-content:center;align-items:flex-start;flex-shrink:0;align-self:stretch;height:120px;min-height:120px;max-height:120px}.side-nav-header-container.collapsed{align-items:center;justify-content:center;padding:4px}.side-nav-header{display:flex;position:relative;padding:20px 8px;flex-direction:column;align-items:flex-start;gap:4px;flex:1 0 0;align-self:stretch;height:120px;transition:opacity .3s}.side-nav-header.collapsed{padding:8px;justify-content:center;align-items:center;flex:1 0 0;align-self:stretch}.side-nav-header.collapsed .side-nav-header-title-container{padding:8px;justify-content:center;align-items:center;flex-grow:0;gap:0;align-self:auto}.side-nav-header.collapsed .side-nav-header-title-container .side-nav-header-title{gap:0}.side-nav-header.neutral .side-nav-header-title-container[href]:hover,.side-nav-header.neutral .side-nav-header-title-container[role=button]:hover{background:var(--background-neutral-navigation-hover);box-shadow:0 1px 2px 0 var(--elevation-shadow-key),0 0 2px 0 var(--elevation-shadow-ambient)}.side-nav-header .side-nav-header-title-container{display:flex;padding:0 8px;align-items:center;gap:8px;flex:1 0 0;align-self:stretch;text-decoration:none;color:inherit}.side-nav-header .side-nav-header-title-container[href],.side-nav-header .side-nav-header-title-container[role=button]{cursor:pointer}.side-nav-header .side-nav-header-title-container[href]:hover,.side-nav-header .side-nav-header-title-container[role=button]:hover{border-radius:4px;opacity:100%;background:var(--background-brand-navigation-hover)}.side-nav-header .side-nav-header-title-container .side-nav-header-title{display:flex;align-items:center;gap:8px}.side-nav-header .side-nav-header-title-container .side-nav-header-title .side-nav-header-identifier{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Arial;font-weight:700;font-size:12px;line-height:16px;letter-spacing:0px;display:flex;flex-direction:column;justify-content:center;align-items:center;flex:1 0 0;align-self:stretch;color:var(--content-brand-navigation-default);text-align:center;-webkit-user-select:none;user-select:none;border-radius:4px;background:var(--background-brand-navigation-pressed);min-width:24px;height:24px}.side-nav-header .side-nav-header-title-container .side-nav-header-title h1{font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Nunito;font-weight:600;font-size:16px;line-height:24px;letter-spacing:-.5px;-webkit-user-select:none;user-select:none;align-self:stretch;margin:0;transition:opacity .3s}.side-nav-header .side-nav-header-title-container .side-nav-header-title h1.hidden{opacity:0;max-height:0;padding:0;margin:0}.side-nav-header .side-nav-header-version{display:flex;position:absolute;bottom:4px;right:8px;flex-direction:column;justify-content:flex-end;align-items:flex-end;gap:0px;align-self:stretch;font-feature-settings:\"liga\" off,\"clig\" off;font-style:normal;font-family:Arial;font-weight:400;font-size:10px;line-height:14px;letter-spacing:0px;transition:opacity .3s,max-height .3s;max-height:50px;overflow:hidden;opacity:1}.side-nav-header .side-nav-header-version.hidden{opacity:0;max-height:0;padding:0;margin:0}.side-nav-body{display:flex;padding:16px 8px;flex-direction:column;align-items:flex-start;gap:8px;flex:1 0 0;overflow-x:hidden;overflow-y:auto;width:100%;box-sizing:border-box}.side-nav-body ul{list-style:none;padding:0;margin:0;width:100%;box-sizing:border-box;display:flex;flex-direction:column;gap:8px}.side-nav-footer-container{padding:8px}.side-nav-footer-container .side-nav-footer{display:flex;flex-direction:column;align-items:center;justify-content:space-between;box-sizing:border-box;width:100%;margin-top:4px}.side-nav-footer-items{display:flex;flex-direction:column;align-items:flex-start;gap:8px;width:100%;box-sizing:border-box;margin-bottom:8px}.side-nav-footer-items ul{list-style:none;padding:0;margin:0;width:100%;box-sizing:border-box}.collapsible-section{display:flex;padding:4px 0;flex-direction:column;align-items:flex-start;align-self:stretch}.collapsible-section ul{list-style:none;padding:0;margin:0;width:100%;box-sizing:border-box}\n"] }]
95
95
  }], ctorParameters: () => [] });
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtcnRlLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1uYXYvc2lkZS1uYXYuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtcnRlLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1uYXYvc2lkZS1uYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQU0vRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBRXJHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBMEIsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBRXpGLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0FBVWhDLE1BQU0sT0FBTyxnQkFBZ0I7SUFnQjNCO1FBZlMsU0FBSSxHQUFHLEtBQUssQ0FBYyxHQUFrQixDQUFDLENBQUM7UUFDOUMsZ0JBQVcsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDcEMsaUJBQVksR0FBRyxLQUFLLEVBQW1DLENBQUM7UUFDeEQsVUFBSyxHQUFHLEtB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bnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGRpdmlkZXJBcHBlYXJhbmNlQnlTaWRlTmF2QXBwZWFyYW5jZSB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZVwiO1xuaW1wb3J0IHsgU2lkZU5hdkFwcGVhcmFuY2UsIFNpZGVOYXZIZWFkZXJDb25maWcgfSBmcm9tIFwiQGRlc2lnbi1zeXN0ZW0tcnRlL2NvcmVcIjtcbmltcG9ydCB7IERpdmlkZXJBcHBlYXJhbmNlIH0gZnJvbSBcIkBkZXNpZ24tc3lzdGVtLXJ0ZS9jb3JlL2NvbXBvbmVudHMvZGl2aWRlci9kaXZpZGVyLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgTmF2SXRlbVByb3BzIH0gZnJvbSBcIkBkZXNpZ24tc3lzdGVtLXJ0ZS9jb3JlXCI7XG5pbXBvcnQgeyBOYXZNZW51UHJvcHMgfSBmcm9tIFwiQGRlc2lnbi1zeXN0ZW0tcnRlL2NvcmVcIjtcbmltcG9ydCB7IFNpZGVOYXZTaXplIH0gZnJvbSBcIkBkZXNpZ24tc3lzdGVtLXJ0ZS9jb3JlL2NvbXBvbmVudHMvc2lkZS1uYXYvc2lkZS1uYXYuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBFTlRFUl9LRVksIFNQQUNFX0tFWSB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZS9jb25zdGFudHMva2V5Ym9hcmQva2V5Ym9hcmQuY29uc3RhbnRzXCI7XG5cbmltcG9ydCB7IERpdmlkZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vZGl2aWRlci9kaXZpZGVyLmNvbXBvbmVudFwiO1xuXG5pbXBvcnQgeyBCYXNlU2lkZU5hdkNvbXBvbmVudCB9IGZyb20gXCIuL2Jhc2Utc2lkZS1uYXYvYmFzZS1zaWRlLW5hdi5jb21wb25lbnRcIjtcbmltcG9ydCB7IE5hdkl0ZW1Db21wb25lbnQgfSBmcm9tIFwiLi9uYXYtaXRlbS9uYXYtaXRlbS5jb21wb25lbnRcIjtcbmltcG9ydCB7IE5hdk1lbnVDb21wb25lbnQsIE5hdk1lbnVPcGVuQ2hhbmdlRXZlbnQgfSBmcm9tIFwiLi9uYXYtbWVudS9uYXYtbWVudS5jb21wb25lbnRcIjtcblxuY29uc3QgVFJBTlNJVElPTl9EVVJBVElPTiA9IDMwMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInJ0ZS1zaWRlLW5hdlwiLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCYXNlU2lkZU5hdkNvbXBvbmVudCwgRGl2aWRlckNvbXBvbmVudCwgTmF2SXRlbUNvbXBvbmVudCwgTmF2TWVudUNvbXBvbmVudF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlVXJsOiBcIi4vc2lkZS1uYXYuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmw6IFwiLi9zaWRlLW5hdi5jb21wb25lbnQuc2Nzc1wiLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2lkZU5hdkNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IHNpemUgPSBpbnB1dDxTaWRlTmF2U2l6ZT4oXCJtXCIgYXMgU2lkZU5hdlNpemUpO1xuICByZWFkb25seSBjb2xsYXBzaWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgaGVhZGVyQ29uZmlnID0gaW5wdXQ8U2lkZU5hdkhlYWRlckNvbmZpZyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgaXRlbXMgPSBpbnB1dDxOYXZJdGVtUHJvcHNbXT4oW10pO1xuICByZWFkb25seSBmb290ZXJJdGVtcyA9IGlucHV0PE5hdkl0ZW1Qcm9wc1tdIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBjb2xsYXBzZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGFwcGVhcmFuY2UgPSBpbnB1dDxTaWRlTmF2QXBwZWFyYW5jZT4oXCJicmFuZFwiKTtcblxuICByZWFkb25seSBpc0NvbGxhcHNlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHNob3VsZFNob3dUaXRsZSA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcblxuICByZWFkb25seSBpdGVtQ2xpY2tlZCA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSB0aXRsZVRpbWVvdXRJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNDb2xsYXBzZWQuc2V0KHRoaXMuY29sbGFwc2VkKCkpO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgICApO1xuXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy50aXRsZVRpbWVvdXRJZCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpdGxlVGltZW91dElkKTtcbiAgICAgICAgICB0aGlzLnRpdGxlVGltZW91dElkID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzQ29sbGFwc2VkKCkpIHtcbiAgICAgICAgICB0aGlzLnNob3VsZFNob3dUaXRsZS5zZXQoZmFsc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudGl0bGVUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvdWxkU2hvd1RpdGxlLnNldCh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMudGl0bGVUaW1lb3V0SWQgPSBudWxsO1xuICAgICAgICAgIH0sIFRSQU5TSVRJT05fRFVSQVRJT04pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICAgICk7XG4gIH1cblxuICByZWFkb25seSBjb2xsYXBzZUljb24gPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5pc0NvbGxhcHNlZCgpID8gXCJhcnJvdy1kb3VibGUtcmlnaHRcIiA6IFwiYXJyb3ctZG91YmxlLWxlZnRcIjtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZGl2aWRlckFwcGVhcmFuY2UgPSBjb21wdXRlZDxEaXZpZGVyQXBwZWFyYW5jZT4oKCkgPT4ge1xuICAgIHJldHVybiBkaXZpZGVyQXBwZWFyYW5jZUJ5U2lkZU5hdkFwcGVhcmFuY2VbdGhpcy5hcHBlYXJhbmNlKCldO1xuICB9KTtcblxuICBoYW5kbGVIZWFkZXJLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKFtTUEFDRV9LRVksIEVOVEVSX0tFWV0uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuaGVhZGVyQ29uZmlnKCk7XG4gICAgICBpZiAoY29uZmlnPy5vbkNsaWNrKSB7XG4gICAgICAgIGNvbmZpZy5vbkNsaWNrKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlSGVhZGVyQ2xpY2soKTogdm9pZCB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5oZWFkZXJDb25maWcoKTtcbiAgICBpZiAoY29uZmlnPy5vbkNsaWNrKSB7XG4gICAgICBjb25maWcub25DbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIGhhc05lc3RlZEl0ZW1zKGl0ZW06IE5hdkl0ZW1Qcm9wcyk6IGl0ZW0gaXMgTmF2TWVudVByb3BzIHtcbiAgICByZXR1cm4gISFpdGVtLml0ZW1zPy5sZW5ndGg7XG4gIH1cblxuICBoYW5kbGVJdGVtQ2xpY2soaXRlbUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1DbGlja2VkLmVtaXQoaXRlbUlkKTtcbiAgfVxuXG4gIGhhbmRsZUZvb3Rlckl0ZW1DbGljayhpdGVtSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaXRlbUNsaWNrZWQuZW1pdChpdGVtSWQpO1xuICB9XG5cbiAgaGFuZGxlTWVudU9wZW5DaGFuZ2UoZXZlbnQ6IE5hdk1lbnVPcGVuQ2hhbmdlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXRNZW51ID0gdGhpcy5pdGVtcygpLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGV2ZW50LmlkKTtcbiAgICBpZiAodGFyZ2V0TWVudSkge1xuICAgICAgKHRhcmdldE1lbnUgYXMgTmF2TWVudVByb3BzKS5vcGVuID0gZXZlbnQub3BlbjtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVGb290ZXJNZW51T3BlbkNoYW5nZShldmVudDogTmF2TWVudU9wZW5DaGFuZ2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldE1lbnUgPSB0aGlzLmZvb3Rlckl0ZW1zKCk/LmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGV2ZW50LmlkKTtcbiAgICBpZiAodGFyZ2V0TWVudSkge1xuICAgICAgKHRhcmdldE1lbnUgYXMgTmF2TWVudVByb3BzKS5vcGVuID0gZXZlbnQub3BlbjtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDb2xsYXBzZUNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuaXNDb2xsYXBzZWQuc2V0KCF0aGlzLmlzQ29sbGFwc2VkKCkpO1xuICB9XG59XG4iLCI8cnRlLWJhc2Utc2lkZS1uYXYgW3NpemVdPVwic2l6ZSgpXCIgW2NvbGxhcHNlZF09XCJpc0NvbGxhcHNlZCgpXCIgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZSgpXCI+XG4gIDxkaXYgc2lkZS1uYXYtaGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJzaWRlLW5hdi1oZWFkZXItY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtaGVhZGVyIHt7IGFwcGVhcmFuY2UoKSB9fVwiIFtuZ0NsYXNzXT1cInsgY29sbGFwc2VkOiBpc0NvbGxhcHNlZCgpIH1cIj5cbiAgICAgICAgQGlmIChoZWFkZXJDb25maWcoKT8ubGluaykge1xuICAgICAgICAgIDxhXG4gICAgICAgICAgICBjbGFzcz1cInNpZGUtbmF2LWhlYWRlci10aXRsZS1jb250YWluZXJcIlxuICAgICAgICAgICAgW2hyZWZdPVwiaGVhZGVyQ29uZmlnKCkhLmxpbmshXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiaGVhZGVyQ29uZmlnKCk/LmFyaWFMYWJlbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlSGVhZGVyQ2xpY2soKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWhlYWRlci10aXRsZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtaGVhZGVyLWlkZW50aWZpZXJcIj57eyBoZWFkZXJDb25maWcoKT8uaWRlbnRpZmllciB9fTwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKCFpc0NvbGxhcHNlZCgpKSB7XG4gICAgICAgICAgICAgICAgPGgxIFtuZ0NsYXNzXT1cInsgaGlkZGVuOiAhc2hvdWxkU2hvd1RpdGxlKCkgfVwiPnt7IGhlYWRlckNvbmZpZygpPy50aXRsZSB9fTwvaDE+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgfSBAZWxzZSBpZiAoaGVhZGVyQ29uZmlnKCk/Lm9uQ2xpY2spIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNpZGUtbmF2LWhlYWRlci10aXRsZS1jb250YWluZXJcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJoZWFkZXJDb25maWcoKT8uYXJpYUxhYmVsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVIZWFkZXJDbGljaygpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cImhhbmRsZUhlYWRlcktleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWhlYWRlci10aXRsZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtaGVhZGVyLWlkZW50aWZpZXJcIj57eyBoZWFkZXJDb25maWcoKT8uaWRlbnRpZmllciB9fTwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKCFpc0NvbGxhcHNlZCgpKSB7XG4gICAgICAgICAgICAgICAgPGgxIFtuZ0NsYXNzXT1cInsgaGlkZGVuOiAhc2hvdWxkU2hvd1RpdGxlKCkgfVwiPnt7IGhlYWRlckNvbmZpZygpPy50aXRsZSB9fTwvaDE+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtaGVhZGVyLXRpdGxlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWhlYWRlci10aXRsZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtaGVhZGVyLWlkZW50aWZpZXJcIj57eyBoZWFkZXJDb25maWcoKT8uaWRlbnRpZmllciB9fTwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKCFpc0NvbGxhcHNlZCgpKSB7XG4gICAgICAgICAgICAgICAgPGgxIFtuZ0NsYXNzXT1cInsgaGlkZGVuOiAhc2hvdWxkU2hvd1RpdGxlKCkgfVwiPnt7IGhlYWRlckNvbmZpZygpPy50aXRsZSB9fTwvaDE+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW5hdi1oZWFkZXItdmVyc2lvblwiIFtuZ0NsYXNzXT1cInsgaGlkZGVuOiAhc2hvdWxkU2hvd1RpdGxlKCkgfVwiPlxuICAgICAgICAgIDxzcGFuPnt7IGhlYWRlckNvbmZpZygpPy52ZXJzaW9uIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHJ0ZS1kaXZpZGVyIFthcHBlYXJhbmNlXT1cImRpdmlkZXJBcHBlYXJhbmNlKClcIiAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBzaWRlLW5hdi1ib2R5PlxuICAgIDxkaXYgY2xhc3M9XCJzaWRlLW5hdi1ib2R5XCI+XG4gICAgICA8dWw+XG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXMoKTsgdHJhY2sgaXRlbS5sYWJlbCkge1xuICAgICAgICAgIEBpZiAoaGFzTmVzdGVkSXRlbXMoaXRlbSkpIHtcbiAgICAgICAgICAgIDxydGUtbmF2LW1lbnVcbiAgICAgICAgICAgICAgW2lkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgIFtpY29uXT1cIml0ZW0uaWNvblwiXG4gICAgICAgICAgICAgIFtzaG93SWNvbl09XCJpdGVtLnNob3dJY29uID8/IHRydWVcIlxuICAgICAgICAgICAgICBbY29sbGFwc2VkXT1cImlzQ29sbGFwc2VkKClcIlxuICAgICAgICAgICAgICBbbGlua109XCJpdGVtLmxpbmtcIlxuICAgICAgICAgICAgICBbb3Blbl09XCJpdGVtLm9wZW5cIlxuICAgICAgICAgICAgICBbaXRlbXNdPVwiaXRlbS5pdGVtcyB8fCBbXVwiXG4gICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2UoKVwiXG4gICAgICAgICAgICAgIFtiYWRnZV09XCJpdGVtLmJhZGdlXCJcbiAgICAgICAgICAgICAgW3Nob3dEaXZpZGVyXT1cIml0ZW0uc2hvd0RpdmlkZXIhXCJcbiAgICAgICAgICAgICAgKG9wZW5DaGFuZ2UpPVwiaGFuZGxlTWVudU9wZW5DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICA8cnRlLW5hdi1pdGVtXG4gICAgICAgICAgICAgICAgW2lkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJpdGVtLmxhYmVsXCJcbiAgICAgICAgICAgICAgICBbaWNvbl09XCJpdGVtLmljb25cIlxuICAgICAgICAgICAgICAgIFtzaG93SWNvbl09XCJpdGVtLnNob3dJY29uID8/IHRydWVcIlxuICAgICAgICAgICAgICAgIFtjb2xsYXBzZWRdPVwiaXNDb2xsYXBzZWQoKVwiXG4gICAgICAgICAgICAgICAgW2xpbmtdPVwiaXRlbS5saW5rXCJcbiAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlKClcIlxuICAgICAgICAgICAgICAgIFthY3RpdmVdPVwiaXRlbS5hY3RpdmUgPz8gZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtiYWRnZV09XCJpdGVtLmJhZGdlXCJcbiAgICAgICAgICAgICAgICAoaXRlbUNsaWNrKT1cImhhbmRsZUl0ZW1DbGljayhpdGVtLmlkIHx8IGl0ZW0ubGFiZWwpXCJcbiAgICAgICAgICAgICAgPjwvcnRlLW5hdi1pdGVtPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIEBpZiAoaXRlbS5zaG93RGl2aWRlcikge1xuICAgICAgICAgICAgICA8cnRlLWRpdmlkZXIgW2FwcGVhcmFuY2VdPVwiZGl2aWRlckFwcGVhcmFuY2UoKVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgQGlmIChmb290ZXJJdGVtcygpPy5sZW5ndGggfHwgY29sbGFwc2libGUoKSkge1xuICAgIDxkaXYgc2lkZS1uYXYtZm9vdGVyPlxuICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWZvb3Rlci1jb250YWluZXJcIj5cbiAgICAgICAgQGlmIChmb290ZXJJdGVtcygpPy5sZW5ndGgpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtZm9vdGVyLWl0ZW1zXCI+XG4gICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZm9vdGVySXRlbXMoKSE7IHRyYWNrIGl0ZW0uaWQgfHwgaXRlbS5sYWJlbCkge1xuICAgICAgICAgICAgICAgIEBpZiAoaGFzTmVzdGVkSXRlbXMoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgIDxydGUtbmF2LW1lbnVcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uXT1cIml0ZW0uaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93SWNvbl09XCJpdGVtLnNob3dJY29uID8/IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbY29sbGFwc2VkXT1cImlzQ29sbGFwc2VkKClcIlxuICAgICAgICAgICAgICAgICAgICBbbGlua109XCJpdGVtLmxpbmtcIlxuICAgICAgICAgICAgICAgICAgICBbb3Blbl09XCJpdGVtLm9wZW5cIlxuICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiaXRlbS5pdGVtcyB8fCBbXVwiXG4gICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2UoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtiYWRnZV09XCJpdGVtLmJhZGdlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dEaXZpZGVyXT1cIml0ZW0uc2hvd0RpdmlkZXIhXCJcbiAgICAgICAgICAgICAgICAgICAgKG9wZW5DaGFuZ2UpPVwiaGFuZGxlRm9vdGVyTWVudU9wZW5DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICA8cnRlLW5hdi1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJpdGVtLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJpdGVtLmljb25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93SWNvbl09XCJpdGVtLnNob3dJY29uID8/IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjb2xsYXBzZWRdPVwiaXNDb2xsYXBzZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2xpbmtdPVwiaXRlbS5saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlKClcIlxuICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVdPVwiaXRlbS5hY3RpdmUgPz8gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgIFtiYWRnZV09XCJpdGVtLmJhZGdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAoaXRlbUNsaWNrKT1cImhhbmRsZUZvb3Rlckl0ZW1DbGljayhpdGVtLmlkIHx8IGl0ZW0ubGFiZWwpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvcnRlLW5hdi1pdGVtPlxuICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5zaG93RGl2aWRlcikge1xuICAgICAgICAgICAgICAgICAgICA8cnRlLWRpdmlkZXIgW2FwcGVhcmFuY2VdPVwiZGl2aWRlckFwcGVhcmFuY2UoKVwiIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxydGUtZGl2aWRlciBbYXBwZWFyYW5jZV09XCJkaXZpZGVyQXBwZWFyYW5jZSgpXCIgLz5cbiAgICAgICAgQGlmIChjb2xsYXBzaWJsZSgpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWZvb3RlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbGxhcHNpYmxlLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgIDxydGUtbmF2LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImlzQ29sbGFwc2VkKCkgPyAnT3V2cmlyIGxlIG1lbnUnIDogJ1LDqWR1aXJlIGxlIG1lbnUnXCJcbiAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiY29sbGFwc2VJY29uKClcIlxuICAgICAgICAgICAgICAgICAgICBbY29sbGFwc2VkXT1cImlzQ29sbGFwc2VkKClcIlxuICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlKClcIlxuICAgICAgICAgICAgICAgICAgICAoaXRlbUNsaWNrKT1cImhhbmRsZUNvbGxhcHNlQ2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cbiAgPGRpdiBzaWRlLW5hdi1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L3J0ZS1iYXNlLXNpZGUtbmF2PlxuIl19
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZS1uYXYuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtcnRlLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1uYXYvc2lkZS1uYXYuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZHMtcnRlLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvc2lkZS1uYXYvc2lkZS1uYXYuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQU0vRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBRXJHLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWhFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBMEIsTUFBTSwrQkFBK0IsQ0FBQzs7O0FBRXpGLE1BQU0sbUJBQW1CLEdBQUcsR0FBRyxDQUFDO0FBVWhDLE1BQU0sT0FBTyxnQkFBZ0I7SUFnQjNCO1FBZlMsU0FBSSxHQUFHLEtBQUssQ0FBYyxHQUFrQixDQUFDLENBQUM7UUFDOUMsZ0JBQVcsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDcEMsaUJBQVksR0FBRyxLQUFLLEVBQW1DLENBQUM7UUFDeEQsVUFBSyxHQUFHLEtB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bnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5wdXQsIG91dHB1dCwgc2lnbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IGRpdmlkZXJBcHBlYXJhbmNlQnlTaWRlTmF2QXBwZWFyYW5jZSB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZVwiO1xuaW1wb3J0IHsgU2lkZU5hdkFwcGVhcmFuY2UsIFNpZGVOYXZIZWFkZXJDb25maWcgfSBmcm9tIFwiQGRlc2lnbi1zeXN0ZW0tcnRlL2NvcmVcIjtcbmltcG9ydCB7IERpdmlkZXJBcHBlYXJhbmNlIH0gZnJvbSBcIkBkZXNpZ24tc3lzdGVtLXJ0ZS9jb3JlL2NvbXBvbmVudHMvZGl2aWRlci9kaXZpZGVyLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgTmF2SXRlbVByb3BzIH0gZnJvbSBcIkBkZXNpZ24tc3lzdGVtLXJ0ZS9jb3JlL2NvbXBvbmVudHMvc2lkZS1uYXYvbmF2LWl0ZW0vbmF2LWl0ZW0uaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBOYXZNZW51UHJvcHMgfSBmcm9tIFwiQGRlc2lnbi1zeXN0ZW0tcnRlL2NvcmUvY29tcG9uZW50cy9zaWRlLW5hdi9uYXYtbWVudS9uYXYtbWVudS5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IFNpZGVOYXZTaXplIH0gZnJvbSBcIkBkZXNpZ24tc3lzdGVtLXJ0ZS9jb3JlL2NvbXBvbmVudHMvc2lkZS1uYXYvc2lkZS1uYXYuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBFTlRFUl9LRVksIFNQQUNFX0tFWSB9IGZyb20gXCJAZGVzaWduLXN5c3RlbS1ydGUvY29yZS9jb25zdGFudHMva2V5Ym9hcmQva2V5Ym9hcmQuY29uc3RhbnRzXCI7XG5cbmltcG9ydCB7IERpdmlkZXJDb21wb25lbnQgfSBmcm9tIFwiLi4vZGl2aWRlci9kaXZpZGVyLmNvbXBvbmVudFwiO1xuXG5pbXBvcnQgeyBCYXNlU2lkZU5hdkNvbXBvbmVudCB9IGZyb20gXCIuL2Jhc2Utc2lkZS1uYXYvYmFzZS1zaWRlLW5hdi5jb21wb25lbnRcIjtcbmltcG9ydCB7IE5hdkl0ZW1Db21wb25lbnQgfSBmcm9tIFwiLi9uYXYtaXRlbS9uYXYtaXRlbS5jb21wb25lbnRcIjtcbmltcG9ydCB7IE5hdk1lbnVDb21wb25lbnQsIE5hdk1lbnVPcGVuQ2hhbmdlRXZlbnQgfSBmcm9tIFwiLi9uYXYtbWVudS9uYXYtbWVudS5jb21wb25lbnRcIjtcblxuY29uc3QgVFJBTlNJVElPTl9EVVJBVElPTiA9IDMwMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcInJ0ZS1zaWRlLW5hdlwiLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCYXNlU2lkZU5hdkNvbXBvbmVudCwgRGl2aWRlckNvbXBvbmVudCwgTmF2SXRlbUNvbXBvbmVudCwgTmF2TWVudUNvbXBvbmVudF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHRlbXBsYXRlVXJsOiBcIi4vc2lkZS1uYXYuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmw6IFwiLi9zaWRlLW5hdi5jb21wb25lbnQuc2Nzc1wiLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2lkZU5hdkNvbXBvbmVudCB7XG4gIHJlYWRvbmx5IHNpemUgPSBpbnB1dDxTaWRlTmF2U2l6ZT4oXCJtXCIgYXMgU2lkZU5hdlNpemUpO1xuICByZWFkb25seSBjb2xsYXBzaWJsZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcbiAgcmVhZG9ubHkgaGVhZGVyQ29uZmlnID0gaW5wdXQ8U2lkZU5hdkhlYWRlckNvbmZpZyB8IHVuZGVmaW5lZD4oKTtcbiAgcmVhZG9ubHkgaXRlbXMgPSBpbnB1dDxOYXZJdGVtUHJvcHNbXT4oW10pO1xuICByZWFkb25seSBmb290ZXJJdGVtcyA9IGlucHV0PE5hdkl0ZW1Qcm9wc1tdIHwgdW5kZWZpbmVkPigpO1xuICByZWFkb25seSBjb2xsYXBzZWQgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IGFwcGVhcmFuY2UgPSBpbnB1dDxTaWRlTmF2QXBwZWFyYW5jZT4oXCJicmFuZFwiKTtcblxuICByZWFkb25seSBpc0NvbGxhcHNlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHNob3VsZFNob3dUaXRsZSA9IHNpZ25hbDxib29sZWFuPih0cnVlKTtcblxuICByZWFkb25seSBpdGVtQ2xpY2tlZCA9IG91dHB1dDxzdHJpbmc+KCk7XG5cbiAgcHJpdmF0ZSB0aXRsZVRpbWVvdXRJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNDb2xsYXBzZWQuc2V0KHRoaXMuY29sbGFwc2VkKCkpO1xuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfSxcbiAgICApO1xuXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy50aXRsZVRpbWVvdXRJZCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpdGxlVGltZW91dElkKTtcbiAgICAgICAgICB0aGlzLnRpdGxlVGltZW91dElkID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzQ29sbGFwc2VkKCkpIHtcbiAgICAgICAgICB0aGlzLnNob3VsZFNob3dUaXRsZS5zZXQoZmFsc2UpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudGl0bGVUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2hvdWxkU2hvd1RpdGxlLnNldCh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMudGl0bGVUaW1lb3V0SWQgPSBudWxsO1xuICAgICAgICAgIH0sIFRSQU5TSVRJT05fRFVSQVRJT04pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9LFxuICAgICk7XG4gIH1cblxuICByZWFkb25seSBjb2xsYXBzZUljb24gPSBjb21wdXRlZDxzdHJpbmc+KCgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5pc0NvbGxhcHNlZCgpID8gXCJhcnJvdy1kb3VibGUtcmlnaHRcIiA6IFwiYXJyb3ctZG91YmxlLWxlZnRcIjtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZGl2aWRlckFwcGVhcmFuY2UgPSBjb21wdXRlZDxEaXZpZGVyQXBwZWFyYW5jZT4oKCkgPT4ge1xuICAgIHJldHVybiBkaXZpZGVyQXBwZWFyYW5jZUJ5U2lkZU5hdkFwcGVhcmFuY2VbdGhpcy5hcHBlYXJhbmNlKCldO1xuICB9KTtcblxuICBoYW5kbGVIZWFkZXJLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKFtTUEFDRV9LRVksIEVOVEVSX0tFWV0uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuaGVhZGVyQ29uZmlnKCk7XG4gICAgICBpZiAoY29uZmlnPy5vbkNsaWNrKSB7XG4gICAgICAgIGNvbmZpZy5vbkNsaWNrKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlSGVhZGVyQ2xpY2soKTogdm9pZCB7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5oZWFkZXJDb25maWcoKTtcbiAgICBpZiAoY29uZmlnPy5vbkNsaWNrKSB7XG4gICAgICBjb25maWcub25DbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIGhhc05lc3RlZEl0ZW1zKGl0ZW06IE5hdkl0ZW1Qcm9wcyk6IGl0ZW0gaXMgTmF2TWVudVByb3BzIHtcbiAgICByZXR1cm4gISFpdGVtLml0ZW1zPy5sZW5ndGg7XG4gIH1cblxuICBoYW5kbGVJdGVtQ2xpY2soaXRlbUlkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1DbGlja2VkLmVtaXQoaXRlbUlkKTtcbiAgfVxuXG4gIGhhbmRsZUZvb3Rlckl0ZW1DbGljayhpdGVtSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuaXRlbUNsaWNrZWQuZW1pdChpdGVtSWQpO1xuICB9XG5cbiAgaGFuZGxlTWVudU9wZW5DaGFuZ2UoZXZlbnQ6IE5hdk1lbnVPcGVuQ2hhbmdlRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCB0YXJnZXRNZW51ID0gdGhpcy5pdGVtcygpLmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGV2ZW50LmlkKTtcbiAgICBpZiAodGFyZ2V0TWVudSkge1xuICAgICAgKHRhcmdldE1lbnUgYXMgTmF2TWVudVByb3BzKS5vcGVuID0gZXZlbnQub3BlbjtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVGb290ZXJNZW51T3BlbkNoYW5nZShldmVudDogTmF2TWVudU9wZW5DaGFuZ2VFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IHRhcmdldE1lbnUgPSB0aGlzLmZvb3Rlckl0ZW1zKCk/LmZpbmQoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IGV2ZW50LmlkKTtcbiAgICBpZiAodGFyZ2V0TWVudSkge1xuICAgICAgKHRhcmdldE1lbnUgYXMgTmF2TWVudVByb3BzKS5vcGVuID0gZXZlbnQub3BlbjtcbiAgICB9XG4gIH1cblxuICBoYW5kbGVDb2xsYXBzZUNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuaXNDb2xsYXBzZWQuc2V0KCF0aGlzLmlzQ29sbGFwc2VkKCkpO1xuICB9XG59XG4iLCI8cnRlLWJhc2Utc2lkZS1uYXYgW3NpemVdPVwic2l6ZSgpXCIgW2NvbGxhcHNlZF09XCJpc0NvbGxhcHNlZCgpXCIgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZSgpXCI+XG4gIDxkaXYgc2lkZS1uYXYtaGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJzaWRlLW5hdi1oZWFkZXItY29udGFpbmVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtaGVhZGVyIHt7IGFwcGVhcmFuY2UoKSB9fVwiIFtuZ0NsYXNzXT1cInsgY29sbGFwc2VkOiBpc0NvbGxhcHNlZCgpIH1cIj5cbiAgICAgICAgQGlmIChoZWFkZXJDb25maWcoKT8ubGluaykge1xuICAgICAgICAgIDxhXG4gICAgICAgICAgICBjbGFzcz1cInNpZGUtbmF2LWhlYWRlci10aXRsZS1jb250YWluZXJcIlxuICAgICAgICAgICAgW2hyZWZdPVwiaGVhZGVyQ29uZmlnKCkhLmxpbmshXCJcbiAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiaGVhZGVyQ29uZmlnKCk/LmFyaWFMYWJlbFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlSGVhZGVyQ2xpY2soKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWhlYWRlci10aXRsZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtaGVhZGVyLWlkZW50aWZpZXJcIj57eyBoZWFkZXJDb25maWcoKT8uaWRlbnRpZmllciB9fTwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKCFpc0NvbGxhcHNlZCgpKSB7XG4gICAgICAgICAgICAgICAgPGgxIFtuZ0NsYXNzXT1cInsgaGlkZGVuOiAhc2hvdWxkU2hvd1RpdGxlKCkgfVwiPnt7IGhlYWRlckNvbmZpZygpPy50aXRsZSB9fTwvaDE+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvYT5cbiAgICAgICAgfSBAZWxzZSBpZiAoaGVhZGVyQ29uZmlnKCk/Lm9uQ2xpY2spIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInNpZGUtbmF2LWhlYWRlci10aXRsZS1jb250YWluZXJcIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJoZWFkZXJDb25maWcoKT8uYXJpYUxhYmVsXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVIZWFkZXJDbGljaygpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cImhhbmRsZUhlYWRlcktleURvd24oJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWhlYWRlci10aXRsZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtaGVhZGVyLWlkZW50aWZpZXJcIj57eyBoZWFkZXJDb25maWcoKT8uaWRlbnRpZmllciB9fTwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKCFpc0NvbGxhcHNlZCgpKSB7XG4gICAgICAgICAgICAgICAgPGgxIFtuZ0NsYXNzXT1cInsgaGlkZGVuOiAhc2hvdWxkU2hvd1RpdGxlKCkgfVwiPnt7IGhlYWRlckNvbmZpZygpPy50aXRsZSB9fTwvaDE+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtaGVhZGVyLXRpdGxlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWhlYWRlci10aXRsZVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtaGVhZGVyLWlkZW50aWZpZXJcIj57eyBoZWFkZXJDb25maWcoKT8uaWRlbnRpZmllciB9fTwvZGl2PlxuICAgICAgICAgICAgICBAaWYgKCFpc0NvbGxhcHNlZCgpKSB7XG4gICAgICAgICAgICAgICAgPGgxIFtuZ0NsYXNzXT1cInsgaGlkZGVuOiAhc2hvdWxkU2hvd1RpdGxlKCkgfVwiPnt7IGhlYWRlckNvbmZpZygpPy50aXRsZSB9fTwvaDE+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlLW5hdi1oZWFkZXItdmVyc2lvblwiIFtuZ0NsYXNzXT1cInsgaGlkZGVuOiAhc2hvdWxkU2hvd1RpdGxlKCkgfVwiPlxuICAgICAgICAgIDxzcGFuPnt7IGhlYWRlckNvbmZpZygpPy52ZXJzaW9uIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPHJ0ZS1kaXZpZGVyIFthcHBlYXJhbmNlXT1cImRpdmlkZXJBcHBlYXJhbmNlKClcIiAvPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBzaWRlLW5hdi1ib2R5PlxuICAgIDxkaXYgY2xhc3M9XCJzaWRlLW5hdi1ib2R5XCI+XG4gICAgICA8dWw+XG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgaXRlbXMoKTsgdHJhY2sgaXRlbS5sYWJlbCkge1xuICAgICAgICAgIEBpZiAoaGFzTmVzdGVkSXRlbXMoaXRlbSkpIHtcbiAgICAgICAgICAgIDxydGUtbmF2LW1lbnVcbiAgICAgICAgICAgICAgW2lkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgIFtpY29uXT1cIml0ZW0uaWNvblwiXG4gICAgICAgICAgICAgIFtzaG93SWNvbl09XCJpdGVtLnNob3dJY29uID8/IHRydWVcIlxuICAgICAgICAgICAgICBbY29sbGFwc2VkXT1cImlzQ29sbGFwc2VkKClcIlxuICAgICAgICAgICAgICBbbGlua109XCJpdGVtLmxpbmtcIlxuICAgICAgICAgICAgICBbb3Blbl09XCJpdGVtLm9wZW5cIlxuICAgICAgICAgICAgICBbaXRlbXNdPVwiaXRlbS5pdGVtcyB8fCBbXVwiXG4gICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2UoKVwiXG4gICAgICAgICAgICAgIFtiYWRnZV09XCJpdGVtLmJhZGdlXCJcbiAgICAgICAgICAgICAgW3Nob3dEaXZpZGVyXT1cIml0ZW0uc2hvd0RpdmlkZXIhXCJcbiAgICAgICAgICAgICAgKG9wZW5DaGFuZ2UpPVwiaGFuZGxlTWVudU9wZW5DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICA8cnRlLW5hdi1pdGVtXG4gICAgICAgICAgICAgICAgW2lkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgICAgIFtsYWJlbF09XCJpdGVtLmxhYmVsXCJcbiAgICAgICAgICAgICAgICBbaWNvbl09XCJpdGVtLmljb25cIlxuICAgICAgICAgICAgICAgIFtzaG93SWNvbl09XCJpdGVtLnNob3dJY29uID8/IHRydWVcIlxuICAgICAgICAgICAgICAgIFtjb2xsYXBzZWRdPVwiaXNDb2xsYXBzZWQoKVwiXG4gICAgICAgICAgICAgICAgW2xpbmtdPVwiaXRlbS5saW5rXCJcbiAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlKClcIlxuICAgICAgICAgICAgICAgIFthY3RpdmVdPVwiaXRlbS5hY3RpdmUgPz8gZmFsc2VcIlxuICAgICAgICAgICAgICAgIFtiYWRnZV09XCJpdGVtLmJhZGdlXCJcbiAgICAgICAgICAgICAgICAoaXRlbUNsaWNrKT1cImhhbmRsZUl0ZW1DbGljayhpdGVtLmlkIHx8IGl0ZW0ubGFiZWwpXCJcbiAgICAgICAgICAgICAgPjwvcnRlLW5hdi1pdGVtPlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIEBpZiAoaXRlbS5zaG93RGl2aWRlcikge1xuICAgICAgICAgICAgICA8cnRlLWRpdmlkZXIgW2FwcGVhcmFuY2VdPVwiZGl2aWRlckFwcGVhcmFuY2UoKVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgQGlmIChmb290ZXJJdGVtcygpPy5sZW5ndGggfHwgY29sbGFwc2libGUoKSkge1xuICAgIDxkaXYgc2lkZS1uYXYtZm9vdGVyPlxuICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWZvb3Rlci1jb250YWluZXJcIj5cbiAgICAgICAgQGlmIChmb290ZXJJdGVtcygpPy5sZW5ndGgpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZS1uYXYtZm9vdGVyLWl0ZW1zXCI+XG4gICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgZm9vdGVySXRlbXMoKSE7IHRyYWNrIGl0ZW0uaWQgfHwgaXRlbS5sYWJlbCkge1xuICAgICAgICAgICAgICAgIEBpZiAoaGFzTmVzdGVkSXRlbXMoaXRlbSkpIHtcbiAgICAgICAgICAgICAgICAgIDxydGUtbmF2LW1lbnVcbiAgICAgICAgICAgICAgICAgICAgW2lkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIFtpY29uXT1cIml0ZW0uaWNvblwiXG4gICAgICAgICAgICAgICAgICAgIFtzaG93SWNvbl09XCJpdGVtLnNob3dJY29uID8/IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbY29sbGFwc2VkXT1cImlzQ29sbGFwc2VkKClcIlxuICAgICAgICAgICAgICAgICAgICBbbGlua109XCJpdGVtLmxpbmtcIlxuICAgICAgICAgICAgICAgICAgICBbb3Blbl09XCJpdGVtLm9wZW5cIlxuICAgICAgICAgICAgICAgICAgICBbaXRlbXNdPVwiaXRlbS5pdGVtcyB8fCBbXVwiXG4gICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2UoKVwiXG4gICAgICAgICAgICAgICAgICAgIFtiYWRnZV09XCJpdGVtLmJhZGdlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dEaXZpZGVyXT1cIml0ZW0uc2hvd0RpdmlkZXIhXCJcbiAgICAgICAgICAgICAgICAgICAgKG9wZW5DaGFuZ2UpPVwiaGFuZGxlRm9vdGVyTWVudU9wZW5DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICA8cnRlLW5hdi1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJpdGVtLmxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJpdGVtLmljb25cIlxuICAgICAgICAgICAgICAgICAgICAgIFtzaG93SWNvbl09XCJpdGVtLnNob3dJY29uID8/IHRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgIFtjb2xsYXBzZWRdPVwiaXNDb2xsYXBzZWQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgW2xpbmtdPVwiaXRlbS5saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlKClcIlxuICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVdPVwiaXRlbS5hY3RpdmUgPz8gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgIFtiYWRnZV09XCJpdGVtLmJhZGdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAoaXRlbUNsaWNrKT1cImhhbmRsZUZvb3Rlckl0ZW1DbGljayhpdGVtLmlkIHx8IGl0ZW0ubGFiZWwpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvcnRlLW5hdi1pdGVtPlxuICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5zaG93RGl2aWRlcikge1xuICAgICAgICAgICAgICAgICAgICA8cnRlLWRpdmlkZXIgW2FwcGVhcmFuY2VdPVwiZGl2aWRlckFwcGVhcmFuY2UoKVwiIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICAgIDxydGUtZGl2aWRlciBbYXBwZWFyYW5jZV09XCJkaXZpZGVyQXBwZWFyYW5jZSgpXCIgLz5cbiAgICAgICAgQGlmIChjb2xsYXBzaWJsZSgpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGUtbmF2LWZvb3RlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbGxhcHNpYmxlLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgIDxydGUtbmF2LWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImlzQ29sbGFwc2VkKCkgPyAnT3V2cmlyIGxlIG1lbnUnIDogJ1LDqWR1aXJlIGxlIG1lbnUnXCJcbiAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwiY29sbGFwc2VJY29uKClcIlxuICAgICAgICAgICAgICAgICAgICBbY29sbGFwc2VkXT1cImlzQ29sbGFwc2VkKClcIlxuICAgICAgICAgICAgICAgICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlKClcIlxuICAgICAgICAgICAgICAgICAgICAoaXRlbUNsaWNrKT1cImhhbmRsZUNvbGxhcHNlQ2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cbiAgPGRpdiBzaWRlLW5hdi1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjb250ZW50XVwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG48L3J0ZS1iYXNlLXNpZGUtbmF2PlxuIl19