@byuhbll/components 4.0.10 → 4.0.12
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.
|
@@ -74,11 +74,11 @@ export class HbllFooterComponent {
|
|
|
74
74
|
this.emailForm.controls.status.setValue(status);
|
|
75
75
|
}
|
|
76
76
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HbllFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
77
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: HbllFooterComponent, isStandalone: true, selector: "lib-hbll-footer", inputs: { mainsitebaseurl: "mainsitebaseurl", libraryapibaseuri: "libraryapibaseuri", emailname: "emailname", emailemail: "emailemail", emailmessage: "emailmessage", emailstatus: "emailstatus" }, viewQueries: [{ propertyName: "emailDialog", first: true, predicate: ["emailDialog"], descendants: true }], ngImport: i0, template: "<footer>\n <div class=\"hbll-footer-wrapper\">\n <div class=\"hbll-footer-links\">\n <section>\n <h3>Contact</h3>\n <ul>\n <li>\n <address>\n P.O. Box 26800<br />\n Provo, UT 84602-6800\n </address>\n </li>\n <li>\n <a href=\"tel:801-422-6061\">\n <span class=\"material-symbols-outlined hbll-footer-icon\">\n phone_in_talk </span\n > <strong>Call</strong> (801) 422-6061\n </a>\n </li>\n <li>\n <a href=\"sms:801-623-6838\">\n <span class=\"material-symbols-outlined hbll-footer-icon\"> sms </span\n > <strong>Text</strong> (801) 623-6838\n </a>\n </li>\n <li>\n <button (click)=\"emailDialog.showModal()\" data-testid=\"emailUsBtn\" style=\"padding: 0px;\">\n <span class=\"material-symbols-outlined hbll-footer-icon\"> mail </span\n > \n <strong>Email us</strong>\n </button>\n </li>\n </ul>\n </section>\n <section>\n <h3>Resources</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/site-index/\"\n >A-Z Site Index</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/policies/\">Policies</a>\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/location/\"\n >Parking & Directions</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://uac.byu.edu/accessibility-lab\"\n >Accessibility Resources</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://hr.lib.byu.edu/byu-library-jobs\"\n >Employment Opportunities</a\n >\n </li>\n </ul>\n </section>\n <section>\n <h3>Friends in the Library</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"https://ctl.byu.edu\"\n >Center for Teaching and Learning</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://copyright.byu.edu\"\n >Copyright Licensing Office</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://facultycenter.byu.edu/aboutus\"\n >Faculty Center</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://dining.byu.edu/library-cafe\"\n >Library Cafe</a\n >\n </li>\n </ul>\n </section>\n <section>\n <h3>Connect</h3>\n <ul class=\"hbll-footer-social-list\">\n <li>\n <a target=\"_blank\" href=\"https://www.facebook.com/byuhbll\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/facebook-color-round.svg\"\n alt=\"Facebook\"\n title=\"Facebook\"\n />\n </a>\n </li>\n <li>\n <a target=\"_blank\" href=\"https://www.instagram.com/byu_hbll/\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/instagram-color.svg\"\n alt=\"Instagram\"\n title=\"Instagram\"\n />\n </a>\n </li>\n </ul>\n </section>\n </div>\n <section class=\"hbll-footer-bottom\">\n <div class=\"hbll-footer-title\">\n <a href=\"https://byu.edu\" target=\"_blank\">BRIGHAM YOUNG UNIVERSITY</a>\n </div>\n <br />\n PROVO, UT 84602, USA | <a href=\"sms:801-422-6061\">(801) 422-6061</a>\n <br />© {{ date | date: 'yyyy' }}\n ALL RIGHTS RESERVED\n <div class=\"hbll-footer-privacy\">\n <a href=\"https://privacy.byu.edu/\" target=\"_blank\">Privacy Notice</a>\n |\n <a href=\"https://infosec.byu.edu/cookie-prefs\" target=\"_blank\"\n >Cookie Preferences</a\n >\n </div>\n </section>\n </div>\n</footer>\n\n<dialog\n #emailDialog\n onmousedown=\"event.target === this && this.close()\"\n (close)=\"handleClose()\"\n data-testid=\"dialog\"\n>\n @if (!isEmailSent) {\n <form [formGroup]=\"emailForm\" (submit)=\"sendEmail()\" data-testid=\"form\">\n <div class=\"hbll-footer-email-top\">\n <h1>Email Us</h1>\n <button (click)=\"emailDialog.close()\" type=\"button\" data-testid=\"closeBtn\">\n <span class=\"material-symbols-outlined\"> close </span>\n </button>\n </div>\n <label for=\"hbllFooterEmailName\">Name</label>\n <input\n id=\"hbllFooterEmailName\"\n type=\"text\"\n formControlName=\"name\"\n data-testid=\"emailNameInput\"\n />\n <label for=\"hbllFooterEmailEmail\">\n Email (please provide if you would like a response)</label\n >\n <input\n id=\"hbllFooterEmailEmail\"\n type=\"text\"\n formControlName=\"email\"\n data-testid=\"emailEmailInput\"\n />\n <label for=\"hbllFooterEmailEmail\">\n Question or comment <span class=\"hbll-footer-email-required\">*</span>\n </label>\n <textarea\n id=\"hbllFooterEmailEmail\"\n type=\"text\"\n formControlName=\"message\"\n data-testid=\"emailMessageInput\"\n ></textarea>\n @if (isSubmitted && emailForm.controls.message.invalid) {\n <div\n class=\"hbll-footer-email-required hbll-footer-email-error\"\n data-testid=\"commentError\"\n >\n <span class=\"material-symbols-outlined hbll-footer-email-error-icon\">\n warning\n </span>\n <strong>Please fill out this field</strong>\n </div>\n }\n <label for=\"hbllFooterEmailStatus\">Role</label>\n <span class=\"hbll-footer-select-wrapper\">\n <select\n id=\"hbllFooterEmailStatus\"\n formControlName=\"status\"\n data-testid=\"emailStatusInput\"\n >\n <option selected value=\"\"></option>\n @for (status of userStatuses | slice: 1; track status) {\n <option [value]=\"status\">{{ status }}</option>\n }\n </select>\n </span>\n <div class=\"hbll-footer-email-bottom-bar\">\n @if (hasConnectionError) {\n <p class=\"hbll-footer-connection-error\" data-testid=\"connectionError\">\n <i>There was an error sending your email. Please try again later.</i>\n </p>\n }\n <button\n class=\"pill-btn--components\"\n type=\"submit\"\n [disabled]=\"isLoading\"\n data-testid=\"sendEmailBtn\"\n >\n Send\n </button>\n </div>\n </form>\n } @else {\n <div class=\"hbll-footer-email-success\" data-testid=\"successMessage\">\n <p>\n Your email was sent successfully. If you supplied your email address, we will get\n back to you shortly.<br />Thank you!\n </p>\n <button class=\"pill-btn--components\" (click)=\"emailDialog.close()\" type=\"button\">\n Close\n </button>\n </div>\n }\n</dialog>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Public+Sans:ital,wght@0,200..400;1,200..400&display=swap\";*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}dialog form input,dialog form textarea,dialog form select{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}dialog form input:focus,dialog form textarea:focus,dialog form select:focus{outline-color:#3a6093}dialog form .hbll-footer-select-wrapper{position:relative}dialog form .hbll-footer-select-wrapper select{cursor:pointer;padding-right:2em}dialog form .hbll-footer-select-wrapper:after{font-family:Material Symbols Outlined;content:\"arrow_drop_down\";pointer-events:none;top:0;font-size:1.5em;right:.2em;height:100%;position:absolute;display:flex;align-items:center;opacity:70%}.pill-btn--components{background-color:#4070b0;font-size:1em;transition:all .15s;color:#fff;cursor:pointer;font-weight:600;text-align:center}.pill-btn--components:disabled{color:#707070;background-color:#e6e6e6;pointer-events:none}.pill-btn--components:hover{background-color:#6892ca;color:#fff}.destructive.pill-btn--components{background-color:#b04940}.destructive.pill-btn--components:hover{background-color:#c7574d}.pill-btn--components{border-radius:100em;padding:.4em 1.3em}button{border:none;background-color:transparent;font-size:1em}button :hover{cursor:pointer}footer{line-height:1.2em;background-color:#e6e6e6}footer .hbll-footer-wrapper{display:flex;flex-direction:column;align-items:center}footer .hbll-footer-wrapper .hbll-footer-links{max-width:90em;display:flex;align-items:flex-start;justify-content:flex-start;flex-wrap:wrap;padding-bottom:2em;white-space:nowrap}footer .hbll-footer-wrapper .hbll-footer-links strong{font-weight:600}footer .hbll-footer-wrapper .hbll-footer-links address{font-style:normal}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-icon{font-size:24px!important;margin-right:.2em;color:#002e5d}footer .hbll-footer-wrapper .hbll-footer-links section{padding:2em 1.8em 0;background-color:#e6e6e6;flex:1}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list{display:flex}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list .hbll-footer-social{height:1.5em;margin-right:1em}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list li{margin-bottom:0}footer .hbll-footer-wrapper h3{font-weight:600;color:#002e5d;font-size:1.4em;margin-bottom:1em;margin-top:0}footer .hbll-footer-wrapper ul{list-style:none;margin:.4em 0 0;padding:0}footer .hbll-footer-wrapper ul li{display:flex;align-items:center}footer .hbll-footer-wrapper ul li a,footer .hbll-footer-wrapper ul li button{display:inline-flex;align-items:center;color:#305f9c}footer .hbll-footer-wrapper ul li a:hover,footer .hbll-footer-wrapper ul li button:hover{color:#6892ca}footer .hbll-footer-wrapper ul li:not(:last-of-type){margin-bottom:.6em}footer .hbll-footer-wrapper .hbll-footer-bottom{text-align:center;background-color:#002e5d;color:#fff;font-family:Public Sans,sans-serif;font-optical-sizing:auto;font-weight:200;font-style:normal;font-size:.9em;line-height:1.6em;padding:1.8em;width:100%}footer .hbll-footer-wrapper .hbll-footer-bottom a{color:#fff}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-title{font-size:2em;font-weight:400;line-height:1em}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy{margin-top:.4em}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy a{text-decoration:underline}@media screen and (max-width: 40em){.hbll-footer-links{flex-direction:column;justify-content:flex-start;width:100%}}dialog{border:solid 1px #888;border-radius:4px;width:90%;max-width:50em;padding:0;transition:all 5s ease-in-out}dialog .hbll-footer-email-success,dialog form{padding:1.6em 2em}dialog .hbll-footer-email-success p,dialog form p{text-align:center;line-height:1.4em}dialog .hbll-footer-email-success{display:flex;justify-content:center;align-items:center;flex-direction:column}dialog .hbll-footer-email-success button{margin-top:1em}dialog form{display:flex;flex-direction:column;position:relative}dialog form textarea{min-height:100px;resize:vertical}dialog form input,dialog form textarea,dialog form .hbll-footer-select-wrapper{margin-bottom:.6em}dialog form .hbll-footer-email-bottom-bar{display:flex;align-items:center;justify-content:flex-end}dialog form .hbll-footer-email-bottom-bar .hbll-footer-connection-error{text-align:right;flex-grow:1;margin:0 1em 0 0}dialog form label{margin-bottom:.4em;margin-top:.4em}dialog form .hbll-footer-email-error{display:flex;justify-content:center;align-items:center;margin-right:auto;margin-bottom:.6em;font-size:.8em}dialog form .hbll-footer-email-error .hbll-footer-email-error-icon{font-size:1.2em;margin-right:.2em}dialog form .hbll-footer-email-top{width:100%;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;align-items:center;margin-bottom:1em}dialog form .hbll-footer-email-top h1{font-size:1.4em;margin:0}dialog form .hbll-footer-email-required-message{float:right}dialog form .hbll-footer-select-wrapper{margin-right:auto}dialog form .hbll-footer-email-required{color:#d03a3a}dialog form button:not([type=submit]){color:#333}dialog form button:not([type=submit]):hover{color:#696969}dialog form button[type=submit]{margin-left:auto}dialog::backdrop{background-color:#000;opacity:.75}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
|
|
77
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: HbllFooterComponent, isStandalone: true, selector: "lib-hbll-footer", inputs: { mainsitebaseurl: "mainsitebaseurl", libraryapibaseuri: "libraryapibaseuri", emailname: "emailname", emailemail: "emailemail", emailmessage: "emailmessage", emailstatus: "emailstatus" }, viewQueries: [{ propertyName: "emailDialog", first: true, predicate: ["emailDialog"], descendants: true }], ngImport: i0, template: "<footer>\n <div class=\"hbll-footer-wrapper\">\n <div class=\"hbll-footer-links\">\n <section aria-labelledby=\"footerContactHeading\">\n <h3 id=\"footerContactHeading\" >Contact</h3>\n <ul>\n <li>\n <address>\n P.O. Box 26800<br />\n Provo, UT 84602-6800\n </address>\n </li>\n <li>\n <a href=\"tel:801-422-6061\">\n <span class=\"material-symbols-outlined hbll-footer-icon\">\n phone_in_talk </span\n > <strong>Call</strong> (801) 422-6061\n </a>\n </li>\n <li>\n <a href=\"sms:801-623-6838\">\n <span class=\"material-symbols-outlined hbll-footer-icon\"> sms </span\n > <strong>Text</strong> (801) 623-6838\n </a>\n </li>\n <li>\n <button (click)=\"emailDialog.showModal()\" data-testid=\"emailUsBtn\" style=\"padding: 0px;\">\n <span class=\"material-symbols-outlined hbll-footer-icon\"> mail </span\n > \n <strong>Email us</strong>\n </button>\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerResourcesHeading\">\n <h3 id=\"footerResourcesHeading\">Resources</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/site-index/\"\n >A-Z Site Index</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/policies/\">Policies</a>\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/location/\"\n >Parking & Directions</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://uac.byu.edu/accessibility-lab\"\n >Accessibility Resources</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://hr.lib.byu.edu/byu-library-jobs\"\n >Employment Opportunities</a\n >\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerFriendsHeading\">\n <h3 id=\"footerFriendsHeading\">Friends in the Library</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"https://ctl.byu.edu\"\n >Center for Teaching and Learning</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://copyright.byu.edu\"\n >Copyright Licensing Office</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://facultycenter.byu.edu/aboutus\"\n >Faculty Center</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://dining.byu.edu/library-cafe\"\n >Library Cafe</a\n >\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerConnectHeading\">\n <h3 id=\"footerConnectHeading\">Connect</h3>\n <ul class=\"hbll-footer-social-list\">\n <li>\n <a target=\"_blank\" href=\"https://www.facebook.com/byuhbll\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/facebook-color-round.svg\"\n alt=\"Facebook\"\n title=\"Facebook\"\n />\n </a>\n </li>\n <li>\n <a target=\"_blank\" href=\"https://www.instagram.com/byu_hbll/\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/instagram-color.svg\"\n alt=\"Instagram\"\n title=\"Instagram\"\n />\n </a>\n </li>\n </ul>\n </section>\n </div>\n <section class=\"hbll-footer-bottom\" aria-label=\"Bottom-most part of the footer\">\n <div class=\"hbll-footer-title\">\n <a href=\"https://byu.edu\" target=\"_blank\">BRIGHAM YOUNG UNIVERSITY</a>\n </div>\n <br />\n PROVO, UT 84602, USA | <a href=\"sms:801-422-6061\">(801) 422-6061</a>\n <br />© {{ date | date: 'yyyy' }}\n ALL RIGHTS RESERVED\n <div class=\"hbll-footer-privacy\">\n <a href=\"https://privacy.byu.edu/\" target=\"_blank\">Privacy Notice</a>\n |\n <a href=\"https://infosec.byu.edu/cookie-prefs\" target=\"_blank\"\n >Cookie Preferences</a\n >\n </div>\n </section>\n </div>\n</footer>\n\n<dialog\n #emailDialog\n onmousedown=\"event.target === this && this.close()\"\n (close)=\"handleClose()\"\n data-testid=\"dialog\"\n>\n @if (!isEmailSent) {\n <form [formGroup]=\"emailForm\" (submit)=\"sendEmail()\" data-testid=\"form\">\n <div class=\"hbll-footer-email-top\">\n <h1>Email Us</h1>\n <button (click)=\"emailDialog.close()\" type=\"button\" data-testid=\"closeBtn\">\n <span class=\"material-symbols-outlined\"> close </span>\n </button>\n </div>\n <label for=\"hbllFooterEmailName\">Name</label>\n <input\n id=\"hbllFooterEmailName\"\n type=\"text\"\n formControlName=\"name\"\n data-testid=\"emailNameInput\"\n />\n <label for=\"hbllFooterEmailEmail\">\n Email (please provide if you would like a response)</label\n >\n <input\n id=\"hbllFooterEmailEmail\"\n type=\"text\"\n formControlName=\"email\"\n data-testid=\"emailEmailInput\"\n />\n <label for=\"hbllFooterEmailEmail\">\n Question or comment <span class=\"hbll-footer-email-required\">*</span>\n </label>\n <textarea\n id=\"hbllFooterEmailEmail\"\n type=\"text\"\n formControlName=\"message\"\n data-testid=\"emailMessageInput\"\n ></textarea>\n @if (isSubmitted && emailForm.controls.message.invalid) {\n <div\n class=\"hbll-footer-email-required hbll-footer-email-error\"\n data-testid=\"commentError\"\n >\n <span class=\"material-symbols-outlined hbll-footer-email-error-icon\">\n warning\n </span>\n <strong>Please fill out this field</strong>\n </div>\n }\n <label for=\"hbllFooterEmailStatus\">Role</label>\n <span class=\"hbll-footer-select-wrapper\">\n <select\n id=\"hbllFooterEmailStatus\"\n formControlName=\"status\"\n data-testid=\"emailStatusInput\"\n >\n <option selected value=\"\"></option>\n @for (status of userStatuses | slice: 1; track status) {\n <option [value]=\"status\">{{ status }}</option>\n }\n </select>\n </span>\n <div class=\"hbll-footer-email-bottom-bar\">\n @if (hasConnectionError) {\n <p class=\"hbll-footer-connection-error\" data-testid=\"connectionError\">\n <i>There was an error sending your email. Please try again later.</i>\n </p>\n }\n <button\n class=\"pill-btn--components\"\n type=\"submit\"\n [disabled]=\"isLoading\"\n data-testid=\"sendEmailBtn\"\n >\n Send\n </button>\n </div>\n </form>\n } @else {\n <div class=\"hbll-footer-email-success\" data-testid=\"successMessage\">\n <p>\n Your email was sent successfully. If you supplied your email address, we will get\n back to you shortly.<br />Thank you!\n </p>\n <button class=\"pill-btn--components\" (click)=\"emailDialog.close()\" type=\"button\">\n Close\n </button>\n </div>\n }\n</dialog>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Public+Sans:ital,wght@0,200..400;1,200..400&display=swap\";*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}dialog form input,dialog form textarea,dialog form select{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}dialog form input:focus,dialog form textarea:focus,dialog form select:focus{outline-color:#3a6093}dialog form .hbll-footer-select-wrapper{position:relative}dialog form .hbll-footer-select-wrapper select{cursor:pointer;padding-right:2em}dialog form .hbll-footer-select-wrapper:after{font-family:Material Symbols Outlined;content:\"arrow_drop_down\";pointer-events:none;top:0;font-size:1.5em;right:.2em;height:100%;position:absolute;display:flex;align-items:center;opacity:70%}.pill-btn--components{background-color:#4070b0;font-size:1em;transition:all .15s;color:#fff;cursor:pointer;font-weight:600;text-align:center}.pill-btn--components:disabled{color:#707070;background-color:#e6e6e6;pointer-events:none}.pill-btn--components:hover{background-color:#6892ca;color:#fff}.destructive.pill-btn--components{background-color:#b04940}.destructive.pill-btn--components:hover{background-color:#c7574d}.pill-btn--components{border-radius:100em;padding:.4em 1.3em}button{border:none;background-color:transparent;font-size:1em}button :hover{cursor:pointer}footer{line-height:1.2em;background-color:#e6e6e6}footer .hbll-footer-wrapper{display:flex;flex-direction:column;align-items:center}footer .hbll-footer-wrapper .hbll-footer-links{max-width:90em;display:flex;align-items:flex-start;justify-content:flex-start;flex-wrap:wrap;padding-bottom:2em;white-space:nowrap}footer .hbll-footer-wrapper .hbll-footer-links strong{font-weight:600}footer .hbll-footer-wrapper .hbll-footer-links address{font-style:normal}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-icon{font-size:24px!important;margin-right:.2em;color:#002e5d}footer .hbll-footer-wrapper .hbll-footer-links section{padding:2em 1.8em 0;background-color:#e6e6e6;flex:1}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list{display:flex}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list .hbll-footer-social{height:1.5em;margin-right:1em}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list li{margin-bottom:0}footer .hbll-footer-wrapper h3{font-weight:600;color:#002e5d;font-size:1.4em;margin-bottom:1em;margin-top:0}footer .hbll-footer-wrapper ul{list-style:none;margin:.4em 0 0;padding:0}footer .hbll-footer-wrapper ul li{display:flex;align-items:center}footer .hbll-footer-wrapper ul li a,footer .hbll-footer-wrapper ul li button{display:inline-flex;align-items:center;color:#305f9c}footer .hbll-footer-wrapper ul li a:hover,footer .hbll-footer-wrapper ul li button:hover{color:#6892ca}footer .hbll-footer-wrapper ul li:not(:last-of-type){margin-bottom:.6em}footer .hbll-footer-wrapper .hbll-footer-bottom{text-align:center;background-color:#002e5d;color:#fff;font-family:Public Sans,sans-serif;font-optical-sizing:auto;font-weight:200;font-style:normal;font-size:.9em;line-height:1.6em;padding:1.8em;width:100%}footer .hbll-footer-wrapper .hbll-footer-bottom a{color:#fff}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-title{font-size:2em;font-weight:400;line-height:1em}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy{margin-top:.4em}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy a{text-decoration:underline}@media screen and (max-width: 40em){.hbll-footer-links{flex-direction:column;justify-content:flex-start;width:100%}}dialog{border:solid 1px #888;border-radius:4px;width:90%;max-width:50em;padding:0;transition:all 5s ease-in-out}dialog .hbll-footer-email-success,dialog form{padding:1.6em 2em}dialog .hbll-footer-email-success p,dialog form p{text-align:center;line-height:1.4em}dialog .hbll-footer-email-success{display:flex;justify-content:center;align-items:center;flex-direction:column}dialog .hbll-footer-email-success button{margin-top:1em}dialog form{display:flex;flex-direction:column;position:relative}dialog form textarea{min-height:100px;resize:vertical}dialog form input,dialog form textarea,dialog form .hbll-footer-select-wrapper{margin-bottom:.6em}dialog form .hbll-footer-email-bottom-bar{display:flex;align-items:center;justify-content:flex-end}dialog form .hbll-footer-email-bottom-bar .hbll-footer-connection-error{text-align:right;flex-grow:1;margin:0 1em 0 0}dialog form label{margin-bottom:.4em;margin-top:.4em}dialog form .hbll-footer-email-error{display:flex;justify-content:center;align-items:center;margin-right:auto;margin-bottom:.6em;font-size:.8em}dialog form .hbll-footer-email-error .hbll-footer-email-error-icon{font-size:1.2em;margin-right:.2em}dialog form .hbll-footer-email-top{width:100%;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;align-items:center;margin-bottom:1em}dialog form .hbll-footer-email-top h1{font-size:1.4em;margin:0}dialog form .hbll-footer-email-required-message{float:right}dialog form .hbll-footer-select-wrapper{margin-right:auto}dialog form .hbll-footer-email-required{color:#d03a3a}dialog form button:not([type=submit]){color:#333}dialog form button:not([type=submit]):hover{color:#696969}dialog form button[type=submit]{margin-left:auto}dialog::backdrop{background-color:#000;opacity:.75}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
|
|
78
78
|
}
|
|
79
79
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HbllFooterComponent, decorators: [{
|
|
80
80
|
type: Component,
|
|
81
|
-
args: [{ selector: 'lib-hbll-footer', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "<footer>\n <div class=\"hbll-footer-wrapper\">\n <div class=\"hbll-footer-links\">\n <section>\n <h3>Contact</h3>\n <ul>\n <li>\n <address>\n P.O. Box 26800<br />\n Provo, UT 84602-6800\n </address>\n </li>\n <li>\n <a href=\"tel:801-422-6061\">\n <span class=\"material-symbols-outlined hbll-footer-icon\">\n phone_in_talk </span\n > <strong>Call</strong> (801) 422-6061\n </a>\n </li>\n <li>\n <a href=\"sms:801-623-6838\">\n <span class=\"material-symbols-outlined hbll-footer-icon\"> sms </span\n > <strong>Text</strong> (801) 623-6838\n </a>\n </li>\n <li>\n <button (click)=\"emailDialog.showModal()\" data-testid=\"emailUsBtn\" style=\"padding: 0px;\">\n <span class=\"material-symbols-outlined hbll-footer-icon\"> mail </span\n > \n <strong>Email us</strong>\n </button>\n </li>\n </ul>\n </section>\n <section>\n <h3>Resources</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/site-index/\"\n >A-Z Site Index</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/policies/\">Policies</a>\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/location/\"\n >Parking & Directions</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://uac.byu.edu/accessibility-lab\"\n >Accessibility Resources</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://hr.lib.byu.edu/byu-library-jobs\"\n >Employment Opportunities</a\n >\n </li>\n </ul>\n </section>\n <section>\n <h3>Friends in the Library</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"https://ctl.byu.edu\"\n >Center for Teaching and Learning</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://copyright.byu.edu\"\n >Copyright Licensing Office</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://facultycenter.byu.edu/aboutus\"\n >Faculty Center</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://dining.byu.edu/library-cafe\"\n >Library Cafe</a\n >\n </li>\n </ul>\n </section>\n <section>\n <h3>Connect</h3>\n <ul class=\"hbll-footer-social-list\">\n <li>\n <a target=\"_blank\" href=\"https://www.facebook.com/byuhbll\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/facebook-color-round.svg\"\n alt=\"Facebook\"\n title=\"Facebook\"\n />\n </a>\n </li>\n <li>\n <a target=\"_blank\" href=\"https://www.instagram.com/byu_hbll/\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/instagram-color.svg\"\n alt=\"Instagram\"\n title=\"Instagram\"\n />\n </a>\n </li>\n </ul>\n </section>\n </div>\n <section class=\"hbll-footer-bottom\">\n <div class=\"hbll-footer-title\">\n <a href=\"https://byu.edu\" target=\"_blank\">BRIGHAM YOUNG UNIVERSITY</a>\n </div>\n <br />\n PROVO, UT 84602, USA | <a href=\"sms:801-422-6061\">(801) 422-6061</a>\n <br />© {{ date | date: 'yyyy' }}\n ALL RIGHTS RESERVED\n <div class=\"hbll-footer-privacy\">\n <a href=\"https://privacy.byu.edu/\" target=\"_blank\">Privacy Notice</a>\n |\n <a href=\"https://infosec.byu.edu/cookie-prefs\" target=\"_blank\"\n >Cookie Preferences</a\n >\n </div>\n </section>\n </div>\n</footer>\n\n<dialog\n #emailDialog\n onmousedown=\"event.target === this && this.close()\"\n (close)=\"handleClose()\"\n data-testid=\"dialog\"\n>\n @if (!isEmailSent) {\n <form [formGroup]=\"emailForm\" (submit)=\"sendEmail()\" data-testid=\"form\">\n <div class=\"hbll-footer-email-top\">\n <h1>Email Us</h1>\n <button (click)=\"emailDialog.close()\" type=\"button\" data-testid=\"closeBtn\">\n <span class=\"material-symbols-outlined\"> close </span>\n </button>\n </div>\n <label for=\"hbllFooterEmailName\">Name</label>\n <input\n id=\"hbllFooterEmailName\"\n type=\"text\"\n formControlName=\"name\"\n data-testid=\"emailNameInput\"\n />\n <label for=\"hbllFooterEmailEmail\">\n Email (please provide if you would like a response)</label\n >\n <input\n id=\"hbllFooterEmailEmail\"\n type=\"text\"\n formControlName=\"email\"\n data-testid=\"emailEmailInput\"\n />\n <label for=\"hbllFooterEmailEmail\">\n Question or comment <span class=\"hbll-footer-email-required\">*</span>\n </label>\n <textarea\n id=\"hbllFooterEmailEmail\"\n type=\"text\"\n formControlName=\"message\"\n data-testid=\"emailMessageInput\"\n ></textarea>\n @if (isSubmitted && emailForm.controls.message.invalid) {\n <div\n class=\"hbll-footer-email-required hbll-footer-email-error\"\n data-testid=\"commentError\"\n >\n <span class=\"material-symbols-outlined hbll-footer-email-error-icon\">\n warning\n </span>\n <strong>Please fill out this field</strong>\n </div>\n }\n <label for=\"hbllFooterEmailStatus\">Role</label>\n <span class=\"hbll-footer-select-wrapper\">\n <select\n id=\"hbllFooterEmailStatus\"\n formControlName=\"status\"\n data-testid=\"emailStatusInput\"\n >\n <option selected value=\"\"></option>\n @for (status of userStatuses | slice: 1; track status) {\n <option [value]=\"status\">{{ status }}</option>\n }\n </select>\n </span>\n <div class=\"hbll-footer-email-bottom-bar\">\n @if (hasConnectionError) {\n <p class=\"hbll-footer-connection-error\" data-testid=\"connectionError\">\n <i>There was an error sending your email. Please try again later.</i>\n </p>\n }\n <button\n class=\"pill-btn--components\"\n type=\"submit\"\n [disabled]=\"isLoading\"\n data-testid=\"sendEmailBtn\"\n >\n Send\n </button>\n </div>\n </form>\n } @else {\n <div class=\"hbll-footer-email-success\" data-testid=\"successMessage\">\n <p>\n Your email was sent successfully. If you supplied your email address, we will get\n back to you shortly.<br />Thank you!\n </p>\n <button class=\"pill-btn--components\" (click)=\"emailDialog.close()\" type=\"button\">\n Close\n </button>\n </div>\n }\n</dialog>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Public+Sans:ital,wght@0,200..400;1,200..400&display=swap\";*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}dialog form input,dialog form textarea,dialog form select{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}dialog form input:focus,dialog form textarea:focus,dialog form select:focus{outline-color:#3a6093}dialog form .hbll-footer-select-wrapper{position:relative}dialog form .hbll-footer-select-wrapper select{cursor:pointer;padding-right:2em}dialog form .hbll-footer-select-wrapper:after{font-family:Material Symbols Outlined;content:\"arrow_drop_down\";pointer-events:none;top:0;font-size:1.5em;right:.2em;height:100%;position:absolute;display:flex;align-items:center;opacity:70%}.pill-btn--components{background-color:#4070b0;font-size:1em;transition:all .15s;color:#fff;cursor:pointer;font-weight:600;text-align:center}.pill-btn--components:disabled{color:#707070;background-color:#e6e6e6;pointer-events:none}.pill-btn--components:hover{background-color:#6892ca;color:#fff}.destructive.pill-btn--components{background-color:#b04940}.destructive.pill-btn--components:hover{background-color:#c7574d}.pill-btn--components{border-radius:100em;padding:.4em 1.3em}button{border:none;background-color:transparent;font-size:1em}button :hover{cursor:pointer}footer{line-height:1.2em;background-color:#e6e6e6}footer .hbll-footer-wrapper{display:flex;flex-direction:column;align-items:center}footer .hbll-footer-wrapper .hbll-footer-links{max-width:90em;display:flex;align-items:flex-start;justify-content:flex-start;flex-wrap:wrap;padding-bottom:2em;white-space:nowrap}footer .hbll-footer-wrapper .hbll-footer-links strong{font-weight:600}footer .hbll-footer-wrapper .hbll-footer-links address{font-style:normal}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-icon{font-size:24px!important;margin-right:.2em;color:#002e5d}footer .hbll-footer-wrapper .hbll-footer-links section{padding:2em 1.8em 0;background-color:#e6e6e6;flex:1}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list{display:flex}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list .hbll-footer-social{height:1.5em;margin-right:1em}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list li{margin-bottom:0}footer .hbll-footer-wrapper h3{font-weight:600;color:#002e5d;font-size:1.4em;margin-bottom:1em;margin-top:0}footer .hbll-footer-wrapper ul{list-style:none;margin:.4em 0 0;padding:0}footer .hbll-footer-wrapper ul li{display:flex;align-items:center}footer .hbll-footer-wrapper ul li a,footer .hbll-footer-wrapper ul li button{display:inline-flex;align-items:center;color:#305f9c}footer .hbll-footer-wrapper ul li a:hover,footer .hbll-footer-wrapper ul li button:hover{color:#6892ca}footer .hbll-footer-wrapper ul li:not(:last-of-type){margin-bottom:.6em}footer .hbll-footer-wrapper .hbll-footer-bottom{text-align:center;background-color:#002e5d;color:#fff;font-family:Public Sans,sans-serif;font-optical-sizing:auto;font-weight:200;font-style:normal;font-size:.9em;line-height:1.6em;padding:1.8em;width:100%}footer .hbll-footer-wrapper .hbll-footer-bottom a{color:#fff}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-title{font-size:2em;font-weight:400;line-height:1em}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy{margin-top:.4em}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy a{text-decoration:underline}@media screen and (max-width: 40em){.hbll-footer-links{flex-direction:column;justify-content:flex-start;width:100%}}dialog{border:solid 1px #888;border-radius:4px;width:90%;max-width:50em;padding:0;transition:all 5s ease-in-out}dialog .hbll-footer-email-success,dialog form{padding:1.6em 2em}dialog .hbll-footer-email-success p,dialog form p{text-align:center;line-height:1.4em}dialog .hbll-footer-email-success{display:flex;justify-content:center;align-items:center;flex-direction:column}dialog .hbll-footer-email-success button{margin-top:1em}dialog form{display:flex;flex-direction:column;position:relative}dialog form textarea{min-height:100px;resize:vertical}dialog form input,dialog form textarea,dialog form .hbll-footer-select-wrapper{margin-bottom:.6em}dialog form .hbll-footer-email-bottom-bar{display:flex;align-items:center;justify-content:flex-end}dialog form .hbll-footer-email-bottom-bar .hbll-footer-connection-error{text-align:right;flex-grow:1;margin:0 1em 0 0}dialog form label{margin-bottom:.4em;margin-top:.4em}dialog form .hbll-footer-email-error{display:flex;justify-content:center;align-items:center;margin-right:auto;margin-bottom:.6em;font-size:.8em}dialog form .hbll-footer-email-error .hbll-footer-email-error-icon{font-size:1.2em;margin-right:.2em}dialog form .hbll-footer-email-top{width:100%;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;align-items:center;margin-bottom:1em}dialog form .hbll-footer-email-top h1{font-size:1.4em;margin:0}dialog form .hbll-footer-email-required-message{float:right}dialog form .hbll-footer-select-wrapper{margin-right:auto}dialog form .hbll-footer-email-required{color:#d03a3a}dialog form button:not([type=submit]){color:#333}dialog form button:not([type=submit]):hover{color:#696969}dialog form button[type=submit]{margin-left:auto}dialog::backdrop{background-color:#000;opacity:.75}\n"] }]
|
|
81
|
+
args: [{ selector: 'lib-hbll-footer', standalone: true, imports: [CommonModule, ReactiveFormsModule], template: "<footer>\n <div class=\"hbll-footer-wrapper\">\n <div class=\"hbll-footer-links\">\n <section aria-labelledby=\"footerContactHeading\">\n <h3 id=\"footerContactHeading\" >Contact</h3>\n <ul>\n <li>\n <address>\n P.O. Box 26800<br />\n Provo, UT 84602-6800\n </address>\n </li>\n <li>\n <a href=\"tel:801-422-6061\">\n <span class=\"material-symbols-outlined hbll-footer-icon\">\n phone_in_talk </span\n > <strong>Call</strong> (801) 422-6061\n </a>\n </li>\n <li>\n <a href=\"sms:801-623-6838\">\n <span class=\"material-symbols-outlined hbll-footer-icon\"> sms </span\n > <strong>Text</strong> (801) 623-6838\n </a>\n </li>\n <li>\n <button (click)=\"emailDialog.showModal()\" data-testid=\"emailUsBtn\" style=\"padding: 0px;\">\n <span class=\"material-symbols-outlined hbll-footer-icon\"> mail </span\n > \n <strong>Email us</strong>\n </button>\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerResourcesHeading\">\n <h3 id=\"footerResourcesHeading\">Resources</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/site-index/\"\n >A-Z Site Index</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/policies/\">Policies</a>\n </li>\n <li>\n <a target=\"_blank\" href=\"{{ mainsitebaseurl }}/about/location/\"\n >Parking & Directions</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://uac.byu.edu/accessibility-lab\"\n >Accessibility Resources</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://hr.lib.byu.edu/byu-library-jobs\"\n >Employment Opportunities</a\n >\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerFriendsHeading\">\n <h3 id=\"footerFriendsHeading\">Friends in the Library</h3>\n <ul>\n <li>\n <a target=\"_blank\" href=\"https://ctl.byu.edu\"\n >Center for Teaching and Learning</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://copyright.byu.edu\"\n >Copyright Licensing Office</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://facultycenter.byu.edu/aboutus\"\n >Faculty Center</a\n >\n </li>\n <li>\n <a target=\"_blank\" href=\"https://dining.byu.edu/library-cafe\"\n >Library Cafe</a\n >\n </li>\n </ul>\n </section>\n <section aria-labelledby=\"footerConnectHeading\">\n <h3 id=\"footerConnectHeading\">Connect</h3>\n <ul class=\"hbll-footer-social-list\">\n <li>\n <a target=\"_blank\" href=\"https://www.facebook.com/byuhbll\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/facebook-color-round.svg\"\n alt=\"Facebook\"\n title=\"Facebook\"\n />\n </a>\n </li>\n <li>\n <a target=\"_blank\" href=\"https://www.instagram.com/byu_hbll/\">\n <img\n class=\"hbll-footer-social\"\n src=\"https://media.lib.byu.edu/web-assets/images/1.0.0/instagram-color.svg\"\n alt=\"Instagram\"\n title=\"Instagram\"\n />\n </a>\n </li>\n </ul>\n </section>\n </div>\n <section class=\"hbll-footer-bottom\" aria-label=\"Bottom-most part of the footer\">\n <div class=\"hbll-footer-title\">\n <a href=\"https://byu.edu\" target=\"_blank\">BRIGHAM YOUNG UNIVERSITY</a>\n </div>\n <br />\n PROVO, UT 84602, USA | <a href=\"sms:801-422-6061\">(801) 422-6061</a>\n <br />© {{ date | date: 'yyyy' }}\n ALL RIGHTS RESERVED\n <div class=\"hbll-footer-privacy\">\n <a href=\"https://privacy.byu.edu/\" target=\"_blank\">Privacy Notice</a>\n |\n <a href=\"https://infosec.byu.edu/cookie-prefs\" target=\"_blank\"\n >Cookie Preferences</a\n >\n </div>\n </section>\n </div>\n</footer>\n\n<dialog\n #emailDialog\n onmousedown=\"event.target === this && this.close()\"\n (close)=\"handleClose()\"\n data-testid=\"dialog\"\n>\n @if (!isEmailSent) {\n <form [formGroup]=\"emailForm\" (submit)=\"sendEmail()\" data-testid=\"form\">\n <div class=\"hbll-footer-email-top\">\n <h1>Email Us</h1>\n <button (click)=\"emailDialog.close()\" type=\"button\" data-testid=\"closeBtn\">\n <span class=\"material-symbols-outlined\"> close </span>\n </button>\n </div>\n <label for=\"hbllFooterEmailName\">Name</label>\n <input\n id=\"hbllFooterEmailName\"\n type=\"text\"\n formControlName=\"name\"\n data-testid=\"emailNameInput\"\n />\n <label for=\"hbllFooterEmailEmail\">\n Email (please provide if you would like a response)</label\n >\n <input\n id=\"hbllFooterEmailEmail\"\n type=\"text\"\n formControlName=\"email\"\n data-testid=\"emailEmailInput\"\n />\n <label for=\"hbllFooterEmailEmail\">\n Question or comment <span class=\"hbll-footer-email-required\">*</span>\n </label>\n <textarea\n id=\"hbllFooterEmailEmail\"\n type=\"text\"\n formControlName=\"message\"\n data-testid=\"emailMessageInput\"\n ></textarea>\n @if (isSubmitted && emailForm.controls.message.invalid) {\n <div\n class=\"hbll-footer-email-required hbll-footer-email-error\"\n data-testid=\"commentError\"\n >\n <span class=\"material-symbols-outlined hbll-footer-email-error-icon\">\n warning\n </span>\n <strong>Please fill out this field</strong>\n </div>\n }\n <label for=\"hbllFooterEmailStatus\">Role</label>\n <span class=\"hbll-footer-select-wrapper\">\n <select\n id=\"hbllFooterEmailStatus\"\n formControlName=\"status\"\n data-testid=\"emailStatusInput\"\n >\n <option selected value=\"\"></option>\n @for (status of userStatuses | slice: 1; track status) {\n <option [value]=\"status\">{{ status }}</option>\n }\n </select>\n </span>\n <div class=\"hbll-footer-email-bottom-bar\">\n @if (hasConnectionError) {\n <p class=\"hbll-footer-connection-error\" data-testid=\"connectionError\">\n <i>There was an error sending your email. Please try again later.</i>\n </p>\n }\n <button\n class=\"pill-btn--components\"\n type=\"submit\"\n [disabled]=\"isLoading\"\n data-testid=\"sendEmailBtn\"\n >\n Send\n </button>\n </div>\n </form>\n } @else {\n <div class=\"hbll-footer-email-success\" data-testid=\"successMessage\">\n <p>\n Your email was sent successfully. If you supplied your email address, we will get\n back to you shortly.<br />Thank you!\n </p>\n <button class=\"pill-btn--components\" (click)=\"emailDialog.close()\" type=\"button\">\n Close\n </button>\n </div>\n }\n</dialog>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Public+Sans:ital,wght@0,200..400;1,200..400&display=swap\";*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}dialog form input,dialog form textarea,dialog form select{appearance:none;font-family:inherit;padding:.38em;border:solid 1px #707070;border-radius:4px;font-size:1em;background-color:#fff}dialog form input:focus,dialog form textarea:focus,dialog form select:focus{outline-color:#3a6093}dialog form .hbll-footer-select-wrapper{position:relative}dialog form .hbll-footer-select-wrapper select{cursor:pointer;padding-right:2em}dialog form .hbll-footer-select-wrapper:after{font-family:Material Symbols Outlined;content:\"arrow_drop_down\";pointer-events:none;top:0;font-size:1.5em;right:.2em;height:100%;position:absolute;display:flex;align-items:center;opacity:70%}.pill-btn--components{background-color:#4070b0;font-size:1em;transition:all .15s;color:#fff;cursor:pointer;font-weight:600;text-align:center}.pill-btn--components:disabled{color:#707070;background-color:#e6e6e6;pointer-events:none}.pill-btn--components:hover{background-color:#6892ca;color:#fff}.destructive.pill-btn--components{background-color:#b04940}.destructive.pill-btn--components:hover{background-color:#c7574d}.pill-btn--components{border-radius:100em;padding:.4em 1.3em}button{border:none;background-color:transparent;font-size:1em}button :hover{cursor:pointer}footer{line-height:1.2em;background-color:#e6e6e6}footer .hbll-footer-wrapper{display:flex;flex-direction:column;align-items:center}footer .hbll-footer-wrapper .hbll-footer-links{max-width:90em;display:flex;align-items:flex-start;justify-content:flex-start;flex-wrap:wrap;padding-bottom:2em;white-space:nowrap}footer .hbll-footer-wrapper .hbll-footer-links strong{font-weight:600}footer .hbll-footer-wrapper .hbll-footer-links address{font-style:normal}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-icon{font-size:24px!important;margin-right:.2em;color:#002e5d}footer .hbll-footer-wrapper .hbll-footer-links section{padding:2em 1.8em 0;background-color:#e6e6e6;flex:1}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list{display:flex}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list .hbll-footer-social{height:1.5em;margin-right:1em}footer .hbll-footer-wrapper .hbll-footer-links .hbll-footer-social-list li{margin-bottom:0}footer .hbll-footer-wrapper h3{font-weight:600;color:#002e5d;font-size:1.4em;margin-bottom:1em;margin-top:0}footer .hbll-footer-wrapper ul{list-style:none;margin:.4em 0 0;padding:0}footer .hbll-footer-wrapper ul li{display:flex;align-items:center}footer .hbll-footer-wrapper ul li a,footer .hbll-footer-wrapper ul li button{display:inline-flex;align-items:center;color:#305f9c}footer .hbll-footer-wrapper ul li a:hover,footer .hbll-footer-wrapper ul li button:hover{color:#6892ca}footer .hbll-footer-wrapper ul li:not(:last-of-type){margin-bottom:.6em}footer .hbll-footer-wrapper .hbll-footer-bottom{text-align:center;background-color:#002e5d;color:#fff;font-family:Public Sans,sans-serif;font-optical-sizing:auto;font-weight:200;font-style:normal;font-size:.9em;line-height:1.6em;padding:1.8em;width:100%}footer .hbll-footer-wrapper .hbll-footer-bottom a{color:#fff}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-title{font-size:2em;font-weight:400;line-height:1em}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy{margin-top:.4em}footer .hbll-footer-wrapper .hbll-footer-bottom .hbll-footer-privacy a{text-decoration:underline}@media screen and (max-width: 40em){.hbll-footer-links{flex-direction:column;justify-content:flex-start;width:100%}}dialog{border:solid 1px #888;border-radius:4px;width:90%;max-width:50em;padding:0;transition:all 5s ease-in-out}dialog .hbll-footer-email-success,dialog form{padding:1.6em 2em}dialog .hbll-footer-email-success p,dialog form p{text-align:center;line-height:1.4em}dialog .hbll-footer-email-success{display:flex;justify-content:center;align-items:center;flex-direction:column}dialog .hbll-footer-email-success button{margin-top:1em}dialog form{display:flex;flex-direction:column;position:relative}dialog form textarea{min-height:100px;resize:vertical}dialog form input,dialog form textarea,dialog form .hbll-footer-select-wrapper{margin-bottom:.6em}dialog form .hbll-footer-email-bottom-bar{display:flex;align-items:center;justify-content:flex-end}dialog form .hbll-footer-email-bottom-bar .hbll-footer-connection-error{text-align:right;flex-grow:1;margin:0 1em 0 0}dialog form label{margin-bottom:.4em;margin-top:.4em}dialog form .hbll-footer-email-error{display:flex;justify-content:center;align-items:center;margin-right:auto;margin-bottom:.6em;font-size:.8em}dialog form .hbll-footer-email-error .hbll-footer-email-error-icon{font-size:1.2em;margin-right:.2em}dialog form .hbll-footer-email-top{width:100%;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between;align-items:center;margin-bottom:1em}dialog form .hbll-footer-email-top h1{font-size:1.4em;margin:0}dialog form .hbll-footer-email-required-message{float:right}dialog form .hbll-footer-select-wrapper{margin-right:auto}dialog form .hbll-footer-email-required{color:#d03a3a}dialog form button:not([type=submit]){color:#333}dialog form button:not([type=submit]):hover{color:#696969}dialog form button[type=submit]{margin-left:auto}dialog::backdrop{background-color:#000;opacity:.75}\n"] }]
|
|
82
82
|
}], propDecorators: { emailDialog: [{
|
|
83
83
|
type: ViewChild,
|
|
84
84
|
args: ['emailDialog']
|
|
@@ -95,4 +95,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
95
95
|
}], emailstatus: [{
|
|
96
96
|
type: Input
|
|
97
97
|
}] } });
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGJsbC1mb290ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2hibGwtZm9vdGVyL2hibGwtZm9vdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9oYmxsLWZvb3Rlci9oYmxsLWZvb3Rlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBa0IsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBU2pHLE1BQU0sT0FBTyxtQkFBbUI7SUFQaEM7UUFRcUIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTNDLHdGQUF3RjtRQUMvRSxvQkFBZSxHQUFHLHFCQUFxQixDQUFDO1FBQ3hDLHNCQUFpQixHQUFHLDZCQUE2QixDQUFDO1FBYWpELFNBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2xCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxJ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Q0FBQyxNQUFnQztRQUNyRCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELENBQUM7OEdBbEJRLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDJYQ2JoQywweVNBK05BLGk2S0R0TmMsWUFBWSxzSUFBRSxtQkFBbUI7OzJGQUlsQyxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0ksaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDOzhCQU9WLFdBQVc7c0JBQTVDLFNBQVM7dUJBQUMsYUFBYTtnQkFFZixlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDTyxTQUFTO3NCQUFyQixLQUFLO2dCQUdPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBR08sWUFBWTtzQkFBeEIsS0FBSztnQkFHTyxXQUFXO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbmplY3QsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDb250YWN0UGF5bG9hZCwgY3JlYXRlQ29udGFjdEZvcm0sIHN1Ym1pdEVtYWlsLCBVU0VSX1NUQVRVU0VTIH0gZnJvbSAnLi4vY29udGFjdC11dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLWhibGwtZm9vdGVyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9oYmxsLWZvb3Rlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2hibGwtZm9vdGVyLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgSGJsbEZvb3RlckNvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICAgIEBWaWV3Q2hpbGQoJ2VtYWlsRGlhbG9nJykgcHJpdmF0ZSBlbWFpbERpYWxvZyE6IEVsZW1lbnRSZWY7XG4gICAgLy8gVE9ETzogQ29udmVydCB0aGVzZSB0byBzaWduYWwgaW5wdXRzOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy81Nzc1NVxuICAgIEBJbnB1dCgpIG1haW5zaXRlYmFzZXVybCA9ICdodHRwczovL2xpYi5ieXUuZWR1JztcbiAgICBASW5wdXQoKSBsaWJyYXJ5YXBpYmFzZXVyaSA9ICdodHRwczovL2FwcHMubGliLmJ5dS5lZHUvdjEnO1xuICAgIEBJbnB1dCgpIHNldCBlbWFpbG5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZW1haWxGb3JtLmNvbnRyb2xzLm5hbWUuc2V0VmFsdWUobmFtZSk7XG4gICAgfVxuICAgIEBJbnB1dCgpIHNldCBlbWFpbGVtYWlsKGVtYWlsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5lbWFpbEZvcm0uY29udHJvbHMuZW1haWwuc2V0VmFsdWUoZW1haWwpO1xuICAgIH1cbiAgICBASW5wdXQoKSBzZXQgZW1haWxtZXNzYWdlKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLmVtYWlsRm9ybS5jb250cm9scy5tZXNzYWdlLnNldFZhbHVlKG1lc3NhZ2UpO1xuICAgIH1cbiAgICBASW5wdXQoKSBzZXQgZW1haWxzdGF0dXMoc3RhdHVzOiBDb250YWN0UGF5bG9hZFsnc3RhdHVzJ10pIHtcbiAgICAgICAgdGhpcy5lbWFpbEZvcm0uY29udHJvbHMuc3RhdHVzLnNldFZhbHVlKHN0YXR1cyk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBwcm90ZWN0ZWQgaXNTdWJtaXR0ZWQgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIGhhc0Nvbm5lY3Rpb25FcnJvciA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBpc0VtYWlsU2VudCA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBlbWFpbEZvcm0gPSBjcmVhdGVDb250YWN0Rm9ybSh0aGlzLmZiKTtcbiAgICBwcm90ZWN0ZWQgdXNlclN0YXR1c2VzID0gVVNFUl9TVEFUVVNFUztcblxuICAgIHByb3RlY3RlZCBzZW5kRW1haWwgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNTdWJtaXR0ZWQgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5lbWFpbEZvcm0uaW52YWxpZCkgcmV0dXJuO1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgIHN1Ym1pdEVtYWlsKFxuICAgICAgICAgICAgdGhpcy5lbWFpbEZvcm0udmFsdWUgYXMgQ29udGFjdFBheWxvYWQsXG4gICAgICAgICAgICB0aGlzLmh0dHAsXG4gICAgICAgICAgICB0aGlzLmxpYnJhcnlhcGliYXNldXJpLFxuICAgICAgICApLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzQ29ubmVjdGlvbkVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNDb25uZWN0aW9uRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNFbWFpbFNlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1haWxGb3JtLnJlc2V0KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcHJvdGVjdGVkIGhhbmRsZUNsb3NlID0gKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0VtYWlsU2VudCkge1xuICAgICAgICAgICAgdGhpcy5pc0VtYWlsU2VudCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5oYXNDb25uZWN0aW9uRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc1N1Ym1pdHRlZCA9IGZhbHNlO1xuICAgIH07XG5cbiAgICAvLyBFeHBvc2UgdGhpcyB0byBiZSBjYWxsZWQgZnJvbSBjb25zdW1pbmcgYXBwbGljYXRpb25zLlxuICAgIG9wZW5FbWFpbEZvcm0gPSAoZm9ybVZhbHVlcz86IHR5cGVvZiB0aGlzLmVtYWlsRm9ybS52YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoZm9ybVZhbHVlcykge1xuICAgICAgICAgICAgaWYgKGZvcm1WYWx1ZXMubmFtZSkgdGhpcy5lbWFpbEZvcm0uY29udHJvbHMubmFtZS5zZXRWYWx1ZShmb3JtVmFsdWVzLm5hbWUpO1xuICAgICAgICAgICAgaWYgKGZvcm1WYWx1ZXMuZW1haWwpIHRoaXMuZW1haWxGb3JtLmNvbnRyb2xzLmVtYWlsLnNldFZhbHVlKGZvcm1WYWx1ZXMuZW1haWwpO1xuICAgICAgICAgICAgaWYgKGZvcm1WYWx1ZXMubWVzc2FnZSkgdGhpcy5lbWFpbEZvcm0uY29udHJvbHMubWVzc2FnZS5zZXRWYWx1ZShmb3JtVmFsdWVzLm1lc3NhZ2UpO1xuICAgICAgICAgICAgaWYgKGZvcm1WYWx1ZXMuc3RhdHVzKSB0aGlzLmVtYWlsRm9ybS5jb250cm9scy5zdGF0dXMuc2V0VmFsdWUoZm9ybVZhbHVlcy5zdGF0dXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW1haWxEaWFsb2cubmF0aXZlRWxlbWVudC5zaG93TW9kYWwoKTtcbiAgICB9O1xufVxuIiwiPGZvb3Rlcj5cbiAgICA8ZGl2IGNsYXNzPVwiaGJsbC1mb290ZXItd3JhcHBlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGJsbC1mb290ZXItbGlua3NcIj5cbiAgICAgICAgICAgIDxzZWN0aW9uPlxuICAgICAgICAgICAgICAgIDxoMz5Db250YWN0PC9oMz5cbiAgICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhZGRyZXNzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFAuTy4gQm94IDI2ODAwPGJyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvdm8sIFVUIDg0NjAyLTY4MDBcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYWRkcmVzcz5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInRlbDo4MDEtNDIyLTYwNjFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgaGJsbC1mb290ZXItaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZV9pbl90YWxrIDwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID4mbmJzcDsgPHN0cm9uZz5DYWxsPC9zdHJvbmc+Jm5ic3A7KDgwMSkgNDIyLTYwNjFcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cInNtczo4MDEtNjIzLTY4MzhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgaGJsbC1mb290ZXItaWNvblwiPiBzbXMgPC9zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPiZuYnNwOyA8c3Ryb25nPlRleHQ8L3N0cm9uZz4mbmJzcDsoODAxKSA2MjMtNjgzOFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJlbWFpbERpYWxvZy5zaG93TW9kYWwoKVwiIGRhdGEtdGVzdGlkPVwiZW1haWxVc0J0blwiIHN0eWxlPVwicGFkZGluZzogMHB4O1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBoYmxsLWZvb3Rlci1pY29uXCI+IG1haWwgPC9zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPiZuYnNwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+RW1haWwgdXM8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICAgICAgICA8aDM+UmVzb3VyY2VzPC9oMz5cbiAgICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJ7eyBtYWluc2l0ZWJhc2V1cmwgfX0vc2l0ZS1pbmRleC9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5BLVogU2l0ZSBJbmRleDwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwie3sgbWFpbnNpdGViYXNldXJsIH19L2Fib3V0L3BvbGljaWVzL1wiPlBvbGljaWVzPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwie3sgbWFpbnNpdGViYXNldXJsIH19L2Fib3V0L2xvY2F0aW9uL1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlBhcmtpbmcgJiBEaXJlY3Rpb25zPC9hXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3VhYy5ieXUuZWR1L2FjY2Vzc2liaWxpdHktbGFiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+QWNjZXNzaWJpbGl0eSBSZXNvdXJjZXM8L2FcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vaHIubGliLmJ5dS5lZHUvYnl1LWxpYnJhcnktam9ic1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPkVtcGxveW1lbnQgT3Bwb3J0dW5pdGllczwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICA8c2VjdGlvbj5cbiAgICAgICAgICAgICAgICA8aDM+RnJpZW5kcyBpbiB0aGUgTGlicmFyeTwvaDM+XG4gICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9jdGwuYnl1LmVkdVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPkNlbnRlciBmb3IgVGVhY2hpbmcgYW5kIExlYXJuaW5nPC9hXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL2NvcHlyaWdodC5ieXUuZWR1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Q29weXJpZ2h0IExpY2Vuc2luZyBPZmZpY2U8L2FcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vZmFjdWx0eWNlbnRlci5ieXUuZWR1L2Fib3V0dXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5GYWN1bHR5IENlbnRlcjwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9kaW5pbmcuYnl1LmVkdS9saWJyYXJ5LWNhZmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5MaWJyYXJ5IENhZmU8L2FcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgICAgPHNlY3Rpb24+XG4gICAgICAgICAgICAgICAgPGgzPkNvbm5lY3Q8L2gzPlxuICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImhibGwtZm9vdGVyLXNvY2lhbC1saXN0XCI+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3d3dy5mYWNlYm9vay5jb20vYnl1aGJsbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoYmxsLWZvb3Rlci1zb2NpYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCJodHRwczovL21lZGlhLmxpYi5ieXUuZWR1L3dlYi1hc3NldHMvaW1hZ2VzLzEuMC4wL2ZhY2Vib29rLWNvbG9yLXJvdW5kLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIkZhY2Vib29rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJGYWNlYm9va1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vYnl1X2hibGwvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhibGwtZm9vdGVyLXNvY2lhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vbWVkaWEubGliLmJ5dS5lZHUvd2ViLWFzc2V0cy9pbWFnZXMvMS4wLjAvaW5zdGFncmFtLWNvbG9yLnN2Z1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsdD1cIkluc3RhZ3JhbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwiSW5zdGFncmFtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImhibGwtZm9vdGVyLWJvdHRvbVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhibGwtZm9vdGVyLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vYnl1LmVkdVwiIHRhcmdldD1cIl9ibGFua1wiPkJSSUdIQU0gWU9VTkcgVU5JVkVSU0lUWTwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICBQUk9WTywgVVQgODQ2MDIsIFVTQSB8IDxhIGhyZWY9XCJzbXM6ODAxLTQyMi02MDYxXCI+KDgwMSkgNDIyLTYwNjE8L2E+XG4gICAgICAgICAgICA8YnIgLz4mY29weTsmbmJzcDt7eyBkYXRlIHwgZGF0ZTogJ3l5eXknIH19XG4gICAgICAgICAgICBBTEwgUklHSFRTIFJFU0VSVkVEXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGJsbC1mb290ZXItcHJpdmFjeVwiPlxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL3ByaXZhY3kuYnl1LmVkdS9cIiB0YXJnZXQ9XCJfYmxhbmtcIj5Qcml2YWN5IE5vdGljZTwvYT5cbiAgICAgICAgICAgICAgICB8XG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vaW5mb3NlYy5ieXUuZWR1L2Nvb2tpZS1wcmVmc1wiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgID5Db29raWUgUHJlZmVyZW5jZXM8L2FcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgIDwvZGl2PlxuPC9mb290ZXI+XG5cbjxkaWFsb2dcbiAgICAjZW1haWxEaWFsb2dcbiAgICBvbm1vdXNlZG93bj1cImV2ZW50LnRhcmdldCA9PT0gdGhpcyAmJiB0aGlzLmNsb3NlKClcIlxuICAgIChjbG9zZSk9XCJoYW5kbGVDbG9zZSgpXCJcbiAgICBkYXRhLXRlc3RpZD1cImRpYWxvZ1wiXG4+XG4gICAgQGlmICghaXNFbWFpbFNlbnQpIHtcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJlbWFpbEZvcm1cIiAoc3VibWl0KT1cInNlbmRFbWFpbCgpXCIgZGF0YS10ZXN0aWQ9XCJmb3JtXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGJsbC1mb290ZXItZW1haWwtdG9wXCI+XG4gICAgICAgICAgICAgICAgPGgxPkVtYWlsIFVzPC9oMT5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJlbWFpbERpYWxvZy5jbG9zZSgpXCIgdHlwZT1cImJ1dHRvblwiIGRhdGEtdGVzdGlkPVwiY2xvc2VCdG5cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IGNsb3NlIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImhibGxGb290ZXJFbWFpbE5hbWVcIj5OYW1lPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGlkPVwiaGJsbEZvb3RlckVtYWlsTmFtZVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZW1haWxOYW1lSW5wdXRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJoYmxsRm9vdGVyRW1haWxFbWFpbFwiPlxuICAgICAgICAgICAgICAgIEVtYWlsIChwbGVhc2UgcHJvdmlkZSBpZiB5b3Ugd291bGQgbGlrZSBhIHJlc3BvbnNlKTwvbGFiZWxcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGlkPVwiaGJsbEZvb3RlckVtYWlsRW1haWxcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJlbWFpbEVtYWlsSW5wdXRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJoYmxsRm9vdGVyRW1haWxFbWFpbFwiPlxuICAgICAgICAgICAgICAgIFF1ZXN0aW9uIG9yIGNvbW1lbnQmbmJzcDs8c3BhbiBjbGFzcz1cImhibGwtZm9vdGVyLWVtYWlsLXJlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICBpZD1cImhibGxGb290ZXJFbWFpbEVtYWlsXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJlbWFpbE1lc3NhZ2VJbnB1dFwiXG4gICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgIEBpZiAoaXNTdWJtaXR0ZWQgJiYgZW1haWxGb3JtLmNvbnRyb2xzLm1lc3NhZ2UuaW52YWxpZCkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoYmxsLWZvb3Rlci1lbWFpbC1yZXF1aXJlZCBoYmxsLWZvb3Rlci1lbWFpbC1lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY29tbWVudEVycm9yXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBoYmxsLWZvb3Rlci1lbWFpbC1lcnJvci1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5QbGVhc2UgZmlsbCBvdXQgdGhpcyBmaWVsZDwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImhibGxGb290ZXJFbWFpbFN0YXR1c1wiPlJvbGU8L2xhYmVsPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoYmxsLWZvb3Rlci1zZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoYmxsRm9vdGVyRW1haWxTdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImVtYWlsU3RhdHVzSW5wdXRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBzZWxlY3RlZCB2YWx1ZT1cIlwiPjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChzdGF0dXMgb2YgdXNlclN0YXR1c2VzIHwgc2xpY2U6IDE7IHRyYWNrIHN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwic3RhdHVzXCI+e3sgc3RhdHVzIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoYmxsLWZvb3Rlci1lbWFpbC1ib3R0b20tYmFyXCI+XG4gICAgICAgICAgICAgICAgQGlmIChoYXNDb25uZWN0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoYmxsLWZvb3Rlci1jb25uZWN0aW9uLWVycm9yXCIgZGF0YS10ZXN0aWQ9XCJjb25uZWN0aW9uRXJyb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpPlRoZXJlIHdhcyBhbiBlcnJvciBzZW5kaW5nIHlvdXIgZW1haWwuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuPC9pPlxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaWxsLWJ0bi0tY29tcG9uZW50c1wiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZW5kRW1haWxCdG5cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgU2VuZFxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9ybT5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImhibGwtZm9vdGVyLWVtYWlsLXN1Y2Nlc3NcIiBkYXRhLXRlc3RpZD1cInN1Y2Nlc3NNZXNzYWdlXCI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICBZb3VyIGVtYWlsIHdhcyBzZW50IHN1Y2Nlc3NmdWxseS4gSWYgeW91IHN1cHBsaWVkIHlvdXIgZW1haWwgYWRkcmVzcywgd2Ugd2lsbCBnZXRcbiAgICAgICAgICAgICAgICBiYWNrIHRvIHlvdSBzaG9ydGx5LjxiciAvPlRoYW5rIHlvdSFcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwaWxsLWJ0bi0tY29tcG9uZW50c1wiIChjbGljayk9XCJlbWFpbERpYWxvZy5jbG9zZSgpXCIgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIENsb3NlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9kaWFsb2c+XG4iXX0=
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGJsbC1mb290ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2hibGwtZm9vdGVyL2hibGwtZm9vdGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9oYmxsLWZvb3Rlci9oYmxsLWZvb3Rlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBa0IsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDOzs7O0FBU2pHLE1BQU0sT0FBTyxtQkFBbUI7SUFQaEM7UUFRcUIsT0FBRSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN6QixTQUFJLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTNDLHdGQUF3RjtRQUMvRSxvQkFBZSxHQUFHLHFCQUFxQixDQUFDO1FBQ3hDLHNCQUFpQixHQUFHLDZCQUE2QixDQUFDO1FBYWpELFNBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2xCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBQzNCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGNBQVMsR0FBRyxpQkFBaUIsQ0FBQyxJ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Q0FBQyxNQUFnQztRQUNyRCxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BELENBQUM7OEdBbEJRLG1CQUFtQjtrR0FBbkIsbUJBQW1CLDJYQ2JoQyxpblRBK05BLGk2S0R0TmMsWUFBWSxzSUFBRSxtQkFBbUI7OzJGQUlsQyxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0ksaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixDQUFDOzhCQU9WLFdBQVc7c0JBQTVDLFNBQVM7dUJBQUMsYUFBYTtnQkFFZixlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDTyxTQUFTO3NCQUFyQixLQUFLO2dCQUdPLFVBQVU7c0JBQXRCLEtBQUs7Z0JBR08sWUFBWTtzQkFBeEIsS0FBSztnQkFHTyxXQUFXO3NCQUF2QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBpbmplY3QsIElucHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDb250YWN0UGF5bG9hZCwgY3JlYXRlQ29udGFjdEZvcm0sIHN1Ym1pdEVtYWlsLCBVU0VSX1NUQVRVU0VTIH0gZnJvbSAnLi4vY29udGFjdC11dGlscyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLWhibGwtZm9vdGVyJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9oYmxsLWZvb3Rlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmw6ICcuL2hibGwtZm9vdGVyLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgSGJsbEZvb3RlckNvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYiA9IGluamVjdChGb3JtQnVpbGRlcik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBodHRwID0gaW5qZWN0KEh0dHBDbGllbnQpO1xuICAgIEBWaWV3Q2hpbGQoJ2VtYWlsRGlhbG9nJykgcHJpdmF0ZSBlbWFpbERpYWxvZyE6IEVsZW1lbnRSZWY7XG4gICAgLy8gVE9ETzogQ29udmVydCB0aGVzZSB0byBzaWduYWwgaW5wdXRzOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy81Nzc1NVxuICAgIEBJbnB1dCgpIG1haW5zaXRlYmFzZXVybCA9ICdodHRwczovL2xpYi5ieXUuZWR1JztcbiAgICBASW5wdXQoKSBsaWJyYXJ5YXBpYmFzZXVyaSA9ICdodHRwczovL2FwcHMubGliLmJ5dS5lZHUvdjEnO1xuICAgIEBJbnB1dCgpIHNldCBlbWFpbG5hbWUobmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZW1haWxGb3JtLmNvbnRyb2xzLm5hbWUuc2V0VmFsdWUobmFtZSk7XG4gICAgfVxuICAgIEBJbnB1dCgpIHNldCBlbWFpbGVtYWlsKGVtYWlsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5lbWFpbEZvcm0uY29udHJvbHMuZW1haWwuc2V0VmFsdWUoZW1haWwpO1xuICAgIH1cbiAgICBASW5wdXQoKSBzZXQgZW1haWxtZXNzYWdlKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICB0aGlzLmVtYWlsRm9ybS5jb250cm9scy5tZXNzYWdlLnNldFZhbHVlKG1lc3NhZ2UpO1xuICAgIH1cbiAgICBASW5wdXQoKSBzZXQgZW1haWxzdGF0dXMoc3RhdHVzOiBDb250YWN0UGF5bG9hZFsnc3RhdHVzJ10pIHtcbiAgICAgICAgdGhpcy5lbWFpbEZvcm0uY29udHJvbHMuc3RhdHVzLnNldFZhbHVlKHN0YXR1cyk7XG4gICAgfVxuICAgIHByb3RlY3RlZCBkYXRlID0gbmV3IERhdGUoKTtcbiAgICBwcm90ZWN0ZWQgaXNTdWJtaXR0ZWQgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIGhhc0Nvbm5lY3Rpb25FcnJvciA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBpc0VtYWlsU2VudCA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBlbWFpbEZvcm0gPSBjcmVhdGVDb250YWN0Rm9ybSh0aGlzLmZiKTtcbiAgICBwcm90ZWN0ZWQgdXNlclN0YXR1c2VzID0gVVNFUl9TVEFUVVNFUztcblxuICAgIHByb3RlY3RlZCBzZW5kRW1haWwgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXNTdWJtaXR0ZWQgPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5lbWFpbEZvcm0uaW52YWxpZCkgcmV0dXJuO1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IHRydWU7XG4gICAgICAgIHN1Ym1pdEVtYWlsKFxuICAgICAgICAgICAgdGhpcy5lbWFpbEZvcm0udmFsdWUgYXMgQ29udGFjdFBheWxvYWQsXG4gICAgICAgICAgICB0aGlzLmh0dHAsXG4gICAgICAgICAgICB0aGlzLmxpYnJhcnlhcGliYXNldXJpLFxuICAgICAgICApLnN1YnNjcmliZSh7XG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzQ29ubmVjdGlvbkVycm9yID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNDb25uZWN0aW9uRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNFbWFpbFNlbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1haWxGb3JtLnJlc2V0KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICB9O1xuXG4gICAgcHJvdGVjdGVkIGhhbmRsZUNsb3NlID0gKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5pc0VtYWlsU2VudCkge1xuICAgICAgICAgICAgdGhpcy5pc0VtYWlsU2VudCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5oYXNDb25uZWN0aW9uRXJyb3IgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc1N1Ym1pdHRlZCA9IGZhbHNlO1xuICAgIH07XG5cbiAgICAvLyBFeHBvc2UgdGhpcyB0byBiZSBjYWxsZWQgZnJvbSBjb25zdW1pbmcgYXBwbGljYXRpb25zLlxuICAgIG9wZW5FbWFpbEZvcm0gPSAoZm9ybVZhbHVlcz86IHR5cGVvZiB0aGlzLmVtYWlsRm9ybS52YWx1ZSkgPT4ge1xuICAgICAgICBpZiAoZm9ybVZhbHVlcykge1xuICAgICAgICAgICAgaWYgKGZvcm1WYWx1ZXMubmFtZSkgdGhpcy5lbWFpbEZvcm0uY29udHJvbHMubmFtZS5zZXRWYWx1ZShmb3JtVmFsdWVzLm5hbWUpO1xuICAgICAgICAgICAgaWYgKGZvcm1WYWx1ZXMuZW1haWwpIHRoaXMuZW1haWxGb3JtLmNvbnRyb2xzLmVtYWlsLnNldFZhbHVlKGZvcm1WYWx1ZXMuZW1haWwpO1xuICAgICAgICAgICAgaWYgKGZvcm1WYWx1ZXMubWVzc2FnZSkgdGhpcy5lbWFpbEZvcm0uY29udHJvbHMubWVzc2FnZS5zZXRWYWx1ZShmb3JtVmFsdWVzLm1lc3NhZ2UpO1xuICAgICAgICAgICAgaWYgKGZvcm1WYWx1ZXMuc3RhdHVzKSB0aGlzLmVtYWlsRm9ybS5jb250cm9scy5zdGF0dXMuc2V0VmFsdWUoZm9ybVZhbHVlcy5zdGF0dXMpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW1haWxEaWFsb2cubmF0aXZlRWxlbWVudC5zaG93TW9kYWwoKTtcbiAgICB9O1xufVxuIiwiPGZvb3Rlcj5cbiAgICA8ZGl2IGNsYXNzPVwiaGJsbC1mb290ZXItd3JhcHBlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGJsbC1mb290ZXItbGlua3NcIj5cbiAgICAgICAgICAgIDxzZWN0aW9uIGFyaWEtbGFiZWxsZWRieT1cImZvb3RlckNvbnRhY3RIZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgPGgzIGlkPVwiZm9vdGVyQ29udGFjdEhlYWRpbmdcIiA+Q29udGFjdDwvaDM+XG4gICAgICAgICAgICAgICAgPHVsPlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YWRkcmVzcz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQLk8uIEJveCAyNjgwMDxiciAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3ZvLCBVVCA4NDYwMi02ODAwXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2FkZHJlc3M+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJ0ZWw6ODAxLTQyMi02MDYxXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGhibGwtZm9vdGVyLWljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmVfaW5fdGFsayA8L3NwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Jm5ic3A7IDxzdHJvbmc+Q2FsbDwvc3Ryb25nPiZuYnNwOyg4MDEpIDQyMi02MDYxXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJzbXM6ODAxLTYyMy02ODM4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGhibGwtZm9vdGVyLWljb25cIj4gc21zIDwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID4mbmJzcDsgPHN0cm9uZz5UZXh0PC9zdHJvbmc+Jm5ic3A7KDgwMSkgNjIzLTY4MzhcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiZW1haWxEaWFsb2cuc2hvd01vZGFsKClcIiBkYXRhLXRlc3RpZD1cImVtYWlsVXNCdG5cIiBzdHlsZT1cInBhZGRpbmc6IDBweDtcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgaGJsbC1mb290ZXItaWNvblwiPiBtYWlsIDwvc3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID4mbmJzcDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPkVtYWlsIHVzPC9zdHJvbmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgICAgPHNlY3Rpb24gYXJpYS1sYWJlbGxlZGJ5PVwiZm9vdGVyUmVzb3VyY2VzSGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxoMyBpZD1cImZvb3RlclJlc291cmNlc0hlYWRpbmdcIj5SZXNvdXJjZXM8L2gzPlxuICAgICAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cInt7IG1haW5zaXRlYmFzZXVybCB9fS9zaXRlLWluZGV4L1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPkEtWiBTaXRlIEluZGV4PC9hXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJ7eyBtYWluc2l0ZWJhc2V1cmwgfX0vYWJvdXQvcG9saWNpZXMvXCI+UG9saWNpZXM8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJ7eyBtYWluc2l0ZWJhc2V1cmwgfX0vYWJvdXQvbG9jYXRpb24vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+UGFya2luZyAmIERpcmVjdGlvbnM8L2FcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vdWFjLmJ5dS5lZHUvYWNjZXNzaWJpbGl0eS1sYWJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5BY2Nlc3NpYmlsaXR5IFJlc291cmNlczwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9oci5saWIuYnl1LmVkdS9ieXUtbGlicmFyeS1qb2JzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+RW1wbG95bWVudCBPcHBvcnR1bml0aWVzPC9hXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICAgIDxzZWN0aW9uIGFyaWEtbGFiZWxsZWRieT1cImZvb3RlckZyaWVuZHNIZWFkaW5nXCI+XG4gICAgICAgICAgICAgICAgPGgzIGlkPVwiZm9vdGVyRnJpZW5kc0hlYWRpbmdcIj5GcmllbmRzIGluIHRoZSBMaWJyYXJ5PC9oMz5cbiAgICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL2N0bC5ieXUuZWR1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+Q2VudGVyIGZvciBUZWFjaGluZyBhbmQgTGVhcm5pbmc8L2FcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vY29weXJpZ2h0LmJ5dS5lZHVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5Db3B5cmlnaHQgTGljZW5zaW5nIE9mZmljZTwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9mYWN1bHR5Y2VudGVyLmJ5dS5lZHUvYWJvdXR1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPkZhY3VsdHkgQ2VudGVyPC9hXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL2RpbmluZy5ieXUuZWR1L2xpYnJhcnktY2FmZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPkxpYnJhcnkgQ2FmZTwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICA8c2VjdGlvbiBhcmlhLWxhYmVsbGVkYnk9XCJmb290ZXJDb25uZWN0SGVhZGluZ1wiPlxuICAgICAgICAgICAgICAgIDxoMyBpZD1cImZvb3RlckNvbm5lY3RIZWFkaW5nXCI+Q29ubmVjdDwvaDM+XG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiaGJsbC1mb290ZXItc29jaWFsLWxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vd3d3LmZhY2Vib29rLmNvbS9ieXVoYmxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhibGwtZm9vdGVyLXNvY2lhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cImh0dHBzOi8vbWVkaWEubGliLmJ5dS5lZHUvd2ViLWFzc2V0cy9pbWFnZXMvMS4wLjAvZmFjZWJvb2stY29sb3Itcm91bmQuc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiRmFjZWJvb2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cIkZhY2Vib29rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly93d3cuaW5zdGFncmFtLmNvbS9ieXVfaGJsbC9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGJsbC1mb290ZXItc29jaWFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9tZWRpYS5saWIuYnl1LmVkdS93ZWItYXNzZXRzL2ltYWdlcy8xLjAuMC9pbnN0YWdyYW0tY29sb3Iuc3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiSW5zdGFncmFtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJJbnN0YWdyYW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiaGJsbC1mb290ZXItYm90dG9tXCIgYXJpYS1sYWJlbD1cIkJvdHRvbS1tb3N0IHBhcnQgb2YgdGhlIGZvb3RlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhibGwtZm9vdGVyLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vYnl1LmVkdVwiIHRhcmdldD1cIl9ibGFua1wiPkJSSUdIQU0gWU9VTkcgVU5JVkVSU0lUWTwvYT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICBQUk9WTywgVVQgODQ2MDIsIFVTQSB8IDxhIGhyZWY9XCJzbXM6ODAxLTQyMi02MDYxXCI+KDgwMSkgNDIyLTYwNjE8L2E+XG4gICAgICAgICAgICA8YnIgLz4mY29weTsmbmJzcDt7eyBkYXRlIHwgZGF0ZTogJ3l5eXknIH19XG4gICAgICAgICAgICBBTEwgUklHSFRTIFJFU0VSVkVEXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGJsbC1mb290ZXItcHJpdmFjeVwiPlxuICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL3ByaXZhY3kuYnl1LmVkdS9cIiB0YXJnZXQ9XCJfYmxhbmtcIj5Qcml2YWN5IE5vdGljZTwvYT5cbiAgICAgICAgICAgICAgICB8XG4gICAgICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vaW5mb3NlYy5ieXUuZWR1L2Nvb2tpZS1wcmVmc1wiIHRhcmdldD1cIl9ibGFua1wiXG4gICAgICAgICAgICAgICAgICAgID5Db29raWUgUHJlZmVyZW5jZXM8L2FcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9zZWN0aW9uPlxuICAgIDwvZGl2PlxuPC9mb290ZXI+XG5cbjxkaWFsb2dcbiAgICAjZW1haWxEaWFsb2dcbiAgICBvbm1vdXNlZG93bj1cImV2ZW50LnRhcmdldCA9PT0gdGhpcyAmJiB0aGlzLmNsb3NlKClcIlxuICAgIChjbG9zZSk9XCJoYW5kbGVDbG9zZSgpXCJcbiAgICBkYXRhLXRlc3RpZD1cImRpYWxvZ1wiXG4+XG4gICAgQGlmICghaXNFbWFpbFNlbnQpIHtcbiAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJlbWFpbEZvcm1cIiAoc3VibWl0KT1cInNlbmRFbWFpbCgpXCIgZGF0YS10ZXN0aWQ9XCJmb3JtXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGJsbC1mb290ZXItZW1haWwtdG9wXCI+XG4gICAgICAgICAgICAgICAgPGgxPkVtYWlsIFVzPC9oMT5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJlbWFpbERpYWxvZy5jbG9zZSgpXCIgdHlwZT1cImJ1dHRvblwiIGRhdGEtdGVzdGlkPVwiY2xvc2VCdG5cIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IGNsb3NlIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImhibGxGb290ZXJFbWFpbE5hbWVcIj5OYW1lPC9sYWJlbD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGlkPVwiaGJsbEZvb3RlckVtYWlsTmFtZVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiZW1haWxOYW1lSW5wdXRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJoYmxsRm9vdGVyRW1haWxFbWFpbFwiPlxuICAgICAgICAgICAgICAgIEVtYWlsIChwbGVhc2UgcHJvdmlkZSBpZiB5b3Ugd291bGQgbGlrZSBhIHJlc3BvbnNlKTwvbGFiZWxcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGlkPVwiaGJsbEZvb3RlckVtYWlsRW1haWxcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJlbWFpbEVtYWlsSW5wdXRcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJoYmxsRm9vdGVyRW1haWxFbWFpbFwiPlxuICAgICAgICAgICAgICAgIFF1ZXN0aW9uIG9yIGNvbW1lbnQmbmJzcDs8c3BhbiBjbGFzcz1cImhibGwtZm9vdGVyLWVtYWlsLXJlcXVpcmVkXCI+Kjwvc3Bhbj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICAgICAgICBpZD1cImhibGxGb290ZXJFbWFpbEVtYWlsXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibWVzc2FnZVwiXG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJlbWFpbE1lc3NhZ2VJbnB1dFwiXG4gICAgICAgICAgICA+PC90ZXh0YXJlYT5cbiAgICAgICAgICAgIEBpZiAoaXNTdWJtaXR0ZWQgJiYgZW1haWxGb3JtLmNvbnRyb2xzLm1lc3NhZ2UuaW52YWxpZCkge1xuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoYmxsLWZvb3Rlci1lbWFpbC1yZXF1aXJlZCBoYmxsLWZvb3Rlci1lbWFpbC1lcnJvclwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY29tbWVudEVycm9yXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBoYmxsLWZvb3Rlci1lbWFpbC1lcnJvci1pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz5QbGVhc2UgZmlsbCBvdXQgdGhpcyBmaWVsZDwvc3Ryb25nPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPGxhYmVsIGZvcj1cImhibGxGb290ZXJFbWFpbFN0YXR1c1wiPlJvbGU8L2xhYmVsPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoYmxsLWZvb3Rlci1zZWxlY3Qtd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJoYmxsRm9vdGVyRW1haWxTdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzdGF0dXNcIlxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImVtYWlsU3RhdHVzSW5wdXRcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBzZWxlY3RlZCB2YWx1ZT1cIlwiPjwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICBAZm9yIChzdGF0dXMgb2YgdXNlclN0YXR1c2VzIHwgc2xpY2U6IDE7IHRyYWNrIHN0YXR1cykge1xuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiBbdmFsdWVdPVwic3RhdHVzXCI+e3sgc3RhdHVzIH19PC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoYmxsLWZvb3Rlci1lbWFpbC1ib3R0b20tYmFyXCI+XG4gICAgICAgICAgICAgICAgQGlmIChoYXNDb25uZWN0aW9uRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoYmxsLWZvb3Rlci1jb25uZWN0aW9uLWVycm9yXCIgZGF0YS10ZXN0aWQ9XCJjb25uZWN0aW9uRXJyb3JcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpPlRoZXJlIHdhcyBhbiBlcnJvciBzZW5kaW5nIHlvdXIgZW1haWwuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuPC9pPlxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaWxsLWJ0bi0tY29tcG9uZW50c1wiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNMb2FkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZW5kRW1haWxCdG5cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgU2VuZFxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZm9ybT5cbiAgICB9IEBlbHNlIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cImhibGwtZm9vdGVyLWVtYWlsLXN1Y2Nlc3NcIiBkYXRhLXRlc3RpZD1cInN1Y2Nlc3NNZXNzYWdlXCI+XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICBZb3VyIGVtYWlsIHdhcyBzZW50IHN1Y2Nlc3NmdWxseS4gSWYgeW91IHN1cHBsaWVkIHlvdXIgZW1haWwgYWRkcmVzcywgd2Ugd2lsbCBnZXRcbiAgICAgICAgICAgICAgICBiYWNrIHRvIHlvdSBzaG9ydGx5LjxiciAvPlRoYW5rIHlvdSFcbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJwaWxsLWJ0bi0tY29tcG9uZW50c1wiIChjbGljayk9XCJlbWFpbERpYWxvZy5jbG9zZSgpXCIgdHlwZT1cImJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIENsb3NlXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9kaWFsb2c+XG4iXX0=
|
|
@@ -87,6 +87,12 @@ export class HbllHeaderComponent {
|
|
|
87
87
|
if (mainContent) {
|
|
88
88
|
mainContent.focus();
|
|
89
89
|
}
|
|
90
|
+
else {
|
|
91
|
+
const mainContentAria = document.querySelector('[aria-label="Main content area"]');
|
|
92
|
+
if (mainContentAria) {
|
|
93
|
+
mainContentAria.focus();
|
|
94
|
+
}
|
|
95
|
+
}
|
|
90
96
|
}
|
|
91
97
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: HbllHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
92
98
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.0", type: HbllHeaderComponent, isStandalone: true, selector: "lib-hbll-header", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: false, isRequired: false, transformFunction: null }, mainsitebaseurl: { classPropertyName: "mainsitebaseurl", publicName: "mainsitebaseurl", isSignal: false, isRequired: false, transformFunction: null }, showImpersonateButton: { classPropertyName: "showImpersonateButton", publicName: "showImpersonateButton", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { openImpersonationModal: "openImpersonationModal", login: "login", logout: "logout" }, host: { listeners: { "window:resize": "onResize($event)" } }, viewQueries: [{ propertyName: "accountInfoEl", first: true, predicate: ["accountInfo"], descendants: true, isSignal: true }, { propertyName: "hoursEl", first: true, predicate: ["hours"], descendants: true, isSignal: true }, { propertyName: "header", first: true, predicate: ["header"], descendants: true }], ngImport: i0, template: "<header\n role=\"banner\"\n class=\"hbll-header-wrapper\"\n #header\n [ngClass]=\"{ 'hbll-header-desktop': !isScreenSmall() }\"\n>\n <a [href]=\"mainsitebaseurl\">\n <h1>\n <img\n src=\"https://media.lib.byu.edu/web-assets/images/2.0.0/byu-hbll-logo-full.svg\"\n alt=\"BYU Library Logo\"\n />\n </h1>\n </a>\n <button (click)=\"focusMainContent()\" class=\"skip-link\">Skip to main content</button>\n <div id=\"libraryInfo\" class=\"hbll-header-wrapper\">\n @if (!isScreenSmall()) {\n <div #hours id=\"mainLibraryHours\" data-testid=\"desktopHours\">\n <button\n (click)=\"showLibraryHours = !showLibraryHours\"\n class=\"hbll-header-wrapper\"\n data-testid=\"hoursBtn\"\n >\n <ng-container *ngTemplateOutlet=\"hoursTextBlock\"></ng-container>\n </button>\n @if (!isScreenSmall() && showLibraryHours) {\n <div\n @libHbllFadeInOut\n id=\"libraryHoursDropdown\"\n data-testid=\"libraryHoursDropdown\"\n >\n <section class=\"hbll-header-section\">\n <h2 class=\"hbll-header-header\">Regular Hours</h2>\n <div class=\"hbll-header-detail\">\n <h3 class=\"hbll-header-item\">Monday - Friday</h3>\n <h3 class=\"hbll-header-item\">Saturday</h3>\n <h3 class=\"hbll-header-item\">Sunday</h3>\n </div>\n <div class=\"hbll-header-hours\">\n <div class=\"hbll-header-item\">7 a.m - midnight</div>\n <div class=\"hbll-header-item\">8 a.m - midnight</div>\n <div class=\"hbll-header-item\">Closed*</div>\n </div>\n <div class=\"hbll-header-hours-note\">\n * Family history ONLY 4 p.m. - 8 p.m\n <ul>\n <li><span>No checkouts after 11:45 p.m.</span></li>\n <li>\n <span>All services closed 10:45 to noon on Tuesdays</span>\n </li>\n </ul>\n </div>\n </section>\n <section class=\"hbll-header-section\">\n <h2 class=\"hbll-header-header\">Upcoming Exceptions</h2>\n @if (hoursExceptions$ | async; as exceptions) {\n <div class=\"hbll-header-detail\" data-testid=\"exceptionsDetail\">\n @for (exception of exceptions; track exception.date) {\n <h3 class=\"hbll-header-item\">\n {{ exception.date | date: 'MMM. d, YYYY' }}\n </h3>\n } @empty {\n No upcoming exceptions\n }\n </div>\n <div class=\"hbll-header-hours\" data-testid=\"exceptionsHours\">\n @for (exception of exceptions; track exception.date) {\n <div class=\"hbll-header-item\">\n {{ exception.exception_title }}\n </div>\n }\n </div>\n } @else {\n <div class=\"lib-spinner\" data-testid=\"exceptionsSpinner\"></div>\n }\n </section>\n <section class=\"hbll-header-section\">\n <h2 class=\"hbll-header-header\">Library Cafe</h2>\n <div class=\"hbll-header-detail\">\n <h3 class=\"hbll-header-item\">Bagel Bubble</h3>\n <h3 class=\"hbll-header-item\">Provecho</h3>\n </div>\n <div class=\"hbll-header-hours\">\n <div class=\"hbll-header-item\">7 a.m - 11 p.m.</div>\n <div class=\"hbll-header-item\">10:30 a.m - 2 p.m.</div>\n </div>\n </section>\n <a [href]=\"mainsitebaseurl + '/about/hours'\"\n >See all hours\n <span class=\"material-symbols-outlined\"> chevron_right </span></a\n >\n </div>\n }\n </div>\n }\n <div id=\"accountInfo\" #accountInfo>\n <button\n (click)=\"isLoggedIn ? (showAccountDropdown = !showAccountDropdown) : login.emit()\"\n class=\"hbll-header-wrapper\"\n id=\"accountBtn\"\n data-testid=\"accountBtn\"\n >\n <span class=\"material-symbols-outlined hbll-header-left-icon\"> person </span>\n @if (!isScreenSmall()) {\n <span class=\"hbll-header-name\" data-testid=\"name\">{{\n isLoggedIn ? ' ' + name : 'Login'\n }}</span>\n }\n @if (isLoggedIn) {\n <span class=\"material-symbols-outlined\" data-testid=\"loginDropdown\">\n arrow_drop_down\n </span>\n }\n </button>\n @if (isLoggedIn && showAccountDropdown) {\n <div @libHbllFadeInOut id=\"accountDropdown\" data-testid=\"accountDropdown\">\n <a [href]=\"mainsitebaseurl + '/account'\">My Account</a>\n <a [href]=\"mainsitebaseurl + '/account'\">My Items</a>\n <a [href]=\"mainsitebaseurl + '/account/request'\">Request an item</a>\n <a [href]=\"mainsitebaseurl + '/account/saved'\">Saved</a>\n <a [href]=\"mainsitebaseurl + '/account/course'\">Courses</a>\n <a [href]=\"mainsitebaseurl + '/account/rooms'\">Rooms</a>\n <a [href]=\"mainsitebaseurl + '/account/preferences'\">Preferences</a>\n @if (showImpersonateButton()) {\n <button\n (click)=\"openImpersonationModal.emit(); showAccountDropdown = false\"\n class=\"hbll-header-impersonate-btn\"\n >\n Impersonate\n </button>\n }\n <button (click)=\"logout.emit()\" data-testid=\"logout\">Logout</button>\n </div>\n }\n </div>\n @if (isScreenSmall()) {\n <div id=\"mobileNav\">\n <button\n class=\"hbll-header-wrapper\"\n data-testid=\"mobileNavBtn\"\n (click)=\"openSidebarNav()\"\n >\n <span class=\"material-symbols-outlined hbll-header-icon\"> menu </span>\n </button>\n @if (showNavBar) {\n <div\n id=\"navWrapper\"\n data-testid=\"mobileNav\"\n [@libHbllSlideInOutRightLeft]=\"{\n value: '',\n params: { xOffset: '400px' },\n }\"\n >\n <button\n id=\"closeMobileNavBtn\"\n class=\"hbll-header-wrapper\"\n data-testid=\"closeMobileNavBtn\"\n (click)=\"closeSidebarNav()\"\n >\n <span class=\"material-symbols-outlined hbll-header-icon\"> close </span>\n </button>\n <lib-nav-bar\n [mainSiteBaseUrl]=\"mainsitebaseurl\"\n [height]=\"mobileSidebarHeight\"\n />\n </div>\n <div\n @libHbllFadeInOut\n (click)=\"showNavBar = false\"\n class=\"hbll-nav-backdrop\"\n data-testid=\"mobileNavBackdrop\"\n ></div>\n }\n </div>\n }\n </div>\n</header>\n\n@if (!isScreenSmall()) {\n <div id=\"mainNav\">\n <lib-nav-bar [mainSiteBaseUrl]=\"mainsitebaseurl\" />\n </div>\n}\n@if (isScreenSmall()) {\n <a\n id=\"mobileLibraryHours\"\n [href]=\"mainsitebaseurl + '/about/hours'\"\n class=\"hbll-header-wrapper\"\n data-testid=\"mobileHours\"\n >\n <ng-container *ngTemplateOutlet=\"hoursTextBlock\"></ng-container>\n </a>\n}\n\n<ng-template #hoursTextBlock>\n @if (libraryHours()) {\n <span class=\"material-symbols-outlined hbll-header-left-icon\"> schedule </span>\n {{\n libraryHours()?.is_closed\n ? 'CLOSED'\n : \"Today's hours: \" +\n (libraryHours()!.date | libraryHours: libraryHours()!.open_time) +\n ' - ' +\n (libraryHours()!.date | libraryHours: libraryHours()!.close_time)\n }}\n }\n</ng-template>\n", styles: [".lib-spinner{border:.3em solid #dfe9f7;border-top:.3em solid #4070b0;border-radius:100%;width:30px;height:30px;animation:loadingSpinnerAnimate 1s ease infinite;position:relative}@keyframes loadingSpinnerAnimate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}*{box-sizing:border-box;text-decoration:none;font-size:1em}*:not(.material-symbols-outlined){font-family:inherit}.hbll-header-wrapper{display:flex;align-items:center;font-size:1em}.skip-link{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}.skip-link:focus{position:static;width:auto;height:auto;overflow:visible;margin-left:12px;background:#fff;color:#00285b;font-size:1em;font-weight:580;padding:8px 16px;z-index:1000;text-decoration:none;border:3px solid #0050b7;border-radius:4px;cursor:pointer}.skip-link:hover{color:#00285b;background-color:#e3edf8;border:3px solid #e3edf8}.hbll-nav-backdrop{background-color:#000;opacity:.3;height:100vh;width:100vw;left:0;top:0;transform:translate(-100vw);position:absolute;z-index:-1}#mobileLibraryHours{color:#141414;background-color:#e6e6e6;font-size:1em;min-height:2em}#mobileLibraryHours.hbll-header-wrapper{width:100%;justify-content:center;padding:.2em}.hbll-header-icon,.hbll-header-left-icon{font-size:1.2em}.hbll-header-left-icon{margin-right:.2em}header{background-color:#002e5d;display:flex;align-items:center}header a h1{font-size:100%;margin:0;height:1.8em}header a h1 img{height:100%;padding:0 0 0 .6em}header #libraryInfo{margin-left:auto;color:#fff}header #libraryInfo a,header #libraryInfo button{transition:color .2s ease-in-out;color:#fffc}header #libraryInfo a:hover,header #libraryInfo button:hover{color:#fff}header #libraryInfo #accountInfo button,header #libraryInfo #mobileNav button{padding:.8em .6em}header #libraryInfo #accountBtn .name{margin-left:.4em}header #libraryInfo #mobileNav{position:relative;z-index:11}header #libraryInfo #mobileNav #navWrapper{color:#fff;position:absolute;top:0;right:0}header #libraryInfo #mobileNav #navWrapper #closeMobileNavBtn{background-color:#0047ba;margin-left:auto;padding-left:.9em}header #libraryInfo :last-child button{padding-right:1em!important}header #libraryInfo .hbll-header-icon,header #libraryInfo .hbll-header-left-icon{font-size:1.6em}header #libraryInfo #accountInfo{position:relative}header #libraryInfo #accountInfo #accountDropdown{font-size:1em;text-wrap:nowrap;position:absolute;background-color:#002e5d;top:100%;right:-32px;z-index:11;background-color:#233753}header #libraryInfo #accountInfo #accountDropdown .hbll-header-impersonate-btn{color:#ca7ad1cc}header #libraryInfo #accountInfo #accountDropdown .hbll-header-impersonate-btn:hover{color:#ca7ad1}header #libraryInfo #accountInfo #accountDropdown a,header #libraryInfo #accountInfo #accountDropdown button{display:block;width:100%;text-align:left;padding:.4em 1.2em;font-size:1.1em}header #libraryInfo #accountInfo #accountDropdown a:first-child,header #libraryInfo #accountInfo #accountDropdown button:first-child{margin-bottom:.4em;padding-top:.6em;padding-bottom:.6em;border-bottom:1px solid rgba(255,255,255,.3)}header #libraryInfo #accountInfo #accountDropdown a:last-child,header #libraryInfo #accountInfo #accountDropdown button:last-child{margin-top:.4em;border-top:1px solid rgba(255,255,255,.3);padding-top:.6em;padding-bottom:.6em}header #libraryInfo #accountInfo #accountDropdown:before{content:\"\";width:0;height:0;border-style:solid;border-width:0 .6em .6em .6em;border-color:transparent transparent hsl(214,41%,23%) transparent;position:absolute;bottom:100%;right:50%;transform:translate(50%);z-index:inherit}header.hbll-header-desktop{padding:0 2em}header.hbll-header-desktop #libraryInfo #mainLibraryHours{position:relative;margin-right:1em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown{z-index:12;background-color:#fff;border-radius:4px;border:1px solid #d2d2d2;position:absolute;color:#000;padding:2em;top:100%;max-width:400%;right:50%;transform:translate(50%);margin-top:.6em;margin-right:2rem}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section{display:grid;grid-template-columns:repeat(4,7.5em);grid-template-rows:1fr;grid-column-gap:0px;grid-row-gap:0px;margin-bottom:1em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section h2{margin:0}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours-note{grid-column:2/4;font-size:.8em;margin-top:1em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours-note ul{list-style-type:disc;list-style-position:inside;margin-left:.8em;padding:0}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours-note ul li span{left:-8px;position:relative}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-header{font-weight:600;font-size:1em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail,header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours{margin-top:.2em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail .hbll-header-item+.hbll-header-item,header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours .hbll-header-item+.hbll-header-item{margin-top:.3em}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail h3,header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours h3{margin:0;font-size:inherit}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-detail{font-weight:600;white-space:nowrap}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown .hbll-header-section .hbll-header-hours{white-space:nowrap}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown a{color:#4070b0;display:flex;align-items:center;float:right}header.hbll-header-desktop #libraryInfo #mainLibraryHours #libraryHoursDropdown a:hover{color:#6892ca}header.hbll-header-desktop #libraryInfo #accountInfo #accountDropdown{right:auto;left:50%;transform:translate(-50%)}button{background-color:transparent;border:none;cursor:pointer;font-family:inherit;font-size:inherit;color:inherit;padding:0}\n"], dependencies: [{ kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: LibraryHoursPipe, name: "libraryHours" }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "component", type: NavBarComponent, selector: "lib-nav-bar", inputs: ["mainSiteBaseUrl", "height"] }], animations: [libHbllSlideInOutRightLeft, libHbllFadeInOut] }); }
|
|
@@ -118,4 +124,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImpor
|
|
|
118
124
|
type: HostListener,
|
|
119
125
|
args: ['window:resize', ['$event']]
|
|
120
126
|
}] } });
|
|
121
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGJsbC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2hibGwtaGVhZGVyL2hibGwtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9oYmxsLWhlYWRlci9oYmxsLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FB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ZTtzQkFBdkIsS0FBSztnQkFHSSxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkEwREMsUUFBUTtzQkFEZixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSwgRGF0ZVBpcGUsIERPQ1VNRU5ULCBMb3dlckNhc2VQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxuICAgIGluamVjdCxcbiAgICBpbnB1dCxcbiAgICB2aWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTmF2QmFyQ29tcG9uZW50IH0gZnJvbSAnLi9uYXYtYmFyL25hdi1iYXIuY29tcG9uZW50JztcbmltcG9ydCB7IGxpYkhibGxGYWRlSW5PdXQsIGxpYkhibGxTbGlkZUluT3V0UmlnaHRMZWZ0IH0gZnJvbSAnLi4vYW5pbWF0aW9ucy9hbmltYXRpb25zJztcbmltcG9ydCB7IEJyZWFrcG9pbnRPYnNlcnZlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9sYXlvdXQnO1xuaW1wb3J0IHsgaXNTY3JlZW5TbWFsbFNpZ25hbCB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IExpYnJhcnlIb3Vyc1BpcGUgfSBmcm9tICcuL3BpcGVzL2xpYnJhcnktaG91cnMucGlwZSc7XG5pbXBvcnQgeyBtYXAsIG9mLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFeHBhbmRDb2xsYXBzZUNvbXBvbmVudCB9IGZyb20gJy4uL2V4cGFuZC1jb2xsYXBzZS9leHBhbmQtY29sbGFwc2UuY29tcG9uZW50JztcbmltcG9ydCB7IExpYnJhcnlIb3VycyB9IGZyb20gJy4vbW9kZWxzL2xpYnJhcnktaG91cnMnO1xuXG5leHBvcnQgY29uc3QgTElCUkFSWV9IT1VSU19BUElfVVJMID0gJ2h0dHBzOi8vYXBwcy5saWIuYnl1LmVkdS9saWJyYXJ5aG91cnMvYXBpL2hvdXJzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdsaWItaGJsbC1oZWFkZXInLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBEYXRlUGlwZSxcbiAgICAgICAgTG93ZXJDYXNlUGlwZSxcbiAgICAgICAgTGlicmFyeUhvdXJzUGlwZSxcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBOYXZCYXJDb21wb25lbnQsXG4gICAgICAgIEV4cGFuZENvbGxhcHNlQ29tcG9uZW50LFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2hibGwtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vaGJsbC1oZWFkZXIuY29tcG9uZW50LnNjc3MnLFxuICAgIGFuaW1hdGlvbnM6IFtsaWJIYmxsU2xpZGVJbk91dFJpZ2h0TGVmdCwgbGliSGJsbEZhZGVJbk91dF0sXG59KVxuZXhwb3J0IGNsYXNzIEhibGxIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHIyID0gaW5qZWN0KFJlbmRlcmVyMik7XG4gICAgLy8gVE9ETzogZG9lcyB0aGlzIGluY3JlYXNlIGJ1bmRsZSBzaXplIG1vcmUgdGhhbiBpdCdzIHdvcnRoPyB2cyBmZXRjaD9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBibyA9IGluamVjdChCcmVha3BvaW50T2JzZXJ2ZXIpO1xuICAgIHByaXZhdGUgZG9jID0gaW5qZWN0KERPQ1VNRU5UKTtcblxuICAgIEBWaWV3Q2hpbGQoJ2hlYWRlcicpIGhlYWRlciE6IEVsZW1lbnRSZWY7XG5cbiAgICAvLyAtLS0gQVBJIC0tLVxuICAgIC8vIFRPRE86IENvbnZlcnQgdGhlc2UgdG8gc2lnbmFsIGlucHV0czogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9pc3N1ZXMvNTc3NTVcbiAgICBASW5wdXQoKSBuYW1lID0gJyc7XG4gICAgQElucHV0KCkgbWFpbnNpdGViYXNldXJsID0gJ2h0dHBzOi8vbGliLmJ5dS5lZHUnO1xuICAgIC8vIFRPRE86IHRoaXMgaXMgYSBzaW5nYWwgaW5wdXQgY3VycmVudGx5IGJlY2F1c2UgaXQgd29uJ3QgYmUgdXNlZCBieSBhbnkgb3RoZXIgYXBwbGljYXRpb25zIHRoYW4gQW5ndWxhciBvbmVzLlxuICAgIHNob3dJbXBlcnNvbmF0ZUJ1dHRvbiA9IGlucHV0KGZhbHNlKTtcbiAgICBAT3V0cHV0KCkgb3BlbkltcGVyc29uYXRpb25Nb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgbG9naW4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIGxvZ291dCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICAvLyAtLS0tLS0tLS0tLVxuICAgIHByaXZhdGUgZm9ybWF0RGF0ZUZvckhvdXJzID0gKGRhdGU6IERhdGUpID0+XG4gICAgICAgIGAke2RhdGUuZ2V0RnVsbFllYXIoKX0tJHtTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKX0tJHtTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgICBwcml2YXRlIGFjY291bnRJbmZvRWwgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2FjY291bnRJbmZvJyk7XG4gICAgcHJpdmF0ZSBob3Vyc0VsID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdob3VycycpO1xuXG4gICAgcHJvdGVjdGVkIGdldCBpc0xvZ2dlZEluKCkge1xuICAgICAgICByZXR1cm4gISF0aGlzLm5hbWU7XG4gICAgfVxuXG4gICAgLy8gSG91cnNcbiAgICBwcm90ZWN0ZWQgbGlicmFyeUhvdXJzID0gdG9TaWduYWwodGhpcy5odHRwLmdldDxMaWJyYXJ5SG91cnM+KExJQlJBUllfSE9VUlNfQVBJX1VSTCkpO1xuICAgIHByb3RlY3RlZCBob3Vyc0V4Y2VwdGlvbnMkID0gb2YobnVsbCkucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHtcbiAgICAgICAgICAgIC8vIEdldCBleGNlcHRpb25zIGZyb20gdG9kYXkgdG8gdHdvIG1vbnRocyBvdXRcbiAgICAgICAgICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gdGhpcy5mb3JtYXREYXRlRm9ySG91cnModG9kYXkpO1xuICAgICAgICAgICAgY29uc3QgbmV3RGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICBuZXdEYXRlLnNldE1vbnRoKHRvZGF5LmdldE1vbnRoKCkgKyAyKTtcbiAgICAgICAgICAgIGNvbnN0IHN0b3AgPSB0aGlzLmZvcm1hdERhdGVGb3JIb3VycyhuZXdEYXRlKTtcbiAgICAgICAgICAgIHJldHVybiBbc3RhcnQsIHN0b3BdO1xuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKChbc3RhcnQsIHN0b3BdOiBzdHJpbmdbXSkgPT5cbiAgICAgICAgICAgIHRoaXMuaHR0cFxuICAgICAgICAgICAgICAgIC5nZXQ8TGlicmFyeUhvdXJzW10+KGAke0xJQlJBUllfSE9VUlNfQVBJX1VSTH0/c3RhcnQ9JHtzdGFydH0mc3RvcD0ke3N0b3B9YClcbiAgICAgICAgICAgICAgICAucGlwZShtYXAoKHJlcykgPT4gcmVzLmZpbHRlcigoZGF5KSA9PiBkYXkuaGFzX2V4Y2VwdGlvbikuc2xpY2UoMCwgNSkpKSxcbiAgICAgICAgKSxcbiAgICAgICAgc2hhcmVSZXBsYXkoMSksXG4gICAgKTtcblxuICAgIHByb3RlY3RlZCBzaG93QWNjb3VudERyb3Bkb3duID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIHNob3dMaWJyYXJ5SG91cnMgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgbW9iaWxlU2lkZWJhckhlaWdodCA9IDA7XG4gICAgcHJvdGVjdGVkIHNob3dOYXZCYXIgPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgaXNTY3JlZW5TbWFsbCA9IGlzU2NyZWVuU21hbGxTaWduYWwodGhpcy5ibyk7XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucjIubGlzdGVuKCd3aW5kb3cnLCAnY2xpY2snLCAoZTogRXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5hY2NvdW50SW5mb0VsKCk/Lm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZS50YXJnZXQpKVxuICAgICAgICAgICAgICAgIHRoaXMuc2hvd0FjY291bnREcm9wZG93biA9IGZhbHNlO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmhvdXJzRWwoKT8ubmF0aXZlRWxlbWVudC5jb250YWlucyhlLnRhcmdldCkpIHRoaXMuc2hvd0xpYnJhcnlIb3VycyA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXRNb2JpbGVTaWRlYmFySGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9wZW5TaWRlYmFyTmF2ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnNob3dOYXZCYXIgPSB0cnVlO1xuICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG4gICAgICAgIHRoaXMucjIuc2V0U3R5bGUodGhpcy5kb2MuYm9keSwgJ292ZXJmbG93JywgJ2hpZGRlbicpO1xuICAgIH07XG5cbiAgICBwcm90ZWN0ZWQgY2xvc2VTaWRlYmFyTmF2ID0gKCkgPT4ge1xuICAgICAgICB0aGlzLnNob3dOYXZCYXIgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5yMi5yZW1vdmVTdHlsZSh0aGlzLmRvYy5ib2R5LCAnb3ZlcmZsb3cnKTtcbiAgICB9O1xuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScsIFsnJGV2ZW50J10pXG4gICAgcHJpdmF0ZSBvblJlc2l6ZSgpIHtcbiAgICAgICAgdGhpcy5zZXRNb2JpbGVTaWRlYmFySGVpZ2h0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRNb2JpbGVTaWRlYmFySGVpZ2h0ID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBoZWFkZXJIZWlnaHQgPSB0aGlzLmhlYWRlci5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcblxuICAgICAgICAvLyBUT0RPOiByZW1vdmUgYmFubmVyIGNvZGUgYWZ0ZXIgYmFubmVyIGlzIHJlbW92ZWQgZnJvbSBiZXRhXG4gICAgICAgIGNvbnN0IGJhbm5lckVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYmV0YS1uYXZpZ2F0aW9uLWJhbm5lcicpO1xuICAgICAgICBjb25zdCBiYW5uZXJIZWlnaHQgPSBiYW5uZXJFbGVtZW50ID8gYmFubmVyRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQgfHwgMCA6IDA7XG5cbiAgICAgICAgdGhpcy5tb2JpbGVTaWRlYmFySGVpZ2h0ID0gd2luZG93LmlubmVySGVpZ2h0IC0gaGVhZGVySGVpZ2h0IC0gYmFubmVySGVpZ2h0O1xuICAgIH07XG5cbiAgICBmb2N1c01haW5Db250ZW50KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBtYWluQ29udGVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5tYWluLWNvbnRlbnQnKSBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICBpZiAobWFpbkNvbnRlbnQpIHtcbiAgICAgICAgICAgIG1haW5Db250ZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCI8aGVhZGVyXG4gICAgcm9sZT1cImJhbm5lclwiXG4gICAgY2xhc3M9XCJoYmxsLWhlYWRlci13cmFwcGVyXCJcbiAgICAjaGVhZGVyXG4gICAgW25nQ2xhc3NdPVwieyAnaGJsbC1oZWFkZXItZGVza3RvcCc6ICFpc1NjcmVlblNtYWxsKCkgfVwiXG4+XG4gICAgPGEgW2hyZWZdPVwibWFpbnNpdGViYXNldXJsXCI+XG4gICAgICAgIDxoMT5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBzcmM9XCJodHRwczovL21lZGlhLmxpYi5ieXUuZWR1L3dlYi1hc3NldHMvaW1hZ2VzLzIuMC4wL2J5dS1oYmxsLWxvZ28tZnVsbC5zdmdcIlxuICAgICAgICAgICAgICAgIGFsdD1cIkJZVSBMaWJyYXJ5IExvZ29cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9oMT5cbiAgICA8L2E+XG4gICAgPGJ1dHRvbiAoY2xpY2spPVwiZm9jdXNNYWluQ29udGVudCgpXCIgY2xhc3M9XCJza2lwLWxpbmtcIj5Ta2lwIHRvIG1haW4gY29udGVudDwvYnV0dG9uPlxuICAgIDxkaXYgaWQ9XCJsaWJyYXJ5SW5mb1wiIGNsYXNzPVwiaGJsbC1oZWFkZXItd3JhcHBlclwiPlxuICAgICAgICBAaWYgKCFpc1NjcmVlblNtYWxsKCkpIHtcbiAgICAgICAgICAgIDxkaXYgI2hvdXJzIGlkPVwibWFpbkxpYnJhcnlIb3Vyc1wiIGRhdGEtdGVzdGlkPVwiZGVza3RvcEhvdXJzXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0xpYnJhcnlIb3VycyA9ICFzaG93TGlicmFyeUhvdXJzXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoYmxsLWhlYWRlci13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJob3Vyc0J0blwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaG91cnNUZXh0QmxvY2tcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICBAaWYgKCFpc1NjcmVlblNtYWxsKCkgJiYgc2hvd0xpYnJhcnlIb3Vycykge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBAbGliSGJsbEZhZGVJbk91dFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJsaWJyYXJ5SG91cnNEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImxpYnJhcnlIb3Vyc0Ryb3Bkb3duXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJoYmxsLWhlYWRlci1zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiaGJsbC1oZWFkZXItaGVhZGVyXCI+UmVndWxhciBIb3VyczwvaDI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhibGwtaGVhZGVyLWRldGFpbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJoYmxsLWhlYWRlci1pdGVtXCI+TW9uZGF5IC0gRnJpZGF5PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiaGJsbC1oZWFkZXItaXRlbVwiPlNhdHVyZGF5PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiaGJsbC1oZWFkZXItaXRlbVwiPlN1bmRheTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhibGwtaGVhZGVyLWhvdXJzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoYmxsLWhlYWRlci1pdGVtXCI+NyBhLm0gLSBtaWRuaWdodDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGJsbC1oZWFkZXItaXRlbVwiPjggYS5tIC0gbWlkbmlnaHQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhibGwtaGVhZGVyLWl0ZW1cIj5DbG9zZWQqPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhibGwtaGVhZGVyLWhvdXJzLW5vdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBGYW1pbHkgaGlzdG9yeSBPTkxZIDQgcC5tLiAtIDggcC5tXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT48c3Bhbj5ObyBjaGVja291dHMgYWZ0ZXIgMTE6NDUgcC5tLjwvc3Bhbj48L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkFsbCBzZXJ2aWNlcyBjbG9zZWQgMTA6NDUgdG8gbm9vbiBvbiBUdWVzZGF5czwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz1cImhibGwtaGVhZGVyLXNlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9XCJoYmxsLWhlYWRlci1oZWFkZXJcIj5VcGNvbWluZyBFeGNlcHRpb25zPC9oMj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGhvdXJzRXhjZXB0aW9ucyQgfCBhc3luYzsgYXMgZXhjZXB0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGJsbC1oZWFkZXItZGV0YWlsXCIgZGF0YS10ZXN0aWQ9XCJleGNlcHRpb25zRGV0YWlsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChleGNlcHRpb24gb2YgZXhjZXB0aW9uczsgdHJhY2sgZXhjZXB0aW9uLmRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJoYmxsLWhlYWRlci1pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGV4Y2VwdGlvbi5kYXRlIHwgZGF0ZTogJ01NTS4gZCwgWVlZWScgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBAZW1wdHkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIHVwY29taW5nIGV4Y2VwdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoYmxsLWhlYWRlci1ob3Vyc1wiIGRhdGEtdGVzdGlkPVwiZXhjZXB0aW9uc0hvdXJzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChleGNlcHRpb24gb2YgZXhjZXB0aW9uczsgdHJhY2sgZXhjZXB0aW9uLmRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGJsbC1oZWFkZXItaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBleGNlcHRpb24uZXhjZXB0aW9uX3RpdGxlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibGliLXNwaW5uZXJcIiBkYXRhLXRlc3RpZD1cImV4Y2VwdGlvbnNTcGlubmVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJoYmxsLWhlYWRlci1zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiaGJsbC1oZWFkZXItaGVhZGVyXCI+TGlicmFyeSBDYWZlPC9oMj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGJsbC1oZWFkZXItZGV0YWlsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImhibGwtaGVhZGVyLWl0ZW1cIj5CYWdlbCBCdWJibGU8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJoYmxsLWhlYWRlci1pdGVtXCI+UHJvdmVjaG88L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoYmxsLWhlYWRlci1ob3Vyc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGJsbC1oZWFkZXItaXRlbVwiPjcgYS5tIC0gMTEgcC5tLjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGJsbC1oZWFkZXItaXRlbVwiPjEwOjMwIGEubSAtIDIgcC5tLjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwibWFpbnNpdGViYXNldXJsICsgJy9hYm91dC9ob3VycydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5TZWUgYWxsIGhvdXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+IGNoZXZyb25fcmlnaHQgPC9zcGFuPjwvYVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8ZGl2IGlkPVwiYWNjb3VudEluZm9cIiAjYWNjb3VudEluZm8+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImlzTG9nZ2VkSW4gPyAoc2hvd0FjY291bnREcm9wZG93biA9ICFzaG93QWNjb3VudERyb3Bkb3duKSA6IGxvZ2luLmVtaXQoKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJoYmxsLWhlYWRlci13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICBpZD1cImFjY291bnRCdG5cIlxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiYWNjb3VudEJ0blwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGhibGwtaGVhZGVyLWxlZnQtaWNvblwiPiBwZXJzb24gPC9zcGFuPlxuICAgICAgICAgICAgICAgIEBpZiAoIWlzU2NyZWVuU21hbGwoKSkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhibGwtaGVhZGVyLW5hbWVcIiBkYXRhLXRlc3RpZD1cIm5hbWVcIj57e1xuICAgICAgICAgICAgICAgICAgICAgICAgaXNMb2dnZWRJbiA/ICcmbmJzcDsnICsgbmFtZSA6ICdMb2dpbidcbiAgICAgICAgICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIEBpZiAoaXNMb2dnZWRJbikge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIiBkYXRhLXRlc3RpZD1cImxvZ2luRHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFycm93X2Ryb3BfZG93blxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICBAaWYgKGlzTG9nZ2VkSW4gJiYgc2hvd0FjY291bnREcm9wZG93bikge1xuICAgICAgICAgICAgICAgIDxkaXYgQGxpYkhibGxGYWRlSW5PdXQgaWQ9XCJhY2NvdW50RHJvcGRvd25cIiBkYXRhLXRlc3RpZD1cImFjY291bnREcm9wZG93blwiPlxuICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJtYWluc2l0ZWJhc2V1cmwgKyAnL2FjY291bnQnXCI+TXkgQWNjb3VudDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwibWFpbnNpdGViYXNldXJsICsgJy9hY2NvdW50J1wiPk15IEl0ZW1zPC9hPlxuICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJtYWluc2l0ZWJhc2V1cmwgKyAnL2FjY291bnQvcmVxdWVzdCdcIj5SZXF1ZXN0IGFuIGl0ZW08L2E+XG4gICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cIm1haW5zaXRlYmFzZXVybCArICcvYWNjb3VudC9zYXZlZCdcIj5TYXZlZDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwibWFpbnNpdGViYXNldXJsICsgJy9hY2NvdW50L2NvdXJzZSdcIj5Db3Vyc2VzPC9hPlxuICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJtYWluc2l0ZWJhc2V1cmwgKyAnL2FjY291bnQvcm9vbXMnXCI+Um9vbXM8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cIm1haW5zaXRlYmFzZXVybCArICcvYWNjb3VudC9wcmVmZXJlbmNlcydcIj5QcmVmZXJlbmNlczwvYT5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChzaG93SW1wZXJzb25hdGVCdXR0b24oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuSW1wZXJzb25hdGlvbk1vZGFsLmVtaXQoKTsgc2hvd0FjY291bnREcm9wZG93biA9IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhibGwtaGVhZGVyLWltcGVyc29uYXRlLWJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW1wZXJzb25hdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImxvZ291dC5lbWl0KClcIiBkYXRhLXRlc3RpZD1cImxvZ291dFwiPkxvZ291dDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgQGlmIChpc1NjcmVlblNtYWxsKCkpIHtcbiAgICAgICAgICAgIDxkaXYgaWQ9XCJtb2JpbGVOYXZcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGJsbC1oZWFkZXItd3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwibW9iaWxlTmF2QnRuXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5TaWRlYmFyTmF2KClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGhibGwtaGVhZGVyLWljb25cIj4gbWVudSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgQGlmIChzaG93TmF2QmFyKSB7XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwibmF2V3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cIm1vYmlsZU5hdlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbQGxpYkhibGxTbGlkZUluT3V0UmlnaHRMZWZ0XT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogJycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiB7IHhPZmZzZXQ6ICc0MDBweCcgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJjbG9zZU1vYmlsZU5hdkJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoYmxsLWhlYWRlci13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNsb3NlTW9iaWxlTmF2QnRuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VTaWRlYmFyTmF2KClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBoYmxsLWhlYWRlci1pY29uXCI+IGNsb3NlIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1uYXYtYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW21haW5TaXRlQmFzZVVybF09XCJtYWluc2l0ZWJhc2V1cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwibW9iaWxlU2lkZWJhckhlaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgQGxpYkhibGxGYWRlSW5PdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93TmF2QmFyID0gZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoYmxsLW5hdi1iYWNrZHJvcFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cIm1vYmlsZU5hdkJhY2tkcm9wXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgPC9kaXY+XG48L2hlYWRlcj5cblxuQGlmICghaXNTY3JlZW5TbWFsbCgpKSB7XG4gICAgPGRpdiBpZD1cIm1haW5OYXZcIj5cbiAgICAgICAgPGxpYi1uYXYtYmFyIFttYWluU2l0ZUJhc2VVcmxdPVwibWFpbnNpdGViYXNldXJsXCIgLz5cbiAgICA8L2Rpdj5cbn1cbkBpZiAoaXNTY3JlZW5TbWFsbCgpKSB7XG4gICAgPGFcbiAgICAgICAgaWQ9XCJtb2JpbGVMaWJyYXJ5SG91cnNcIlxuICAgICAgICBbaHJlZl09XCJtYWluc2l0ZWJhc2V1cmwgKyAnL2Fib3V0L2hvdXJzJ1wiXG4gICAgICAgIGNsYXNzPVwiaGJsbC1oZWFkZXItd3JhcHBlclwiXG4gICAgICAgIGRhdGEtdGVzdGlkPVwibW9iaWxlSG91cnNcIlxuICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhvdXJzVGV4dEJsb2NrXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9hPlxufVxuXG48bmctdGVtcGxhdGUgI2hvdXJzVGV4dEJsb2NrPlxuICAgIEBpZiAobGlicmFyeUhvdXJzKCkpIHtcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGhibGwtaGVhZGVyLWxlZnQtaWNvblwiPiBzY2hlZHVsZSA8L3NwYW4+XG4gICAgICAgIHt7XG4gICAgICAgICAgICBsaWJyYXJ5SG91cnMoKT8uaXNfY2xvc2VkXG4gICAgICAgICAgICAgICAgPyAnQ0xPU0VEJ1xuICAgICAgICAgICAgICAgIDogXCJUb2RheSdzIGhvdXJzOiBcIiArXG4gICAgICAgICAgICAgICAgICAobGlicmFyeUhvdXJzKCkhLmRhdGUgfCBsaWJyYXJ5SG91cnM6IGxpYnJhcnlIb3VycygpIS5vcGVuX3RpbWUpICtcbiAgICAgICAgICAgICAgICAgICcgLSAnICtcbiAgICAgICAgICAgICAgICAgIChsaWJyYXJ5SG91cnMoKSEuZGF0ZSB8IGxpYnJhcnlIb3VyczogbGlicmFyeUhvdXJzKCkhLmNsb3NlX3RpbWUpXG4gICAgICAgIH19XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
127
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGJsbC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL2hibGwtaGVhZGVyL2hibGwtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9oYmxsLWhlYWRlci9oYmxsLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbEYsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFDTixTQUFTLEVBQ1QsU0FBUyxFQUNULE1BQU0sRUFDTixLQUFLLEVBQ0wsU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDL0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FB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QkFBZ0I7d0JBQ2hCLFlBQVk7d0JBQ1osZUFBZTt3QkFDZix1QkFBdUI7cUJBQzFCLGNBR1csQ0FBQywwQkFBMEIsRUFBRSxnQkFBZ0IsQ0FBQzs4QkFTckMsTUFBTTtzQkFBMUIsU0FBUzt1QkFBQyxRQUFRO2dCQUlWLElBQUk7c0JBQVosS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUdJLHNCQUFzQjtzQkFBL0IsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQTBEQyxRQUFRO3NCQURmLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBEYXRlUGlwZSwgRE9DVU1FTlQsIExvd2VyQ2FzZVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG4gICAgaW5qZWN0LFxuICAgIGlucHV0LFxuICAgIHZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOYXZCYXJDb21wb25lbnQgfSBmcm9tICcuL25hdi1iYXIvbmF2LWJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgbGliSGJsbEZhZGVJbk91dCwgbGliSGJsbFNsaWRlSW5PdXRSaWdodExlZnQgfSBmcm9tICcuLi9hbmltYXRpb25zL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQnJlYWtwb2ludE9ic2VydmVyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2xheW91dCc7XG5pbXBvcnQgeyBpc1NjcmVlblNtYWxsU2lnbmFsIH0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHsgTGlicmFyeUhvdXJzUGlwZSB9IGZyb20gJy4vcGlwZXMvbGlicmFyeS1ob3Vycy5waXBlJztcbmltcG9ydCB7IG1hcCwgb2YsIHNoYXJlUmVwbGF5LCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEV4cGFuZENvbGxhcHNlQ29tcG9uZW50IH0gZnJvbSAnLi4vZXhwYW5kLWNvbGxhcHNlL2V4cGFuZC1jb2xsYXBzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgTGlicmFyeUhvdXJzIH0gZnJvbSAnLi9tb2RlbHMvbGlicmFyeS1ob3Vycyc7XG5cbmV4cG9ydCBjb25zdCBMSUJSQVJZX0hPVVJTX0FQSV9VUkwgPSAnaHR0cHM6Ly9hcHBzLmxpYi5ieXUuZWR1L2xpYnJhcnlob3Vycy9hcGkvaG91cnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1oYmxsLWhlYWRlcicsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIERhdGVQaXBlLFxuICAgICAgICBMb3dlckNhc2VQaXBlLFxuICAgICAgICBMaWJyYXJ5SG91cnNQaXBlLFxuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIE5hdkJhckNvbXBvbmVudCxcbiAgICAgICAgRXhwYW5kQ29sbGFwc2VDb21wb25lbnQsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vaGJsbC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9oYmxsLWhlYWRlci5jb21wb25lbnQuc2NzcycsXG4gICAgYW5pbWF0aW9uczogW2xpYkhibGxTbGlkZUluT3V0UmlnaHRMZWZ0LCBsaWJIYmxsRmFkZUluT3V0XSxcbn0pXG5leHBvcnQgY2xhc3MgSGJsbEhlYWRlckNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcjIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgICAvLyBUT0RPOiBkb2VzIHRoaXMgaW5jcmVhc2UgYnVuZGxlIHNpemUgbW9yZSB0aGFuIGl0J3Mgd29ydGg/IHZzIGZldGNoP1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJvID0gaW5qZWN0KEJyZWFrcG9pbnRPYnNlcnZlcik7XG4gICAgcHJpdmF0ZSBkb2MgPSBpbmplY3QoRE9DVU1FTlQpO1xuXG4gICAgQFZpZXdDaGlsZCgnaGVhZGVyJykgaGVhZGVyITogRWxlbWVudFJlZjtcblxuICAgIC8vIC0tLSBBUEkgLS0tXG4gICAgLy8gVE9ETzogQ29udmVydCB0aGVzZSB0byBzaWduYWwgaW5wdXRzOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2lzc3Vlcy81Nzc1NVxuICAgIEBJbnB1dCgpIG5hbWUgPSAnJztcbiAgICBASW5wdXQoKSBtYWluc2l0ZWJhc2V1cmwgPSAnaHR0cHM6Ly9saWIuYnl1LmVkdSc7XG4gICAgLy8gVE9ETzogdGhpcyBpcyBhIHNpbmdhbCBpbnB1dCBjdXJyZW50bHkgYmVjYXVzZSBpdCB3b24ndCBiZSB1c2VkIGJ5IGFueSBvdGhlciBhcHBsaWNhdGlvbnMgdGhhbiBBbmd1bGFyIG9uZXMuXG4gICAgc2hvd0ltcGVyc29uYXRlQnV0dG9uID0gaW5wdXQoZmFsc2UpO1xuICAgIEBPdXRwdXQoKSBvcGVuSW1wZXJzb25hdGlvbk1vZGFsID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIEBPdXRwdXQoKSBsb2dpbiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCkgbG9nb3V0ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICAgIC8vIC0tLS0tLS0tLS0tXG4gICAgcHJpdmF0ZSBmb3JtYXREYXRlRm9ySG91cnMgPSAoZGF0ZTogRGF0ZSkgPT5cbiAgICAgICAgYCR7ZGF0ZS5nZXRGdWxsWWVhcigpfS0ke1N0cmluZyhkYXRlLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpfS0ke1N0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKX1gO1xuICAgIHByaXZhdGUgYWNjb3VudEluZm9FbCA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignYWNjb3VudEluZm8nKTtcbiAgICBwcml2YXRlIGhvdXJzRWwgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2hvdXJzJyk7XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGlzTG9nZ2VkSW4oKSB7XG4gICAgICAgIHJldHVybiAhIXRoaXMubmFtZTtcbiAgICB9XG5cbiAgICAvLyBIb3Vyc1xuICAgIHByb3RlY3RlZCBsaWJyYXJ5SG91cnMgPSB0b1NpZ25hbCh0aGlzLmh0dHAuZ2V0PExpYnJhcnlIb3Vycz4oTElCUkFSWV9IT1VSU19BUElfVVJMKSk7XG4gICAgcHJvdGVjdGVkIGhvdXJzRXhjZXB0aW9ucyQgPSBvZihudWxsKS5waXBlKFxuICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgICAgLy8gR2V0IGV4Y2VwdGlvbnMgZnJvbSB0b2RheSB0byB0d28gbW9udGhzIG91dFxuICAgICAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSB0aGlzLmZvcm1hdERhdGVGb3JIb3Vycyh0b2RheSk7XG4gICAgICAgICAgICBjb25zdCBuZXdEYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgIG5ld0RhdGUuc2V0TW9udGgodG9kYXkuZ2V0TW9udGgoKSArIDIpO1xuICAgICAgICAgICAgY29uc3Qgc3RvcCA9IHRoaXMuZm9ybWF0RGF0ZUZvckhvdXJzKG5ld0RhdGUpO1xuICAgICAgICAgICAgcmV0dXJuIFtzdGFydCwgc3RvcF07XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKFtzdGFydCwgc3RvcF06IHN0cmluZ1tdKSA9PlxuICAgICAgICAgICAgdGhpcy5odHRwXG4gICAgICAgICAgICAgICAgLmdldDxMaWJyYXJ5SG91cnNbXT4oYCR7TElCUkFSWV9IT1VSU19BUElfVVJMfT9zdGFydD0ke3N0YXJ0fSZzdG9wPSR7c3RvcH1gKVxuICAgICAgICAgICAgICAgIC5waXBlKG1hcCgocmVzKSA9PiByZXMuZmlsdGVyKChkYXkpID0+IGRheS5oYXNfZXhjZXB0aW9uKS5zbGljZSgwLCA1KSkpLFxuICAgICAgICApLFxuICAgICAgICBzaGFyZVJlcGxheSgxKSxcbiAgICApO1xuXG4gICAgcHJvdGVjdGVkIHNob3dBY2NvdW50RHJvcGRvd24gPSBmYWxzZTtcbiAgICBwcm90ZWN0ZWQgc2hvd0xpYnJhcnlIb3VycyA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBtb2JpbGVTaWRlYmFySGVpZ2h0ID0gMDtcbiAgICBwcm90ZWN0ZWQgc2hvd05hdkJhciA9IGZhbHNlO1xuICAgIHByb3RlY3RlZCBpc1NjcmVlblNtYWxsID0gaXNTY3JlZW5TbWFsbFNpZ25hbCh0aGlzLmJvKTtcblxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5yMi5saXN0ZW4oJ3dpbmRvdycsICdjbGljaycsIChlOiBFdmVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmFjY291bnRJbmZvRWwoKT8ubmF0aXZlRWxlbWVudC5jb250YWlucyhlLnRhcmdldCkpXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93QWNjb3VudERyb3Bkb3duID0gZmFsc2U7XG4gICAgICAgICAgICBpZiAoIXRoaXMuaG91cnNFbCgpPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGUudGFyZ2V0KSkgdGhpcy5zaG93TGlicmFyeUhvdXJzID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNldE1vYmlsZVNpZGViYXJIZWlnaHQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb3BlblNpZGViYXJOYXYgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd05hdkJhciA9IHRydWU7XG4gICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAwKTtcbiAgICAgICAgdGhpcy5yMi5zZXRTdHlsZSh0aGlzLmRvYy5ib2R5LCAnb3ZlcmZsb3cnLCAnaGlkZGVuJyk7XG4gICAgfTtcblxuICAgIHByb3RlY3RlZCBjbG9zZVNpZGViYXJOYXYgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd05hdkJhciA9IGZhbHNlO1xuICAgICAgICB0aGlzLnIyLnJlbW92ZVN0eWxlKHRoaXMuZG9jLmJvZHksICdvdmVyZmxvdycpO1xuICAgIH07XG5cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcbiAgICBwcml2YXRlIG9uUmVzaXplKCkge1xuICAgICAgICB0aGlzLnNldE1vYmlsZVNpZGViYXJIZWlnaHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE1vYmlsZVNpZGViYXJIZWlnaHQgPSAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGhlYWRlckhlaWdodCA9IHRoaXMuaGVhZGVyLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuXG4gICAgICAgIC8vIFRPRE86IHJlbW92ZSBiYW5uZXIgY29kZSBhZnRlciBiYW5uZXIgaXMgcmVtb3ZlZCBmcm9tIGJldGFcbiAgICAgICAgY29uc3QgYmFubmVyRWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNiZXRhLW5hdmlnYXRpb24tYmFubmVyJyk7XG4gICAgICAgIGNvbnN0IGJhbm5lckhlaWdodCA9IGJhbm5lckVsZW1lbnQgPyBiYW5uZXJFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCB8fCAwIDogMDtcblxuICAgICAgICB0aGlzLm1vYmlsZVNpZGViYXJIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSBoZWFkZXJIZWlnaHQgLSBiYW5uZXJIZWlnaHQ7XG4gICAgfTtcblxuICAgIGZvY3VzTWFpbkNvbnRlbnQoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1haW5Db250ZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLm1haW4tY29udGVudCcpIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIGlmIChtYWluQ29udGVudCkge1xuICAgICAgICAgICAgbWFpbkNvbnRlbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG1haW5Db250ZW50QXJpYSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgICAgICAgJ1thcmlhLWxhYmVsPVwiTWFpbiBjb250ZW50IGFyZWFcIl0nLFxuICAgICAgICAgICAgKSBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICAgICAgaWYgKG1haW5Db250ZW50QXJpYSkge1xuICAgICAgICAgICAgICAgIG1haW5Db250ZW50QXJpYS5mb2N1cygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIiwiPGhlYWRlclxuICAgIHJvbGU9XCJiYW5uZXJcIlxuICAgIGNsYXNzPVwiaGJsbC1oZWFkZXItd3JhcHBlclwiXG4gICAgI2hlYWRlclxuICAgIFtuZ0NsYXNzXT1cInsgJ2hibGwtaGVhZGVyLWRlc2t0b3AnOiAhaXNTY3JlZW5TbWFsbCgpIH1cIlxuPlxuICAgIDxhIFtocmVmXT1cIm1haW5zaXRlYmFzZXVybFwiPlxuICAgICAgICA8aDE+XG4gICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgc3JjPVwiaHR0cHM6Ly9tZWRpYS5saWIuYnl1LmVkdS93ZWItYXNzZXRzL2ltYWdlcy8yLjAuMC9ieXUtaGJsbC1sb2dvLWZ1bGwuc3ZnXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJCWVUgTGlicmFyeSBMb2dvXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvaDE+XG4gICAgPC9hPlxuICAgIDxidXR0b24gKGNsaWNrKT1cImZvY3VzTWFpbkNvbnRlbnQoKVwiIGNsYXNzPVwic2tpcC1saW5rXCI+U2tpcCB0byBtYWluIGNvbnRlbnQ8L2J1dHRvbj5cbiAgICA8ZGl2IGlkPVwibGlicmFyeUluZm9cIiBjbGFzcz1cImhibGwtaGVhZGVyLXdyYXBwZXJcIj5cbiAgICAgICAgQGlmICghaXNTY3JlZW5TbWFsbCgpKSB7XG4gICAgICAgICAgICA8ZGl2ICNob3VycyBpZD1cIm1haW5MaWJyYXJ5SG91cnNcIiBkYXRhLXRlc3RpZD1cImRlc2t0b3BIb3Vyc1wiPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dMaWJyYXJ5SG91cnMgPSAhc2hvd0xpYnJhcnlIb3Vyc1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGJsbC1oZWFkZXItd3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaG91cnNCdG5cIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhvdXJzVGV4dEJsb2NrXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgQGlmICghaXNTY3JlZW5TbWFsbCgpICYmIHNob3dMaWJyYXJ5SG91cnMpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgQGxpYkhibGxGYWRlSW5PdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwibGlicmFyeUhvdXJzRHJvcGRvd25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJsaWJyYXJ5SG91cnNEcm9wZG93blwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiaGJsbC1oZWFkZXItc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cImhibGwtaGVhZGVyLWhlYWRlclwiPlJlZ3VsYXIgSG91cnM8L2gyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoYmxsLWhlYWRlci1kZXRhaWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiaGJsbC1oZWFkZXItaXRlbVwiPk1vbmRheSAtIEZyaWRheTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImhibGwtaGVhZGVyLWl0ZW1cIj5TYXR1cmRheTwvaDM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImhibGwtaGVhZGVyLWl0ZW1cIj5TdW5kYXk8L2gzPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoYmxsLWhlYWRlci1ob3Vyc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGJsbC1oZWFkZXItaXRlbVwiPjcgYS5tIC0gbWlkbmlnaHQ8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhibGwtaGVhZGVyLWl0ZW1cIj44IGEubSAtIG1pZG5pZ2h0PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoYmxsLWhlYWRlci1pdGVtXCI+Q2xvc2VkKjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoYmxsLWhlYWRlci1ob3Vycy1ub3RlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogRmFtaWx5IGhpc3RvcnkgT05MWSA0IHAubS4gLSA4IHAubVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGk+PHNwYW4+Tm8gY2hlY2tvdXRzIGFmdGVyIDExOjQ1IHAubS48L3NwYW4+PC9saT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5BbGwgc2VydmljZXMgY2xvc2VkIDEwOjQ1IHRvIG5vb24gb24gVHVlc2RheXM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJoYmxsLWhlYWRlci1zZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgyIGNsYXNzPVwiaGJsbC1oZWFkZXItaGVhZGVyXCI+VXBjb21pbmcgRXhjZXB0aW9uczwvaDI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChob3Vyc0V4Y2VwdGlvbnMkIHwgYXN5bmM7IGFzIGV4Y2VwdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhibGwtaGVhZGVyLWRldGFpbFwiIGRhdGEtdGVzdGlkPVwiZXhjZXB0aW9uc0RldGFpbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoZXhjZXB0aW9uIG9mIGV4Y2VwdGlvbnM7IHRyYWNrIGV4Y2VwdGlvbi5kYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiaGJsbC1oZWFkZXItaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBleGNlcHRpb24uZGF0ZSB8IGRhdGU6ICdNTU0uIGQsIFlZWVknIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gQGVtcHR5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBObyB1cGNvbWluZyBleGNlcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGJsbC1oZWFkZXItaG91cnNcIiBkYXRhLXRlc3RpZD1cImV4Y2VwdGlvbnNIb3Vyc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGZvciAoZXhjZXB0aW9uIG9mIGV4Y2VwdGlvbnM7IHRyYWNrIGV4Y2VwdGlvbi5kYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhibGwtaGVhZGVyLWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZXhjZXB0aW9uLmV4Y2VwdGlvbl90aXRsZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpYi1zcGlubmVyXCIgZGF0YS10ZXN0aWQ9XCJleGNlcHRpb25zU3Bpbm5lclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiaGJsbC1oZWFkZXItc2VjdGlvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMiBjbGFzcz1cImhibGwtaGVhZGVyLWhlYWRlclwiPkxpYnJhcnkgQ2FmZTwvaDI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhibGwtaGVhZGVyLWRldGFpbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJoYmxsLWhlYWRlci1pdGVtXCI+QmFnZWwgQnViYmxlPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIGNsYXNzPVwiaGJsbC1oZWFkZXItaXRlbVwiPlByb3ZlY2hvPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGJsbC1oZWFkZXItaG91cnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhibGwtaGVhZGVyLWl0ZW1cIj43IGEubSAtIDExIHAubS48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhibGwtaGVhZGVyLWl0ZW1cIj4xMDozMCBhLm0gLSAyIHAubS48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cIm1haW5zaXRlYmFzZXVybCArICcvYWJvdXQvaG91cnMnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+U2VlIGFsbCBob3Vyc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPiBjaGV2cm9uX3JpZ2h0IDwvc3Bhbj48L2FcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgICAgPGRpdiBpZD1cImFjY291bnRJbmZvXCIgI2FjY291bnRJbmZvPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIChjbGljayk9XCJpc0xvZ2dlZEluID8gKHNob3dBY2NvdW50RHJvcGRvd24gPSAhc2hvd0FjY291bnREcm9wZG93bikgOiBsb2dpbi5lbWl0KClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaGJsbC1oZWFkZXItd3JhcHBlclwiXG4gICAgICAgICAgICAgICAgaWQ9XCJhY2NvdW50QnRuXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cImFjY291bnRCdG5cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBoYmxsLWhlYWRlci1sZWZ0LWljb25cIj4gcGVyc29uIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICBAaWYgKCFpc1NjcmVlblNtYWxsKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoYmxsLWhlYWRlci1uYW1lXCIgZGF0YS10ZXN0aWQ9XCJuYW1lXCI+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzTG9nZ2VkSW4gPyAnJm5ic3A7JyArIG5hbWUgOiAnTG9naW4nXG4gICAgICAgICAgICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGlzTG9nZ2VkSW4pIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCIgZGF0YS10ZXN0aWQ9XCJsb2dpbkRyb3Bkb3duXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJvd19kcm9wX2Rvd25cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgQGlmIChpc0xvZ2dlZEluICYmIHNob3dBY2NvdW50RHJvcGRvd24pIHtcbiAgICAgICAgICAgICAgICA8ZGl2IEBsaWJIYmxsRmFkZUluT3V0IGlkPVwiYWNjb3VudERyb3Bkb3duXCIgZGF0YS10ZXN0aWQ9XCJhY2NvdW50RHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwibWFpbnNpdGViYXNldXJsICsgJy9hY2NvdW50J1wiPk15IEFjY291bnQ8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cIm1haW5zaXRlYmFzZXVybCArICcvYWNjb3VudCdcIj5NeSBJdGVtczwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwibWFpbnNpdGViYXNldXJsICsgJy9hY2NvdW50L3JlcXVlc3QnXCI+UmVxdWVzdCBhbiBpdGVtPC9hPlxuICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJtYWluc2l0ZWJhc2V1cmwgKyAnL2FjY291bnQvc2F2ZWQnXCI+U2F2ZWQ8L2E+XG4gICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cIm1haW5zaXRlYmFzZXVybCArICcvYWNjb3VudC9jb3Vyc2UnXCI+Q291cnNlczwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGEgW2hyZWZdPVwibWFpbnNpdGViYXNldXJsICsgJy9hY2NvdW50L3Jvb21zJ1wiPlJvb21zPC9hPlxuICAgICAgICAgICAgICAgICAgICA8YSBbaHJlZl09XCJtYWluc2l0ZWJhc2V1cmwgKyAnL2FjY291bnQvcHJlZmVyZW5jZXMnXCI+UHJlZmVyZW5jZXM8L2E+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoc2hvd0ltcGVyc29uYXRlQnV0dG9uKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkltcGVyc29uYXRpb25Nb2RhbC5lbWl0KCk7IHNob3dBY2NvdW50RHJvcGRvd24gPSBmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoYmxsLWhlYWRlci1pbXBlcnNvbmF0ZS1idG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltcGVyc29uYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJsb2dvdXQuZW1pdCgpXCIgZGF0YS10ZXN0aWQ9XCJsb2dvdXRcIj5Mb2dvdXQ8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIEBpZiAoaXNTY3JlZW5TbWFsbCgpKSB7XG4gICAgICAgICAgICA8ZGl2IGlkPVwibW9iaWxlTmF2XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImhibGwtaGVhZGVyLXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cIm1vYmlsZU5hdkJ0blwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuU2lkZWJhck5hdigpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBoYmxsLWhlYWRlci1pY29uXCI+IG1lbnUgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIEBpZiAoc2hvd05hdkJhcikge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cIm5hdldyYXBwZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJtb2JpbGVOYXZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW0BsaWJIYmxsU2xpZGVJbk91dFJpZ2h0TGVmdF09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogeyB4T2Zmc2V0OiAnNDAwcHgnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiY2xvc2VNb2JpbGVOYXZCdG5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGJsbC1oZWFkZXItd3JhcHBlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJjbG9zZU1vYmlsZU5hdkJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlU2lkZWJhck5hdigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgaGJsbC1oZWFkZXItaWNvblwiPiBjbG9zZSA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItbmF2LWJhclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYWluU2l0ZUJhc2VVcmxdPVwibWFpbnNpdGViYXNldXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGVpZ2h0XT1cIm1vYmlsZVNpZGViYXJIZWlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIEBsaWJIYmxsRmFkZUluT3V0XG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd05hdkJhciA9IGZhbHNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaGJsbC1uYXYtYmFja2Ryb3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJtb2JpbGVOYXZCYWNrZHJvcFwiXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgIDwvZGl2PlxuPC9oZWFkZXI+XG5cbkBpZiAoIWlzU2NyZWVuU21hbGwoKSkge1xuICAgIDxkaXYgaWQ9XCJtYWluTmF2XCI+XG4gICAgICAgIDxsaWItbmF2LWJhciBbbWFpblNpdGVCYXNlVXJsXT1cIm1haW5zaXRlYmFzZXVybFwiIC8+XG4gICAgPC9kaXY+XG59XG5AaWYgKGlzU2NyZWVuU21hbGwoKSkge1xuICAgIDxhXG4gICAgICAgIGlkPVwibW9iaWxlTGlicmFyeUhvdXJzXCJcbiAgICAgICAgW2hyZWZdPVwibWFpbnNpdGViYXNldXJsICsgJy9hYm91dC9ob3VycydcIlxuICAgICAgICBjbGFzcz1cImhibGwtaGVhZGVyLXdyYXBwZXJcIlxuICAgICAgICBkYXRhLXRlc3RpZD1cIm1vYmlsZUhvdXJzXCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJob3Vyc1RleHRCbG9ja1wiPjwvbmctY29udGFpbmVyPlxuICAgIDwvYT5cbn1cblxuPG5nLXRlbXBsYXRlICNob3Vyc1RleHRCbG9jaz5cbiAgICBAaWYgKGxpYnJhcnlIb3VycygpKSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZCBoYmxsLWhlYWRlci1sZWZ0LWljb25cIj4gc2NoZWR1bGUgPC9zcGFuPlxuICAgICAgICB7e1xuICAgICAgICAgICAgbGlicmFyeUhvdXJzKCk/LmlzX2Nsb3NlZFxuICAgICAgICAgICAgICAgID8gJ0NMT1NFRCdcbiAgICAgICAgICAgICAgICA6IFwiVG9kYXkncyBob3VyczogXCIgK1xuICAgICAgICAgICAgICAgICAgKGxpYnJhcnlIb3VycygpIS5kYXRlIHwgbGlicmFyeUhvdXJzOiBsaWJyYXJ5SG91cnMoKSEub3Blbl90aW1lKSArXG4gICAgICAgICAgICAgICAgICAnIC0gJyArXG4gICAgICAgICAgICAgICAgICAobGlicmFyeUhvdXJzKCkhLmRhdGUgfCBsaWJyYXJ5SG91cnM6IGxpYnJhcnlIb3VycygpIS5jbG9zZV90aW1lKVxuICAgICAgICB9fVxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|